diff -Nrcpad gcc-7.3.0/ChangeLog gcc-7.4.0/ChangeLog
*** gcc-7.3.0/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,15 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/INSTALL/configure.html gcc-7.4.0/INSTALL/configure.html
*** gcc-7.3.0/INSTALL/configure.html	Thu Jan 25 08:17:55 2018
--- gcc-7.4.0/INSTALL/configure.html	Thu Dec  6 09:58:52 2018
*************** but yielding a slightly slower compiler.
*** 354,360 ****
       <p>Contrast with <samp><span class="option">--enable-shared</span></samp>, which affects <em>target</em>
  libraries.
  
!      <br><dt><code><a name="with_002dgnu_002das"></a>--with-gnu-as</code><dd>Specify that the compiler should assume that the
  assembler it finds is the GNU assembler.  However, this does not modify
  the rules to find an assembler and will result in confusion if the
  assembler found is not actually the GNU assembler.  (Confusion may also
--- 354,360 ----
       <p>Contrast with <samp><span class="option">--enable-shared</span></samp>, which affects <em>target</em>
  libraries.
  
!      <br><dt><code><a name="with-gnu-as"></a>--with-gnu-as</code><dd>Specify that the compiler should assume that the
  assembler it finds is the GNU assembler.  However, this does not modify
  the rules to find an assembler and will result in confusion if the
  assembler found is not actually the GNU assembler.  (Confusion may also
*************** whether you use the GNU assembler.  On a
*** 375,381 ****
  <li>&lsquo;<samp><span class="samp">sparc64-</span><var>any</var><span class="samp">-solaris2.</span><var>any</var></samp>&rsquo;
  </ul>
  
!      <br><dt><code><a name="with_002das"></a>--with-as=</code><var>pathname</var><dd>Specify that the compiler should use the assembler pointed to by
  <var>pathname</var>, rather than the one found by the standard rules to find
  an assembler, which are:
            <ul>
--- 375,381 ----
  <li>&lsquo;<samp><span class="samp">sparc64-</span><var>any</var><span class="samp">-solaris2.</span><var>any</var></samp>&rsquo;
  </ul>
  
!      <br><dt><code><a name="with-as"></a>--with-as=</code><var>pathname</var><dd>Specify that the compiler should use the assembler pointed to by
  <var>pathname</var>, rather than the one found by the standard rules to find
  an assembler, which are:
            <ul>
*************** is installed in the directories listed a
*** 406,412 ****
  assemblers installed and want to choose one that is not found by the
  above rules.
  
!      <br><dt><code><a name="with_002dgnu_002dld"></a>--with-gnu-ld</code><dd>Same as <a href="#with-gnu-as"><samp><span class="option">--with-gnu-as</span></samp></a>
  but for the linker.
  
       <br><dt><code>--with-ld=</code><var>pathname</var><dd>Same as <a href="#with-as"><samp><span class="option">--with-as</span></samp></a>
--- 406,412 ----
  assemblers installed and want to choose one that is not found by the
  above rules.
  
!      <br><dt><code><a name="with-gnu-ld"></a>--with-gnu-ld</code><dd>Same as <a href="#with-gnu-as"><samp><span class="option">--with-gnu-as</span></samp></a>
  but for the linker.
  
       <br><dt><code>--with-ld=</code><var>pathname</var><dd>Same as <a href="#with-as"><samp><span class="option">--with-as</span></samp></a>
diff -Nrcpad gcc-7.3.0/INSTALL/specific.html gcc-7.4.0/INSTALL/specific.html
*** gcc-7.3.0/INSTALL/specific.html	Thu Jan 25 08:17:55 2018
--- gcc-7.4.0/INSTALL/specific.html	Thu Dec  6 09:58:52 2018
*************** information have to.
*** 129,135 ****
  </ul>
  
     <p><!-- -------- host/target specific issues start here ---------------- -->
! <hr /><a name="aarch64_002dx_002dx"></a>
  
  <h3 class="heading"><a name="TOC0"></a>aarch64*-*-*</h3>
  
--- 129,135 ----
  </ul>
  
     <p><!-- -------- host/target specific issues start here ---------------- -->
! <hr /><a name="aarch64-x-x"></a>
  
  <h3 class="heading"><a name="TOC0"></a>aarch64*-*-*</h3>
  
*************** The workaround is disabled by default if
*** 158,164 ****
  <samp><span class="option">--enable-fix-cortex-a53-843419</span></samp> or
  <samp><span class="option">--disable-fix-cortex-a53-843419</span></samp> is given at configure time.
  
!    <p><hr /><a name="alpha_002dx_002dx"></a>
  
  <h3 class="heading"><a name="TOC1"></a>alpha*-*-*</h3>
  
--- 158,164 ----
  <samp><span class="option">--enable-fix-cortex-a53-843419</span></samp> or
  <samp><span class="option">--disable-fix-cortex-a53-843419</span></samp> is given at configure time.
  
!    <p><hr /><a name="alpha-x-x"></a>
  
  <h3 class="heading"><a name="TOC1"></a>alpha*-*-*</h3>
  
*************** Previous binutils releases had a number
*** 172,178 ****
  debugging information, not the least of which is incorrect linking of
  shared libraries.
  
!    <p><hr /><a name="alpha_002ddec_002dosf51"></a>
  
  <h3 class="heading"><a name="TOC2"></a>alpha*-dec-osf5.1</h3>
  
--- 172,178 ----
  debugging information, not the least of which is incorrect linking of
  shared libraries.
  
!    <p><hr /><a name="alpha-dec-osf51"></a>
  
  <h3 class="heading"><a name="TOC2"></a>alpha*-dec-osf5.1</h3>
  
*************** support for Tru64 UNIX V4.0 and V5.0 has
*** 185,197 ****
  versions before <code>alpha*-dec-osf4</code> are no longer supported.  (These
  are the versions which identify themselves as DEC OSF/1.)
  
!    <p><hr /><a name="amd64_002dx_002dsolaris210"></a>
  
  <h3 class="heading"><a name="TOC3"></a>amd64-*-solaris2.1[0-9]*</h3>
  
  <p>This is a synonym for &lsquo;<samp><span class="samp">x86_64-*-solaris2.1[0-9]*</span></samp>&rsquo;.
  
!    <p><hr /><a name="arc_002dx_002delf32"></a>
  
  <h3 class="heading"><a name="TOC4"></a>arc-*-elf32</h3>
  
--- 185,197 ----
  versions before <code>alpha*-dec-osf4</code> are no longer supported.  (These
  are the versions which identify themselves as DEC OSF/1.)
  
!    <p><hr /><a name="amd64-x-solaris210"></a>
  
  <h3 class="heading"><a name="TOC3"></a>amd64-*-solaris2.1[0-9]*</h3>
  
  <p>This is a synonym for &lsquo;<samp><span class="samp">x86_64-*-solaris2.1[0-9]*</span></samp>&rsquo;.
  
!    <p><hr /><a name="arc-x-elf32"></a>
  
  <h3 class="heading"><a name="TOC4"></a>arc-*-elf32</h3>
  
*************** are the versions which identify themselv
*** 199,211 ****
  to configure GCC, with <var>cpu</var> being one of &lsquo;<samp><span class="samp">arc600</span></samp>&rsquo;, &lsquo;<samp><span class="samp">arc601</span></samp>&rsquo;,
  or &lsquo;<samp><span class="samp">arc700</span></samp>&rsquo;.
  
!    <p><hr /><a name="arc_002dlinux_002duclibc"></a>
  
  <h3 class="heading"><a name="TOC5"></a>arc-linux-uclibc</h3>
  
  <p>Use &lsquo;<samp><span class="samp">configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages="c,c++"</span></samp>&rsquo; to configure GCC.
  
!    <p><hr /><a name="arm_002dx_002deabi"></a>
  
  <h3 class="heading"><a name="TOC6"></a>arm-*-eabi</h3>
  
--- 199,211 ----
  to configure GCC, with <var>cpu</var> being one of &lsquo;<samp><span class="samp">arc600</span></samp>&rsquo;, &lsquo;<samp><span class="samp">arc601</span></samp>&rsquo;,
  or &lsquo;<samp><span class="samp">arc700</span></samp>&rsquo;.
  
!    <p><hr /><a name="arc-linux-uclibc"></a>
  
  <h3 class="heading"><a name="TOC5"></a>arc-linux-uclibc</h3>
  
  <p>Use &lsquo;<samp><span class="samp">configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages="c,c++"</span></samp>&rsquo; to configure GCC.
  
!    <p><hr /><a name="arm-x-eabi"></a>
  
  <h3 class="heading"><a name="TOC6"></a>arm-*-eabi</h3>
  
*************** any MSDOS compiler except itself.  You n
*** 298,311 ****
  compilation package DJGPP, which includes binaries as well as sources,
  and includes all the necessary compilation tools and libraries.
  
!    <p><hr /><a name="epiphany_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC12"></a>epiphany-*-elf</h3>
  
  <p>Adapteva Epiphany. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="x_002dx_002dfreebsd"></a>
  
  <h3 class="heading"><a name="TOC13"></a>*-*-freebsd*</h3>
  
--- 298,311 ----
  compilation package DJGPP, which includes binaries as well as sources,
  and includes all the necessary compilation tools and libraries.
  
!    <p><hr /><a name="epiphany-x-elf"></a>
  
  <h3 class="heading"><a name="TOC12"></a>epiphany-*-elf</h3>
  
  <p>Adapteva Epiphany. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="x-x-freebsd"></a>
  
  <h3 class="heading"><a name="TOC13"></a>*-*-freebsd*</h3>
  
*************** results.  However, it is currently known
*** 342,355 ****
  properly on FreeBSD prior to the FreeBSD 7.0 release with GNU binutils
  after 2.16.1.
  
!    <p><hr /><a name="ft32_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC14"></a>ft32-*-elf</h3>
  
  <p>The FT32 processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="h8300_002dhms"></a>
  
  <h3 class="heading"><a name="TOC15"></a>h8300-hms</h3>
  
--- 342,355 ----
  properly on FreeBSD prior to the FreeBSD 7.0 release with GNU binutils
  after 2.16.1.
  
!    <p><hr /><a name="ft32-x-elf"></a>
  
  <h3 class="heading"><a name="TOC14"></a>ft32-*-elf</h3>
  
  <p>The FT32 processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="h8300-hms"></a>
  
  <h3 class="heading"><a name="TOC15"></a>h8300-hms</h3>
  
*************** All code must be recompiled.  The callin
*** 362,368 ****
  first three arguments in function calls in registers.  Structures are no
  longer a multiple of 2 bytes.
  
!    <p><hr /><a name="hppa_002dhp_002dhpux"></a>
  
  <h3 class="heading"><a name="TOC16"></a>hppa*-hp-hpux*</h3>
  
--- 362,368 ----
  first three arguments in function calls in registers.  Structures are no
  longer a multiple of 2 bytes.
  
!    <p><hr /><a name="hppa-hp-hpux"></a>
  
  <h3 class="heading"><a name="TOC16"></a>hppa*-hp-hpux*</h3>
  
*************** a list of the predefines used with each
*** 414,420 ****
  
     <p>More specific information to &lsquo;<samp><span class="samp">hppa*-hp-hpux*</span></samp>&rsquo; targets follows.
  
!    <p><hr /><a name="hppa_002dhp_002dhpux10"></a>
  
  <h3 class="heading"><a name="TOC17"></a>hppa*-hp-hpux10</h3>
  
--- 414,420 ----
  
     <p>More specific information to &lsquo;<samp><span class="samp">hppa*-hp-hpux*</span></samp>&rsquo; targets follows.
  
!    <p><hr /><a name="hppa-hp-hpux10"></a>
  
  <h3 class="heading"><a name="TOC17"></a>hppa*-hp-hpux10</h3>
  
*************** used for one-only code and data.  This r
*** 426,432 ****
  problems in using C++ on this target.  However, the ABI is not compatible
  with the one implemented under HP-UX 11 using secondary definitions.
  
!    <p><hr /><a name="hppa_002dhp_002dhpux11"></a>
  
  <h3 class="heading"><a name="TOC18"></a>hppa*-hp-hpux11</h3>
  
--- 426,432 ----
  problems in using C++ on this target.  However, the ABI is not compatible
  with the one implemented under HP-UX 11 using secondary definitions.
  
!    <p><hr /><a name="hppa-hp-hpux11"></a>
  
  <h3 class="heading"><a name="TOC18"></a>hppa*-hp-hpux11</h3>
  
*************** versioning with <samp><span class="optio
*** 531,537 ****
     <p>POSIX threads are the default.  The optional DCE thread library is not
  supported, so <samp><span class="option">--enable-threads=dce</span></samp> does not work.
  
!    <p><hr /><a name="x_002dx_002dlinux_002dgnu"></a>
  
  <h3 class="heading"><a name="TOC19"></a>*-*-linux-gnu</h3>
  
--- 531,537 ----
     <p>POSIX threads are the default.  The optional DCE thread library is not
  supported, so <samp><span class="option">--enable-threads=dce</span></samp> does not work.
  
!    <p><hr /><a name="x-x-linux-gnu"></a>
  
  <h3 class="heading"><a name="TOC19"></a>*-*-linux-gnu</h3>
  
*************** supported, so <samp><span class="option"
*** 539,545 ****
  in glibc 2.2.5 and later.  More information is available in the
  libstdc++-v3 documentation.
  
!    <p><hr /><a name="ix86_002dx_002dlinux"></a>
  
  <h3 class="heading"><a name="TOC20"></a>i?86-*-linux*</h3>
  
--- 539,545 ----
  in glibc 2.2.5 and later.  More information is available in the
  libstdc++-v3 documentation.
  
!    <p><hr /><a name="ix86-x-linux"></a>
  
  <h3 class="heading"><a name="TOC20"></a>i?86-*-linux*</h3>
  
*************** See <a href="http://gcc.gnu.org/PR10877"
*** 550,556 ****
  possible you have a hardware problem.  Further information on this can be
  found on <a href="http://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>.
  
!    <p><hr /><a name="ix86_002dx_002dsolaris210"></a>
  
  <h3 class="heading"><a name="TOC21"></a>i?86-*-solaris2.10</h3>
  
--- 550,556 ----
  possible you have a hardware problem.  Further information on this can be
  found on <a href="http://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>.
  
!    <p><hr /><a name="ix86-x-solaris210"></a>
  
  <h3 class="heading"><a name="TOC21"></a>i?86-*-solaris2.10</h3>
  
*************** to configure with <samp><span class="opt
*** 584,590 ****
  guarantee use of Sun <samp><span class="command">ld</span></samp>. 
  <!-- FIXME: why -without-gnu-ld -with-ld? -->
  
!    <p><hr /><a name="ia64_002dx_002dlinux"></a>
  
  <h3 class="heading"><a name="TOC22"></a>ia64-*-linux</h3>
  
--- 584,590 ----
  guarantee use of Sun <samp><span class="command">ld</span></samp>. 
  <!-- FIXME: why -without-gnu-ld -with-ld? -->
  
!    <p><hr /><a name="ia64-x-linux"></a>
  
  <h3 class="heading"><a name="TOC22"></a>ia64-*-linux</h3>
  
*************** GCC 3.1 or later is recommended for comp
*** 604,610 ****
  As of version 3.1 GCC is believed to be fully ABI compliant, and hence no
  more major ABI changes are expected.
  
!    <p><hr /><a name="ia64_002dx_002dhpux"></a>
  
  <h3 class="heading"><a name="TOC23"></a>ia64-*-hpux*</h3>
  
--- 604,610 ----
  As of version 3.1 GCC is believed to be fully ABI compliant, and hence no
  more major ABI changes are expected.
  
!    <p><hr /><a name="ia64-x-hpux"></a>
  
  <h3 class="heading"><a name="TOC23"></a>ia64-*-hpux*</h3>
  
*************** For gcc 3.4.3 and later, <samp><span cla
*** 619,625 ****
  removed and the system libunwind library will always be used.
  
     <p><hr />
! <!-- rs6000-ibm-aix*, powerpc-ibm-aix* --><a name="x_002dibm_002daix"></a>
  
  <h3 class="heading"><a name="TOC24"></a>*-ibm-aix*</h3>
  
--- 619,625 ----
  removed and the system libunwind library will always be used.
  
     <p><hr />
! <!-- rs6000-ibm-aix*, powerpc-ibm-aix* --><a name="x-ibm-aix"></a>
  
  <h3 class="heading"><a name="TOC24"></a>*-ibm-aix*</h3>
  
*************** environment variable to &lsquo;<samp><sp
*** 774,815 ****
     <p>A default can be specified with the <samp><span class="option">-mcpu=</span><var>cpu_type</var></samp>
  switch and using the configure option <samp><span class="option">--with-cpu-</span><var>cpu_type</var></samp>.
  
!    <p><hr /><a name="iq2000_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC25"></a>iq2000-*-elf</h3>
  
  <p>Vitesse IQ2000 processors.  These are used in embedded
  applications.  There are no standard Unix configurations.
  
!    <p><hr /><a name="lm32_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC26"></a>lm32-*-elf</h3>
  
  <p>Lattice Mico32 processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="lm32_002dx_002duclinux"></a>
  
  <h3 class="heading"><a name="TOC27"></a>lm32-*-uclinux</h3>
  
  <p>Lattice Mico32 processor. 
  This configuration is intended for embedded systems running uClinux.
  
!    <p><hr /><a name="m32c_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC28"></a>m32c-*-elf</h3>
  
  <p>Renesas M32C processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="m32r_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC29"></a>m32r-*-elf</h3>
  
  <p>Renesas M32R processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="m68k_002dx_002dx"></a>
  
  <h3 class="heading"><a name="TOC30"></a>m68k-*-*</h3>
  
--- 774,815 ----
     <p>A default can be specified with the <samp><span class="option">-mcpu=</span><var>cpu_type</var></samp>
  switch and using the configure option <samp><span class="option">--with-cpu-</span><var>cpu_type</var></samp>.
  
!    <p><hr /><a name="iq2000-x-elf"></a>
  
  <h3 class="heading"><a name="TOC25"></a>iq2000-*-elf</h3>
  
  <p>Vitesse IQ2000 processors.  These are used in embedded
  applications.  There are no standard Unix configurations.
  
!    <p><hr /><a name="lm32-x-elf"></a>
  
  <h3 class="heading"><a name="TOC26"></a>lm32-*-elf</h3>
  
  <p>Lattice Mico32 processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="lm32-x-uclinux"></a>
  
  <h3 class="heading"><a name="TOC27"></a>lm32-*-uclinux</h3>
  
  <p>Lattice Mico32 processor. 
  This configuration is intended for embedded systems running uClinux.
  
!    <p><hr /><a name="m32c-x-elf"></a>
  
  <h3 class="heading"><a name="TOC28"></a>m32c-*-elf</h3>
  
  <p>Renesas M32C processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="m32r-x-elf"></a>
  
  <h3 class="heading"><a name="TOC29"></a>m32r-*-elf</h3>
  
  <p>Renesas M32R processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="m68k-x-x"></a>
  
  <h3 class="heading"><a name="TOC30"></a>m68k-*-*</h3>
  
*************** be a <samp><span class="option">-mcpu</s
*** 837,843 ****
  
     <p>GCC requires at least binutils version 2.17 on these targets.
  
!    <p><hr /><a name="m68k_002dx_002duclinux"></a>
  
  <h3 class="heading"><a name="TOC31"></a>m68k-*-uclinux</h3>
  
--- 837,843 ----
  
     <p>GCC requires at least binutils version 2.17 on these targets.
  
!    <p><hr /><a name="m68k-x-uclinux"></a>
  
  <h3 class="heading"><a name="TOC31"></a>m68k-*-uclinux</h3>
  
*************** be a <samp><span class="option">-mcpu</s
*** 846,859 ****
  It also added improved support for C++ and flat shared libraries,
  both of which were ABI changes.
  
!    <p><hr /><a name="microblaze_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC32"></a>microblaze-*-elf</h3>
  
  <p>Xilinx MicroBlaze processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="mips_002dx_002dx"></a>
  
  <h3 class="heading"><a name="TOC33"></a>mips-*-*</h3>
  
--- 846,859 ----
  It also added improved support for C++ and flat shared libraries,
  both of which were ABI changes.
  
!    <p><hr /><a name="microblaze-x-elf"></a>
  
  <h3 class="heading"><a name="TOC32"></a>microblaze-*-elf</h3>
  
  <p>Xilinx MicroBlaze processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="mips-x-x"></a>
  
  <h3 class="heading"><a name="TOC33"></a>mips-*-*</h3>
  
*************** the use of break, use the <samp><span cl
*** 896,908 ****
  <samp><span class="command">configure</span></samp> option when configuring GCC.  The default is to
  use traps on systems that support them.
  
!    <p><hr /><a name="mips_002dsgi_002dirix5"></a>
  
  <h3 class="heading"><a name="TOC34"></a>mips-sgi-irix5</h3>
  
  <p>Support for IRIX 5 has been removed in GCC 4.6.
  
!    <p><hr /><a name="mips_002dsgi_002dirix6"></a>
  
  <h3 class="heading"><a name="TOC35"></a>mips-sgi-irix6</h3>
  
--- 896,908 ----
  <samp><span class="command">configure</span></samp> option when configuring GCC.  The default is to
  use traps on systems that support them.
  
!    <p><hr /><a name="mips-sgi-irix5"></a>
  
  <h3 class="heading"><a name="TOC34"></a>mips-sgi-irix5</h3>
  
  <p>Support for IRIX 5 has been removed in GCC 4.6.
  
!    <p><hr /><a name="mips-sgi-irix6"></a>
  
  <h3 class="heading"><a name="TOC35"></a>mips-sgi-irix6</h3>
  
*************** use traps on systems that support them.
*** 910,941 ****
  releases before 6.5 has been removed in GCC 4.6, as well as support for
  the O32 ABI.
  
!    <p><hr /><a name="moxie_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC36"></a>moxie-*-elf</h3>
  
  <p>The moxie processor.
  
!    <p><hr /><a name="msp430_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC37"></a>msp430-*-elf</h3>
  
  <p>TI MSP430 processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="nds32le_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC38"></a>nds32le-*-elf</h3>
  
  <p>Andes NDS32 target in little endian mode.
  
!    <p><hr /><a name="nds32be_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC39"></a>nds32be-*-elf</h3>
  
  <p>Andes NDS32 target in big endian mode.
  
!    <p><hr /><a name="nvptx_002dx_002dnone"></a>
  
  <h3 class="heading"><a name="TOC40"></a>nvptx-*-none</h3>
  
--- 910,941 ----
  releases before 6.5 has been removed in GCC 4.6, as well as support for
  the O32 ABI.
  
!    <p><hr /><a name="moxie-x-elf"></a>
  
  <h3 class="heading"><a name="TOC36"></a>moxie-*-elf</h3>
  
  <p>The moxie processor.
  
!    <p><hr /><a name="msp430-x-elf"></a>
  
  <h3 class="heading"><a name="TOC37"></a>msp430-*-elf</h3>
  
  <p>TI MSP430 processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="nds32le-x-elf"></a>
  
  <h3 class="heading"><a name="TOC38"></a>nds32le-*-elf</h3>
  
  <p>Andes NDS32 target in little endian mode.
  
!    <p><hr /><a name="nds32be-x-elf"></a>
  
  <h3 class="heading"><a name="TOC39"></a>nds32be-*-elf</h3>
  
  <p>Andes NDS32 target in big endian mode.
  
!    <p><hr /><a name="nvptx-x-none"></a>
  
  <h3 class="heading"><a name="TOC40"></a>nvptx-*-none</h3>
  
*************** directory containing the GCC sources.
*** 955,961 ****
     <p>Use the <samp><span class="option">--disable-sjlj-exceptions</span></samp> and
  <samp><span class="option">--enable-newlib-io-long-long</span></samp> options when configuring.
  
!    <p><hr /><a name="powerpc_002dx_002dx"></a>
  
  <h3 class="heading"><a name="TOC41"></a>powerpc-*-*</h3>
  
--- 955,961 ----
     <p>Use the <samp><span class="option">--disable-sjlj-exceptions</span></samp> and
  <samp><span class="option">--enable-newlib-io-long-long</span></samp> options when configuring.
  
!    <p><hr /><a name="powerpc-x-x"></a>
  
  <h3 class="heading"><a name="TOC41"></a>powerpc-*-*</h3>
  
*************** switch by using the configure option <sa
*** 964,970 ****
  
     <p>You will need GNU binutils 2.15 or newer.
  
!    <p><hr /><a name="powerpc_002dx_002ddarwin"></a>
  
  <h3 class="heading"><a name="TOC42"></a>powerpc-*-darwin*</h3>
  
--- 964,970 ----
  
     <p>You will need GNU binutils 2.15 or newer.
  
!    <p><hr /><a name="powerpc-x-darwin"></a>
  
  <h3 class="heading"><a name="TOC42"></a>powerpc-*-darwin*</h3>
  
*************** cctools-590.36 package referenced from
*** 980,1043 ****
  <a href="http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html">http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html</a> will not work
  on systems older than 10.3.9 (aka darwin7.9.0).
  
!    <p><hr /><a name="powerpc_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC43"></a>powerpc-*-elf</h3>
  
  <p>PowerPC system in big endian mode, running System V.4.
  
!    <p><hr /><a name="powerpc_002dx_002dlinux_002dgnu"></a>
  
  <h3 class="heading"><a name="TOC44"></a>powerpc*-*-linux-gnu*</h3>
  
  <p>PowerPC system in big endian mode running Linux.
  
!    <p><hr /><a name="powerpc_002dx_002dnetbsd"></a>
  
  <h3 class="heading"><a name="TOC45"></a>powerpc-*-netbsd*</h3>
  
  <p>PowerPC system in big endian mode running NetBSD.
  
!    <p><hr /><a name="powerpc_002dx_002deabisim"></a>
  
  <h3 class="heading"><a name="TOC46"></a>powerpc-*-eabisim</h3>
  
  <p>Embedded PowerPC system in big endian mode for use in running under the
  PSIM simulator.
  
!    <p><hr /><a name="powerpc_002dx_002deabi"></a>
  
  <h3 class="heading"><a name="TOC47"></a>powerpc-*-eabi</h3>
  
  <p>Embedded PowerPC system in big endian mode.
  
!    <p><hr /><a name="powerpcle_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC48"></a>powerpcle-*-elf</h3>
  
  <p>PowerPC system in little endian mode, running System V.4.
  
!    <p><hr /><a name="powerpcle_002dx_002deabisim"></a>
  
  <h3 class="heading"><a name="TOC49"></a>powerpcle-*-eabisim</h3>
  
  <p>Embedded PowerPC system in little endian mode for use in running under
  the PSIM simulator.
  
!    <p><hr /><a name="powerpcle_002dx_002deabi"></a>
  
  <h3 class="heading"><a name="TOC50"></a>powerpcle-*-eabi</h3>
  
  <p>Embedded PowerPC system in little endian mode.
  
!    <p><hr /><a name="rl78_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC51"></a>rl78-*-elf</h3>
  
  <p>The Renesas RL78 processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="riscv32_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC52"></a>riscv32-*-elf</h3>
  
--- 980,1043 ----
  <a href="http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html">http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html</a> will not work
  on systems older than 10.3.9 (aka darwin7.9.0).
  
!    <p><hr /><a name="powerpc-x-elf"></a>
  
  <h3 class="heading"><a name="TOC43"></a>powerpc-*-elf</h3>
  
  <p>PowerPC system in big endian mode, running System V.4.
  
!    <p><hr /><a name="powerpc-x-linux-gnu"></a>
  
  <h3 class="heading"><a name="TOC44"></a>powerpc*-*-linux-gnu*</h3>
  
  <p>PowerPC system in big endian mode running Linux.
  
!    <p><hr /><a name="powerpc-x-netbsd"></a>
  
  <h3 class="heading"><a name="TOC45"></a>powerpc-*-netbsd*</h3>
  
  <p>PowerPC system in big endian mode running NetBSD.
  
!    <p><hr /><a name="powerpc-x-eabisim"></a>
  
  <h3 class="heading"><a name="TOC46"></a>powerpc-*-eabisim</h3>
  
  <p>Embedded PowerPC system in big endian mode for use in running under the
  PSIM simulator.
  
!    <p><hr /><a name="powerpc-x-eabi"></a>
  
  <h3 class="heading"><a name="TOC47"></a>powerpc-*-eabi</h3>
  
  <p>Embedded PowerPC system in big endian mode.
  
!    <p><hr /><a name="powerpcle-x-elf"></a>
  
  <h3 class="heading"><a name="TOC48"></a>powerpcle-*-elf</h3>
  
  <p>PowerPC system in little endian mode, running System V.4.
  
!    <p><hr /><a name="powerpcle-x-eabisim"></a>
  
  <h3 class="heading"><a name="TOC49"></a>powerpcle-*-eabisim</h3>
  
  <p>Embedded PowerPC system in little endian mode for use in running under
  the PSIM simulator.
  
!    <p><hr /><a name="powerpcle-x-eabi"></a>
  
  <h3 class="heading"><a name="TOC50"></a>powerpcle-*-eabi</h3>
  
  <p>Embedded PowerPC system in little endian mode.
  
!    <p><hr /><a name="rl78-x-elf"></a>
  
  <h3 class="heading"><a name="TOC51"></a>rl78-*-elf</h3>
  
  <p>The Renesas RL78 processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="riscv32-x-elf"></a>
  
  <h3 class="heading"><a name="TOC52"></a>riscv32-*-elf</h3>
  
*************** This configuration is intended for embed
*** 1046,1052 ****
  This (and all other RISC-V) targets are supported upstream as of the
  binutils 2.28 release.
  
!    <p><hr /><a name="riscv32_002dx_002dlinux"></a>
  
  <h3 class="heading"><a name="TOC53"></a>riscv32-*-linux</h3>
  
--- 1046,1052 ----
  This (and all other RISC-V) targets are supported upstream as of the
  binutils 2.28 release.
  
!    <p><hr /><a name="riscv32-x-linux"></a>
  
  <h3 class="heading"><a name="TOC53"></a>riscv32-*-linux</h3>
  
*************** binutils 2.28 release.
*** 1054,1060 ****
  This (and all other RISC-V) targets are supported upstream as of the
  binutils 2.28 release.
  
!    <p><hr /><a name="riscv64_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC54"></a>riscv64-*-elf</h3>
  
--- 1054,1060 ----
  This (and all other RISC-V) targets are supported upstream as of the
  binutils 2.28 release.
  
!    <p><hr /><a name="riscv64-x-elf"></a>
  
  <h3 class="heading"><a name="TOC54"></a>riscv64-*-elf</h3>
  
*************** This configuration is intended for embed
*** 1063,1069 ****
  This (and all other RISC-V) targets are supported upstream as of the
  binutils 2.28 release.
  
!    <p><hr /><a name="riscv64_002dx_002dlinux"></a>
  
  <h3 class="heading"><a name="TOC55"></a>riscv64-*-linux</h3>
  
--- 1063,1069 ----
  This (and all other RISC-V) targets are supported upstream as of the
  binutils 2.28 release.
  
!    <p><hr /><a name="riscv64-x-linux"></a>
  
  <h3 class="heading"><a name="TOC55"></a>riscv64-*-linux</h3>
  
*************** binutils 2.28 release.
*** 1071,1095 ****
  This (and all other RISC-V) targets are supported upstream as of the
  binutils 2.28 release.
  
!    <p><hr /><a name="rx_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC56"></a>rx-*-elf</h3>
  
  <p>The Renesas RX processor.
  
!    <p><hr /><a name="s390_002dx_002dlinux"></a>
  
  <h3 class="heading"><a name="TOC57"></a>s390-*-linux*</h3>
  
  <p>S/390 system running GNU/Linux for S/390.
  
!    <p><hr /><a name="s390x_002dx_002dlinux"></a>
  
  <h3 class="heading"><a name="TOC58"></a>s390x-*-linux*</h3>
  
  <p>zSeries system (64-bit) running GNU/Linux for zSeries.
  
!    <p><hr /><a name="s390x_002dibm_002dtpf"></a>
  
  <h3 class="heading"><a name="TOC59"></a>s390x-ibm-tpf*</h3>
  
--- 1071,1095 ----
  This (and all other RISC-V) targets are supported upstream as of the
  binutils 2.28 release.
  
!    <p><hr /><a name="rx-x-elf"></a>
  
  <h3 class="heading"><a name="TOC56"></a>rx-*-elf</h3>
  
  <p>The Renesas RX processor.
  
!    <p><hr /><a name="s390-x-linux"></a>
  
  <h3 class="heading"><a name="TOC57"></a>s390-*-linux*</h3>
  
  <p>S/390 system running GNU/Linux for S/390.
  
!    <p><hr /><a name="s390x-x-linux"></a>
  
  <h3 class="heading"><a name="TOC58"></a>s390x-*-linux*</h3>
  
  <p>zSeries system (64-bit) running GNU/Linux for zSeries.
  
!    <p><hr /><a name="s390x-ibm-tpf"></a>
  
  <h3 class="heading"><a name="TOC59"></a>s390x-ibm-tpf*</h3>
  
*************** supported as cross-compilation target on
*** 1100,1106 ****
  <!-- with 2.0 until 2.6, 7, 8, etc.  Solaris 1 was a marketing name for -->
  <!-- SunOS 4 releases which we don't use to avoid confusion.  Solaris -->
  <!-- alone is too unspecific and must be avoided. -->
! <a name="x_002dx_002dsolaris2"></a>
  
  <h3 class="heading"><a name="TOC60"></a>*-*-solaris2*</h3>
  
--- 1100,1106 ----
  <!-- with 2.0 until 2.6, 7, 8, etc.  Solaris 1 was a marketing name for -->
  <!-- SunOS 4 releases which we don't use to avoid confusion.  Solaris -->
  <!-- alone is too unspecific and must be avoided. -->
! <a name="x-x-solaris2"></a>
  
  <h3 class="heading"><a name="TOC60"></a>*-*-solaris2*</h3>
  
*************** program which is used only by the GCC te
*** 1186,1192 ****
  causes the <samp><span class="command">expect</span></samp> program to miss anticipated output, extra
  testsuite failures appear.
  
!    <p><hr /><a name="sparc_002dx_002dx"></a>
  
  <h3 class="heading"><a name="TOC61"></a>sparc*-*-*</h3>
  
--- 1186,1192 ----
  causes the <samp><span class="command">expect</span></samp> program to miss anticipated output, extra
  testsuite failures appear.
  
!    <p><hr /><a name="sparc-x-x"></a>
  
  <h3 class="heading"><a name="TOC61"></a>sparc*-*-*</h3>
  
*************** versions of GCC on these platforms.  We
*** 1200,1206 ****
  of the exact versions of these libraries listed as minimal versions
  in <a href="prerequisites.html">the prerequisites</a>.
  
!    <p><hr /><a name="sparc_002dsun_002dsolaris2"></a>
  
  <h3 class="heading"><a name="TOC62"></a>sparc-sun-solaris2*</h3>
  
--- 1200,1206 ----
  of the exact versions of these libraries listed as minimal versions
  in <a href="prerequisites.html">the prerequisites</a>.
  
!    <p><hr /><a name="sparc-sun-solaris2"></a>
  
  <h3 class="heading"><a name="TOC62"></a>sparc-sun-solaris2*</h3>
  
*************** not that of GMP or MPFR or MPC).  For ex
*** 1225,1231 ****
  
  <pre class="smallexample">     % ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
  </pre>
!    <p><hr /><a name="sparc_002dsun_002dsolaris210"></a>
  
  <h3 class="heading"><a name="TOC63"></a>sparc-sun-solaris2.10</h3>
  
--- 1225,1231 ----
  
  <pre class="smallexample">     % ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
  </pre>
!    <p><hr /><a name="sparc-sun-solaris210"></a>
  
  <h3 class="heading"><a name="TOC63"></a>sparc-sun-solaris2.10</h3>
  
*************** thread-local storage (TLS).  A typical e
*** 1237,1247 ****
  </pre>
     <p class="noindent">This bug is fixed in Sun patch 118683-03 or later.
  
!    <p><hr /><a name="sparc_002dx_002dlinux"></a>
  
  <h3 class="heading"><a name="TOC64"></a>sparc-*-linux*</h3>
  
! <p><hr /><a name="sparc64_002dx_002dsolaris2"></a>
  
  <h3 class="heading"><a name="TOC65"></a>sparc64-*-solaris2*</h3>
  
--- 1237,1247 ----
  </pre>
     <p class="noindent">This bug is fixed in Sun patch 118683-03 or later.
  
!    <p><hr /><a name="sparc-x-linux"></a>
  
  <h3 class="heading"><a name="TOC64"></a>sparc-*-linux*</h3>
  
! <p><hr /><a name="sparc64-x-solaris2"></a>
  
  <h3 class="heading"><a name="TOC65"></a>sparc64-*-solaris2*</h3>
  
*************** on a Solaris 9 system:
*** 1252,1298 ****
  
  <pre class="smallexample">     % ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
  </pre>
!    <p><hr /><a name="sparcv9_002dx_002dsolaris2"></a>
  
  <h3 class="heading"><a name="TOC66"></a>sparcv9-*-solaris2*</h3>
  
  <p>This is a synonym for &lsquo;<samp><span class="samp">sparc64-*-solaris2*</span></samp>&rsquo;.
  
!    <p><hr /><a name="c6x_002dx_002dx"></a>
  
  <h3 class="heading"><a name="TOC67"></a>c6x-*-*</h3>
  
  <p>The C6X family of processors. This port requires binutils-2.22 or newer.
  
!    <p><hr /><a name="tilegx_002d_002a_002dlinux"></a>
  
  <h3 class="heading"><a name="TOC68"></a>tilegx-*-linux*</h3>
  
  <p>The TILE-Gx processor in little endian mode, running GNU/Linux.  This
  port requires binutils-2.22 or newer.
  
!    <p><hr /><a name="tilegxbe_002d_002a_002dlinux"></a>
  
  <h3 class="heading"><a name="TOC69"></a>tilegxbe-*-linux*</h3>
  
  <p>The TILE-Gx processor in big endian mode, running GNU/Linux.  This
  port requires binutils-2.23 or newer.
  
!    <p><hr /><a name="tilepro_002d_002a_002dlinux"></a>
  
  <h3 class="heading"><a name="TOC70"></a>tilepro-*-linux*</h3>
  
  <p>The TILEPro processor running GNU/Linux.  This port requires
  binutils-2.22 or newer.
  
!    <p><hr /><a name="visium_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC71"></a>visium-*-elf</h3>
  
  <p>CDS VISIUMcore processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="x_002dx_002dvxworks"></a>
  
  <h3 class="heading"><a name="TOC72"></a>*-*-vxworks*</h3>
  
--- 1252,1298 ----
  
  <pre class="smallexample">     % ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
  </pre>
!    <p><hr /><a name="sparcv9-x-solaris2"></a>
  
  <h3 class="heading"><a name="TOC66"></a>sparcv9-*-solaris2*</h3>
  
  <p>This is a synonym for &lsquo;<samp><span class="samp">sparc64-*-solaris2*</span></samp>&rsquo;.
  
!    <p><hr /><a name="c6x-x-x"></a>
  
  <h3 class="heading"><a name="TOC67"></a>c6x-*-*</h3>
  
  <p>The C6X family of processors. This port requires binutils-2.22 or newer.
  
!    <p><hr /><a name="tilegx-*-linux"></a>
  
  <h3 class="heading"><a name="TOC68"></a>tilegx-*-linux*</h3>
  
  <p>The TILE-Gx processor in little endian mode, running GNU/Linux.  This
  port requires binutils-2.22 or newer.
  
!    <p><hr /><a name="tilegxbe-*-linux"></a>
  
  <h3 class="heading"><a name="TOC69"></a>tilegxbe-*-linux*</h3>
  
  <p>The TILE-Gx processor in big endian mode, running GNU/Linux.  This
  port requires binutils-2.23 or newer.
  
!    <p><hr /><a name="tilepro-*-linux"></a>
  
  <h3 class="heading"><a name="TOC70"></a>tilepro-*-linux*</h3>
  
  <p>The TILEPro processor running GNU/Linux.  This port requires
  binutils-2.22 or newer.
  
!    <p><hr /><a name="visium-x-elf"></a>
  
  <h3 class="heading"><a name="TOC71"></a>visium-*-elf</h3>
  
  <p>CDS VISIUMcore processor. 
  This configuration is intended for embedded systems.
  
!    <p><hr /><a name="x-x-vxworks"></a>
  
  <h3 class="heading"><a name="TOC72"></a>*-*-vxworks*</h3>
  
*************** module, <samp><span class="file">contrib
*** 1327,1333 ****
  that file to add the module to your kernel build.  (Future versions of
  VxWorks will incorporate this module.)
  
!    <p><hr /><a name="x86_002d64_002dx_002dx"></a>
  
  <h3 class="heading"><a name="TOC73"></a>x86_64-*-*, amd64-*-*</h3>
  
--- 1327,1333 ----
  that file to add the module to your kernel build.  (Future versions of
  VxWorks will incorporate this module.)
  
!    <p><hr /><a name="x86-64-x-x"></a>
  
  <h3 class="heading"><a name="TOC73"></a>x86_64-*-*, amd64-*-*</h3>
  
*************** VxWorks will incorporate this module.)
*** 1336,1342 ****
  On GNU/Linux the default is a bi-arch compiler which is able to generate
  both 64-bit x86-64 and 32-bit x86 code (via the <samp><span class="option">-m32</span></samp> switch).
  
!    <p><hr /><a name="x86_002d64_002dx_002dsolaris210"></a>
  
  <h3 class="heading"><a name="TOC74"></a>x86_64-*-solaris2.1[0-9]*</h3>
  
--- 1336,1342 ----
  On GNU/Linux the default is a bi-arch compiler which is able to generate
  both 64-bit x86-64 and 32-bit x86 code (via the <samp><span class="option">-m32</span></samp> switch).
  
!    <p><hr /><a name="x86-64-x-solaris210"></a>
  
  <h3 class="heading"><a name="TOC74"></a>x86_64-*-solaris2.1[0-9]*</h3>
  
*************** this way, you have to provide all suppor
*** 1351,1357 ****
  as 64-bit code, configure with <samp><span class="option">--target=x86_64-pc-solaris2.1x</span></samp>
  and &lsquo;<samp><span class="samp">CC=gcc -m64</span></samp>&rsquo;.
  
!    <p><hr /><a name="xtensa_002dx_002delf"></a>
  
  <h3 class="heading"><a name="TOC75"></a>xtensa*-*-elf</h3>
  
--- 1351,1357 ----
  as 64-bit code, configure with <samp><span class="option">--target=x86_64-pc-solaris2.1x</span></samp>
  and &lsquo;<samp><span class="samp">CC=gcc -m64</span></samp>&rsquo;.
  
!    <p><hr /><a name="xtensa-x-elf"></a>
  
  <h3 class="heading"><a name="TOC75"></a>xtensa*-*-elf</h3>
  
*************** own Xtensa configuration with the Xtensa
*** 1368,1374 ****
  downloaded files include a customized copy of this header file,
  which you can use to replace the default header file.
  
!    <p><hr /><a name="xtensa_002dx_002dlinux"></a>
  
  <h3 class="heading"><a name="TOC76"></a>xtensa*-*-linux*</h3>
  
--- 1368,1374 ----
  downloaded files include a customized copy of this header file,
  which you can use to replace the default header file.
  
!    <p><hr /><a name="xtensa-x-linux"></a>
  
  <h3 class="heading"><a name="TOC76"></a>xtensa*-*-linux*</h3>
  
*************** be inactive.  See <a href="http://pw32.s
*** 1434,1440 ****
  
     <p>UWIN support has been removed due to a lack of maintenance.
  
!    <p><hr /><a name="x_002dx_002dcygwin"></a>
  
  <h3 class="heading"><a name="TOC83"></a>*-*-cygwin</h3>
  
--- 1434,1440 ----
  
     <p>UWIN support has been removed due to a lack of maintenance.
  
!    <p><hr /><a name="x-x-cygwin"></a>
  
  <h3 class="heading"><a name="TOC83"></a>*-*-cygwin</h3>
  
*************** used with as up-to-date a version of bin
*** 1450,1456 ****
  the latest official GNU binutils release in the Cygwin distribution,
  or version 2.20 or above if building your own.
  
!    <p><hr /><a name="x_002dx_002dmingw32"></a>
  
  <h3 class="heading"><a name="TOC84"></a>*-*-mingw32</h3>
  
--- 1450,1456 ----
  the latest official GNU binutils release in the Cygwin distribution,
  or version 2.20 or above if building your own.
  
!    <p><hr /><a name="x-x-mingw32"></a>
  
  <h3 class="heading"><a name="TOC84"></a>*-*-mingw32</h3>
  
diff -Nrcpad gcc-7.3.0/LAST_UPDATED gcc-7.4.0/LAST_UPDATED
*** gcc-7.3.0/LAST_UPDATED	Thu Jan 25 08:17:55 2018
--- gcc-7.4.0/LAST_UPDATED	Thu Dec  6 09:58:52 2018
***************
*** 1 ****
! Obtained from SVN: tags/gcc_7_3_0_release revision 257042
--- 1 ----
! Obtained from SVN: tags/gcc_7_4_0_release revision 266845
diff -Nrcpad gcc-7.3.0/MD5SUMS gcc-7.4.0/MD5SUMS
*** gcc-7.3.0/MD5SUMS	Thu Jan 25 08:49:33 2018
--- gcc-7.4.0/MD5SUMS	Thu Dec  6 10:29:18 2018
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the 
! # gcc-7.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-7.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,52 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 39d8e9d7c99bd16667b246685a1cf73c  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
  b61a488919c46f3d85d5632b7822144f  INSTALL/binaries.html
  f31c9b7e2c6b5c9036d2585c89212669  INSTALL/build.html
! 389768a39e48dac67ac477e6ec089bf0  INSTALL/configure.html
  c006991610497e0d1e2eb3ddbae3abc0  INSTALL/download.html
  25ac1b699f90536f5a5366fbb4c9cce6  INSTALL/finalinstall.html
  6cd4943d3fd0a684344aa9501c1f6a92  INSTALL/gfdl.html
  990bc554f2ec342c9c2e7ee8d2214836  INSTALL/index.html
  5298546b61e638e7afdea2f506a9c6a6  INSTALL/old.html
  af9fd8189c1230a90586b250985c4b4b  INSTALL/prerequisites.html
! 213df43fe2cf1e44974b6e79782df83a  INSTALL/specific.html
  46d726564091e71e397f3cb6cf879bac  INSTALL/test.html
! 462df5a60f72bc71d76c1b3b10d4ba39  LAST_UPDATED
  b7046438c5076ff5c22da3f713c55819  MAINTAINERS
  cf9f2757ce84b3623a2c25cd96e2630f  Makefile.def
  38d4e84f45aef7dc5e4cce9befc6252d  Makefile.in
  2233eb495f622e1cbca6f0e111f96048  Makefile.tpl
! 972c92d6308b2dac738cde26cd967669  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  500b9244caa7a7ab23ece1db37efa76d  compile
  cb74b6c8a93f1e46388212f44c60afed  config-ml.in
  07fc7c2000154cc8d5bd1211bad7a65b  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  3e5a5bd82d324a14f895209750e785b8  config.sub
! 6bf19c8f0c03861768d542b3d36649b4  config/ChangeLog
  0fcd4badfe2a2191778bdf5ab94aa40c  config/acinclude.m4
! 4e07b66e4e4b3c6e35ba2a752e1cd95d  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
  a6bf9c39c62222092ea6d5d8551c077f  config/ax_check_define.m4
  596c2296c23cda1b6445427d6c3ce3ad  config/bitfields.m4
--- 17,52 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! a540de7eadb239c3d21732cb8ba5fa36  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
  b61a488919c46f3d85d5632b7822144f  INSTALL/binaries.html
  f31c9b7e2c6b5c9036d2585c89212669  INSTALL/build.html
! b64aca22ee042ac0a261a9f2735fd36a  INSTALL/configure.html
  c006991610497e0d1e2eb3ddbae3abc0  INSTALL/download.html
  25ac1b699f90536f5a5366fbb4c9cce6  INSTALL/finalinstall.html
  6cd4943d3fd0a684344aa9501c1f6a92  INSTALL/gfdl.html
  990bc554f2ec342c9c2e7ee8d2214836  INSTALL/index.html
  5298546b61e638e7afdea2f506a9c6a6  INSTALL/old.html
  af9fd8189c1230a90586b250985c4b4b  INSTALL/prerequisites.html
! ff15921cf6f71394f0914436e66ce60e  INSTALL/specific.html
  46d726564091e71e397f3cb6cf879bac  INSTALL/test.html
! 10bc0bb7b3d1fa0d8795967100e1511e  LAST_UPDATED
  b7046438c5076ff5c22da3f713c55819  MAINTAINERS
  cf9f2757ce84b3623a2c25cd96e2630f  Makefile.def
  38d4e84f45aef7dc5e4cce9befc6252d  Makefile.in
  2233eb495f622e1cbca6f0e111f96048  Makefile.tpl
! 42dd5797be3c496ba7c40c52af9611c4  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  500b9244caa7a7ab23ece1db37efa76d  compile
  cb74b6c8a93f1e46388212f44c60afed  config-ml.in
  07fc7c2000154cc8d5bd1211bad7a65b  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  3e5a5bd82d324a14f895209750e785b8  config.sub
! 253265a782dde7eed42ef4acd7c7eea0  config/ChangeLog
  0fcd4badfe2a2191778bdf5ab94aa40c  config/acinclude.m4
! 2ea0edfde0ce5ce69b49317a5650f048  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
  a6bf9c39c62222092ea6d5d8551c077f  config/ax_check_define.m4
  596c2296c23cda1b6445427d6c3ce3ad  config/bitfields.m4
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 134,142 ****
  5cabffc02a90bd9698105b9eef507f11  config/warnings.m4
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
! d6ddde030a4686d740140dc1f5ed9952  configure
  278ffc6b756f6d7bbb6520b724a3a37d  configure.ac
! 0fbbc88f666b4ad7a6424521daa61fb9  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  41c532dfc353377dce9eb2fbaa3179fd  contrib/analyze_brprob.py
--- 134,142 ----
  5cabffc02a90bd9698105b9eef507f11  config/warnings.m4
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
! 728d4754bbbb8d58ed827b3bd2cef682  configure
  278ffc6b756f6d7bbb6520b724a3a37d  configure.ac
! 791261548b91feb90e49a492524e575b  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  41c532dfc353377dce9eb2fbaa3179fd  contrib/analyze_brprob.py
*************** db03e57377f9eb202b7b783eb81fe40d  contri
*** 166,172 ****
  8d5fd6a30a05940f4fb9383e2ea15a97  contrib/gennews
  2d35f147fc45f270eb169156cf7550e0  contrib/gimple.vim
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! e62be1387abc131961dc94e9bcd0cd9f  contrib/header-tools/ChangeLog
  1ba821a1e480c2f8ac33b68ca1097770  contrib/header-tools/README
  05ef7fb87e90ba93ee04659be072a357  contrib/header-tools/count-headers
  ba0485a3c721bce9e32407ef996d2a9d  contrib/header-tools/gcc-order-headers
--- 166,172 ----
  8d5fd6a30a05940f4fb9383e2ea15a97  contrib/gennews
  2d35f147fc45f270eb169156cf7550e0  contrib/gimple.vim
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! 901f6b00cd1375bbbe1e0b342ff57d1d  contrib/header-tools/ChangeLog
  1ba821a1e480c2f8ac33b68ca1097770  contrib/header-tools/README
  05ef7fb87e90ba93ee04659be072a357  contrib/header-tools/count-headers
  ba0485a3c721bce9e32407ef996d2a9d  contrib/header-tools/gcc-order-headers
*************** a34668cfad9dec733354503fbc67fb24  contri
*** 188,194 ****
  87a19b40fbd220938cf6c23c42c255e2  contrib/prepare_patch.sh
  959cb8ef692d41f5b4e0bb200810e0c6  contrib/prerequisites.md5
  422c59c5fe9228a3dec0f7c819d63fc1  contrib/prerequisites.sha512
! 6dc4332e8cfbafbf1a3f974db35c27bc  contrib/reghunt/ChangeLog
  cf247a580e49d212518de409793db0a8  contrib/reghunt/bin/gcc-build-full
  724e70ea3e80f87f2a201bbe2f1eef37  contrib/reghunt/bin/gcc-build-simple
  3f2318bae7562a4ad1639e686916a545  contrib/reghunt/bin/gcc-cleanup
--- 188,194 ----
  87a19b40fbd220938cf6c23c42c255e2  contrib/prepare_patch.sh
  959cb8ef692d41f5b4e0bb200810e0c6  contrib/prerequisites.md5
  422c59c5fe9228a3dec0f7c819d63fc1  contrib/prerequisites.sha512
! f91cd26398ed949c546b4a753b8c292f  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
*** 247,253 ****
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! 96db372721f47dc0f79a329894664886  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
--- 247,253 ----
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! 4a3f4c19ed6e543d2524ab242b4ca7d0  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
*************** db934a41ee73c66dbdde7290d85e547d  contri
*** 272,285 ****
  45d4839f2ac702761b88d502311d47ef  contrib/vimrc
  52ed3669ef691d1606b2d8849f05cc6e  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 5bdfb0fdb873c68aeea26c094463ce00  fixincludes/ChangeLog
  6de190723745dc3f75080144dfa2215e  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
  d7d8848cf7aae26a8e84536be1613e96  fixincludes/aclocal.m4
  06c68af3013771f49738a0ade1579050  fixincludes/check.tpl
  4f0cff44689cac00e5599c785c1be9f4  fixincludes/config.h.in
! 78147b7eb0f603ee5a49696c2d18497d  fixincludes/configure
  860f2cdd7712f7adc848cb2407e15c94  fixincludes/configure.ac
  541ba3a63f9359f14ac2b35151ba18db  fixincludes/fixfixes.c
  7aba8b93c5233bc3247ff32e0e7cfe03  fixincludes/fixinc.in
--- 272,285 ----
  45d4839f2ac702761b88d502311d47ef  contrib/vimrc
  52ed3669ef691d1606b2d8849f05cc6e  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 794be9d0cee39dd3bd68ec46d5f7fe3a  fixincludes/ChangeLog
  6de190723745dc3f75080144dfa2215e  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
  d7d8848cf7aae26a8e84536be1613e96  fixincludes/aclocal.m4
  06c68af3013771f49738a0ade1579050  fixincludes/check.tpl
  4f0cff44689cac00e5599c785c1be9f4  fixincludes/config.h.in
! a047119816700b0c31847ca6f4f52aab  fixincludes/configure
  860f2cdd7712f7adc848cb2407e15c94  fixincludes/configure.ac
  541ba3a63f9359f14ac2b35151ba18db  fixincludes/fixfixes.c
  7aba8b93c5233bc3247ff32e0e7cfe03  fixincludes/fixinc.in
*************** a5e817d35ded04a0fb03999b50c0e89e  fixinc
*** 409,420 ****
  955462b555900ecd3934223c64e21fa7  fixincludes/tests/base/types/vxTypesBase.h
  c78e762f2c91f2af991feda7d3d7f4b2  fixincludes/tests/base/unistd.h
  fe8b9c2159f95655fcb76d514f36eaf1  gcc/ABOUT-GCC-NLS
! e1c4c580d0872637d2f7907b6395953e  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! b85fa887c5bd7b99d7def78e968007d3  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 409,420 ----
  955462b555900ecd3934223c64e21fa7  fixincludes/tests/base/types/vxTypesBase.h
  c78e762f2c91f2af991feda7d3d7f4b2  fixincludes/tests/base/unistd.h
  fe8b9c2159f95655fcb76d514f36eaf1  gcc/ABOUT-GCC-NLS
! 535f32c053fc1b4bc9f288da470157b8  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 61132dfedd2f94df367418261d794a0c  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 443,449 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 37e1081e5d2b3e273dd2dfe3cdb46d47  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 443,449 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! fcc7817295a29e207aadd04f920e31ce  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** e582560d0bf728d88aed7e8d4a281453  gcc/RE
*** 455,461 ****
  3aab1d8a09402a2cfff7275fdfb6a31e  gcc/acinclude.m4
  9545fe83576dc99e441c64e268711730  gcc/aclocal.m4
  9063d23e571fcde20283b9f34d5e3422  gcc/ada/9drpc.adb
! 968f2f977651b4d056b7cb62dc72b41f  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
--- 455,461 ----
  3aab1d8a09402a2cfff7275fdfb6a31e  gcc/acinclude.m4
  9545fe83576dc99e441c64e268711730  gcc/aclocal.m4
  9063d23e571fcde20283b9f34d5e3422  gcc/ada/9drpc.adb
! 9485ffd3390c9f2b090bbcc5d76179f4  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
*************** ae3d76934bd3d337810fdfe2a6241a57  gcc/ad
*** 1235,1241 ****
  8007a42cdc460accacc052ed81042c47  gcc/ada/expander.adb
  856cf1514fa6e098c62b2213757c16bd  gcc/ada/expander.ads
  e044a3fffd1fd8033aeb0ad8c19e78bd  gcc/ada/expect.c
! 47a90f16125b780c219d015f09f94551  gcc/ada/fe.h
  9f7f07b76ab6bb41a0c8c16bc4652374  gcc/ada/final.c
  d01403851a5364d53fe4e42045ee1780  gcc/ada/fmap.adb
  c1521c6e3b4d7465c7d7c52c05cba906  gcc/ada/fmap.ads
--- 1235,1241 ----
  8007a42cdc460accacc052ed81042c47  gcc/ada/expander.adb
  856cf1514fa6e098c62b2213757c16bd  gcc/ada/expander.ads
  e044a3fffd1fd8033aeb0ad8c19e78bd  gcc/ada/expect.c
! acdf5660fa191e339ac73a9b09d88cdc  gcc/ada/fe.h
  9f7f07b76ab6bb41a0c8c16bc4652374  gcc/ada/final.c
  d01403851a5364d53fe4e42045ee1780  gcc/ada/fmap.adb
  c1521c6e3b4d7465c7d7c52c05cba906  gcc/ada/fmap.ads
*************** d7eca93022b3adc8f4a61dbe910e95d2  gcc/ad
*** 1466,1486 ****
  b45654446bc74bb68ae4adef78906e9b  gcc/ada/g-zspche.ads
  c97edf7ce39a908dcaec55eb49d0abee  gcc/ada/g-zstspl.ads
  03f505d0c5a108b347698645d923a2bb  gcc/ada/gcc-interface/Make-lang.in
! 6f4fbe2ce7958fc0afcfd85bc1ca33e8  gcc/ada/gcc-interface/Makefile.in
  055be3d11fa6ccb53ffe7f8970a005ce  gcc/ada/gcc-interface/ada-tree.def
! cb9de0fea640e1eb0cb786f98b60263d  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
! abb812a5ed2b2de77f15f562821a631b  gcc/ada/gcc-interface/decl.c
  c413d4d50e9563859f4d751a4404b705  gcc/ada/gcc-interface/gadaint.h
! c7117c67e2102857d70e286a82985bc0  gcc/ada/gcc-interface/gigi.h
  f2528ece7aa7e2ed8123de8fe434252a  gcc/ada/gcc-interface/lang-specs.h
  1bba4d8f118cd8b82ada60fb44393339  gcc/ada/gcc-interface/lang.opt
! bc6f86c4a773c1bcb6a433ee6463059a  gcc/ada/gcc-interface/misc.c
  7bd3630f35c5ac7b5c6cfaf8b16e5723  gcc/ada/gcc-interface/targtyps.c
! 9537a7f80ce82240be8e627f9cacfff2  gcc/ada/gcc-interface/trans.c
! fc98ad29d5c383124659e37a88ffdab9  gcc/ada/gcc-interface/utils.c
  d550c79030f34117a03a70132b6afe32  gcc/ada/gcc-interface/utils2.c
  7441478a743eff5837846723eca81135  gcc/ada/get_scos.adb
  baa8fdaf8d693eb6c5a7e42944887584  gcc/ada/get_scos.ads
--- 1466,1486 ----
  b45654446bc74bb68ae4adef78906e9b  gcc/ada/g-zspche.ads
  c97edf7ce39a908dcaec55eb49d0abee  gcc/ada/g-zstspl.ads
  03f505d0c5a108b347698645d923a2bb  gcc/ada/gcc-interface/Make-lang.in
! 37713abed9b24827fc5c3c88349b1e03  gcc/ada/gcc-interface/Makefile.in
  055be3d11fa6ccb53ffe7f8970a005ce  gcc/ada/gcc-interface/ada-tree.def
! 2d594695e9e82d9067cabf385b6ab32a  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
! 0c2160a96cc5519f26a62c2acf5daec7  gcc/ada/gcc-interface/decl.c
  c413d4d50e9563859f4d751a4404b705  gcc/ada/gcc-interface/gadaint.h
! 325e2eb81b1eac6225dcb381a4db7160  gcc/ada/gcc-interface/gigi.h
  f2528ece7aa7e2ed8123de8fe434252a  gcc/ada/gcc-interface/lang-specs.h
  1bba4d8f118cd8b82ada60fb44393339  gcc/ada/gcc-interface/lang.opt
! 9b194bf83bd32a42a54a2f873ae9b41e  gcc/ada/gcc-interface/misc.c
  7bd3630f35c5ac7b5c6cfaf8b16e5723  gcc/ada/gcc-interface/targtyps.c
! 73a1a1319d45fcc07793e6ff068cafe6  gcc/ada/gcc-interface/trans.c
! 072131c2f65294a4764eca4e7ea36080  gcc/ada/gcc-interface/utils.c
  d550c79030f34117a03a70132b6afe32  gcc/ada/gcc-interface/utils2.c
  7441478a743eff5837846723eca81135  gcc/ada/get_scos.adb
  baa8fdaf8d693eb6c5a7e42944887584  gcc/ada/get_scos.ads
*************** e0ccc12265d7031072307fee72e66441  gcc/ad
*** 1968,1974 ****
  eefe6d5048eed3735e14321d40ba8458  gcc/ada/s-osinte-rtems.ads
  8e43cb0ee20789269fc8a03e909f1a98  gcc/ada/s-osinte-solaris-posix.ads
  4b79cc58a1b73b941681456c8abba9f5  gcc/ada/s-osinte-solaris.adb
! 5d8bb4d19a51168c31b3c222912bdd69  gcc/ada/s-osinte-solaris.ads
  71b0f97b376aa1713bae743eaf97044b  gcc/ada/s-osinte-vxworks.adb
  6368c30dad213864537600fa307950ac  gcc/ada/s-osinte-vxworks.ads
  0f8f33b5307babd0397eb1ea464b88d4  gcc/ada/s-osinte-x32.adb
--- 1968,1974 ----
  eefe6d5048eed3735e14321d40ba8458  gcc/ada/s-osinte-rtems.ads
  8e43cb0ee20789269fc8a03e909f1a98  gcc/ada/s-osinte-solaris-posix.ads
  4b79cc58a1b73b941681456c8abba9f5  gcc/ada/s-osinte-solaris.adb
! f67b70fb8e29d521b1e3742169799d5f  gcc/ada/s-osinte-solaris.ads
  71b0f97b376aa1713bae743eaf97044b  gcc/ada/s-osinte-vxworks.adb
  6368c30dad213864537600fa307950ac  gcc/ada/s-osinte-vxworks.ads
  0f8f33b5307babd0397eb1ea464b88d4  gcc/ada/s-osinte-x32.adb
*************** fc7be41f48bbad07a07baf3e27fc889b  gcc/ad
*** 2568,2574 ****
  0493a7ed666c4b102be665a8e328be35  gcc/ada/xutil.adb
  2c8b2f1975e4e064d3803db6dbd516cb  gcc/ada/xutil.ads
  395d0f1ab41fadeec5b2da345caaa7d1  gcc/addresses.h
! 6bcdfa81bbd03eaee9ef1a87563137ca  gcc/alias.c
  55bf22e5d4bffd386a14aa43b2a2ec63  gcc/alias.h
  36e6104a99f85da5d16b7e261a9a9860  gcc/alloc-pool.c
  bbf80e664bc2c1a3d3bebb5f508373d6  gcc/alloc-pool.h
--- 2568,2574 ----
  0493a7ed666c4b102be665a8e328be35  gcc/ada/xutil.adb
  2c8b2f1975e4e064d3803db6dbd516cb  gcc/ada/xutil.ads
  395d0f1ab41fadeec5b2da345caaa7d1  gcc/addresses.h
! 33c10ab5b62def111fcb33ebe8c36b0e  gcc/alias.c
  55bf22e5d4bffd386a14aa43b2a2ec63  gcc/alias.h
  36e6104a99f85da5d16b7e261a9a9860  gcc/alloc-pool.c
  bbf80e664bc2c1a3d3bebb5f508373d6  gcc/alloc-pool.h
*************** e011891e7101cbf08438851847b50380  gcc/bb
*** 2586,2593 ****
  4f13f945a546e96933494f65cd937763  gcc/bitmap.c
  87a6abe81f5dcb21d241c1b9166c420d  gcc/bitmap.h
  a3e1bd92ba9bdedb8c7153c6e72090c4  gcc/brig-builtins.def
! 28f1df523efa10bddabc844bbfb2c076  gcc/brig/ChangeLog
! 2351e5f1fffd7af8d29270a899e85c47  gcc/brig/Make-lang.in
  ee6dd4618f856ac83d7067ce9254d85e  gcc/brig/brig-builtins.h
  729008055685d12fc1ca05008df01aef  gcc/brig/brig-c.h
  4ad49c86248cb9f1f76e31b09d8d47e1  gcc/brig/brig-lang.c
--- 2586,2593 ----
  4f13f945a546e96933494f65cd937763  gcc/bitmap.c
  87a6abe81f5dcb21d241c1b9166c420d  gcc/bitmap.h
  a3e1bd92ba9bdedb8c7153c6e72090c4  gcc/brig-builtins.def
! 338fbcec39521451f2ff7f22c9be2548  gcc/brig/ChangeLog
! 1cf71f0ca99819490615a7a573a5d699  gcc/brig/Make-lang.in
  ee6dd4618f856ac83d7067ce9254d85e  gcc/brig/brig-builtins.h
  729008055685d12fc1ca05008df01aef  gcc/brig/brig-c.h
  4ad49c86248cb9f1f76e31b09d8d47e1  gcc/brig/brig-lang.c
*************** bee513b2167c326e657a757cafd956dc  gcc/br
*** 2629,2657 ****
  f47f3a5be286bb97d5b3ded0c77a7fc8  gcc/bt-load.c
  dbcb21d679fd944b98405b15f3e90057  gcc/builtin-attrs.def
  57157f190b35a47dd4b683d398e513d6  gcc/builtin-types.def
! 31925965bb248a40786a82a829ca1722  gcc/builtins.c
  a97a907640298b1073edbcf6a02fe334  gcc/builtins.def
  afb31ef0129abddff28f552ef1c65626  gcc/builtins.h
! cb611bd6525f7285fd9bcb3e5d361719  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  181b99ff0153386a9f37e991e4b564f0  gcc/c-family/array-notation-common.c
  3750c2b07473ca2dc6e49f0032885798  gcc/c-family/c-ada-spec.c
  c6bcfcd3eaa0f226f1b049b0baf0927d  gcc/c-family/c-ada-spec.h
  296ec2c0af128cc96ed7b508af99f62a  gcc/c-family/c-attribs.c
  61fca19f206b15614354104326f63123  gcc/c-family/c-cilkplus.c
! e3a0ce72fabbe8e421211c93d9c26840  gcc/c-family/c-common.c
  b68399180567cc41ebcb0458faf3cd81  gcc/c-family/c-common.def
! 296adc79008883f988ea2e468a9c61c1  gcc/c-family/c-common.h
! 8531c78dad8d5dfb40f260a38277b622  gcc/c-family/c-cppbuiltin.c
  8cf9afd0b571ce2d5e202f034d27edfc  gcc/c-family/c-dump.c
  51c6e9bee3aec18b8579f570f9678796  gcc/c-family/c-format.c
  2bf149a0136a2ee50e3f488422f73dc8  gcc/c-family/c-format.h
! 8a49a60b7a83ac349a317fe8703966e4  gcc/c-family/c-gimplify.c
  bdad430142d2d171b7e0ff950149b1f4  gcc/c-family/c-indentation.c
  b62245f957f1827f7b297664d5990121  gcc/c-family/c-indentation.h
  0f4bfa70fe388beb66af314607b99b51  gcc/c-family/c-lex.c
  30c2e467779eff504f1b83a1652e9234  gcc/c-family/c-objc.h
! 433130a5ff7873dc4e18292ab24788fd  gcc/c-family/c-omp.c
  888bce9474894d8263924b464cd6ae49  gcc/c-family/c-opts.c
  2427ba79f7f92bcf1a9869e8f7feda00  gcc/c-family/c-pch.c
  1c58be1245dc21a8b0fdb511ee8536cd  gcc/c-family/c-ppoutput.c
--- 2629,2657 ----
  f47f3a5be286bb97d5b3ded0c77a7fc8  gcc/bt-load.c
  dbcb21d679fd944b98405b15f3e90057  gcc/builtin-attrs.def
  57157f190b35a47dd4b683d398e513d6  gcc/builtin-types.def
! 11bff0dc3adcca805e015a4d558f1d84  gcc/builtins.c
  a97a907640298b1073edbcf6a02fe334  gcc/builtins.def
  afb31ef0129abddff28f552ef1c65626  gcc/builtins.h
! 668bf8f9cb6b1a9cfec235ed374ccaf0  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  181b99ff0153386a9f37e991e4b564f0  gcc/c-family/array-notation-common.c
  3750c2b07473ca2dc6e49f0032885798  gcc/c-family/c-ada-spec.c
  c6bcfcd3eaa0f226f1b049b0baf0927d  gcc/c-family/c-ada-spec.h
  296ec2c0af128cc96ed7b508af99f62a  gcc/c-family/c-attribs.c
  61fca19f206b15614354104326f63123  gcc/c-family/c-cilkplus.c
! 8378308b4dd9d1b7d068a44a3c9d93e4  gcc/c-family/c-common.c
  b68399180567cc41ebcb0458faf3cd81  gcc/c-family/c-common.def
! 350a8b8a29846b6271ffa4d8a141531a  gcc/c-family/c-common.h
! 05a9984543e05f0c063c5a831a80238e  gcc/c-family/c-cppbuiltin.c
  8cf9afd0b571ce2d5e202f034d27edfc  gcc/c-family/c-dump.c
  51c6e9bee3aec18b8579f570f9678796  gcc/c-family/c-format.c
  2bf149a0136a2ee50e3f488422f73dc8  gcc/c-family/c-format.h
! 74b0fe24ef6875b92dc45c5023f75106  gcc/c-family/c-gimplify.c
  bdad430142d2d171b7e0ff950149b1f4  gcc/c-family/c-indentation.c
  b62245f957f1827f7b297664d5990121  gcc/c-family/c-indentation.h
  0f4bfa70fe388beb66af314607b99b51  gcc/c-family/c-lex.c
  30c2e467779eff504f1b83a1652e9234  gcc/c-family/c-objc.h
! 9f05965c65d98677c1ecd0eca36b9a44  gcc/c-family/c-omp.c
  888bce9474894d8263924b464cd6ae49  gcc/c-family/c-opts.c
  2427ba79f7f92bcf1a9869e8f7feda00  gcc/c-family/c-pch.c
  1c58be1245dc21a8b0fdb511ee8536cd  gcc/c-family/c-ppoutput.c
*************** fe4c5f6b4662d6fc36d84a1f19c8fa16  gcc/c-
*** 2670,2683 ****
  3e076faabcb0bb95377ef8f357eced38  gcc/c-family/cilk.c
  8916e2707114e23b2dccbbc6bc001a97  gcc/c-family/cppspec.c
  82e6854ad3f227c85d7f08a6196d6f70  gcc/c-family/stub-objc.c
! 311742733b737423255d6824e84ee55e  gcc/c/ChangeLog
  0caf43c9d9c18279169e7f43ad0c19b6  gcc/c/Make-lang.in
  5e6eb0dd85447b36231477f9e3e4b5c0  gcc/c/c-array-notation.c
  a8003032dc7218cccd4aff44dede772d  gcc/c/c-aux-info.c
  e2a3330e4218f15575ab43d04deaeb26  gcc/c/c-convert.c
  85406841cb0c62a68382f1fed1e4eee8  gcc/c/c-decl.c
  c714615507e2f0981003d338ff5abc8a  gcc/c/c-errors.c
! 838b541c23f280c0d43fad87bb59e9a9  gcc/c/c-fold.c
  f3cb7d70adefcf45917f39f56bad0180  gcc/c/c-lang.c
  fa65b6fcb253804c399bd8d1d14b079f  gcc/c/c-lang.h
  2c444e8873646b1237057e728c0cf46b  gcc/c/c-objc-common.c
--- 2670,2683 ----
  3e076faabcb0bb95377ef8f357eced38  gcc/c-family/cilk.c
  8916e2707114e23b2dccbbc6bc001a97  gcc/c-family/cppspec.c
  82e6854ad3f227c85d7f08a6196d6f70  gcc/c-family/stub-objc.c
! 4b4a952fddf3f427e288d5cae75ad582  gcc/c/ChangeLog
  0caf43c9d9c18279169e7f43ad0c19b6  gcc/c/Make-lang.in
  5e6eb0dd85447b36231477f9e3e4b5c0  gcc/c/c-array-notation.c
  a8003032dc7218cccd4aff44dede772d  gcc/c/c-aux-info.c
  e2a3330e4218f15575ab43d04deaeb26  gcc/c/c-convert.c
  85406841cb0c62a68382f1fed1e4eee8  gcc/c/c-decl.c
  c714615507e2f0981003d338ff5abc8a  gcc/c/c-errors.c
! a397c0b456aff137a4e136b66fbd0cd6  gcc/c/c-fold.c
  f3cb7d70adefcf45917f39f56bad0180  gcc/c/c-lang.c
  fa65b6fcb253804c399bd8d1d14b079f  gcc/c/c-lang.h
  2c444e8873646b1237057e728c0cf46b  gcc/c/c-objc-common.c
*************** fa65b6fcb253804c399bd8d1d14b079f  gcc/c/
*** 2685,2697 ****
  91488846efba891fa43f8ab34a7bf2a0  gcc/c/c-parser.c
  2b62fc38332a49a6e5e8c09fb1afcef8  gcc/c/c-parser.h
  67191d1deea476b99b33dab25437bb17  gcc/c/c-tree.h
! ff8e26b9ae235f43dd3d1b42f3683ad7  gcc/c/c-typeck.c
  4d84ee6bcba7c90929c18ce81304349c  gcc/c/config-lang.in
  e9ca602eaa8766cf8ac30f86c84ead30  gcc/c/gccspec.c
  acb5ca82086acf009acea002766ece25  gcc/c/gimple-parser.c
  8b7596ca25fb10eb5fb2576c3693786f  gcc/c/gimple-parser.h
  275667cbf114b5ac38093284c7c10051  gcc/caller-save.c
! cd6d8698b4023b95e7797474dc9a3396  gcc/calls.c
  35a3f0d9b1c58a5d06adb4e8d1d9439e  gcc/calls.h
  356f998e062811877195df2f08ba60ad  gcc/ccmp.c
  3b6db7d568f86900dcff15eabd20f2fb  gcc/ccmp.h
--- 2685,2697 ----
  91488846efba891fa43f8ab34a7bf2a0  gcc/c/c-parser.c
  2b62fc38332a49a6e5e8c09fb1afcef8  gcc/c/c-parser.h
  67191d1deea476b99b33dab25437bb17  gcc/c/c-tree.h
! 64ea1f9865b9cf38383e3a91e69eca42  gcc/c/c-typeck.c
  4d84ee6bcba7c90929c18ce81304349c  gcc/c/config-lang.in
  e9ca602eaa8766cf8ac30f86c84ead30  gcc/c/gccspec.c
  acb5ca82086acf009acea002766ece25  gcc/c/gimple-parser.c
  8b7596ca25fb10eb5fb2576c3693786f  gcc/c/gimple-parser.h
  275667cbf114b5ac38093284c7c10051  gcc/caller-save.c
! 289e6895f00648ac98236f82b9aba6dd  gcc/calls.c
  35a3f0d9b1c58a5d06adb4e8d1d9439e  gcc/calls.h
  356f998e062811877195df2f08ba60ad  gcc/ccmp.c
  3b6db7d568f86900dcff15eabd20f2fb  gcc/ccmp.h
*************** cac33857c3d0eefa09bf0986ab7427ca  gcc/cf
*** 2704,2710 ****
  a73f90584530bcb1b885fd43355d274e  gcc/cfgbuild.h
  6fa961e30423e314c23201638fea498a  gcc/cfgcleanup.c
  a0c5d611e8d6e95f00ae5b4b63785d88  gcc/cfgcleanup.h
! 7c13c532e4077280d53e06b1dabb83f1  gcc/cfgexpand.c
  2896de1d1de317927f1fd7ef47720163  gcc/cfgexpand.h
  98a9a74183a281c3e70f469edcdb04fc  gcc/cfghooks.c
  6e4c878dc845eb2cc277b094af0aec76  gcc/cfghooks.h
--- 2704,2710 ----
  a73f90584530bcb1b885fd43355d274e  gcc/cfgbuild.h
  6fa961e30423e314c23201638fea498a  gcc/cfgcleanup.c
  a0c5d611e8d6e95f00ae5b4b63785d88  gcc/cfgcleanup.h
! 0c8df01eaa2cb3bff12411beccdfd264  gcc/cfgexpand.c
  2896de1d1de317927f1fd7ef47720163  gcc/cfgexpand.h
  98a9a74183a281c3e70f469edcdb04fc  gcc/cfghooks.c
  6e4c878dc845eb2cc277b094af0aec76  gcc/cfghooks.h
*************** a0c5d611e8d6e95f00ae5b4b63785d88  gcc/cf
*** 2716,2722 ****
  a1354db5bf8c1fb78a9871c75eee5580  gcc/cfgrtl.c
  3ec8969e6ab20b3d4ce26552909629a0  gcc/cfgrtl.h
  8a1684de97893f6d8c81a3abb1b05a4e  gcc/cgraph.c
! 2c32272d18a449f82be44c54e800ee85  gcc/cgraph.h
  06d4fcc1c803e967bc7bfdca53122d8c  gcc/cgraphbuild.c
  b43331b3393b3512486372b11d9dc355  gcc/cgraphclones.c
  fe5290115faaf21f4964dfef0c8cc1e2  gcc/cgraphunit.c
--- 2716,2722 ----
  a1354db5bf8c1fb78a9871c75eee5580  gcc/cfgrtl.c
  3ec8969e6ab20b3d4ce26552909629a0  gcc/cfgrtl.h
  8a1684de97893f6d8c81a3abb1b05a4e  gcc/cgraph.c
! d5ca5c12646fd21ab3b7f09c90df649f  gcc/cgraph.h
  06d4fcc1c803e967bc7bfdca53122d8c  gcc/cgraphbuild.c
  b43331b3393b3512486372b11d9dc355  gcc/cgraphclones.c
  fe5290115faaf21f4964dfef0c8cc1e2  gcc/cgraphunit.c
*************** f9e550cfcb683744b7ec2e18a4f3f25b  gcc/ci
*** 2730,2739 ****
  5a37417ea42ec3511c35b46f3eff360b  gcc/collect-utils.h
  f2ef0b7a04a3fb57b185556cf3c47432  gcc/collect2-aix.c
  03f3d336064cce1a4892007b2a6dea80  gcc/collect2-aix.h
! 44b66023fcc1502d4ed7d5db4fbf4de3  gcc/collect2.c
  68f9782519956a31e5010bdeb531abac  gcc/collect2.h
  5c20f36eb198b4f82e0a6a10a6232468  gcc/combine-stack-adj.c
! 579668ea48c71835ac4d1fb241e7fd01  gcc/combine.c
  68373a9634c81023ca3245072f1cc05d  gcc/common.md
  57b6709b50ab53883091e6546b464a2f  gcc/common.opt
  eeb9d016bece096753f8a59a733ee114  gcc/common/common-target-def.h
--- 2730,2739 ----
  5a37417ea42ec3511c35b46f3eff360b  gcc/collect-utils.h
  f2ef0b7a04a3fb57b185556cf3c47432  gcc/collect2-aix.c
  03f3d336064cce1a4892007b2a6dea80  gcc/collect2-aix.h
! 033be0715255c7aa7b5fc1c1fc9b04bb  gcc/collect2.c
  68f9782519956a31e5010bdeb531abac  gcc/collect2.h
  5c20f36eb198b4f82e0a6a10a6232468  gcc/combine-stack-adj.c
! 24b39c0d166fbda964415884b2c889f9  gcc/combine.c
  68373a9634c81023ca3245072f1cc05d  gcc/common.md
  57b6709b50ab53883091e6546b464a2f  gcc/common.opt
  eeb9d016bece096753f8a59a733ee114  gcc/common/common-target-def.h
*************** b0c22a32616d64c099ef851ddf261b23  gcc/co
*** 2789,2795 ****
  0d28f0ed0102c01397140daaf2614e83  gcc/compare-elim.c
  e7193667066e1926cc342fa433d763b4  gcc/conditions.h
  452e1826a3cf7c2cfa4bfa44b511cb77  gcc/config.build
! a01160a55c00234a9d6f07fcaaccfdfd  gcc/config.gcc
  dc4da52535cb76a4fa50c43fdea4ad61  gcc/config.host
  f2bce35bd9333a67114b7fbcb937af31  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
--- 2789,2795 ----
  0d28f0ed0102c01397140daaf2614e83  gcc/compare-elim.c
  e7193667066e1926cc342fa433d763b4  gcc/conditions.h
  452e1826a3cf7c2cfa4bfa44b511cb77  gcc/config.build
! d8d6834da2bd3873ad3ea17564393556  gcc/config.gcc
  dc4da52535cb76a4fa50c43fdea4ad61  gcc/config.host
  f2bce35bd9333a67114b7fbcb937af31  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
*************** d1df10b7f192f422bd9fc9c7091507c5  gcc/co
*** 2811,2822 ****
  6e3a08394352982fce6484b70850d7a1  gcc/config/aarch64/aarch64-protos.h
  d1b68cf22ba52c10ff35d140df4e1f7b  gcc/config/aarch64/aarch64-simd-builtin-types.def
  ac44bc673be92d1af8fe47341f7ad037  gcc/config/aarch64/aarch64-simd-builtins.def
! 822161a87a372e97985f19687555efb2  gcc/config/aarch64/aarch64-simd.md
  fbc9d22ea16726e8c5404ba63b95fbe6  gcc/config/aarch64/aarch64-tune.md
  415934c7a49166288d8a84565c8cb662  gcc/config/aarch64/aarch64-tuning-flags.def
! 20f5cdb6ced2790ddc6e5b28aaf412ff  gcc/config/aarch64/aarch64.c
! d5a307c9e239b9b43d95a400462d115d  gcc/config/aarch64/aarch64.h
! dd5e78a9961bf9550b32b849393e9f16  gcc/config/aarch64/aarch64.md
  46f1fa1446f50465ca061865c266d649  gcc/config/aarch64/aarch64.opt
  d72956fc0e5700efa6411099266daa61  gcc/config/aarch64/arm_acle.h
  e3714cfb03cb0cc67153b18a56b70fb9  gcc/config/aarch64/arm_fp16.h
--- 2811,2822 ----
  6e3a08394352982fce6484b70850d7a1  gcc/config/aarch64/aarch64-protos.h
  d1b68cf22ba52c10ff35d140df4e1f7b  gcc/config/aarch64/aarch64-simd-builtin-types.def
  ac44bc673be92d1af8fe47341f7ad037  gcc/config/aarch64/aarch64-simd-builtins.def
! a74768eb78ae2ef74e3cc9726222686d  gcc/config/aarch64/aarch64-simd.md
  fbc9d22ea16726e8c5404ba63b95fbe6  gcc/config/aarch64/aarch64-tune.md
  415934c7a49166288d8a84565c8cb662  gcc/config/aarch64/aarch64-tuning-flags.def
! b31cf3f2c26c021e4397b2b2258d7120  gcc/config/aarch64/aarch64.c
! d780ca920c8a599fde40e0b93088a64b  gcc/config/aarch64/aarch64.h
! 41d07c95bb8d8ccad5874a105f294ca1  gcc/config/aarch64/aarch64.md
  46f1fa1446f50465ca061865c266d649  gcc/config/aarch64/aarch64.opt
  d72956fc0e5700efa6411099266daa61  gcc/config/aarch64/arm_acle.h
  e3714cfb03cb0cc67153b18a56b70fb9  gcc/config/aarch64/arm_fp16.h
*************** e3714cfb03cb0cc67153b18a56b70fb9  gcc/co
*** 2824,2830 ****
  0b3e6e8363cdf8a7df439a628ba51b76  gcc/config/aarch64/atomics.md
  632d0d3a05731c4cf2402d75c66874c6  gcc/config/aarch64/biarchilp32.h
  99fe31aa198c89dcf315521d31181507  gcc/config/aarch64/biarchlp64.h
! 8227c4ff680a9a573b61021ef1c13675  gcc/config/aarch64/constraints.md
  9d522374c3a50d409fa8ee710d7eb013  gcc/config/aarch64/cortex-a57-fma-steering.c
  39fe2e7252888d355e17b84cb84058de  gcc/config/aarch64/driver-aarch64.c
  9b66fdb3ecb5aa5807621bc85a313c31  gcc/config/aarch64/geniterators.sh
--- 2824,2830 ----
  0b3e6e8363cdf8a7df439a628ba51b76  gcc/config/aarch64/atomics.md
  632d0d3a05731c4cf2402d75c66874c6  gcc/config/aarch64/biarchilp32.h
  99fe31aa198c89dcf315521d31181507  gcc/config/aarch64/biarchlp64.h
! 679259c60a96d361ba6507e0ca8d5341  gcc/config/aarch64/constraints.md
  9d522374c3a50d409fa8ee710d7eb013  gcc/config/aarch64/cortex-a57-fma-steering.c
  39fe2e7252888d355e17b84cb84058de  gcc/config/aarch64/driver-aarch64.c
  9b66fdb3ecb5aa5807621bc85a313c31  gcc/config/aarch64/geniterators.sh
*************** e031a28eab206d4b53d4b26c206c7814  gcc/co
*** 2841,2849 ****
  142d74b958b77819754a86f22ec262c9  gcc/config/alpha/alpha-modes.def
  91ae6e87d45c468297b61a2fd5c22f17  gcc/config/alpha/alpha-passes.def
  f33be94fa0f75c3f386a7cbe19e29c53  gcc/config/alpha/alpha-protos.h
! 64a94d89945b0d2a64625dbef3597b6f  gcc/config/alpha/alpha.c
  4a740bb1133406c1582bbf646f54a28a  gcc/config/alpha/alpha.h
! c14529a0230b1d7e1d2419380f8529b5  gcc/config/alpha/alpha.md
  36e48c7783afb4c7537a33dad0d9734d  gcc/config/alpha/alpha.opt
  49d08204e0dbf16116a281b38f5e94be  gcc/config/alpha/constraints.md
  f9c485887fefec5e01222d26a952b37c  gcc/config/alpha/driver-alpha.c
--- 2841,2849 ----
  142d74b958b77819754a86f22ec262c9  gcc/config/alpha/alpha-modes.def
  91ae6e87d45c468297b61a2fd5c22f17  gcc/config/alpha/alpha-passes.def
  f33be94fa0f75c3f386a7cbe19e29c53  gcc/config/alpha/alpha-protos.h
! 816e538b11b3cdf9c6afc9afc09dbce1  gcc/config/alpha/alpha.c
  4a740bb1133406c1582bbf646f54a28a  gcc/config/alpha/alpha.h
! 60f1df1f7ddb018859c8a4d7d42491ab  gcc/config/alpha/alpha.md
  36e48c7783afb4c7537a33dad0d9734d  gcc/config/alpha/alpha.opt
  49d08204e0dbf16116a281b38f5e94be  gcc/config/alpha/constraints.md
  f9c485887fefec5e01222d26a952b37c  gcc/config/alpha/driver-alpha.c
*************** f24c587afe334f17a24ec0f7bb5523ec  gcc/co
*** 2903,2909 ****
  38ac4bb201d5ded35e32ff6fe390f6e7  gcc/config/arm/aarch-common.c
  a23b9a9af8d78fd18ba8361ed172410d  gcc/config/arm/aarch-cost-tables.h
  44d600357e20dd68663d6d734aac45d5  gcc/config/arm/aout.h
! 6446f27b0ba662e0d71ea5e332e96314  gcc/config/arm/arm-builtins.c
  62a864400862f1a3b4d04b28601fcb71  gcc/config/arm/arm-c.c
  8a88c008994501d4b65dc434247d9a84  gcc/config/arm/arm-cpu-cdata.h
  072bebf7f60b972f483f8f12c94b466a  gcc/config/arm/arm-cpu-data.h
--- 2903,2909 ----
  38ac4bb201d5ded35e32ff6fe390f6e7  gcc/config/arm/aarch-common.c
  a23b9a9af8d78fd18ba8361ed172410d  gcc/config/arm/aarch-cost-tables.h
  44d600357e20dd68663d6d734aac45d5  gcc/config/arm/aout.h
! 1b4869bc7e640f84f29eacc35046cdba  gcc/config/arm/arm-builtins.c
  62a864400862f1a3b4d04b28601fcb71  gcc/config/arm/arm-c.c
  8a88c008994501d4b65dc434247d9a84  gcc/config/arm/arm-cpu-cdata.h
  072bebf7f60b972f483f8f12c94b466a  gcc/config/arm/arm-cpu-data.h
*************** d0f4a8e84b903577fdc4b4c653595682  gcc/co
*** 2920,2928 ****
  9fc296c38dbb9315478bd6a567c72cf7  gcc/config/arm/arm-simd-builtin-types.def
  d7ce5229b2c13c9f817d2b467a8fa208  gcc/config/arm/arm-tables.opt
  632479ba42ec730b66ece345a4b6fa69  gcc/config/arm/arm-tune.md
! 147e142eec2e26f4acf7b570c8cb2689  gcc/config/arm/arm.c
! be5ace49118723556bd504c20581de47  gcc/config/arm/arm.h
! c10f43d9000ddb048c40f33afba47e70  gcc/config/arm/arm.md
  402607c37d1e8d5a3d9559e6079f902d  gcc/config/arm/arm.opt
  24f38580cc601b8d52e906038d175b22  gcc/config/arm/arm1020e.md
  ef11d6991cb00c5691ac3dd69e916725  gcc/config/arm/arm1026ejs.md
--- 2920,2928 ----
  9fc296c38dbb9315478bd6a567c72cf7  gcc/config/arm/arm-simd-builtin-types.def
  d7ce5229b2c13c9f817d2b467a8fa208  gcc/config/arm/arm-tables.opt
  632479ba42ec730b66ece345a4b6fa69  gcc/config/arm/arm-tune.md
! 5be03d4f2ed503721802f9cdfd595f6c  gcc/config/arm/arm.c
! d7aafc338dc8d9b7504f02b7163d7e6d  gcc/config/arm/arm.h
! c29542a20a344bdff1f8f19daf21dca1  gcc/config/arm/arm.md
  402607c37d1e8d5a3d9559e6079f902d  gcc/config/arm/arm.opt
  24f38580cc601b8d52e906038d175b22  gcc/config/arm/arm1020e.md
  ef11d6991cb00c5691ac3dd69e916725  gcc/config/arm/arm1026ejs.md
*************** dae688835cef0f0c69b826157b873ca5  gcc/co
*** 2930,2936 ****
  3b6e311dffc00930cdb6e8f7b4542016  gcc/config/arm/arm926ejs.md
  a793f51c702900ec1d9c60ff65f2d2ff  gcc/config/arm/arm_acle.h
  c0de0dc1dec5fa20908f8790426b9cdd  gcc/config/arm/arm_acle_builtins.def
! cf57cafd934f4ba3352102000af2d3c4  gcc/config/arm/arm_cmse.h
  b824c88f58431b50ebd0dce7cbead65f  gcc/config/arm/arm_fp16.h
  8d11e4375e5d83f0fb77d1798d16b46a  gcc/config/arm/arm_neon.h
  4afdde754ee1a54e42e255422b6372ab  gcc/config/arm/arm_neon_builtins.def
--- 2930,2936 ----
  3b6e311dffc00930cdb6e8f7b4542016  gcc/config/arm/arm926ejs.md
  a793f51c702900ec1d9c60ff65f2d2ff  gcc/config/arm/arm_acle.h
  c0de0dc1dec5fa20908f8790426b9cdd  gcc/config/arm/arm_acle_builtins.def
! ce0b124d31bf7f027d12d031a0e2d122  gcc/config/arm/arm_cmse.h
  b824c88f58431b50ebd0dce7cbead65f  gcc/config/arm/arm_fp16.h
  8d11e4375e5d83f0fb77d1798d16b46a  gcc/config/arm/arm_neon.h
  4afdde754ee1a54e42e255422b6372ab  gcc/config/arm/arm_neon_builtins.def
*************** b904d27c5271b122a49d456478249b63  gcc/co
*** 2977,2983 ****
  ae7f63fcc1707b4a22775f5ef6b4bc30  gcc/config/arm/marvell-f-iwmmxt.md
  23c5005c8404d6b49376e62ddb72464b  gcc/config/arm/marvell-pj4.md
  e7bd025c0a8b6c147154451f2ac26962  gcc/config/arm/mmintrin.h
! 2588d7cca19421378b8efdea05e285f6  gcc/config/arm/neon.md
  272ea0edb113be6f1106776f9d26af46  gcc/config/arm/netbsd-elf.h
  4ca7f197762ae09faad8ee458dee5091  gcc/config/arm/parsecpu.awk
  1238b1cb0060064bcc0aaf1f32c91a26  gcc/config/arm/predicates.md
--- 2977,2983 ----
  ae7f63fcc1707b4a22775f5ef6b4bc30  gcc/config/arm/marvell-f-iwmmxt.md
  23c5005c8404d6b49376e62ddb72464b  gcc/config/arm/marvell-pj4.md
  e7bd025c0a8b6c147154451f2ac26962  gcc/config/arm/mmintrin.h
! e887dc81918b533d672380a120386e23  gcc/config/arm/neon.md
  272ea0edb113be6f1106776f9d26af46  gcc/config/arm/netbsd-elf.h
  4ca7f197762ae09faad8ee458dee5091  gcc/config/arm/parsecpu.awk
  1238b1cb0060064bcc0aaf1f32c91a26  gcc/config/arm/predicates.md
*************** a8b0daa164f32ba1e8276cf787899c6c  gcc/co
*** 3022,3029 ****
  d058fa65ae6b3fa1bca9d75e9afd3df6  gcc/config/avr/avr-protos.h
  3425f429a345e1eecd51bcad4d3ab1bd  gcc/config/avr/avr-stdint.h
  4cce7957a71f16ac576e7aa68e790fb1  gcc/config/avr/avr.c
! 8eaf3731bd955db07fddd895cde25917  gcc/config/avr/avr.h
! 43ebc4e25bd014ae225aa676bcfd0880  gcc/config/avr/avr.md
  3be9837418a7860773b4a1a189853b1c  gcc/config/avr/avr.opt
  774be0db253100a595dff6cdeaf01b75  gcc/config/avr/avrlibc.h
  af29b19e3346b78f3d90597a3c6954d2  gcc/config/avr/builtins.def
--- 3022,3029 ----
  d058fa65ae6b3fa1bca9d75e9afd3df6  gcc/config/avr/avr-protos.h
  3425f429a345e1eecd51bcad4d3ab1bd  gcc/config/avr/avr-stdint.h
  4cce7957a71f16ac576e7aa68e790fb1  gcc/config/avr/avr.c
! 5df8fc1981af85bddf054216217ff9e1  gcc/config/avr/avr.h
! afb18156319b3897dfb240f9678f0cc7  gcc/config/avr/avr.md
  3be9837418a7860773b4a1a189853b1c  gcc/config/avr/avr.opt
  774be0db253100a595dff6cdeaf01b75  gcc/config/avr/avrlibc.h
  af29b19e3346b78f3d90597a3c6954d2  gcc/config/avr/builtins.def
*************** a9b0f21667fd1395c9d1ba7a25d64ef0  gcc/co
*** 3111,3118 ****
  ff8874544a9c5e305c4592eeaa0ca02d  gcc/config/darwin-ppc-ldouble-patch.def
  d6acd429ff1600c49ccc0b3aceb4247e  gcc/config/darwin-protos.h
  5cb72a6936fb3c9254091b5cc7639be5  gcc/config/darwin-sections.def
! e3ca31803bb47a4c6cf1c147ea8336f0  gcc/config/darwin.c
! de8dc085f6eef6b3a804c9984e29ea84  gcc/config/darwin.h
  8b9419092068348e657dcae282a6a3f7  gcc/config/darwin.opt
  101024c77063e77198ed701f9f28e16a  gcc/config/darwin10.h
  36fb2780494fc147291656b8ded57bf3  gcc/config/darwin12.h
--- 3111,3118 ----
  ff8874544a9c5e305c4592eeaa0ca02d  gcc/config/darwin-ppc-ldouble-patch.def
  d6acd429ff1600c49ccc0b3aceb4247e  gcc/config/darwin-protos.h
  5cb72a6936fb3c9254091b5cc7639be5  gcc/config/darwin-sections.def
! 10e71b91575e69235cd275579ea80640  gcc/config/darwin.c
! e3bd28a2da95b02fb20bb075383724f3  gcc/config/darwin.h
  8b9419092068348e657dcae282a6a3f7  gcc/config/darwin.opt
  101024c77063e77198ed701f9f28e16a  gcc/config/darwin10.h
  36fb2780494fc147291656b8ded57bf3  gcc/config/darwin12.h
*************** ea365ae237281f97cba6047f5e0dda91  gcc/co
*** 3178,3184 ****
  c72407b0b8426f2f0334aaac63539613  gcc/config/g.opt
  47a846c61261dd0d18b34b4fc54383d4  gcc/config/glibc-c.c
  51f7545eaebbd0fb8bcaf539462a86e3  gcc/config/glibc-stdint.h
! a47e831843a160a2ffc8572822b3ab23  gcc/config/gnu-user.h
  11b98ff00816ec85a4c64c14f75d55d8  gcc/config/gnu-user.opt
  20d8721de1b2b9987ec6e72ab8dc9fd9  gcc/config/gnu.h
  962660c7f18af646566959e5ec76b51b  gcc/config/h8300/constraints.md
--- 3178,3184 ----
  c72407b0b8426f2f0334aaac63539613  gcc/config/g.opt
  47a846c61261dd0d18b34b4fc54383d4  gcc/config/glibc-c.c
  51f7545eaebbd0fb8bcaf539462a86e3  gcc/config/glibc-stdint.h
! 756206648d9d26e85675a935b44a16d2  gcc/config/gnu-user.h
  11b98ff00816ec85a4c64c14f75d55d8  gcc/config/gnu-user.opt
  20d8721de1b2b9987ec6e72ab8dc9fd9  gcc/config/gnu.h
  962660c7f18af646566959e5ec76b51b  gcc/config/h8300/constraints.md
*************** b60ce9f5056a8b2d3e02be7709099937  gcc/co
*** 3214,3220 ****
  19ed0370d68c06ed580f74e0c59e901e  gcc/config/i386/avx512cdintrin.h
  3d5d965a552cf3c7eb1e98dfbc2547e3  gcc/config/i386/avx512dqintrin.h
  a44afd35ed44ab2ce2a3dc72edf3edd2  gcc/config/i386/avx512erintrin.h
! d95408cc0ca0770850b7e67a647d5405  gcc/config/i386/avx512fintrin.h
  c0040fb4c52e2ccd2f171678cd5cb9c0  gcc/config/i386/avx512ifmaintrin.h
  709ea5913faf6d14b25941920bfe8a8d  gcc/config/i386/avx512ifmavlintrin.h
  d67308f297fbc2a4771f7a408c5c6809  gcc/config/i386/avx512pfintrin.h
--- 3214,3220 ----
  19ed0370d68c06ed580f74e0c59e901e  gcc/config/i386/avx512cdintrin.h
  3d5d965a552cf3c7eb1e98dfbc2547e3  gcc/config/i386/avx512dqintrin.h
  a44afd35ed44ab2ce2a3dc72edf3edd2  gcc/config/i386/avx512erintrin.h
! 59a80ae70e8ed28fddccfcf715011acc  gcc/config/i386/avx512fintrin.h
  c0040fb4c52e2ccd2f171678cd5cb9c0  gcc/config/i386/avx512ifmaintrin.h
  709ea5913faf6d14b25941920bfe8a8d  gcc/config/i386/avx512ifmavlintrin.h
  d67308f297fbc2a4771f7a408c5c6809  gcc/config/i386/avx512pfintrin.h
*************** bcac886f1b96ce469c84ea6f3e042d4d  gcc/co
*** 3222,3228 ****
  f910e57d3ed22cc94bd0a24470f1bc7c  gcc/config/i386/avx512vbmivlintrin.h
  cb658ab64800dc93ff9d5f2808f958ae  gcc/config/i386/avx512vlbwintrin.h
  0703bacc33f4079c87c52eb336565c95  gcc/config/i386/avx512vldqintrin.h
! 40da9e354ab8756c0fe31ba09cacc1d1  gcc/config/i386/avx512vlintrin.h
  0e25fd1bd9e4a1b6101596cc480db933  gcc/config/i386/avx512vpopcntdqintrin.h
  09eeee007c733ce05e205ae1af926882  gcc/config/i386/avxintrin.h
  3044158b72545cd77bdaf0af75d23cc4  gcc/config/i386/avxmath.h
--- 3222,3228 ----
  f910e57d3ed22cc94bd0a24470f1bc7c  gcc/config/i386/avx512vbmivlintrin.h
  cb658ab64800dc93ff9d5f2808f958ae  gcc/config/i386/avx512vlbwintrin.h
  0703bacc33f4079c87c52eb336565c95  gcc/config/i386/avx512vldqintrin.h
! c7f0f4a467f7cbc02f89646cf63c1895  gcc/config/i386/avx512vlintrin.h
  0e25fd1bd9e4a1b6101596cc480db933  gcc/config/i386/avx512vpopcntdqintrin.h
  09eeee007c733ce05e205ae1af926882  gcc/config/i386/avxintrin.h
  3044158b72545cd77bdaf0af75d23cc4  gcc/config/i386/avxmath.h
*************** a3fdca97f68835a7fe64bb36537946c2  gcc/co
*** 3238,3255 ****
  e5755082352ee97d90427b199539c657  gcc/config/i386/clflushoptintrin.h
  7e1002bbf7ff7cbbf3484a56a1bdda37  gcc/config/i386/clwbintrin.h
  f275e0cb1c06e9be383ee2830742eabc  gcc/config/i386/clzerointrin.h
! e98e4f9bd96bb13bf122daa5ffb532f7  gcc/config/i386/constraints.md
  51916b5cfd29cd81ccf6e9e61c1f668d  gcc/config/i386/core2.md
  4c008dd80df596b0deae5e181737543c  gcc/config/i386/cpuid.h
  3005ca522302d379f11519de60d8f8fa  gcc/config/i386/cross-stdarg.h
  27869bbc83c2dadbf6eda2d3c15245c9  gcc/config/i386/crtdll.h
! 6a69fbd4f050e39bf29f86e4dc178de7  gcc/config/i386/cygming.h
  ed7bac240af8b09916271be40230256d  gcc/config/i386/cygming.opt
  98d23389cef30c303ff56da5c9ee7c8d  gcc/config/i386/cygwin-stdint.h
  1342de078b9ef883588f75f5aed134e9  gcc/config/i386/cygwin-w64.h
  e8234781b4c21eb0988db82e86cc7267  gcc/config/i386/cygwin.h
  849a37486371a7ea92478c1bd902a1d8  gcc/config/i386/cygwin.opt
! 5b4cb8bfae8d754afb7d95b6537ccaa3  gcc/config/i386/darwin.h
  b63a31daedb78da6857de5dc44890ac5  gcc/config/i386/darwin64.h
  5628990ccbc26c3d8a83cab8c8eea3b9  gcc/config/i386/djgpp-stdint.h
  737dede75d620d8918f97e224f27b465  gcc/config/i386/djgpp.c
--- 3238,3255 ----
  e5755082352ee97d90427b199539c657  gcc/config/i386/clflushoptintrin.h
  7e1002bbf7ff7cbbf3484a56a1bdda37  gcc/config/i386/clwbintrin.h
  f275e0cb1c06e9be383ee2830742eabc  gcc/config/i386/clzerointrin.h
! 7ee8c7a80d13ed5edc3e2ce7a101f690  gcc/config/i386/constraints.md
  51916b5cfd29cd81ccf6e9e61c1f668d  gcc/config/i386/core2.md
  4c008dd80df596b0deae5e181737543c  gcc/config/i386/cpuid.h
  3005ca522302d379f11519de60d8f8fa  gcc/config/i386/cross-stdarg.h
  27869bbc83c2dadbf6eda2d3c15245c9  gcc/config/i386/crtdll.h
! d11d93fb59f31ce43308a3ce2b80bfed  gcc/config/i386/cygming.h
  ed7bac240af8b09916271be40230256d  gcc/config/i386/cygming.opt
  98d23389cef30c303ff56da5c9ee7c8d  gcc/config/i386/cygwin-stdint.h
  1342de078b9ef883588f75f5aed134e9  gcc/config/i386/cygwin-w64.h
  e8234781b4c21eb0988db82e86cc7267  gcc/config/i386/cygwin.h
  849a37486371a7ea92478c1bd902a1d8  gcc/config/i386/cygwin.opt
! ea04c4d56142d8ba8867b531f3c57ac6  gcc/config/i386/darwin.h
  b63a31daedb78da6857de5dc44890ac5  gcc/config/i386/darwin64.h
  5628990ccbc26c3d8a83cab8c8eea3b9  gcc/config/i386/djgpp-stdint.h
  737dede75d620d8918f97e224f27b465  gcc/config/i386/djgpp.c
*************** b63a31daedb78da6857de5dc44890ac5  gcc/co
*** 3257,3263 ****
  2b7e4c6815831e8c7031184e02f30c83  gcc/config/i386/djgpp.opt
  e643535bf612674f78a8ccba59bfe7f2  gcc/config/i386/dragonfly.h
  541053d78505778d82a708fb43be377b  gcc/config/i386/driver-i386.c
! 66f6e0a9ecddc3b2959bd3c32b8ef80b  gcc/config/i386/emmintrin.h
  6f09fa82ef1421be137d2767fdcc7f2c  gcc/config/i386/f16cintrin.h
  67e8f732c8aab028c2667fee5cd0b42e  gcc/config/i386/fma4intrin.h
  8f861c333b4f4e35c0345c56295b8567  gcc/config/i386/fmaintrin.h
--- 3257,3263 ----
  2b7e4c6815831e8c7031184e02f30c83  gcc/config/i386/djgpp.opt
  e643535bf612674f78a8ccba59bfe7f2  gcc/config/i386/dragonfly.h
  541053d78505778d82a708fb43be377b  gcc/config/i386/driver-i386.c
! 6a5cfd69b1065c7a9f46bed11c8700d2  gcc/config/i386/emmintrin.h
  6f09fa82ef1421be137d2767fdcc7f2c  gcc/config/i386/f16cintrin.h
  67e8f732c8aab028c2667fee5cd0b42e  gcc/config/i386/fma4intrin.h
  8f861c333b4f4e35c0345c56295b8567  gcc/config/i386/fmaintrin.h
*************** d87f5906e5cee04c568119528636e1c2  gcc/co
*** 3269,3276 ****
  6b21d9e28df1dbff2abbd3961ecde5fd  gcc/config/i386/geode.md
  b2ee042704ad5e14ac724dea041fb3bd  gcc/config/i386/gmm_malloc.h
  2f45030e4ace039b1c1ceb004885566b  gcc/config/i386/gnu-user-common.h
! a884553590188a3074f90c3486312eca  gcc/config/i386/gnu-user.h
! cdbd8ecb887e8638f07c793f5848a990  gcc/config/i386/gnu-user64.h
  a33fe9fbc74d3bcaee3b69e019e91648  gcc/config/i386/gnu.h
  3349498ec85e12ac7055f4802239086c  gcc/config/i386/gstabs.h
  f23d8a342d218fda7a0259450202ee9b  gcc/config/i386/haswell.md
--- 3269,3276 ----
  6b21d9e28df1dbff2abbd3961ecde5fd  gcc/config/i386/geode.md
  b2ee042704ad5e14ac724dea041fb3bd  gcc/config/i386/gmm_malloc.h
  2f45030e4ace039b1c1ceb004885566b  gcc/config/i386/gnu-user-common.h
! 30ac1d379cdd3d940a5a0295670118f9  gcc/config/i386/gnu-user.h
! 6b63c14e63f443eb5450e407e811c08d  gcc/config/i386/gnu-user64.h
  a33fe9fbc74d3bcaee3b69e019e91648  gcc/config/i386/gnu.h
  3349498ec85e12ac7055f4802239086c  gcc/config/i386/gstabs.h
  f23d8a342d218fda7a0259450202ee9b  gcc/config/i386/haswell.md
*************** f23d8a342d218fda7a0259450202ee9b  gcc/co
*** 3279,3293 ****
  a2a96ce7ed0be4a979baf51b72a4e1ed  gcc/config/i386/host-mingw32.c
  323aab772ea45dd79401d5317da8bc0f  gcc/config/i386/i386-builtin-types.awk
  d5238835384061cdbddd924882e89c6e  gcc/config/i386/i386-builtin-types.def
! 2a251c3dbcab569d7c442a3f9ae6c091  gcc/config/i386/i386-builtin.def
  54c767a1819a987fb859eaa5b1e265b2  gcc/config/i386/i386-c.c
  79f95578ad42bafa17a9a1f3c09514c3  gcc/config/i386/i386-modes.def
  fd4a0dcde60c7daf09fe3b9ef6b3ee08  gcc/config/i386/i386-opts.h
  80b43deb5c1fc5fc0938a942fd33af10  gcc/config/i386/i386-passes.def
! 99f3ec64842b3c7b16cb2c6417fadf1d  gcc/config/i386/i386-protos.h
! 749a9a009cef9d1658433ff81c4c85ad  gcc/config/i386/i386.c
! 607a4c0be95bd337919c6e8d571de2a9  gcc/config/i386/i386.h
! 2d75b28e31d055f2b2a25f83fe6165a7  gcc/config/i386/i386.md
  ca0d03ffdb381f643e5cf347dd93191b  gcc/config/i386/i386.opt
  7ba0fe66f8e16b1b88672d1a6a6214e4  gcc/config/i386/i386elf.h
  5d53d7bc9e564ebfaa7161e7fbb38fe8  gcc/config/i386/ia32intrin.h
--- 3279,3293 ----
  a2a96ce7ed0be4a979baf51b72a4e1ed  gcc/config/i386/host-mingw32.c
  323aab772ea45dd79401d5317da8bc0f  gcc/config/i386/i386-builtin-types.awk
  d5238835384061cdbddd924882e89c6e  gcc/config/i386/i386-builtin-types.def
! 679fe751d3a24897f72395532f0220be  gcc/config/i386/i386-builtin.def
  54c767a1819a987fb859eaa5b1e265b2  gcc/config/i386/i386-c.c
  79f95578ad42bafa17a9a1f3c09514c3  gcc/config/i386/i386-modes.def
  fd4a0dcde60c7daf09fe3b9ef6b3ee08  gcc/config/i386/i386-opts.h
  80b43deb5c1fc5fc0938a942fd33af10  gcc/config/i386/i386-passes.def
! 1530f3e07f04b9e5cc5d194b8ebcd21d  gcc/config/i386/i386-protos.h
! 9901bb649b4526fb879a85a063134531  gcc/config/i386/i386.c
! 5ccb756977456f01ded62c23e28f3251  gcc/config/i386/i386.h
! d9ad68d1359a77d59d1eb2b760dcdb40  gcc/config/i386/i386.md
  ca0d03ffdb381f643e5cf347dd93191b  gcc/config/i386/i386.opt
  7ba0fe66f8e16b1b88672d1a6a6214e4  gcc/config/i386/i386elf.h
  5d53d7bc9e564ebfaa7161e7fbb38fe8  gcc/config/i386/ia32intrin.h
*************** e73745071cc8d04859f3a5b1bfe0c185  gcc/co
*** 3329,3335 ****
  821ea9449f7b83c9ddb0fe9125206cc4  gcc/config/i386/pmmintrin.h
  23f74d16ca6bad836ea7420f1532f523  gcc/config/i386/popcntintrin.h
  cbfcdb12765f75157ac2dc7fad0cf074  gcc/config/i386/ppro.md
! c9c374d5bbe7257b9014287b3e4f69f8  gcc/config/i386/predicates.md
  ea1eafcd9f62ad8a5977836d0cd67695  gcc/config/i386/prfchwintrin.h
  8d6edac06a5766274664fd5bb80ebde9  gcc/config/i386/rdos.h
  762c0cd418230a8c5df0e0ab5d8c6d99  gcc/config/i386/rdos64.h
--- 3329,3335 ----
  821ea9449f7b83c9ddb0fe9125206cc4  gcc/config/i386/pmmintrin.h
  23f74d16ca6bad836ea7420f1532f523  gcc/config/i386/popcntintrin.h
  cbfcdb12765f75157ac2dc7fad0cf074  gcc/config/i386/ppro.md
! 2c992f74989ccd454ce3c5c2aac9ba8b  gcc/config/i386/predicates.md
  ea1eafcd9f62ad8a5977836d0cd67695  gcc/config/i386/prfchwintrin.h
  8d6edac06a5766274664fd5bb80ebde9  gcc/config/i386/rdos.h
  762c0cd418230a8c5df0e0ab5d8c6d99  gcc/config/i386/rdos64.h
*************** a8aed88b8bbf38fdb6166cf2d0051cf1  gcc/co
*** 3341,3347 ****
  8be24cf09776d77cfca4a86b3442fbce  gcc/config/i386/slm.md
  655421e4471519d6655c892afcec20c5  gcc/config/i386/smmintrin.h
  b5bce0d903bc159066cd8fefe933e6af  gcc/config/i386/sol2.h
! b6748c5753b398e598adfa0623ba209d  gcc/config/i386/sse.md
  18427fe6cb074752acb8f48048eaf104  gcc/config/i386/ssemath.h
  aed767217d43c89b3e9f7ba6f4c213a2  gcc/config/i386/stringop.def
  6d07cea9e3242e05941de0140745843b  gcc/config/i386/subst.md
--- 3341,3347 ----
  8be24cf09776d77cfca4a86b3442fbce  gcc/config/i386/slm.md
  655421e4471519d6655c892afcec20c5  gcc/config/i386/smmintrin.h
  b5bce0d903bc159066cd8fefe933e6af  gcc/config/i386/sol2.h
! 3baf3ed14a3bddd6dff79e16deae0d38  gcc/config/i386/sse.md
  18427fe6cb074752acb8f48048eaf104  gcc/config/i386/ssemath.h
  aed767217d43c89b3e9f7ba6f4c213a2  gcc/config/i386/stringop.def
  6d07cea9e3242e05941de0140745843b  gcc/config/i386/subst.md
*************** b1db06979b224600819cfbcb20cd518b  gcc/co
*** 3500,3506 ****
  9fed04119ea51bf696a0d144d70a2723  gcc/config/m68k/m68k-opts.h
  217212b0a691f1e564cd0dd8ee294033  gcc/config/m68k/m68k-protos.h
  4173ac9a3fe95be35cd7be6eb1d8a91c  gcc/config/m68k/m68k-tables.opt
! f08e5acd9abc8fc2a7e62ebfde4ab9dc  gcc/config/m68k/m68k.c
  4aeae0f1e5976e432e616efde63222ca  gcc/config/m68k/m68k.h
  fbab0b5694c481b2a9c5e24032e28f01  gcc/config/m68k/m68k.md
  565309f5eb9bdf5f3d9d4b99309203f5  gcc/config/m68k/m68k.opt
--- 3500,3506 ----
  9fed04119ea51bf696a0d144d70a2723  gcc/config/m68k/m68k-opts.h
  217212b0a691f1e564cd0dd8ee294033  gcc/config/m68k/m68k-protos.h
  4173ac9a3fe95be35cd7be6eb1d8a91c  gcc/config/m68k/m68k-tables.opt
! f666236f7c78e658172ad2deb4255da2  gcc/config/m68k/m68k.c
  4aeae0f1e5976e432e616efde63222ca  gcc/config/m68k/m68k.h
  fbab0b5694c481b2a9c5e24032e28f01  gcc/config/m68k/m68k.md
  565309f5eb9bdf5f3d9d4b99309203f5  gcc/config/m68k/m68k.opt
*************** f276505b774e975b88b6c90362783e73  gcc/co
*** 3676,3682 ****
  e081143def3cf3a59cd1181fc9162d41  gcc/config/msp430/msp430-modes.def
  d726d631d2bc7f637eb31b84e89b6a4f  gcc/config/msp430/msp430-opts.h
  0557b7169bcfc35739235121d06d2bdb  gcc/config/msp430/msp430-protos.h
! 927589d2b536021e5652d318b232473f  gcc/config/msp430/msp430.c
  b449799389faf2d4f5189e7a23abc554  gcc/config/msp430/msp430.h
  45aaefde9827e530c98e26f531cd993b  gcc/config/msp430/msp430.md
  9d06cb84c3cb0394a1611444eafc29a8  gcc/config/msp430/msp430.opt
--- 3676,3682 ----
  e081143def3cf3a59cd1181fc9162d41  gcc/config/msp430/msp430-modes.def
  d726d631d2bc7f637eb31b84e89b6a4f  gcc/config/msp430/msp430-opts.h
  0557b7169bcfc35739235121d06d2bdb  gcc/config/msp430/msp430-protos.h
! 3b1a7b87627e44ab64d34c23c51716aa  gcc/config/msp430/msp430.c
  b449799389faf2d4f5189e7a23abc554  gcc/config/msp430/msp430.h
  45aaefde9827e530c98e26f531cd993b  gcc/config/msp430/msp430.md
  9d06cb84c3cb0394a1611444eafc29a8  gcc/config/msp430/msp430.opt
*************** bbccdcf812f8a0570b91878c40a1ac35  gcc/co
*** 3736,3742 ****
  d835d08884a2846e70bef505767bd3f1  gcc/config/nios2/t-rtems
  1a77021617fa509b4193a0173cc0db80  gcc/config/nvptx/mkoffload.c
  0528c01cacf3d6d78c2d572ddce1acd2  gcc/config/nvptx/nvptx-protos.h
! 1139522105141d95713526d0237b4b20  gcc/config/nvptx/nvptx.c
  eb1454b59c8b5e977859ef9a164f30d7  gcc/config/nvptx/nvptx.h
  33ff98eff43db716166e6eb7701d7444  gcc/config/nvptx/nvptx.md
  581897eccb2823f57fe3e4d7f48dfc99  gcc/config/nvptx/nvptx.opt
--- 3736,3742 ----
  d835d08884a2846e70bef505767bd3f1  gcc/config/nios2/t-rtems
  1a77021617fa509b4193a0173cc0db80  gcc/config/nvptx/mkoffload.c
  0528c01cacf3d6d78c2d572ddce1acd2  gcc/config/nvptx/nvptx-protos.h
! 2ed794702f6558a54ac7fdfbdd9ad65e  gcc/config/nvptx/nvptx.c
  eb1454b59c8b5e977859ef9a164f30d7  gcc/config/nvptx/nvptx.h
  33ff98eff43db716166e6eb7701d7444  gcc/config/nvptx/nvptx.md
  581897eccb2823f57fe3e4d7f48dfc99  gcc/config/nvptx/nvptx.opt
*************** f9eb8215e990039206aca7d2674044dd  gcc/co
*** 3765,3783 ****
  d4df9eb3c1cf138edc94444846091689  gcc/config/pa/pa-openbsd.h
  7bc5229cf1c43545830a2c4703b2368e  gcc/config/pa/pa-opts.h
  946b59b66fba818b8c8b48d21d19f78c  gcc/config/pa/pa-protos.h
! e9fa6ba5edde00fefb905b0b190a2f68  gcc/config/pa/pa.c
! 2ad9edafd8324971bb2304a432029e16  gcc/config/pa/pa.h
! d8c2dd8006ef24c121cb8487f5e847a0  gcc/config/pa/pa.md
  8bd9cf9ffd45cd39f633111f1c7a35c2  gcc/config/pa/pa.opt
! 2273f41fcab737d5874659b113de7dd6  gcc/config/pa/pa32-linux.h
  eb52a472e9a1cd97e8c83b89c65a6b84  gcc/config/pa/pa32-openbsd.h
  2bac80d704e012f9734f2fb7fdc70770  gcc/config/pa/pa32-regs.h
! f30ba8cf955f527b29cd6c1f71e2a880  gcc/config/pa/pa64-hpux.h
  8c9fe7c6a1af3d40fc79cb2993b1d68a  gcc/config/pa/pa64-hpux.opt
  971d298330b45b46f447b588dc366b76  gcc/config/pa/pa64-linux.h
  2a03755ea31cf0f1898661edab261715  gcc/config/pa/pa64-regs.h
  a9a6afd79b827565ffb8de8330b4cfe6  gcc/config/pa/pa64-start.h
! 2e3efb1d182abb8a14ef786dbd1cf44c  gcc/config/pa/predicates.md
  cd300ab1097ed3e527087725bcb30929  gcc/config/pa/som.h
  4104beb84cb7f3a8a5915652c3da66c5  gcc/config/pa/t-dce-thr
  6fd25f8c665d2d7390ea94c01dcb8e34  gcc/config/pa/t-linux
--- 3765,3783 ----
  d4df9eb3c1cf138edc94444846091689  gcc/config/pa/pa-openbsd.h
  7bc5229cf1c43545830a2c4703b2368e  gcc/config/pa/pa-opts.h
  946b59b66fba818b8c8b48d21d19f78c  gcc/config/pa/pa-protos.h
! 76cfeea06fd4a3cfe605d528f067ec30  gcc/config/pa/pa.c
! 667dae285606b1eee390c1f129a4db34  gcc/config/pa/pa.h
! 1cc618c4bb255d4616021f152bb0f9ad  gcc/config/pa/pa.md
  8bd9cf9ffd45cd39f633111f1c7a35c2  gcc/config/pa/pa.opt
! 5493a9bfa5ffeddf45cfff961109b642  gcc/config/pa/pa32-linux.h
  eb52a472e9a1cd97e8c83b89c65a6b84  gcc/config/pa/pa32-openbsd.h
  2bac80d704e012f9734f2fb7fdc70770  gcc/config/pa/pa32-regs.h
! b4a9fe759b69eac972624817e190e2cd  gcc/config/pa/pa64-hpux.h
  8c9fe7c6a1af3d40fc79cb2993b1d68a  gcc/config/pa/pa64-hpux.opt
  971d298330b45b46f447b588dc366b76  gcc/config/pa/pa64-linux.h
  2a03755ea31cf0f1898661edab261715  gcc/config/pa/pa64-regs.h
  a9a6afd79b827565ffb8de8330b4cfe6  gcc/config/pa/pa64-start.h
! 336db911dc1c4aa12e748446a565a78b  gcc/config/pa/predicates.md
  cd300ab1097ed3e527087725bcb30929  gcc/config/pa/som.h
  4104beb84cb7f3a8a5915652c3da66c5  gcc/config/pa/t-dce-thr
  6fd25f8c665d2d7390ea94c01dcb8e34  gcc/config/pa/t-linux
*************** db6e4e3dccff20c5a085d7f7eb68f39a  gcc/co
*** 3816,3821 ****
--- 3816,3822 ----
  d8ae7bee35ef1ecd77143535da9aae78  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
  976dd460f5afbd591b0d2e626d74eb51  gcc/config/riscv/t-riscv
+ 7dbd61c5a07b1adefe5429a41008fda5  gcc/config/riscv/t-rtems
  99eaa2a250ec3bf386702d662da2e347  gcc/config/rl78/constraints.md
  e52f25dc42c914225c40de5102189ae9  gcc/config/rl78/predicates.md
  c536706c2f65f56a934ee9f8ca786dba  gcc/config/rl78/rl78-c.c
*************** d13c2da4db56aa2b22d164716edf47d9  gcc/co
*** 3852,3859 ****
  c1fd5ce3265227f742dd7b50a4d4e860  gcc/config/rs6000/aix61.h
  c04eafaf5bcb98ef729029677f468111  gcc/config/rs6000/aix64.opt
  9e37dfb2cfc128801986fe38da434059  gcc/config/rs6000/aix71.h
! 5b930da199cdf0fe45e6c13b194d3b09  gcc/config/rs6000/altivec.h
! 61f68216e0bfebd7e03d81fc2aca9ab7  gcc/config/rs6000/altivec.md
  d93efc51b48185e307aea24e46c4eff1  gcc/config/rs6000/biarch64.h
  03512609c1d7d657e1fa9d336feaf3f2  gcc/config/rs6000/cell.md
  aae8b48d17c545633f55e8f1f6eb9152  gcc/config/rs6000/constraints.md
--- 3853,3860 ----
  c1fd5ce3265227f742dd7b50a4d4e860  gcc/config/rs6000/aix61.h
  c04eafaf5bcb98ef729029677f468111  gcc/config/rs6000/aix64.opt
  9e37dfb2cfc128801986fe38da434059  gcc/config/rs6000/aix71.h
! 567a005d0999c88ffad5ca2e2a3cfffc  gcc/config/rs6000/altivec.h
! e270d6caa1d3b80245971cb57960cc63  gcc/config/rs6000/altivec.md
  d93efc51b48185e307aea24e46c4eff1  gcc/config/rs6000/biarch64.h
  03512609c1d7d657e1fa9d336feaf3f2  gcc/config/rs6000/cell.md
  aae8b48d17c545633f55e8f1f6eb9152  gcc/config/rs6000/constraints.md
*************** efec264b3f79ef8045fa9c62522b81b5  gcc/co
*** 3866,3872 ****
  c5d09b685dc06366de0472e5ed5fa397  gcc/config/rs6000/darwin8.h
  eced47c9f0f77449e1dfd44057cd5d0f  gcc/config/rs6000/default64.h
  af67d5fc20f3c5695c275e364482816c  gcc/config/rs6000/dfp.md
! 91cabc9c3eb568b15e5ce6ca72a5ac5b  gcc/config/rs6000/driver-rs6000.c
  31af9fd0d8567d00d33e55b29cb4cfe9  gcc/config/rs6000/e300c2c3.md
  fa145648a6e566ed4e8c2512fa6e5145  gcc/config/rs6000/e500.h
  a29385a64c177591ad91f740496897b7  gcc/config/rs6000/e500mc.md
--- 3867,3873 ----
  c5d09b685dc06366de0472e5ed5fa397  gcc/config/rs6000/darwin8.h
  eced47c9f0f77449e1dfd44057cd5d0f  gcc/config/rs6000/default64.h
  af67d5fc20f3c5695c275e364482816c  gcc/config/rs6000/dfp.md
! effc9dccdbe2838de54835cdd29b4f92  gcc/config/rs6000/driver-rs6000.c
  31af9fd0d8567d00d33e55b29cb4cfe9  gcc/config/rs6000/e300c2c3.md
  fa145648a6e566ed4e8c2512fa6e5145  gcc/config/rs6000/e500.h
  a29385a64c177591ad91f740496897b7  gcc/config/rs6000/e500mc.md
*************** d72d32ce10b6b2d9d2b6c5c805ed926f  gcc/co
*** 3906,3924 ****
  4e2bdc3bc17b2e623ca22dc682e8d765  gcc/config/rs6000/ppc-asm.h
  b5f65d5db893cf3ca33e181b35cae0f3  gcc/config/rs6000/ppc-auxv.h
  526c8b9296818a28a1cd31ac9a1aa109  gcc/config/rs6000/ppu_intrinsics.h
! 7ece436730a2913c3f5980fe64a72454  gcc/config/rs6000/predicates.md
! 8487b3f36ba6463ad32647e69e060c6b  gcc/config/rs6000/rs6000-builtin.def
! 310ad712f43c44ae14112300fe48c9f8  gcc/config/rs6000/rs6000-c.c
  9c6ba7f9ee5978eee63cfee9d7ee9c3a  gcc/config/rs6000/rs6000-cpus.def
  a46ae50924a00ed57cfdf730ebdb4237  gcc/config/rs6000/rs6000-linux.c
  2824bf79a0d9619e1952e8d0a90aef04  gcc/config/rs6000/rs6000-modes.def
  f69e381c5811309d05da2313dfcec4de  gcc/config/rs6000/rs6000-opts.h
  845709f631fc1fa80de2bbaf192bff40  gcc/config/rs6000/rs6000-passes.def
! 6484637023cec7e3ee43814bac0db0d5  gcc/config/rs6000/rs6000-protos.h
  914f1dcbd8cea8da94281c72be417b47  gcc/config/rs6000/rs6000-tables.opt
! b9c0234d5772fef2080cb445f72297f9  gcc/config/rs6000/rs6000.c
! c461457c1525c2fb211d80801c9eef95  gcc/config/rs6000/rs6000.h
! d503be8617ff5f10f8cac13cf53d7234  gcc/config/rs6000/rs6000.md
  afd7ce6de7b3cecc76e6b46016989da4  gcc/config/rs6000/rs6000.opt
  77b278cec2d9c926b955ebfc7075c240  gcc/config/rs6000/rs64.md
  d83c81edf739619fad01bf4449b95fcf  gcc/config/rs6000/rtems.h
--- 3907,3925 ----
  4e2bdc3bc17b2e623ca22dc682e8d765  gcc/config/rs6000/ppc-asm.h
  b5f65d5db893cf3ca33e181b35cae0f3  gcc/config/rs6000/ppc-auxv.h
  526c8b9296818a28a1cd31ac9a1aa109  gcc/config/rs6000/ppu_intrinsics.h
! 877eecd9e05889835e11ba836a13b124  gcc/config/rs6000/predicates.md
! 77d0f1b473496014853d8b243efb869a  gcc/config/rs6000/rs6000-builtin.def
! 5fa2869a5a2a2b01d1e57802e59845a0  gcc/config/rs6000/rs6000-c.c
  9c6ba7f9ee5978eee63cfee9d7ee9c3a  gcc/config/rs6000/rs6000-cpus.def
  a46ae50924a00ed57cfdf730ebdb4237  gcc/config/rs6000/rs6000-linux.c
  2824bf79a0d9619e1952e8d0a90aef04  gcc/config/rs6000/rs6000-modes.def
  f69e381c5811309d05da2313dfcec4de  gcc/config/rs6000/rs6000-opts.h
  845709f631fc1fa80de2bbaf192bff40  gcc/config/rs6000/rs6000-passes.def
! 2dd4af2b037f4e173cfe54b25e845852  gcc/config/rs6000/rs6000-protos.h
  914f1dcbd8cea8da94281c72be417b47  gcc/config/rs6000/rs6000-tables.opt
! 72e943266acddce29b27e9983a0e634a  gcc/config/rs6000/rs6000.c
! 9a08a3de8ba2ff32d2468a62795b5d2a  gcc/config/rs6000/rs6000.h
! 14846ea0650f5a9b5ef3a5d25fa0141e  gcc/config/rs6000/rs6000.md
  afd7ce6de7b3cecc76e6b46016989da4  gcc/config/rs6000/rs6000.opt
  77b278cec2d9c926b955ebfc7075c240  gcc/config/rs6000/rs64.md
  d83c81edf739619fad01bf4449b95fcf  gcc/config/rs6000/rtems.h
*************** eb790531e65dd00658657ac8f5095bf0  gcc/co
*** 3930,3936 ****
  6aea2d3f4c7f9feda711f14159b5db6b  gcc/config/rs6000/spu2vmx.h
  b855f9d150b04ab26a568aeae119621a  gcc/config/rs6000/sync.md
  8ca53d428fb23f756564e17614d74193  gcc/config/rs6000/sysv4.h
! 71532a23e8bb814c2631d92ccd79d8ea  gcc/config/rs6000/sysv4.opt
  f0120a33d63c5afb74adb0c42642ac8d  gcc/config/rs6000/sysv4le.h
  3b0a83e6efece3becf37788b124982fa  gcc/config/rs6000/t-aix43
  4e5e62fc9ca79e8be6334a36d02423cd  gcc/config/rs6000/t-aix52
--- 3931,3937 ----
  6aea2d3f4c7f9feda711f14159b5db6b  gcc/config/rs6000/spu2vmx.h
  b855f9d150b04ab26a568aeae119621a  gcc/config/rs6000/sync.md
  8ca53d428fb23f756564e17614d74193  gcc/config/rs6000/sysv4.h
! f0d3ce5c965f201707fb1215fd46f23f  gcc/config/rs6000/sysv4.opt
  f0120a33d63c5afb74adb0c42642ac8d  gcc/config/rs6000/sysv4le.h
  3b0a83e6efece3becf37788b124982fa  gcc/config/rs6000/t-aix43
  4e5e62fc9ca79e8be6334a36d02423cd  gcc/config/rs6000/t-aix52
*************** f11925c88524d2fd457bf77944da1302  gcc/co
*** 3958,3965 ****
  057a5ee9af5d10aec165aecb7b36e50e  gcc/config/rs6000/t-xilinx
  bf04bdab00faa0daebcc1114606fa4d3  gcc/config/rs6000/titan.md
  245d1070b026f6c6557c6c7a5cca5166  gcc/config/rs6000/vec_types.h
! 6da3f51a86613143db6f52ff5feaa04e  gcc/config/rs6000/vector.md
! 8bac59f78d205a1de6e1d0fca09aee66  gcc/config/rs6000/vsx.md
  58217d7c0d865013cdfc9ca30ba14670  gcc/config/rs6000/vxworks.h
  bf3883463c961f7b50a8f9809b6244ee  gcc/config/rs6000/vxworksae.h
  f0bd85bb4b12651513a250e3a8b690bc  gcc/config/rs6000/vxworksmils.h
--- 3959,3966 ----
  057a5ee9af5d10aec165aecb7b36e50e  gcc/config/rs6000/t-xilinx
  bf04bdab00faa0daebcc1114606fa4d3  gcc/config/rs6000/titan.md
  245d1070b026f6c6557c6c7a5cca5166  gcc/config/rs6000/vec_types.h
! b9a97bdfc0788fafe96cf53e1dc6822e  gcc/config/rs6000/vector.md
! 333fd1d5a46433bc2211d018e48dae1d  gcc/config/rs6000/vsx.md
  58217d7c0d865013cdfc9ca30ba14670  gcc/config/rs6000/vxworks.h
  bf3883463c961f7b50a8f9809b6244ee  gcc/config/rs6000/vxworksae.h
  f0bd85bb4b12651513a250e3a8b690bc  gcc/config/rs6000/vxworksmils.h
*************** ce08413dbe80270635f8524bb45e4dd8  gcc/co
*** 3973,3979 ****
  8f7b551f284f01ac11cb04642bf32184  gcc/config/rs6000/xfpu.md
  9815d575c4b9c5164b7c71ebb9131aea  gcc/config/rs6000/xilinx.h
  3b0f5bbcf190043c7d5e54450468e5f2  gcc/config/rs6000/xilinx.opt
! faa282f38a57aa842e478a82a58ccf8c  gcc/config/rtems.h
  1ca508a55c58ccc9cabc5e8c00182c86  gcc/config/rtems.opt
  494db96412be169420a8ecf32dfee742  gcc/config/rx/constraints.md
  a078bb5956c9dd698ed9fa963506351b  gcc/config/rx/predicates.md
--- 3974,3980 ----
  8f7b551f284f01ac11cb04642bf32184  gcc/config/rs6000/xfpu.md
  9815d575c4b9c5164b7c71ebb9131aea  gcc/config/rs6000/xilinx.h
  3b0f5bbcf190043c7d5e54450468e5f2  gcc/config/rs6000/xilinx.opt
! b6567fc9525b0f15934dc7fce576de23  gcc/config/rtems.h
  1ca508a55c58ccc9cabc5e8c00182c86  gcc/config/rtems.opt
  494db96412be169420a8ecf32dfee742  gcc/config/rx/constraints.md
  a078bb5956c9dd698ed9fa963506351b  gcc/config/rx/predicates.md
*************** c0b9a0bc1f70d5ff5cb2a1cec3fc0258  gcc/co
*** 3997,4013 ****
  e2667ed5190f6c4cb2e2350ab53a3cad  gcc/config/s390/htmxlintrin.h
  e36e51db72c306ef71e637f4e421160a  gcc/config/s390/linux.h
  2aabb23688b1bb372881fa33dac4bade  gcc/config/s390/predicates.md
! b1b722b7a004b166861385320d7b4756  gcc/config/s390/s390-builtin-types.def
! cd00757fe6b2a3e89f34e4c54bf98bc1  gcc/config/s390/s390-builtins.def
  f86d5ba68c64df7a6369bb3154996154  gcc/config/s390/s390-builtins.h
  7c0e57ec187dda594a17e31ae79e98a3  gcc/config/s390/s390-c.c
  4029a4a0e90624e1410585d6c8779c73  gcc/config/s390/s390-modes.def
! 3fc693c2c78b5ae3ac47b83823d71e47  gcc/config/s390/s390-opts.h
! fea7bf517d90bc3af915876db1be6bc6  gcc/config/s390/s390-protos.h
! 02db24d0fe20c8e1299c5d38e2f98e69  gcc/config/s390/s390.c
! 1f016404836bb16935ea059303fbe284  gcc/config/s390/s390.h
! b111b16c513245fe1d03c2a0328b9f5f  gcc/config/s390/s390.md
! 1fdd1937d19d2004ae1f23f64c32a72f  gcc/config/s390/s390.opt
  e580143b15c5efe0617806579ed04d21  gcc/config/s390/s390intrin.h
  5d6d963c9d4546945dca3d4a0d7b346a  gcc/config/s390/s390x.h
  e5a6754465a646cdb25c7b46c091aad5  gcc/config/s390/subst.md
--- 3998,4014 ----
  e2667ed5190f6c4cb2e2350ab53a3cad  gcc/config/s390/htmxlintrin.h
  e36e51db72c306ef71e637f4e421160a  gcc/config/s390/linux.h
  2aabb23688b1bb372881fa33dac4bade  gcc/config/s390/predicates.md
! e0584a92b8babb042aec5f0e005b829a  gcc/config/s390/s390-builtin-types.def
! 397c727772d8460c9e31ba67f43c1fac  gcc/config/s390/s390-builtins.def
  f86d5ba68c64df7a6369bb3154996154  gcc/config/s390/s390-builtins.h
  7c0e57ec187dda594a17e31ae79e98a3  gcc/config/s390/s390-c.c
  4029a4a0e90624e1410585d6c8779c73  gcc/config/s390/s390-modes.def
! 77d0d63703092dc1d1a4d53ac140a588  gcc/config/s390/s390-opts.h
! f434d3136deeee756a6b76f409b3307b  gcc/config/s390/s390-protos.h
! c51495a9dd54a63d742a7eec70bca575  gcc/config/s390/s390.c
! 1e70e0e6fbcc65aae7749686f7d1904b  gcc/config/s390/s390.h
! fa0786eecd80b1bf2ba97ada4989f18a  gcc/config/s390/s390.md
! f8a78ea45721ef9286697422e53c9fe1  gcc/config/s390/s390.opt
  e580143b15c5efe0617806579ed04d21  gcc/config/s390/s390intrin.h
  5d6d963c9d4546945dca3d4a0d7b346a  gcc/config/s390/s390x.h
  e5a6754465a646cdb25c7b46c091aad5  gcc/config/s390/subst.md
*************** ebbdcebbe1adce348931a4c7274c7c51  gcc/co
*** 4095,4103 ****
  8716c31870255b84a448762c1c3f81c7  gcc/config/sparc/sparc-opts.h
  f7b50c68732f0e443b61cc30aafcdf2b  gcc/config/sparc/sparc-passes.def
  c9f7a8357767f05db3064cf1cc649b67  gcc/config/sparc/sparc-protos.h
! e59635de5be3ba3b8665efb32600f02b  gcc/config/sparc/sparc.c
  d22b6f70252e19940f3fdf0364e2c312  gcc/config/sparc/sparc.h
! 79022cdd249b67e87687638f1166924e  gcc/config/sparc/sparc.md
  7ed2f6fc79160fe9d611d2b3b0c23d1a  gcc/config/sparc/sparc.opt
  0ce5501d01413f5bf8569648d53f026b  gcc/config/sparc/sparclet.md
  7b3ac0af0debfa3fc3e038c25d775e49  gcc/config/sparc/supersparc.md
--- 4096,4104 ----
  8716c31870255b84a448762c1c3f81c7  gcc/config/sparc/sparc-opts.h
  f7b50c68732f0e443b61cc30aafcdf2b  gcc/config/sparc/sparc-passes.def
  c9f7a8357767f05db3064cf1cc649b67  gcc/config/sparc/sparc-protos.h
! 2c9270fc7468e6ef504268245f554fba  gcc/config/sparc/sparc.c
  d22b6f70252e19940f3fdf0364e2c312  gcc/config/sparc/sparc.h
! 2722d8527e98c03af8fe4d1229f7fbee  gcc/config/sparc/sparc.md
  7ed2f6fc79160fe9d611d2b3b0c23d1a  gcc/config/sparc/sparc.opt
  0ce5501d01413f5bf8569648d53f026b  gcc/config/sparc/sparclet.md
  7b3ac0af0debfa3fc3e038c25d775e49  gcc/config/sparc/supersparc.md
*************** c73f3c6631d04a934d59056378f53a6a  gcc/co
*** 4275,4289 ****
  da0c5a9aba24111956e86a5007dd39a6  gcc/config/xtensa/linux.h
  646aba699b87522d1f4abac28a0e8b50  gcc/config/xtensa/predicates.md
  ec846689d23cece17a1e173a290d1bc2  gcc/config/xtensa/t-xtensa
! cd3f530ea95922564e1c6760e6fdf034  gcc/config/xtensa/uclinux.h
  19c527eb9ebf583239c86ce3bf541dec  gcc/config/xtensa/uclinux.opt
  db7ecf40e8ff19197f922f4f71de8864  gcc/config/xtensa/xtensa-protos.h
! e85b8143fc7a173b74eb80c640d68832  gcc/config/xtensa/xtensa.c
  93e6af33ce49627c14b7a69098b99cd7  gcc/config/xtensa/xtensa.h
! 3a904fae76ea41a5ac0cd3f169afb129  gcc/config/xtensa/xtensa.md
  1e4b738829612b4836067eb92c840ee7  gcc/config/xtensa/xtensa.opt
! dff44b79b2e1ec9b505672e19ed7b1fb  gcc/configure
! 648800c90903b1407d8d2e546662f225  gcc/configure.ac
  75059ca0d9a4c904710ca39560b641e9  gcc/context.c
  9544972a69766328e0ef70c98997c4e7  gcc/context.h
  9b619bc52057ca0815749b39e7204101  gcc/convert.c
--- 4276,4290 ----
  da0c5a9aba24111956e86a5007dd39a6  gcc/config/xtensa/linux.h
  646aba699b87522d1f4abac28a0e8b50  gcc/config/xtensa/predicates.md
  ec846689d23cece17a1e173a290d1bc2  gcc/config/xtensa/t-xtensa
! 79614c6b589cc6a149f809cc6503fb10  gcc/config/xtensa/uclinux.h
  19c527eb9ebf583239c86ce3bf541dec  gcc/config/xtensa/uclinux.opt
  db7ecf40e8ff19197f922f4f71de8864  gcc/config/xtensa/xtensa-protos.h
! 27bd469398aa2a0b18d27c22a3c5d162  gcc/config/xtensa/xtensa.c
  93e6af33ce49627c14b7a69098b99cd7  gcc/config/xtensa/xtensa.h
! db001e36ef357c65df228681df018103  gcc/config/xtensa/xtensa.md
  1e4b738829612b4836067eb92c840ee7  gcc/config/xtensa/xtensa.opt
! d923c48745acfb4f5a776afd53e56885  gcc/configure
! df6eddd781169692fd8f2353fedb02c1  gcc/configure.ac
  75059ca0d9a4c904710ca39560b641e9  gcc/context.c
  9544972a69766328e0ef70c98997c4e7  gcc/context.h
  9b619bc52057ca0815749b39e7204101  gcc/convert.c
*************** dff44b79b2e1ec9b505672e19ed7b1fb  gcc/co
*** 4291,4297 ****
  5e83fce2aab1937b6e6565f1c0262e8e  gcc/coretypes.h
  26c55904a2afbcf2aa43236db5fddcb8  gcc/coverage.c
  1078685a2ff587f89142f3c631f04c82  gcc/coverage.h
! d9d22a883e60bfc46494b5b4a2253445  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
--- 4292,4298 ----
  5e83fce2aab1937b6e6565f1c0262e8e  gcc/coretypes.h
  26c55904a2afbcf2aa43236db5fddcb8  gcc/coverage.c
  1078685a2ff587f89142f3c631f04c82  gcc/coverage.h
! 7c69ce58a4c4d73c862f97522bdda3bc  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
*************** c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp
*** 4320,4377 ****
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  52380899f9da4a59c3b99da38218f81a  gcc/cp/Make-lang.in
  a664e5da3668f808636e156b4e59d16c  gcc/cp/NEWS
! 1d013f2765f88f5c7c8063330a543e38  gcc/cp/call.c
  e370fe34672df8201043ba1a2e1104b6  gcc/cp/cfns.gperf
  c4d6f3b7d0a505fbe74e29774d11cfe9  gcc/cp/cfns.h
! 29ff42a2b71d6da2f092abec2933e31a  gcc/cp/class.c
  d7ab06410b296f55856425add1bfd26d  gcc/cp/config-lang.in
! e72dfd54ec9365a5080e85532d979c94  gcc/cp/constexpr.c
  307f99a8e6084326c45980647f02b7e1  gcc/cp/constraint.cc
  56aa0140f84f897feeb4ce54bd6e6f46  gcc/cp/cp-array-notation.c
  38146ed098d4c26f2e487034266adf13  gcc/cp/cp-cilkplus.c
  c6462a1b73c2a072af8c94f300264afc  gcc/cp/cp-cilkplus.h
! b3093ec10e8a31385127f98513f3d2e1  gcc/cp/cp-gimplify.c
  5d9014a008fea03abd2bc8c93422b14c  gcc/cp/cp-lang.c
  4b50cb9e09af605dfd2618a77668ba27  gcc/cp/cp-objcp-common.c
  329495300d80f28020460da01bd495f3  gcc/cp/cp-objcp-common.h
  aa36e3e3dbb56aa91e4c9c7b03774b50  gcc/cp/cp-tree.def
! d9b628b4366ce37bc9092e7b70cde79a  gcc/cp/cp-tree.h
  41d94f2c081c6ecf6c7c7780b061d7ce  gcc/cp/cp-ubsan.c
! ceb7718cd5e3462095095448e2809c63  gcc/cp/cvt.c
  ffc3a23e271c5e11d25ac613e8d2f152  gcc/cp/cxx-pretty-print.c
  546dc862de2fc3919db2d2985e101844  gcc/cp/cxx-pretty-print.h
! 4f5b1bdfda08f3a226f937e8309549b4  gcc/cp/decl.c
  c6b416fb9f920b607825dba7ef8d1a48  gcc/cp/decl.h
! 25ede544cff7d350b4ba23729a563d18  gcc/cp/decl2.c
  aa98548ee09751a5b70c5eb31f1c6417  gcc/cp/dump.c
! a3585afb1a25f599d06e94ece6af3451  gcc/cp/error.c
! 9006009bbe03dc24d4dd97bd9dd4235a  gcc/cp/except.c
  64d885b72c1c50ab9956e994bd7157a4  gcc/cp/expr.c
  da79ddc6be4fafc84a957cfd070a5c24  gcc/cp/friend.c
  21ab402dce77246d6a7766b067b429c8  gcc/cp/g++spec.c
! f43eb6c4c3a45387f529ef9e17f6f709  gcc/cp/init.c
! be48106ba86457ede68167384be9e1f3  gcc/cp/lambda.c
  bca5f8c2bd65c2ffd939d16f089e49dc  gcc/cp/lang-specs.h
  78263a37da49248fcffe573ed7d84534  gcc/cp/lex.c
  fbfb6bc61d27f625485f113193c8bc76  gcc/cp/logic.cc
  9f433533e64ec9891980cf6cecd72c90  gcc/cp/mangle.c
! 7cfe06010124becb935cb216a131abe6  gcc/cp/method.c
! 7105e71d644a11468e16a343f976a810  gcc/cp/name-lookup.c
  3c91f835c3688bb59986de0664d535eb  gcc/cp/name-lookup.h
  f0eccfb2b6cc10b6838fc80d7d6cd1e4  gcc/cp/operators.def
! adcc567eaf279137fc92a3f633597e7f  gcc/cp/optimize.c
! 822e3b5c8c51b8682fb9ac3c70185861  gcc/cp/parser.c
  80b4f9350fbe5bd90898e0758266098c  gcc/cp/parser.h
! 07ad9d18f730f930340367a486a10c83  gcc/cp/pt.c
  ee5df732d6ad1d51078b5d0f67a784b9  gcc/cp/ptree.c
  db936b1b0b3f9a6d128c05631887c312  gcc/cp/repo.c
  b78204514ca7ae7bce11a6af84ab55ce  gcc/cp/rtti.c
! 5a02e3a5ee3953172c8f104d31c8de51  gcc/cp/search.c
! 5d5ddae3ed007ae0f0bf89a2faddcdb4  gcc/cp/semantics.c
! e01586d00327e7e49b631df9c67fd4d2  gcc/cp/tree.c
  9e5151a4798c91f91d0e0b4415324a77  gcc/cp/type-utils.h
! 4878e5fa9bf6651fdc4515443e3702fc  gcc/cp/typeck.c
! 994a68c01c54a110a148128644fc40f9  gcc/cp/typeck2.c
  c706912cef452d7ab9a54976efc128e5  gcc/cp/vtable-class-hierarchy.c
  b51155275074539477f71e8e53c46d2d  gcc/cppbuiltin.c
  a55eaea7c2160d3b2cb87ad7366a67b6  gcc/cppbuiltin.h
--- 4321,4378 ----
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  52380899f9da4a59c3b99da38218f81a  gcc/cp/Make-lang.in
  a664e5da3668f808636e156b4e59d16c  gcc/cp/NEWS
! f150f73813cfbc6bd449f41ba06e6207  gcc/cp/call.c
  e370fe34672df8201043ba1a2e1104b6  gcc/cp/cfns.gperf
  c4d6f3b7d0a505fbe74e29774d11cfe9  gcc/cp/cfns.h
! a89bcadf0531da57730a450b69e8cab3  gcc/cp/class.c
  d7ab06410b296f55856425add1bfd26d  gcc/cp/config-lang.in
! 27b3af808c59f72a8f5de9da034d8666  gcc/cp/constexpr.c
  307f99a8e6084326c45980647f02b7e1  gcc/cp/constraint.cc
  56aa0140f84f897feeb4ce54bd6e6f46  gcc/cp/cp-array-notation.c
  38146ed098d4c26f2e487034266adf13  gcc/cp/cp-cilkplus.c
  c6462a1b73c2a072af8c94f300264afc  gcc/cp/cp-cilkplus.h
! 3b5c83c1580381fb189348e903f1999f  gcc/cp/cp-gimplify.c
  5d9014a008fea03abd2bc8c93422b14c  gcc/cp/cp-lang.c
  4b50cb9e09af605dfd2618a77668ba27  gcc/cp/cp-objcp-common.c
  329495300d80f28020460da01bd495f3  gcc/cp/cp-objcp-common.h
  aa36e3e3dbb56aa91e4c9c7b03774b50  gcc/cp/cp-tree.def
! bb96b5349553a59bd3b539b06de1a825  gcc/cp/cp-tree.h
  41d94f2c081c6ecf6c7c7780b061d7ce  gcc/cp/cp-ubsan.c
! f7eded6aa12ab22c0f3f38614463c9e6  gcc/cp/cvt.c
  ffc3a23e271c5e11d25ac613e8d2f152  gcc/cp/cxx-pretty-print.c
  546dc862de2fc3919db2d2985e101844  gcc/cp/cxx-pretty-print.h
! 25bab9a9459378b1073f636450fc019e  gcc/cp/decl.c
  c6b416fb9f920b607825dba7ef8d1a48  gcc/cp/decl.h
! 34de997aceb01b5338836749b7527e63  gcc/cp/decl2.c
  aa98548ee09751a5b70c5eb31f1c6417  gcc/cp/dump.c
! 8cc7a32adc714359c29ef8ce38f806a7  gcc/cp/error.c
! f1a3a5d0ae01ff65e207eb645987e3d4  gcc/cp/except.c
  64d885b72c1c50ab9956e994bd7157a4  gcc/cp/expr.c
  da79ddc6be4fafc84a957cfd070a5c24  gcc/cp/friend.c
  21ab402dce77246d6a7766b067b429c8  gcc/cp/g++spec.c
! c933a38f7ed1e601d2cb68170970995a  gcc/cp/init.c
! 531818193041efe08db8fffe794090ea  gcc/cp/lambda.c
  bca5f8c2bd65c2ffd939d16f089e49dc  gcc/cp/lang-specs.h
  78263a37da49248fcffe573ed7d84534  gcc/cp/lex.c
  fbfb6bc61d27f625485f113193c8bc76  gcc/cp/logic.cc
  9f433533e64ec9891980cf6cecd72c90  gcc/cp/mangle.c
! c8cdc512b8cfd0e21fed9cc8723ccf5f  gcc/cp/method.c
! f53a410cd2295879d7e1ac68f771fd6e  gcc/cp/name-lookup.c
  3c91f835c3688bb59986de0664d535eb  gcc/cp/name-lookup.h
  f0eccfb2b6cc10b6838fc80d7d6cd1e4  gcc/cp/operators.def
! a3fa9e7864e7529742617cefea0ff8d9  gcc/cp/optimize.c
! df23b954d2973099e6aced491b56ae29  gcc/cp/parser.c
  80b4f9350fbe5bd90898e0758266098c  gcc/cp/parser.h
! cae697862fdef8100c6f96aa3546be63  gcc/cp/pt.c
  ee5df732d6ad1d51078b5d0f67a784b9  gcc/cp/ptree.c
  db936b1b0b3f9a6d128c05631887c312  gcc/cp/repo.c
  b78204514ca7ae7bce11a6af84ab55ce  gcc/cp/rtti.c
! 2310595b3287a46745ac14c9a226f3f0  gcc/cp/search.c
! bcfe32c47f509aca54fe1e49d54df2c9  gcc/cp/semantics.c
! bf627e0cc08313ab3599ceff80a80316  gcc/cp/tree.c
  9e5151a4798c91f91d0e0b4415324a77  gcc/cp/type-utils.h
! 4f41af2b364e55156052ca5aaeb60ec4  gcc/cp/typeck.c
! 32e5c31100b95a8eba4fc199787ad510  gcc/cp/typeck2.c
  c706912cef452d7ab9a54976efc128e5  gcc/cp/vtable-class-hierarchy.c
  b51155275074539477f71e8e53c46d2d  gcc/cppbuiltin.c
  a55eaea7c2160d3b2cb87ad7366a67b6  gcc/cppbuiltin.h
*************** afeedee11208d03a5103efee41fb41b2  gcc/db
*** 4391,4399 ****
  e353eaa0cbb9c1669a29d1c1b1f87b1e  gcc/dbgcnt.h
  26e8fcbaefe1467cb976012b7cf29983  gcc/dbxout.c
  37f4371fdda11b2c37dc0497b272a958  gcc/dbxout.h
! 5de162a45be40f5c8d514177f9d3d725  gcc/dce.c
  0da8020721677130afbad8bd7cb89e79  gcc/dce.h
! 8cb5580f92d380a1fd1f5268116e34c2  gcc/ddg.c
  f8909b74975d73c1a18507a15c0c2384  gcc/ddg.h
  c3268c71b43e48a8d40f7d5bd251ae36  gcc/debug.c
  1729dad25a1ad59fb6a0a5c9dfb1eb47  gcc/debug.h
--- 4392,4400 ----
  e353eaa0cbb9c1669a29d1c1b1f87b1e  gcc/dbgcnt.h
  26e8fcbaefe1467cb976012b7cf29983  gcc/dbxout.c
  37f4371fdda11b2c37dc0497b272a958  gcc/dbxout.h
! 2f77b1763af6d6cc3e3c953b23c85e35  gcc/dce.c
  0da8020721677130afbad8bd7cb89e79  gcc/dce.h
! f780bb3b9b6deac46cc975873edef47e  gcc/ddg.c
  f8909b74975d73c1a18507a15c0c2384  gcc/ddg.h
  c3268c71b43e48a8d40f7d5bd251ae36  gcc/debug.c
  1729dad25a1ad59fb6a0a5c9dfb1eb47  gcc/debug.h
*************** ebc01257daa0725663692c5283f9066d  gcc/do
*** 4420,4457 ****
  0e9464bec47974f6c152e2f7fcdd7c54  gcc/doc/configterms.texi
  4d2e260f57c2a56aab4b7539aa8ea7a9  gcc/doc/contrib.texi
  d2ab741503a5629e8b4a70a0e5335637  gcc/doc/contribute.texi
! 23a346751c8bf07ab4a0479ef665abc9  gcc/doc/cpp.1
! 788d307c1c70c5f8bd3fe0e9c40ce543  gcc/doc/cpp.info
  265e1f73a91ecf4f8c0fec7d753f3a5d  gcc/doc/cpp.texi
  e260807f252068741e2ebfdaa0e84349  gcc/doc/cppdiropts.texi
  35e9afd06835a4037daf73de3e364d81  gcc/doc/cppenv.texi
! c542ea717cc4724b94e16e2b0e7b2360  gcc/doc/cppinternals.info
  1f296e408d348921b3ca6959d5cdfe5b  gcc/doc/cppinternals.texi
  3229dc0c44fab51cc291566148d79e6e  gcc/doc/cppopts.texi
  13eb634c50488bcf40424e0890a26326  gcc/doc/cppwarnopts.texi
! 84242499b84147a584efe5d3dc52c817  gcc/doc/extend.texi
  198def664e7cfe4a4cc79c8cae55175d  gcc/doc/fragments.texi
  0f2077f3962ccb1d6c5c55cac48e1695  gcc/doc/frontends.texi
! 881469f635c3748fa6449cafae9328f8  gcc/doc/fsf-funding.7
! 97e93265e9976430adeba6fbb3e249b4  gcc/doc/g++.1
! 97e93265e9976430adeba6fbb3e249b4  gcc/doc/gcc.1
! b311802b0d721f5557a9173405af3172  gcc/doc/gcc.info
  82943cac2e651592a301c2081eda9666  gcc/doc/gcc.texi
! 992deb880da4c2148a7e77a2c582470c  gcc/doc/gccinstall.info
! 117bf597587be9f2be09436afd5032a2  gcc/doc/gccint.info
  1baadd71cb074eb858078e79360a7f7a  gcc/doc/gccint.texi
! 9789b171ee7c77676b478c231405db4a  gcc/doc/gcov-dump.1
  b8d24f76649917a88a4a7b21cd032a0f  gcc/doc/gcov-dump.texi
! 65211b8e0dc25bd3e5ac8cb5b422d822  gcc/doc/gcov-tool.1
  800ae82031d4de3b2a6fd13cb2b0a48e  gcc/doc/gcov-tool.texi
! 5ca793a43c4919988fc227e9d93790fe  gcc/doc/gcov.1
! 8b2b8c2ffabc034dcf9b102f8b3063e5  gcc/doc/gcov.texi
  43a3b8154dcc4ca459ea567f9060b4d4  gcc/doc/generic.texi
! f5f68f5ed92ee3c959fabcffa38896a8  gcc/doc/gfdl.7
! 2408a362bec40baffd7aa2f31cb7935c  gcc/doc/gfortran.1
  30559f39145bc73dde9cee3dd7ac9d3d  gcc/doc/gimple.texi
  290370669f02bef1502ada9273e5261f  gcc/doc/gnu.texi
! 95b3d33d6450425626a0507850e737f6  gcc/doc/gpl.7
  2581b3abd7f482fed6c88e2989a1339d  gcc/doc/gty.texi
  aedde02cf24a26a69cabaf5846321364  gcc/doc/headerdirs.texi
  f197b98dd6f8c45086532f4a26a50328  gcc/doc/hostconfig.texi
--- 4421,4458 ----
  0e9464bec47974f6c152e2f7fcdd7c54  gcc/doc/configterms.texi
  4d2e260f57c2a56aab4b7539aa8ea7a9  gcc/doc/contrib.texi
  d2ab741503a5629e8b4a70a0e5335637  gcc/doc/contribute.texi
! d8562ae8507e7c41eb2422ce4c3ab647  gcc/doc/cpp.1
! c193703b3bfb9ee1eb895c01532834b2  gcc/doc/cpp.info
  265e1f73a91ecf4f8c0fec7d753f3a5d  gcc/doc/cpp.texi
  e260807f252068741e2ebfdaa0e84349  gcc/doc/cppdiropts.texi
  35e9afd06835a4037daf73de3e364d81  gcc/doc/cppenv.texi
! cafab9418d86782eabd03ce5a4768fe0  gcc/doc/cppinternals.info
  1f296e408d348921b3ca6959d5cdfe5b  gcc/doc/cppinternals.texi
  3229dc0c44fab51cc291566148d79e6e  gcc/doc/cppopts.texi
  13eb634c50488bcf40424e0890a26326  gcc/doc/cppwarnopts.texi
! 3bfea55f2fef6a6bbf7caf3a917bb81f  gcc/doc/extend.texi
  198def664e7cfe4a4cc79c8cae55175d  gcc/doc/fragments.texi
  0f2077f3962ccb1d6c5c55cac48e1695  gcc/doc/frontends.texi
! 3528e8b8718e81125053d23737cfe415  gcc/doc/fsf-funding.7
! 77de42a9819d8c6c6ce1985b2e6bfacd  gcc/doc/g++.1
! 77de42a9819d8c6c6ce1985b2e6bfacd  gcc/doc/gcc.1
! d7f7d75a9183cd2fa479b27edfcc0fbc  gcc/doc/gcc.info
  82943cac2e651592a301c2081eda9666  gcc/doc/gcc.texi
! 4d37bb8b4bbe15bbe3d159b35fb2326c  gcc/doc/gccinstall.info
! 872a983b3f939df674b423dfffbb9c6a  gcc/doc/gccint.info
  1baadd71cb074eb858078e79360a7f7a  gcc/doc/gccint.texi
! 09f1bbffa196b6dbd6cd5a6f81e180f9  gcc/doc/gcov-dump.1
  b8d24f76649917a88a4a7b21cd032a0f  gcc/doc/gcov-dump.texi
! 3ba0b94ec38377edb2fc1ca75df56cb8  gcc/doc/gcov-tool.1
  800ae82031d4de3b2a6fd13cb2b0a48e  gcc/doc/gcov-tool.texi
! 42d545c1d21c2bb21e9734e59b08a8ec  gcc/doc/gcov.1
! 4125c70e12ee6d409b4bba1cf2eef2e9  gcc/doc/gcov.texi
  43a3b8154dcc4ca459ea567f9060b4d4  gcc/doc/generic.texi
! 1b64bda7be5f28f725d8f6ab5d8bdf22  gcc/doc/gfdl.7
! 697d36e4b477875eae3b3b5e098307c3  gcc/doc/gfortran.1
  30559f39145bc73dde9cee3dd7ac9d3d  gcc/doc/gimple.texi
  290370669f02bef1502ada9273e5261f  gcc/doc/gnu.texi
! 1ae33237ea5618396295ce9a51a060a0  gcc/doc/gpl.7
  2581b3abd7f482fed6c88e2989a1339d  gcc/doc/gty.texi
  aedde02cf24a26a69cabaf5846321364  gcc/doc/headerdirs.texi
  f197b98dd6f8c45086532f4a26a50328  gcc/doc/hostconfig.texi
*************** b82b1143f78f373e3c76f6958d830869  gcc/do
*** 4464,4472 ****
  73819b3930a3d4be5d6234070d02386a  gcc/doc/include/texinfo.tex
  43de8299a21f1b994c840001ed26cb7a  gcc/doc/install-old.texi
  ca9e57f076db155a030af10d129119f7  gcc/doc/install.texi
! 5d2ea6ff26e6e0a2b6e17e4d477e8385  gcc/doc/install.texi2html
  8742acc0c4a46ac5075fbd7d6e95db10  gcc/doc/interface.texi
! 6f8adf56e58058c1354250b4c1caf05b  gcc/doc/invoke.texi
  90ac7735caa268a14f96ad68d78372aa  gcc/doc/languages.texi
  084981d596106acaf75844a1d5d7d3a0  gcc/doc/libgcc.texi
  67bc388db0ea8fcd11e555283d08546a  gcc/doc/loop.texi
--- 4465,4473 ----
  73819b3930a3d4be5d6234070d02386a  gcc/doc/include/texinfo.tex
  43de8299a21f1b994c840001ed26cb7a  gcc/doc/install-old.texi
  ca9e57f076db155a030af10d129119f7  gcc/doc/install.texi
! aceb2e24bb637b8669329aa6ddc2c80e  gcc/doc/install.texi2html
  8742acc0c4a46ac5075fbd7d6e95db10  gcc/doc/interface.texi
! 1b4d64407e259415f7c15adff8171d93  gcc/doc/invoke.texi
  90ac7735caa268a14f96ad68d78372aa  gcc/doc/languages.texi
  084981d596106acaf75844a1d5d7d3a0  gcc/doc/libgcc.texi
  67bc388db0ea8fcd11e555283d08546a  gcc/doc/loop.texi
*************** a09721396e9815323356f0ce0b28fcf9  gcc/do
*** 4480,4491 ****
  b4c05b523f1b3f1736e962a6224a007e  gcc/doc/passes.texi
  55bbb47b3476a4054517e4afd7b1a9b4  gcc/doc/plugins.texi
  b96e0a15eff3d07f71b395d59f799798  gcc/doc/portability.texi
! 63fb4c48868dc673014ddce99883e75f  gcc/doc/rtl.texi
  fad65170a3811a78b6146dd2d3f6e93c  gcc/doc/service.texi
  c6c1fabb7733f32f532abad39f392b4b  gcc/doc/sourcebuild.texi
  415434ff17f5a40c97dc2202dbc0d5aa  gcc/doc/standards.texi
! 49b59b2b3ae5cfc0c364a51e0de720e3  gcc/doc/tm.texi
! 629f92035aaa2a20c09ebc6971a24841  gcc/doc/tm.texi.in
  b774c6ee0d4e224ec129702426c5e428  gcc/doc/tree-ssa.texi
  d38fa1e575d131ba18493ab2b1a17386  gcc/doc/trouble.texi
  2ec94069ccaceb227d3307427440c855  gcc/dojump.c
--- 4481,4492 ----
  b4c05b523f1b3f1736e962a6224a007e  gcc/doc/passes.texi
  55bbb47b3476a4054517e4afd7b1a9b4  gcc/doc/plugins.texi
  b96e0a15eff3d07f71b395d59f799798  gcc/doc/portability.texi
! 34d324bf360cff3f772929e924837575  gcc/doc/rtl.texi
  fad65170a3811a78b6146dd2d3f6e93c  gcc/doc/service.texi
  c6c1fabb7733f32f532abad39f392b4b  gcc/doc/sourcebuild.texi
  415434ff17f5a40c97dc2202dbc0d5aa  gcc/doc/standards.texi
! fb7bd577c982f8349ba88f35bf440ac8  gcc/doc/tm.texi
! 03af348b233c83daed381e9fcc683008  gcc/doc/tm.texi.in
  b774c6ee0d4e224ec129702426c5e428  gcc/doc/tree-ssa.texi
  d38fa1e575d131ba18493ab2b1a17386  gcc/doc/trouble.texi
  2ec94069ccaceb227d3307427440c855  gcc/dojump.c
*************** d38fa1e575d131ba18493ab2b1a17386  gcc/do
*** 4496,4512 ****
  c9c017c1a6d182db465e420a401dc5e4  gcc/domwalk.h
  fc595b2b68f9d9e19805b1a15e37c623  gcc/double-int.c
  d3c114e68e1cb29ad92ba50115cb0882  gcc/double-int.h
! 5de50b008cb62bdfeeb30fcb5333aa35  gcc/dse.c
  46a8e04aace8f43c10dc450d21d70288  gcc/dumpfile.c
  746d14943c5f560f556cc6ba9aaf7715  gcc/dumpfile.h
! 1c23aca7ebd5e78682c77a10e92740d1  gcc/dwarf2asm.c
  f7caa5023e329cc7eb3c06fd9ceb9bed  gcc/dwarf2asm.h
  6cddd6e1d295b0dab3d3303ce424838b  gcc/dwarf2cfi.c
! 948778957e9432b3e35f59614dc69742  gcc/dwarf2out.c
  3759ab65f22dade947ac51b51aeda4b3  gcc/dwarf2out.h
  efca4a45c30ac633725951382e487ebb  gcc/edit-context.c
  7f9fbe6415299ef034385a7ab3cfabd3  gcc/edit-context.h
! 30021d565098e276a0b5d187837e292a  gcc/emit-rtl.c
  361060e51c272bdb80495bb2e228487f  gcc/emit-rtl.h
  1a5c8e034b1ea3e445563860d8fc02a0  gcc/errors.c
  cf1e025818ca472f9a1c116e67ef4cc3  gcc/errors.h
--- 4497,4513 ----
  c9c017c1a6d182db465e420a401dc5e4  gcc/domwalk.h
  fc595b2b68f9d9e19805b1a15e37c623  gcc/double-int.c
  d3c114e68e1cb29ad92ba50115cb0882  gcc/double-int.h
! 90c03ab1cd8657e0f4526acfe0738b43  gcc/dse.c
  46a8e04aace8f43c10dc450d21d70288  gcc/dumpfile.c
  746d14943c5f560f556cc6ba9aaf7715  gcc/dumpfile.h
! b22eec93f2e186efa3c5621fd80c304d  gcc/dwarf2asm.c
  f7caa5023e329cc7eb3c06fd9ceb9bed  gcc/dwarf2asm.h
  6cddd6e1d295b0dab3d3303ce424838b  gcc/dwarf2cfi.c
! 74a8b7044153f1e48f7254f7a81945ad  gcc/dwarf2out.c
  3759ab65f22dade947ac51b51aeda4b3  gcc/dwarf2out.h
  efca4a45c30ac633725951382e487ebb  gcc/edit-context.c
  7f9fbe6415299ef034385a7ab3cfabd3  gcc/edit-context.h
! c6494bf2336d8b5422b05e5d60b01369  gcc/emit-rtl.c
  361060e51c272bdb80495bb2e228487f  gcc/emit-rtl.h
  1a5c8e034b1ea3e445563860d8fc02a0  gcc/errors.c
  cf1e025818ca472f9a1c116e67ef4cc3  gcc/errors.h
*************** d0a7dc02daccbdcdd63a1d0f877c6af5  gcc/ex
*** 4517,4540 ****
  2ea49737d7b49d3ecee03ec6ba2dfd2e  gcc/exec-tool.in
  f20130a1d04970609f42de8b3c8aed6a  gcc/explow.c
  d252cd5dd9657304bdc0002539b65a19  gcc/explow.h
! 29b1f4ad5319703451634c14a24279ad  gcc/expmed.c
  b583afc565dc4b1f111f4cc1731bef2a  gcc/expmed.h
! b6eda19313836239ab67d0cbe7d1a286  gcc/expr.c
  c86cc2531fcf8b1ada0373572b1b7acf  gcc/expr.h
  f6f78aeb7c8ce93cfb147c8f3168a779  gcc/fibonacci_heap.c
  3ade009fde9a4924090332142873a749  gcc/fibonacci_heap.h
  1b56f5236cd854fd307e3ded0653ddab  gcc/file-find.c
  895775a7ab087cc00a99bc0b23c6ec6d  gcc/file-find.h
! 238e8daf5f59662ab41997c30b651363  gcc/final.c
  4d6d0d3ed9459bd59fb8b34e3f732bd7  gcc/fixed-value.c
  719b77e854e9ffae1cb86430cd68de4e  gcc/fixed-value.h
  397b3c43b5f2649a6c9ca5816cb18f4a  gcc/flag-types.h
  cd76e0eb7ed6b4f0486461f0d1948045  gcc/flags.h
  6927943dca40ac5f7ae356c063919105  gcc/fold-const-call.c
  0da9f50d2a25c495dd6e295346612b51  gcc/fold-const-call.h
! 228f1b0262deda42667d79941c43df40  gcc/fold-const.c
  3dee9f07878a132cee302c04066982f0  gcc/fold-const.h
! 82032cbe84ed909417d5ae3b7b6b439f  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
--- 4518,4541 ----
  2ea49737d7b49d3ecee03ec6ba2dfd2e  gcc/exec-tool.in
  f20130a1d04970609f42de8b3c8aed6a  gcc/explow.c
  d252cd5dd9657304bdc0002539b65a19  gcc/explow.h
! 3085b2296b51d824f0f15a390bbf09e7  gcc/expmed.c
  b583afc565dc4b1f111f4cc1731bef2a  gcc/expmed.h
! e756ec7157b0a11506b167ac5c9d0622  gcc/expr.c
  c86cc2531fcf8b1ada0373572b1b7acf  gcc/expr.h
  f6f78aeb7c8ce93cfb147c8f3168a779  gcc/fibonacci_heap.c
  3ade009fde9a4924090332142873a749  gcc/fibonacci_heap.h
  1b56f5236cd854fd307e3ded0653ddab  gcc/file-find.c
  895775a7ab087cc00a99bc0b23c6ec6d  gcc/file-find.h
! e698bd2ce1a738797b133ec36fad6048  gcc/final.c
  4d6d0d3ed9459bd59fb8b34e3f732bd7  gcc/fixed-value.c
  719b77e854e9ffae1cb86430cd68de4e  gcc/fixed-value.h
  397b3c43b5f2649a6c9ca5816cb18f4a  gcc/flag-types.h
  cd76e0eb7ed6b4f0486461f0d1948045  gcc/flags.h
  6927943dca40ac5f7ae356c063919105  gcc/fold-const-call.c
  0da9f50d2a25c495dd6e295346612b51  gcc/fold-const-call.h
! a9d62bc95f4b8d15071d8cfcb9841b14  gcc/fold-const.c
  3dee9f07878a132cee302c04066982f0  gcc/fold-const.h
! 7094687903296b6c0f9060a33cfd23b5  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
*************** a71efd3e199a80ee07c7f350cc8fcf91  gcc/fo
*** 4552,4562 ****
  87a1607d67d7b571432a0e83b1e4aabf  gcc/fortran/ChangeLog-2016
  9e0636f92243fb9b3480e27cefc96749  gcc/fortran/ChangeLog.ptr
  f118c66e409492da0bfe1c57a83276c2  gcc/fortran/Make-lang.in
! edbdfa68f3d51964c5ebc63a2bf4b60b  gcc/fortran/arith.c
  9e52ef7b47604fcff001ed312efc53b5  gcc/fortran/arith.h
! 8b0ae138dc03675da0db94570552db8e  gcc/fortran/array.c
  f32f20357bba1a9cc926911dc98c1cfc  gcc/fortran/bbt.c
! 73f93ef51da06d68256d5dfea4605ae8  gcc/fortran/check.c
  132d0ed0514568cbb856ba1f5a68317e  gcc/fortran/class.c
  bb0ee5873d155869e95ebb483458cb8e  gcc/fortran/config-lang.in
  1ed808fc4a4d991803dfde347ddce84a  gcc/fortran/constructor.c
--- 4553,4563 ----
  87a1607d67d7b571432a0e83b1e4aabf  gcc/fortran/ChangeLog-2016
  9e0636f92243fb9b3480e27cefc96749  gcc/fortran/ChangeLog.ptr
  f118c66e409492da0bfe1c57a83276c2  gcc/fortran/Make-lang.in
! ae3ae134fa3c8c1fd24c6a2c6f5dbb86  gcc/fortran/arith.c
  9e52ef7b47604fcff001ed312efc53b5  gcc/fortran/arith.h
! b46c616c84cd264971322a53adeb07f2  gcc/fortran/array.c
  f32f20357bba1a9cc926911dc98c1cfc  gcc/fortran/bbt.c
! 0f0534c9b10be1b122cc5176e6bb866f  gcc/fortran/check.c
  132d0ed0514568cbb856ba1f5a68317e  gcc/fortran/class.c
  bb0ee5873d155869e95ebb483458cb8e  gcc/fortran/config-lang.in
  1ed808fc4a4d991803dfde347ddce84a  gcc/fortran/constructor.c
*************** bb0ee5873d155869e95ebb483458cb8e  gcc/fo
*** 4564,4586 ****
  7a87d91055bcfd9e8ccd9cecdb995330  gcc/fortran/convert.c
  6431cf61d7ee860834d71b17dad47cbf  gcc/fortran/cpp.c
  fa144458c4bca9ea098fcc49e69c20cc  gcc/fortran/cpp.h
! 5078e96177b0c85581c22c0d40a396e7  gcc/fortran/data.c
  5d6574d0968f27afb4f3f41972e5f971  gcc/fortran/data.h
! c59b54f13e2dd2eec1574728f1b17d87  gcc/fortran/decl.c
  f8486e9dde69b3b606bbc76192b374ab  gcc/fortran/dependency.c
  6933dfd689c80beb5bb29d30026a34a1  gcc/fortran/dependency.h
  c3fed47839886fe87dd3656caa11c7e5  gcc/fortran/dump-parse-tree.c
  14ccfb214cc78c6632e78ebc5d43e4f2  gcc/fortran/error.c
! 76703a4c94b2ca424a4367442e87150a  gcc/fortran/expr.c
  05f704e72952b3ef3b591809d8bb33cd  gcc/fortran/f95-lang.c
! 0158e26a82ec42b8f9cb9d6c94759857  gcc/fortran/frontend-passes.c
  1aa4f0a9593c4082dfc8a446a8021662  gcc/fortran/gfc-diagnostic.def
  ae757ab385911de35e92e949d47d76d9  gcc/fortran/gfc-internals.texi
! 56c1939f1b1a0f73ee6268ef407a6c83  gcc/fortran/gfortran.h
! f8e4894a8c77d4db71304f39ed221449  gcc/fortran/gfortran.info
  2c8f2a8e4a156cc2c60a93eed11d1a78  gcc/fortran/gfortran.texi
  258ff078d7fd588b1db5276e388b42d3  gcc/fortran/gfortranspec.c
! 93a26ba55a9d506f10783cb832724d71  gcc/fortran/interface.c
  81504f550fc73cbddec9f7ce09c9db54  gcc/fortran/intrinsic.c
  f5a621f4d92bd975f19fa58c09b9e6db  gcc/fortran/intrinsic.h
  ba1407cb79153040295068873f19ccc1  gcc/fortran/intrinsic.texi
--- 4565,4587 ----
  7a87d91055bcfd9e8ccd9cecdb995330  gcc/fortran/convert.c
  6431cf61d7ee860834d71b17dad47cbf  gcc/fortran/cpp.c
  fa144458c4bca9ea098fcc49e69c20cc  gcc/fortran/cpp.h
! 37ef55690b7643959b9d6ad02500a84c  gcc/fortran/data.c
  5d6574d0968f27afb4f3f41972e5f971  gcc/fortran/data.h
! 571b32a223e3f78fde99777de8f47019  gcc/fortran/decl.c
  f8486e9dde69b3b606bbc76192b374ab  gcc/fortran/dependency.c
  6933dfd689c80beb5bb29d30026a34a1  gcc/fortran/dependency.h
  c3fed47839886fe87dd3656caa11c7e5  gcc/fortran/dump-parse-tree.c
  14ccfb214cc78c6632e78ebc5d43e4f2  gcc/fortran/error.c
! 8007b5ce5cf7a755dc04ef605ee0a6e7  gcc/fortran/expr.c
  05f704e72952b3ef3b591809d8bb33cd  gcc/fortran/f95-lang.c
! cff55b11ddb846a7bac0a92cd82035d5  gcc/fortran/frontend-passes.c
  1aa4f0a9593c4082dfc8a446a8021662  gcc/fortran/gfc-diagnostic.def
  ae757ab385911de35e92e949d47d76d9  gcc/fortran/gfc-internals.texi
! 0670d0873d2e6537d744b15d180b29b3  gcc/fortran/gfortran.h
! 38e3959295c211641f5f132d94f3e940  gcc/fortran/gfortran.info
  2c8f2a8e4a156cc2c60a93eed11d1a78  gcc/fortran/gfortran.texi
  258ff078d7fd588b1db5276e388b42d3  gcc/fortran/gfortranspec.c
! b52e6da89148dbd5946757db4b5a2662  gcc/fortran/interface.c
  81504f550fc73cbddec9f7ce09c9db54  gcc/fortran/intrinsic.c
  f5a621f4d92bd975f19fa58c09b9e6db  gcc/fortran/intrinsic.h
  ba1407cb79153040295068873f19ccc1  gcc/fortran/intrinsic.texi
*************** a84b351eca744eb4326cdcf48ed2d447  gcc/fo
*** 4593,4637 ****
  b6a48d929dc4bab485565b69477b39ba  gcc/fortran/lang-specs.h
  143689d60ddc29b5aceba7f734381371  gcc/fortran/lang.opt
  645bd6455816a65c53807b5362dfec6f  gcc/fortran/libgfortran.h
! da4850dc618f5aec7ece1748c9944105  gcc/fortran/match.c
  00a03b372a4378e1c07376ecf0602940  gcc/fortran/match.h
  d7e915937eda00d735c03407c30c147a  gcc/fortran/matchexp.c
  87a743f124dd99426032cc7ad19284bb  gcc/fortran/mathbuiltins.def
  9d431851867d6a83a9328224ab69473f  gcc/fortran/misc.c
! ca57cb2a2d0c28803299174636bb8c7c  gcc/fortran/module.c
! 72e9eb1f6f16e2794401854d4c90f425  gcc/fortran/openmp.c
  e8210239d0ae38ef26cbcec563bb173a  gcc/fortran/options.c
  cd92ca4dfa37306a53dad87d839f8d6e  gcc/fortran/parse.c
  e19e43330242c8950da01afa94a4f04b  gcc/fortran/parse.h
! 1e9be7262aaffda5b49993434c6d3665  gcc/fortran/primary.c
! 8a3d3c547e67d7248027bcab9dab69a9  gcc/fortran/resolve.c
  7ada4167f5cb66e95dc80a102e6c3b7a  gcc/fortran/scanner.c
  6761df883b8094d737206a8ba1c9f089  gcc/fortran/scanner.h
! 9c48e89d25ace2aa7d92c8858cbc803e  gcc/fortran/simplify.c
  764d2fa05e4399ec39d47288d3bf78be  gcc/fortran/st.c
! 3e76a7ace0e498c23235cc55bf9ba4ac  gcc/fortran/symbol.c
  04454a5aa04e742aa88cf053d40e0357  gcc/fortran/target-memory.c
  1a603863c873416a3e2a080510768dd2  gcc/fortran/target-memory.h
! d9648912e83e0fb0f62e827d1f38e636  gcc/fortran/trans-array.c
  ab7472b590e1c49b9167f2f0516f3aea  gcc/fortran/trans-array.h
  f982772425e7d9a65cbb819062be79e3  gcc/fortran/trans-common.c
  a2301830f80d9a2d2fa804e044559cf1  gcc/fortran/trans-const.c
  f3cd9953e1d7b41f8b4340256b01d9db  gcc/fortran/trans-const.h
! 0a9f66e2694f4ed4fdba13d6f2baab6f  gcc/fortran/trans-decl.c
! fa6219a646b4f37b9eae101942496e1a  gcc/fortran/trans-expr.c
! 03565f51bc2795d46675b2338c5f2089  gcc/fortran/trans-intrinsic.c
! cafc1a1e5c27843235689aca4b4445be  gcc/fortran/trans-io.c
! bcc5f8fcacb73d3f17e324477dfa974e  gcc/fortran/trans-openmp.c
! b03423f1367c96e2e4559fd981bfae96  gcc/fortran/trans-stmt.c
  09ff062ad8cb2da1edf2aefc8fec0dd0  gcc/fortran/trans-stmt.h
! 38dc288b225507fea2e53ebac49344c3  gcc/fortran/trans-types.c
  8afb8a4ba30f131571e5bbd641342396  gcc/fortran/trans-types.h
  530cdb5146a0273fc8d75438e976c9d5  gcc/fortran/trans.c
! 596d0ef11ab5ee083f7de6987eac3907  gcc/fortran/trans.h
  9d4b686857ace1c80925708b17d45124  gcc/fortran/types.def
  35369c9f7b73348c0b6b15b8bc83e317  gcc/fp-test.c
  4283b513d2c30438a7f09915c9a82423  gcc/function-tests.c
! 41ffcc0bd97f117d29338597d6405282  gcc/function.c
  dd500d77758f3dca71ae1b2251bfcd63  gcc/function.h
  06a221444dd61295a4de421f6bde7091  gcc/fwprop.c
  a3f2a611478af96e6ff01e90ca40e114  gcc/gcc-ar.c
--- 4594,4638 ----
  b6a48d929dc4bab485565b69477b39ba  gcc/fortran/lang-specs.h
  143689d60ddc29b5aceba7f734381371  gcc/fortran/lang.opt
  645bd6455816a65c53807b5362dfec6f  gcc/fortran/libgfortran.h
! 072c3d442dbb3ab21fcc48490405974a  gcc/fortran/match.c
  00a03b372a4378e1c07376ecf0602940  gcc/fortran/match.h
  d7e915937eda00d735c03407c30c147a  gcc/fortran/matchexp.c
  87a743f124dd99426032cc7ad19284bb  gcc/fortran/mathbuiltins.def
  9d431851867d6a83a9328224ab69473f  gcc/fortran/misc.c
! bbb98eaa398cd9ec8b02b01252a2ef93  gcc/fortran/module.c
! d6bb732ba1b9062cba0f41c00ab132b2  gcc/fortran/openmp.c
  e8210239d0ae38ef26cbcec563bb173a  gcc/fortran/options.c
  cd92ca4dfa37306a53dad87d839f8d6e  gcc/fortran/parse.c
  e19e43330242c8950da01afa94a4f04b  gcc/fortran/parse.h
! 74c55605612339acc2b2d8086b78e295  gcc/fortran/primary.c
! 2529fa4732aeaf414437793d751171b6  gcc/fortran/resolve.c
  7ada4167f5cb66e95dc80a102e6c3b7a  gcc/fortran/scanner.c
  6761df883b8094d737206a8ba1c9f089  gcc/fortran/scanner.h
! 024bffdaa3734adc0e16653b61d7ef3f  gcc/fortran/simplify.c
  764d2fa05e4399ec39d47288d3bf78be  gcc/fortran/st.c
! eee2f6e10a6e07b0fa4798ff189a943c  gcc/fortran/symbol.c
  04454a5aa04e742aa88cf053d40e0357  gcc/fortran/target-memory.c
  1a603863c873416a3e2a080510768dd2  gcc/fortran/target-memory.h
! 5d2dab0589513e2edb8f772b2b3d41a5  gcc/fortran/trans-array.c
  ab7472b590e1c49b9167f2f0516f3aea  gcc/fortran/trans-array.h
  f982772425e7d9a65cbb819062be79e3  gcc/fortran/trans-common.c
  a2301830f80d9a2d2fa804e044559cf1  gcc/fortran/trans-const.c
  f3cd9953e1d7b41f8b4340256b01d9db  gcc/fortran/trans-const.h
! 545e0bb2822d685b876b5037da863ab5  gcc/fortran/trans-decl.c
! e680dc7f472d290c1c7f73e67239e526  gcc/fortran/trans-expr.c
! 5d28be65aabcc80b9cc4fb37ef0bfead  gcc/fortran/trans-intrinsic.c
! 251588ca98b69f855c4d78fdbc92a5ce  gcc/fortran/trans-io.c
! 485c083b6489b61b96e929a9ecd7d57f  gcc/fortran/trans-openmp.c
! e3d6d3d4db3df36de93602bb0032fdb5  gcc/fortran/trans-stmt.c
  09ff062ad8cb2da1edf2aefc8fec0dd0  gcc/fortran/trans-stmt.h
! cef4d7858e073c27ef4335abd4c725fe  gcc/fortran/trans-types.c
  8afb8a4ba30f131571e5bbd641342396  gcc/fortran/trans-types.h
  530cdb5146a0273fc8d75438e976c9d5  gcc/fortran/trans.c
! 0f4c243b56b9732e80c5fe6707464692  gcc/fortran/trans.h
  9d4b686857ace1c80925708b17d45124  gcc/fortran/types.def
  35369c9f7b73348c0b6b15b8bc83e317  gcc/fp-test.c
  4283b513d2c30438a7f09915c9a82423  gcc/function-tests.c
! f3d74b7b0d34cd8011ddbc425fc3fc41  gcc/function.c
  dd500d77758f3dca71ae1b2251bfcd63  gcc/function.h
  06a221444dd61295a4de421f6bde7091  gcc/fwprop.c
  a3f2a611478af96e6ff01e90ca40e114  gcc/gcc-ar.c
*************** a3f2a611478af96e6ff01e90ca40e114  gcc/gc
*** 4640,4646 ****
  7c9fd2e11b34b851cf28dbd84544a4f0  gcc/gcc-rich-location.c
  dc7ef3b4c8953b4d7e41e69edb146c23  gcc/gcc-rich-location.h
  faa0d6ea88042246ed13a328764e8f56  gcc/gcc-symtab.h
! 38d678611dc3b0c6bce0a2dddad152fc  gcc/gcc.c
  bddd9d7c109f1e414177fae896a92969  gcc/gcc.h
  d41b63516043eba8422eddcae6f35ae2  gcc/gcov-counter.def
  d8b2bd39803fbdfd289883b9eb7615ca  gcc/gcov-dump.c
--- 4641,4647 ----
  7c9fd2e11b34b851cf28dbd84544a4f0  gcc/gcc-rich-location.c
  dc7ef3b4c8953b4d7e41e69edb146c23  gcc/gcc-rich-location.h
  faa0d6ea88042246ed13a328764e8f56  gcc/gcc-symtab.h
! c6774c1bd22ca7828b11140877fd2c12  gcc/gcc.c
  bddd9d7c109f1e414177fae896a92969  gcc/gcc.h
  d41b63516043eba8422eddcae6f35ae2  gcc/gcov-counter.def
  d8b2bd39803fbdfd289883b9eb7615ca  gcc/gcov-dump.c
*************** b017f09085f160e6758c885175c13f1a  gcc/ge
*** 4675,4691 ****
  731a497572872b12a5e3033eae88f526  gcc/genextract.c
  7981be4a9ace01c934486bb5c1e95cc0  gcc/genflags.c
  28e8319538fae25e84df456e12da4263  gcc/gengenrtl.c
! 47abdf1edd30c78f68647b8e10d048ca  gcc/gengtype-lex.c
  1dce49f1d97b1589c77b1b1da4da18b1  gcc/gengtype-lex.l
  bfc1a73017fd55933f7d460769140fc4  gcc/gengtype-parse.c
  b838ec3819011b0b60e60df47a827ffb  gcc/gengtype-state.c
  9e15789d8fea5e89493097cae51e6e10  gcc/gengtype.c
  1e0d927a64dc865d5b09664b7b1918e6  gcc/gengtype.h
  dea6550eb4370726b57909023c165244  gcc/genhooks.c
! 82ed0b33ec4b396a2003ade0a6abd4fe  gcc/genmatch.c
  2c6451dfbf4b679e9a4a5c013024b3b6  gcc/genmddeps.c
  959a8ca13d1ad96a45c15bdc08f2b34d  gcc/genmddump.c
! 2154f61970ca4711d8978bd9d60eb57e  gcc/genmodes.c
  d7c94c0e07720cf0667154d1882de736  gcc/genmultilib
  65cb867cac52d060dd9e6234ae07b145  gcc/genopinit.c
  c1aac6259099bbd098da3939617c198e  gcc/genoutput.c
--- 4676,4692 ----
  731a497572872b12a5e3033eae88f526  gcc/genextract.c
  7981be4a9ace01c934486bb5c1e95cc0  gcc/genflags.c
  28e8319538fae25e84df456e12da4263  gcc/gengenrtl.c
! a9e059e366f31df73b1ba68f8ffef8fe  gcc/gengtype-lex.c
  1dce49f1d97b1589c77b1b1da4da18b1  gcc/gengtype-lex.l
  bfc1a73017fd55933f7d460769140fc4  gcc/gengtype-parse.c
  b838ec3819011b0b60e60df47a827ffb  gcc/gengtype-state.c
  9e15789d8fea5e89493097cae51e6e10  gcc/gengtype.c
  1e0d927a64dc865d5b09664b7b1918e6  gcc/gengtype.h
  dea6550eb4370726b57909023c165244  gcc/genhooks.c
! a6e5273bdf6ad8745a68bcc6669f57c7  gcc/genmatch.c
  2c6451dfbf4b679e9a4a5c013024b3b6  gcc/genmddeps.c
  959a8ca13d1ad96a45c15bdc08f2b34d  gcc/genmddump.c
! e591b44096894ff2f045ffb0001ed3f1  gcc/genmodes.c
  d7c94c0e07720cf0667154d1882de736  gcc/genmultilib
  65cb867cac52d060dd9e6234ae07b145  gcc/genopinit.c
  c1aac6259099bbd098da3939617c198e  gcc/genoutput.c
*************** a283a81bd4a03a8d46ce24a68e29ad46  gcc/gi
*** 4712,4729 ****
  b98da5beedf98696ea9fec7256a9a4d7  gcc/gimple-laddress.c
  8c15d61c2f8501ea08f81c0fcdd45853  gcc/gimple-low.c
  8f9f53f79ecbb0d0c08169a2d2ec7f8d  gcc/gimple-low.h
! 6684a9a19672f962756dedd96b468b0e  gcc/gimple-match-head.c
  344986053544f24eadf6b22cd9cbed69  gcc/gimple-match.h
  50a983e0d86c88e7d0a035949d68d5e4  gcc/gimple-predict.h
  018c91dec808cde7ac4152f806fff9b8  gcc/gimple-pretty-print.c
  e216dc6f5e58a21dcbbfba370d8afc7c  gcc/gimple-pretty-print.h
! e094054b2bcf25e28ef9f11cc00f61a8  gcc/gimple-ssa-backprop.c
  4cb92049e81898a878aeed277acf78c4  gcc/gimple-ssa-isolate-paths.c
  a67525d6b8a482efd66447bd638e8dd0  gcc/gimple-ssa-nonnull-compare.c
  177901a9b94a05ea75be63da13c83847  gcc/gimple-ssa-split-paths.c
  1334430abaa2d5de56780eb997026e2c  gcc/gimple-ssa-sprintf.c
! 39a67287a8826a634021934eaad399a8  gcc/gimple-ssa-store-merging.c
! e8d77595538dba087b837fd35086ec08  gcc/gimple-ssa-strength-reduction.c
  c56b2f9074833a8c8795067b1f5aea14  gcc/gimple-ssa-warn-alloca.c
  4eb4658c5c649ef8a222e5ce7169fafd  gcc/gimple-ssa.h
  8f1fc05fa70d62ef0550eb40f55e141e  gcc/gimple-streamer-in.c
--- 4713,4730 ----
  b98da5beedf98696ea9fec7256a9a4d7  gcc/gimple-laddress.c
  8c15d61c2f8501ea08f81c0fcdd45853  gcc/gimple-low.c
  8f9f53f79ecbb0d0c08169a2d2ec7f8d  gcc/gimple-low.h
! d1ece51d7fcf4872310827e230b1a2eb  gcc/gimple-match-head.c
  344986053544f24eadf6b22cd9cbed69  gcc/gimple-match.h
  50a983e0d86c88e7d0a035949d68d5e4  gcc/gimple-predict.h
  018c91dec808cde7ac4152f806fff9b8  gcc/gimple-pretty-print.c
  e216dc6f5e58a21dcbbfba370d8afc7c  gcc/gimple-pretty-print.h
! 08e46029894a69a6eb9a64baaa310990  gcc/gimple-ssa-backprop.c
  4cb92049e81898a878aeed277acf78c4  gcc/gimple-ssa-isolate-paths.c
  a67525d6b8a482efd66447bd638e8dd0  gcc/gimple-ssa-nonnull-compare.c
  177901a9b94a05ea75be63da13c83847  gcc/gimple-ssa-split-paths.c
  1334430abaa2d5de56780eb997026e2c  gcc/gimple-ssa-sprintf.c
! e3b2785355127c8c332f27c0570d37d4  gcc/gimple-ssa-store-merging.c
! 3cf19838bd314680d6eb279f49cac9b3  gcc/gimple-ssa-strength-reduction.c
  c56b2f9074833a8c8795067b1f5aea14  gcc/gimple-ssa-warn-alloca.c
  4eb4658c5c649ef8a222e5ce7169fafd  gcc/gimple-ssa.h
  8f1fc05fa70d62ef0550eb40f55e141e  gcc/gimple-streamer-in.c
*************** f7247836b1345633d1912927939e811c  gcc/gi
*** 4736,4742 ****
  25418f3de22a04a9d3a4bce8ea7f8233  gcc/gimple.h
  3226b367822a6cecd929bc8d88435e00  gcc/gimplify-me.c
  0614c0dbeca81e25b0e2a8ec8670bfdf  gcc/gimplify-me.h
! ebcba6937f86e9c0ee13c0a2907c7e04  gcc/gimplify.c
  0d655a1b36bd393358a60ae37468a057  gcc/gimplify.h
  8a65435af2eced0ca67f6f9271c997ad  gcc/ginclude/float.h
  b9721cc1f3c6349bcfe9d162a36d0eb9  gcc/ginclude/iso646.h
--- 4737,4743 ----
  25418f3de22a04a9d3a4bce8ea7f8233  gcc/gimple.h
  3226b367822a6cecd929bc8d88435e00  gcc/gimplify-me.c
  0614c0dbeca81e25b0e2a8ec8670bfdf  gcc/gimplify-me.h
! 85b0c7066811028f1ffd2630bde0f131  gcc/gimplify.c
  0d655a1b36bd393358a60ae37468a057  gcc/gimplify.h
  8a65435af2eced0ca67f6f9271c997ad  gcc/ginclude/float.h
  b9721cc1f3c6349bcfe9d162a36d0eb9  gcc/ginclude/iso646.h
*************** a21c48eb0ebeb4a73c0889fd3f42e12b  gcc/gi
*** 4753,4759 ****
  e67de778552fcefca7289ac8daa55fe9  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  39fd87607b25c8f948dcf70c2f36b206  gcc/glimits.h
! 3e1c530ec9715d2b5f8d28f1808d88e2  gcc/go/ChangeLog
  4ff99cd3f2073d7c092cb2d42ca47e44  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  4b9cbe6a30dbc7039c55993611934ad7  gcc/go/config-lang.in
--- 4754,4760 ----
  e67de778552fcefca7289ac8daa55fe9  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  39fd87607b25c8f948dcf70c2f36b206  gcc/glimits.h
! eed3060f02db783d006d87b2959b8bd0  gcc/go/ChangeLog
  4ff99cd3f2073d7c092cb2d42ca47e44  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  4b9cbe6a30dbc7039c55993611934ad7  gcc/go/config-lang.in
*************** d6c5730a6500ae456b09b0db1fd59482  gcc/go
*** 4779,4785 ****
  c4117539cd81adf6c803f8e311fbbb2d  gcc/go/gofrontend/escape.h
  be21e16a86d8bc6eecedb1121d5303ca  gcc/go/gofrontend/export.cc
  d303dd41ad0f82336b3d7562b9ea7943  gcc/go/gofrontend/export.h
! 0a6e605fad230200588a2294bdc670d3  gcc/go/gofrontend/expressions.cc
  c6a90c6c77a655d1882ab8ccf2597a88  gcc/go/gofrontend/expressions.h
  7d753b8578fa638c2da1c3f27cae2878  gcc/go/gofrontend/go-diagnostics.cc
  6018d89190ca6202e5dd86b2f81f6c42  gcc/go/gofrontend/go-diagnostics.h
--- 4780,4786 ----
  c4117539cd81adf6c803f8e311fbbb2d  gcc/go/gofrontend/escape.h
  be21e16a86d8bc6eecedb1121d5303ca  gcc/go/gofrontend/export.cc
  d303dd41ad0f82336b3d7562b9ea7943  gcc/go/gofrontend/export.h
! 37e7841c4dd41489edd8c045c2e3da89  gcc/go/gofrontend/expressions.cc
  c6a90c6c77a655d1882ab8ccf2597a88  gcc/go/gofrontend/expressions.h
  7d753b8578fa638c2da1c3f27cae2878  gcc/go/gofrontend/go-diagnostics.cc
  6018d89190ca6202e5dd86b2f81f6c42  gcc/go/gofrontend/go-diagnostics.h
*************** ee94063780779dbd8f397ba53e5b3cb7  gcc/gr
*** 4826,4832 ****
  a53fc55fef65985e128c29c719a48eab  gcc/graphite-scop-detection.c
  08fcd67515ab1b26b0760c7d824be781  gcc/graphite-sese-to-poly.c
  311105d7f1fe56dba43e194502491cd8  gcc/graphite.c
! 332f45971dac5a70bf90453d286c6b25  gcc/graphite.h
  b3a140246533ef99b7824a6af6a7b14e  gcc/gsstruct.def
  9e06f32792d2ffc3b55756d38963a9a2  gcc/gstab.h
  c4d46e8c286712ee803541fc8a507165  gcc/gsyms.h
--- 4827,4833 ----
  a53fc55fef65985e128c29c719a48eab  gcc/graphite-scop-detection.c
  08fcd67515ab1b26b0760c7d824be781  gcc/graphite-sese-to-poly.c
  311105d7f1fe56dba43e194502491cd8  gcc/graphite.c
! e7e3fdece960283c76901871ddcc6399  gcc/graphite.h
  b3a140246533ef99b7824a6af6a7b14e  gcc/gsstruct.def
  9e06f32792d2ffc3b55756d38963a9a2  gcc/gstab.h
  c4d46e8c286712ee803541fc8a507165  gcc/gsyms.h
*************** a2097f186d1a4ba3d6672e84286b3b65  gcc/hs
*** 4854,4860 ****
  4191b7c164be29f9f80b73d694681376  gcc/hsa-common.c
  e271c12f50ef2f84f9d68c3e47aa3546  gcc/hsa-common.h
  ee237b6a93599fa3e0a203fb6b35ede8  gcc/hsa-dump.c
! 54c9ab6b10a1c42ecf9003a14b818cf2  gcc/hsa-gen.c
  58f9e67b4fae99bd0667f2467a8f937b  gcc/hsa-regalloc.c
  6aa3d3add5653e8a3019dd556b31bc06  gcc/hw-doloop.c
  218d881540980f810bcf492d62b29317  gcc/hw-doloop.h
--- 4855,4861 ----
  4191b7c164be29f9f80b73d694681376  gcc/hsa-common.c
  e271c12f50ef2f84f9d68c3e47aa3546  gcc/hsa-common.h
  ee237b6a93599fa3e0a203fb6b35ede8  gcc/hsa-dump.c
! dbcb214352ca5bd8de8aeba0502011c5  gcc/hsa-gen.c
  58f9e67b4fae99bd0667f2467a8f937b  gcc/hsa-regalloc.c
  6aa3d3add5653e8a3019dd556b31bc06  gcc/hw-doloop.c
  218d881540980f810bcf492d62b29317  gcc/hw-doloop.h
*************** fdf64d7f98647f8f0d1bcf3b8a828aa8  gcc/in
*** 4879,4898 ****
  48525c51108ac26cb1d6058cb495d847  gcc/ipa-chkp.c
  e54d40e1ec53e0400607ff09c2a536dc  gcc/ipa-chkp.h
  f1b7ee4df60044997d39d57d6c22993c  gcc/ipa-comdats.c
! f4cfc9c9997672b885ead74b33b9876b  gcc/ipa-cp.c
! 17dc594ca5c1827e32f8d1b147e84724  gcc/ipa-devirt.c
  d13a7631f21372dd7785d58258d8653a  gcc/ipa-hsa.c
  2e220ffa1afa788d5e90c334c992320b  gcc/ipa-icf-gimple.c
  73e820ad96c398d3c582d46305f4a886  gcc/ipa-icf-gimple.h
! 1dc1860610c078bd9c54fa84f89bc64f  gcc/ipa-icf.c
! 0a874446f2c1c01e9e44724e5a14c125  gcc/ipa-icf.h
  56741052fd5a89044ea5a5f7bc52ad3b  gcc/ipa-inline-analysis.c
  13c7778f9a4420ca43a2b5935fc2f296  gcc/ipa-inline-transform.c
! 4381721dbfd945748e9d7f2b16c4e5f2  gcc/ipa-inline.c
  91c2b100a6c4c5566296ce9bdeea1246  gcc/ipa-inline.h
  a77ae1d6734f2e873ab6390a3a330a48  gcc/ipa-polymorphic-call.c
  20726f67378e6ff4631de06b111579c8  gcc/ipa-profile.c
! cbd077b7ee78afc0b2d550f0c61e9bea  gcc/ipa-prop.c
  f8fe111b3871fed63edbfc32fdb0e203  gcc/ipa-prop.h
  5116913d55547de6de68fbf22b19d80d  gcc/ipa-pure-const.c
  5b0dd9b55d2b0ea9cb7f0ca4549e1a10  gcc/ipa-ref.c
--- 4880,4899 ----
  48525c51108ac26cb1d6058cb495d847  gcc/ipa-chkp.c
  e54d40e1ec53e0400607ff09c2a536dc  gcc/ipa-chkp.h
  f1b7ee4df60044997d39d57d6c22993c  gcc/ipa-comdats.c
! bf41bf8b54f64671bd7f354dcb70ddd1  gcc/ipa-cp.c
! 1064a31b99908c2eb12cd8eddb4fbfb2  gcc/ipa-devirt.c
  d13a7631f21372dd7785d58258d8653a  gcc/ipa-hsa.c
  2e220ffa1afa788d5e90c334c992320b  gcc/ipa-icf-gimple.c
  73e820ad96c398d3c582d46305f4a886  gcc/ipa-icf-gimple.h
! 6e694368aeb063a7108a13e82e01d2a7  gcc/ipa-icf.c
! 63f295725de31704e48d6c9bb3e1b72d  gcc/ipa-icf.h
  56741052fd5a89044ea5a5f7bc52ad3b  gcc/ipa-inline-analysis.c
  13c7778f9a4420ca43a2b5935fc2f296  gcc/ipa-inline-transform.c
! 43bc648e0d42b9b3f0eff01c7f8ca5a0  gcc/ipa-inline.c
  91c2b100a6c4c5566296ce9bdeea1246  gcc/ipa-inline.h
  a77ae1d6734f2e873ab6390a3a330a48  gcc/ipa-polymorphic-call.c
  20726f67378e6ff4631de06b111579c8  gcc/ipa-profile.c
! 778693b710ff5a6be15afb00cb24d847  gcc/ipa-prop.c
  f8fe111b3871fed63edbfc32fdb0e203  gcc/ipa-prop.h
  5116913d55547de6de68fbf22b19d80d  gcc/ipa-pure-const.c
  5b0dd9b55d2b0ea9cb7f0ca4549e1a10  gcc/ipa-ref.c
*************** f8fe111b3871fed63edbfc32fdb0e203  gcc/ip
*** 4900,4906 ****
  38233da4b2ac3fb60647e29ae3bfdbc3  gcc/ipa-reference.c
  e0da2ee6910ab8686a5910bc4a76afe0  gcc/ipa-reference.h
  4407b063d08bdd9fd0725de1c0e12486  gcc/ipa-split.c
! 465da077a88900d47929ac8fb1865e1f  gcc/ipa-utils.c
  658313d4d5d2feb69ed6f69a2c3cf571  gcc/ipa-utils.h
  02f4b9ae1b45439a547f909b5361d4d5  gcc/ipa-visibility.c
  ef56d9ed82e1d34beae03896413d206e  gcc/ipa.c
--- 4901,4907 ----
  38233da4b2ac3fb60647e29ae3bfdbc3  gcc/ipa-reference.c
  e0da2ee6910ab8686a5910bc4a76afe0  gcc/ipa-reference.h
  4407b063d08bdd9fd0725de1c0e12486  gcc/ipa-split.c
! 90c6cc2241bc4dbaa5a6a76da34aa93c  gcc/ipa-utils.c
  658313d4d5d2feb69ed6f69a2c3cf571  gcc/ipa-utils.h
  02f4b9ae1b45439a547f909b5361d4d5  gcc/ipa-visibility.c
  ef56d9ed82e1d34beae03896413d206e  gcc/ipa.c
*************** de81556308e4a1f61a5d691b42a31a77  gcc/ir
*** 4914,4920 ****
  caacb2e7c13ccab0fb6efa70d96bbab3  gcc/ira.c
  0e98da5359d5b8452a426452b3166e5e  gcc/ira.h
  98d0dd78e50aed7d6d4f69e533b99340  gcc/is-a.h
! 3c6d75905af14adc0598e1a7507cf472  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  2415ade78b2b648edf37df515cc36c21  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
--- 4915,4921 ----
  caacb2e7c13ccab0fb6efa70d96bbab3  gcc/ira.c
  0e98da5359d5b8452a426452b3166e5e  gcc/ira.h
  98d0dd78e50aed7d6d4f69e533b99340  gcc/is-a.h
! 44abb42695eafdb08be63357f29654a2  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
  2415ade78b2b648edf37df515cc36c21  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
*************** e6c027362553eaf5c6f46fc4f69db21e  gcc/lc
*** 5010,5028 ****
  85dc07e9f0cd6bf7ca0391b3439fd9f7  gcc/loop-init.c
  6960cfbb5f2f0ece41b0fb024292fc56  gcc/loop-invariant.c
  d00eb3c22c3d758014a13a9c09849822  gcc/loop-iv.c
! 0812f2f5e3901a7fd0b1a5091c48a39e  gcc/loop-unroll.c
  952e6c6741e7cc74734d8f7e375d0ce7  gcc/loop-unroll.h
! de7e5cd06b39169b643ab6ad28481a91  gcc/lower-subreg.c
  baa6304ac17d60ea1de9cd389561fbc6  gcc/lower-subreg.h
  968303eba3eb836c06ffcc0c51525814  gcc/lra-assigns.c
  09ce513b6a920eb59b5e4f682f9ed312  gcc/lra-coalesce.c
! f5b73ced9e982e87cebb4c133b96420f  gcc/lra-constraints.c
! 2e5e171a1ba31e8815f2d10c5572f6ff  gcc/lra-eliminations.c
! 50b7f737498cca3e2bddc9de57fce790  gcc/lra-int.h
! 9cecb559d637884863172d614ba72107  gcc/lra-lives.c
  a99263cf5a04d19dfbf3b8602665a19c  gcc/lra-remat.c
! 2b4fca08d55674b0e30afe94176ede8c  gcc/lra-spills.c
! c60276500434e7561d841dcce306ed93  gcc/lra.c
  1bfb8d5c5c3f87c38b435e60129e5025  gcc/lra.h
  a0b668d25b2b3a5038eb0b1489b34ffb  gcc/lto-cgraph.c
  87ee293171e06e77ed29cc7e1e4df966  gcc/lto-compress.c
--- 5011,5029 ----
  85dc07e9f0cd6bf7ca0391b3439fd9f7  gcc/loop-init.c
  6960cfbb5f2f0ece41b0fb024292fc56  gcc/loop-invariant.c
  d00eb3c22c3d758014a13a9c09849822  gcc/loop-iv.c
! 72f5792447ce1e528eeef241eb76ffcc  gcc/loop-unroll.c
  952e6c6741e7cc74734d8f7e375d0ce7  gcc/loop-unroll.h
! b6a5401525ed766b4b2c000673e8e2de  gcc/lower-subreg.c
  baa6304ac17d60ea1de9cd389561fbc6  gcc/lower-subreg.h
  968303eba3eb836c06ffcc0c51525814  gcc/lra-assigns.c
  09ce513b6a920eb59b5e4f682f9ed312  gcc/lra-coalesce.c
! 0b033e9413f60be8d2bd5eb35de0b92a  gcc/lra-constraints.c
! 5ce61045cbbf438ace78d082bcdde15e  gcc/lra-eliminations.c
! e681e998d6c0fdedc7d28c23ef7c1265  gcc/lra-int.h
! 939605de7727d037bffbf96535ac7cfa  gcc/lra-lives.c
  a99263cf5a04d19dfbf3b8602665a19c  gcc/lra-remat.c
! 0df6a0cfaee4f70007971a435d7cf831  gcc/lra-spills.c
! c39f83c028412f494556e41777fdfac3  gcc/lra.c
  1bfb8d5c5c3f87c38b435e60129e5025  gcc/lra.h
  a0b668d25b2b3a5038eb0b1489b34ffb  gcc/lto-cgraph.c
  87ee293171e06e77ed29cc7e1e4df966  gcc/lto-compress.c
*************** bdb839d1119e305569cc0381b49171ef  gcc/lt
*** 5032,5061 ****
  bf0ddd1d4c06ede718cd6c9d68d66a79  gcc/lto-section-names.h
  1dfeb5b8bc8b8ef92eeaf44f80f4e6d7  gcc/lto-section-out.c
  cb0e052e6d99847359297ec3639e7494  gcc/lto-streamer-in.c
! 5c0b5fda69e1b039af5782de7c7b5db5  gcc/lto-streamer-out.c
  f7413cc95127c24fbfbca57399cc405e  gcc/lto-streamer.c
  ac5af855d3af9e53bc7934819d845353  gcc/lto-streamer.h
  32646f4b325ab40e02065344c8179008  gcc/lto-wrapper.c
! 9f664d49107a7e2206551ae1ae401c0e  gcc/lto/ChangeLog
  ced02ce6ebb471e6f0707b1098d059f9  gcc/lto/Make-lang.in
  4df36a5baf5c564626eda96177fa5c33  gcc/lto/common.c
  dc83390218daebe5ba0cc15e5d0ef4f2  gcc/lto/common.h
  7c3135d9769daba9cfea23393ff28b03  gcc/lto/config-lang.in
  81d25800a28c00313fa919de8bfc1c42  gcc/lto/lang-specs.h
  4da9d9b85a26f6d61d0fa3c50bccd8b9  gcc/lto/lang.opt
! 3645a597f25f745dbee578e3de67bf90  gcc/lto/lto-lang.c
  c52c7f3c5ad749732397612a7d6809e4  gcc/lto/lto-object.c
! eaa6488c89eff5aed51b3c7bed2df541  gcc/lto/lto-partition.c
  a5808083f1b69a57681f2a5672ee4ad1  gcc/lto/lto-partition.h
! c037e9ec9c27f66996083cfaa959222a  gcc/lto/lto-symtab.c
  4b4c87f51ea89a539020c164b457c756  gcc/lto/lto-symtab.h
  e647bcb6f853f2020a69bd125fba4c2d  gcc/lto/lto-tree.h
! a0ba0668b6acb3db683b8ed4350304f4  gcc/lto/lto.c
  23c61f57e706b6a95693277dd8b42f91  gcc/lto/lto.h
! 591ddd69c8ba434f64f79521736d1920  gcc/machmode.def
  f7ad77889393cf493f1262771d70d953  gcc/machmode.h
  4ceeedac880cc5287574b380950589b2  gcc/main.c
! afa4a7ba77526c9761f874d77d357f77  gcc/match.pd
  18e3456c1e7d2132e422198943304c3b  gcc/mcf.c
  c281c4f8369da7724070f49c9fe97512  gcc/mem-stats-traits.h
  0588309a92b9b0bc147e0e3f8977dcad  gcc/mem-stats.h
--- 5033,5062 ----
  bf0ddd1d4c06ede718cd6c9d68d66a79  gcc/lto-section-names.h
  1dfeb5b8bc8b8ef92eeaf44f80f4e6d7  gcc/lto-section-out.c
  cb0e052e6d99847359297ec3639e7494  gcc/lto-streamer-in.c
! 540e6a93c8890b8c9d3f073d3181f327  gcc/lto-streamer-out.c
  f7413cc95127c24fbfbca57399cc405e  gcc/lto-streamer.c
  ac5af855d3af9e53bc7934819d845353  gcc/lto-streamer.h
  32646f4b325ab40e02065344c8179008  gcc/lto-wrapper.c
! 63b2e68e355903720bbcef77adf41ff1  gcc/lto/ChangeLog
  ced02ce6ebb471e6f0707b1098d059f9  gcc/lto/Make-lang.in
  4df36a5baf5c564626eda96177fa5c33  gcc/lto/common.c
  dc83390218daebe5ba0cc15e5d0ef4f2  gcc/lto/common.h
  7c3135d9769daba9cfea23393ff28b03  gcc/lto/config-lang.in
  81d25800a28c00313fa919de8bfc1c42  gcc/lto/lang-specs.h
  4da9d9b85a26f6d61d0fa3c50bccd8b9  gcc/lto/lang.opt
! 9011ea242ad329bc3d0dc9ce0db23a39  gcc/lto/lto-lang.c
  c52c7f3c5ad749732397612a7d6809e4  gcc/lto/lto-object.c
! 42f1e7860a41323f02f8aef7ea76f40c  gcc/lto/lto-partition.c
  a5808083f1b69a57681f2a5672ee4ad1  gcc/lto/lto-partition.h
! f98ada770faa9b18644c34d87f3fad73  gcc/lto/lto-symtab.c
  4b4c87f51ea89a539020c164b457c756  gcc/lto/lto-symtab.h
  e647bcb6f853f2020a69bd125fba4c2d  gcc/lto/lto-tree.h
! 0e70590178ccc5f4fd9191291beb39be  gcc/lto/lto.c
  23c61f57e706b6a95693277dd8b42f91  gcc/lto/lto.h
! 002d86ffe05da917cfd80bbb511cf0eb  gcc/machmode.def
  f7ad77889393cf493f1262771d70d953  gcc/machmode.h
  4ceeedac880cc5287574b380950589b2  gcc/main.c
! 556923984747eafe525152e5af24aa1e  gcc/match.pd
  18e3456c1e7d2132e422198943304c3b  gcc/mcf.c
  c281c4f8369da7724070f49c9fe97512  gcc/mem-stats-traits.h
  0588309a92b9b0bc147e0e3f8977dcad  gcc/mem-stats.h
*************** ac2a441b236321b828165bc61f84e45a  gcc/mk
*** 5067,5073 ****
  f3bb81dc9fe0c7b25dbb89202fb9fedb  gcc/mode-switching.c
  8b38296cb48aac7025e957d0eb2e0beb  gcc/modulo-sched.c
  ab99ec689b35d3782d0d6c9673e8a80c  gcc/multiple_target.c
! 9af4b62b73a477a73437b6561c08c696  gcc/objc/ChangeLog
  52fb9c112577eef989bc43e36f696692  gcc/objc/Make-lang.in
  07963422f6222392a9f1d56d0cbc53ae  gcc/objc/config-lang.in
  cf8e0bb9d548e2c3d720f5c4ebc5bb9c  gcc/objc/lang-specs.h
--- 5068,5074 ----
  f3bb81dc9fe0c7b25dbb89202fb9fedb  gcc/mode-switching.c
  8b38296cb48aac7025e957d0eb2e0beb  gcc/modulo-sched.c
  ab99ec689b35d3782d0d6c9673e8a80c  gcc/multiple_target.c
! 99b70018a0a547c3874986bb760d4abe  gcc/objc/ChangeLog
  52fb9c112577eef989bc43e36f696692  gcc/objc/Make-lang.in
  07963422f6222392a9f1d56d0cbc53ae  gcc/objc/config-lang.in
  cf8e0bb9d548e2c3d720f5c4ebc5bb9c  gcc/objc/lang-specs.h
*************** c14acf8a1dab7d0c2adef37ade287b05  gcc/ob
*** 5086,5092 ****
  796e40d4a426f2ba961cb7b03597697b  gcc/objc/objc-runtime-shared-support.c
  cc66abe3f07d32de5c77248e82f02dbe  gcc/objc/objc-runtime-shared-support.h
  ef63c61988d20447a799378fa1f25022  gcc/objc/objc-tree.def
! 8c2f481f85631e20647f28e48d82f65a  gcc/objcp/ChangeLog
  afdfeea4c2028aa5b15e0355f8cade93  gcc/objcp/Make-lang.in
  c74e423b803cf4446b16c17243b63e5a  gcc/objcp/config-lang.in
  eef32d7df29581d83432d58d9cb2cd94  gcc/objcp/lang-specs.h
--- 5087,5093 ----
  796e40d4a426f2ba961cb7b03597697b  gcc/objc/objc-runtime-shared-support.c
  cc66abe3f07d32de5c77248e82f02dbe  gcc/objc/objc-runtime-shared-support.h
  ef63c61988d20447a799378fa1f25022  gcc/objc/objc-tree.def
! eee7962269acb763acf9598c019e57b4  gcc/objcp/ChangeLog
  afdfeea4c2028aa5b15e0355f8cade93  gcc/objcp/Make-lang.in
  c74e423b803cf4446b16c17243b63e5a  gcc/objcp/config-lang.in
  eef32d7df29581d83432d58d9cb2cd94  gcc/objcp/lang-specs.h
*************** b8840e5f3e0b48eef202eebe67f8506d  gcc/ob
*** 5094,5106 ****
  db17a97fa0c8d9e96cf691936d987f01  gcc/objcp/objcp-decl.h
  8edee735611b099133f17e56cef4dc46  gcc/objcp/objcp-lang.c
  b4f4aff7ed47834bd4bfcf2dfba20395  gcc/omp-builtins.def
! e0d54a683db51813f4a10e219fc087cd  gcc/omp-expand.c
  d177ce89d1052ec1caeecdc3b6376077  gcc/omp-expand.h
  101508bef954bca7004e675270e17636  gcc/omp-general.c
  f5c582e7b207e6818eb3ba0c0b992872  gcc/omp-general.h
  8cba34fb20f0481e5ffbfb4e1694a907  gcc/omp-grid.c
  fc6b582c9cf11cb29fcf672e5b78c7ba  gcc/omp-grid.h
! 46661f0c99229a6a7dbfda0b1b64ccad  gcc/omp-low.c
  d68f234609f652e17b2b917374726838  gcc/omp-low.h
  c3c2cd5ff8c4eadd8d9e432e16cf092c  gcc/omp-offload.c
  cf7b95c9f21a4b2fa6826b529e3ce596  gcc/omp-offload.h
--- 5095,5107 ----
  db17a97fa0c8d9e96cf691936d987f01  gcc/objcp/objcp-decl.h
  8edee735611b099133f17e56cef4dc46  gcc/objcp/objcp-lang.c
  b4f4aff7ed47834bd4bfcf2dfba20395  gcc/omp-builtins.def
! 6975a19ed0cef03b57fff8f942cf74f3  gcc/omp-expand.c
  d177ce89d1052ec1caeecdc3b6376077  gcc/omp-expand.h
  101508bef954bca7004e675270e17636  gcc/omp-general.c
  f5c582e7b207e6818eb3ba0c0b992872  gcc/omp-general.h
  8cba34fb20f0481e5ffbfb4e1694a907  gcc/omp-grid.c
  fc6b582c9cf11cb29fcf672e5b78c7ba  gcc/omp-grid.h
! bc242b798227bd2a9791e3089d865321  gcc/omp-low.c
  d68f234609f652e17b2b917374726838  gcc/omp-low.h
  c3c2cd5ff8c4eadd8d9e432e16cf092c  gcc/omp-offload.c
  cf7b95c9f21a4b2fa6826b529e3ce596  gcc/omp-offload.h
*************** b028c7a9c90208c6a41c251a754a8b18  gcc/op
*** 5115,5121 ****
  d3cedc015b66305d40274f90a8e197cc  gcc/optabs-query.h
  3d905dc67e605c37e0eedb76c5caef04  gcc/optabs-tree.c
  3e6875e4d6f2dbe3ed60c448551f5e86  gcc/optabs-tree.h
! d7ecbb42fa1c096d32d7ea83243e8194  gcc/optabs.c
  4e124c742e2a5d3ee49599f3e9b976dc  gcc/optabs.def
  ad27afe318db2ba35c962089be2a6753  gcc/optabs.h
  12965c68fb5394ce2ff713f9a02ce532  gcc/optc-gen.awk
--- 5116,5122 ----
  d3cedc015b66305d40274f90a8e197cc  gcc/optabs-query.h
  3d905dc67e605c37e0eedb76c5caef04  gcc/optabs-tree.c
  3e6875e4d6f2dbe3ed60c448551f5e86  gcc/optabs-tree.h
! 576cb3dd4dff3a861d2641868a5b8985  gcc/optabs.c
  4e124c742e2a5d3ee49599f3e9b976dc  gcc/optabs.def
  ad27afe318db2ba35c962089be2a6753  gcc/optabs.h
  12965c68fb5394ce2ff713f9a02ce532  gcc/optc-gen.awk
*************** b36f15821f233758c3731307d8f6245f  gcc/op
*** 5124,5137 ****
  39c48c6db3bf6ad12a2ceac33cf9a4b1  gcc/opts-common.c
  dceccf26e9f4521217455d25b4df27b7  gcc/opts-diagnostic.h
  62023174447e1a21cc36cd138c59eb03  gcc/opts-global.c
! 5053cdd3f934046225644519eb2935c7  gcc/opts.c
  f93e8648abf396fa77c25dcdd03f9869  gcc/opts.h
  ff7abf43af46428f2896e4b55240035b  gcc/output.h
  389afec912a480acd35b8d978ee26f92  gcc/params-enum.h
  ba0be5f247d604afb6ee7210019c8aee  gcc/params-list.h
  d83044eb7f8f2515a53b8d3b7955f597  gcc/params-options.h
  9266007c7ca1bac4033b34aea1898a1a  gcc/params.c
! ec3ff8932822048e98a76810cfe3b913  gcc/params.def
  678b527f9a75fd32abff5f2f6f0a57b6  gcc/params.h
  c490583bda8d2476104bf6c5ac32ed8d  gcc/pass_manager.h
  ef2437b69bda70f2c8201e9a0f2ff766  gcc/passes.c
--- 5125,5138 ----
  39c48c6db3bf6ad12a2ceac33cf9a4b1  gcc/opts-common.c
  dceccf26e9f4521217455d25b4df27b7  gcc/opts-diagnostic.h
  62023174447e1a21cc36cd138c59eb03  gcc/opts-global.c
! debbff247b2c2ff666c32dc0674f4b3f  gcc/opts.c
  f93e8648abf396fa77c25dcdd03f9869  gcc/opts.h
  ff7abf43af46428f2896e4b55240035b  gcc/output.h
  389afec912a480acd35b8d978ee26f92  gcc/params-enum.h
  ba0be5f247d604afb6ee7210019c8aee  gcc/params-list.h
  d83044eb7f8f2515a53b8d3b7955f597  gcc/params-options.h
  9266007c7ca1bac4033b34aea1898a1a  gcc/params.c
! 410ab193033d60e9200852ef60647c95  gcc/params.def
  678b527f9a75fd32abff5f2f6f0a57b6  gcc/params.h
  c490583bda8d2476104bf6c5ac32ed8d  gcc/pass_manager.h
  ef2437b69bda70f2c8201e9a0f2ff766  gcc/passes.c
*************** c2783219174c8fa71e584ddcd27d47fb  gcc/pa
*** 5139,5145 ****
  5398ce30fca85a2ac1d00ce91b14f146  gcc/plugin.c
  2746c4de7c7d517bb42a495e1dd8740d  gcc/plugin.def
  6940e44bf30362e059cceb844a043e4f  gcc/plugin.h
! bd49c356e94296a6428a36707f9267e1  gcc/po/ChangeLog
  28b130f4b67c51e48b2b431b12ee9bc3  gcc/po/EXCLUDES
  91c634ac61c253e979dd99a24560ca02  gcc/po/be.gmo
  77877776122e6719ab1d793423a871c2  gcc/po/be.po
--- 5140,5146 ----
  5398ce30fca85a2ac1d00ce91b14f146  gcc/plugin.c
  2746c4de7c7d517bb42a495e1dd8740d  gcc/plugin.def
  6940e44bf30362e059cceb844a043e4f  gcc/plugin.h
! 324980796e704ee96be8865cc07dca07  gcc/po/ChangeLog
  28b130f4b67c51e48b2b431b12ee9bc3  gcc/po/EXCLUDES
  91c634ac61c253e979dd99a24560ca02  gcc/po/be.gmo
  77877776122e6719ab1d793423a871c2  gcc/po/be.po
*************** cf1572d9b957ce6e70cfcc68b8f8bdec  gcc/po
*** 5182,5188 ****
  e23be30f66a4902142705d4f6878186b  gcc/po/zh_TW.gmo
  52a27ef0e59cfb3c35b7bd1d684f3c62  gcc/po/zh_TW.po
  6b8cad60cb1fe8062b27293ab5fe96dc  gcc/postreload-gcse.c
! 86e3fd69c9d87ec0c4e3ead4ad133f18  gcc/postreload.c
  f9baabdb7cb7fec90597eb9230423bfd  gcc/predict.c
  d5381b74a5defcfca3ca95e1f8d44c4d  gcc/predict.def
  ecd8d2fe2a72e889df4f7ff2e9a6688c  gcc/predict.h
--- 5183,5189 ----
  e23be30f66a4902142705d4f6878186b  gcc/po/zh_TW.gmo
  52a27ef0e59cfb3c35b7bd1d684f3c62  gcc/po/zh_TW.po
  6b8cad60cb1fe8062b27293ab5fe96dc  gcc/postreload-gcse.c
! 58280937d65107a62039f73cdac7e265  gcc/postreload.c
  f9baabdb7cb7fec90597eb9230423bfd  gcc/predict.c
  d5381b74a5defcfca3ca95e1f8d44c4d  gcc/predict.def
  ecd8d2fe2a72e889df4f7ff2e9a6688c  gcc/predict.h
*************** df6d40ffe1b94af5d8e180609b3eb65d  gcc/re
*** 5211,5220 ****
  006e3808b553ab307c4b8cd12f5cf1db  gcc/ree.c
  c06a657084d5551f6e7922054ae98719  gcc/reg-notes.def
  b3c27e6ae27310d247b829196369c673  gcc/reg-stack.c
! 70ddf340cde828c72539941241c68ea3  gcc/regcprop.c
  8ea4f5b1f7e31a2e47797982b1462ec4  gcc/regcprop.h
  a834bfdb65110702c75fa572bd4c829b  gcc/reginfo.c
! 198f8f26d8bca6f4836076e60bdbc80d  gcc/regrename.c
  4d6b24f3b930b82f498c76a9af36902d  gcc/regrename.h
  dd41c821b8625e4697bf17679a151555  gcc/regs.h
  656c0d2ef706df3f8e3e0d73ece3e333  gcc/regset.h
--- 5212,5221 ----
  006e3808b553ab307c4b8cd12f5cf1db  gcc/ree.c
  c06a657084d5551f6e7922054ae98719  gcc/reg-notes.def
  b3c27e6ae27310d247b829196369c673  gcc/reg-stack.c
! 92630584daec425aae11409e4fb292c5  gcc/regcprop.c
  8ea4f5b1f7e31a2e47797982b1462ec4  gcc/regcprop.h
  a834bfdb65110702c75fa572bd4c829b  gcc/reginfo.c
! 075de2acbc61d24d4b1f2fe10139fc74  gcc/regrename.c
  4d6b24f3b930b82f498c76a9af36902d  gcc/regrename.h
  dd41c821b8625e4697bf17679a151555  gcc/regs.h
  656c0d2ef706df3f8e3e0d73ece3e333  gcc/regset.h
*************** dd41c821b8625e4697bf17679a151555  gcc/re
*** 5222,5228 ****
  39d5072041b35920c2926392129ce2e4  gcc/reload.c
  ac60869ad50176108b2582f282b56d68  gcc/reload.h
  0103c2cc15d45b633b0f4ff2fce69c43  gcc/reload1.c
! f5f7516a258b6367d22f5cf3c97326bb  gcc/reorg.c
  90997bd67acc28dbd0956e47a4be7d0e  gcc/resource.c
  012e3a805df645a90a2453dd0b9b37d3  gcc/resource.h
  4c5f8660ff1d2252d0b26c1f2d988d43  gcc/rtl-chkp.c
--- 5223,5229 ----
  39d5072041b35920c2926392129ce2e4  gcc/reload.c
  ac60869ad50176108b2582f282b56d68  gcc/reload.h
  0103c2cc15d45b633b0f4ff2fce69c43  gcc/reload1.c
! e3f93c413a58cfeec53f2747ae1dce8f  gcc/reorg.c
  90997bd67acc28dbd0956e47a4be7d0e  gcc/resource.c
  012e3a805df645a90a2453dd0b9b37d3  gcc/resource.h
  4c5f8660ff1d2252d0b26c1f2d988d43  gcc/rtl-chkp.c
*************** d76ca39349983cb0b54c6ad134f61920  gcc/rt
*** 5233,5240 ****
  d2bb5073ea343a1ae4939771412b63e0  gcc/rtl-tests.c
  908701aba46db9a1a44393e99d07c6e6  gcc/rtl.c
  7e78287e5749d4be4bc0c862b05f140c  gcc/rtl.def
! 76922ec0c9f43addece65e6d4a7a893f  gcc/rtl.h
! 8ac8532996718d2160c5f3629a192f1c  gcc/rtlanal.c
  5c77db4ff466d7c8384d3007c09e56d0  gcc/rtlhash.c
  cb5fb683f24857f0ab9551a7e86100f2  gcc/rtlhash.h
  f541ab154aeea10a302aeac4bb8a22b1  gcc/rtlhooks-def.h
--- 5234,5241 ----
  d2bb5073ea343a1ae4939771412b63e0  gcc/rtl-tests.c
  908701aba46db9a1a44393e99d07c6e6  gcc/rtl.c
  7e78287e5749d4be4bc0c862b05f140c  gcc/rtl.def
! 6b94bb5d689ef5236a6376ff8fad4eeb  gcc/rtl.h
! ec5bc18a4cf3f9021e4092ce068fdc16  gcc/rtlanal.c
  5c77db4ff466d7c8384d3007c09e56d0  gcc/rtlhash.c
  cb5fb683f24857f0ab9551a7e86100f2  gcc/rtlhash.h
  f541ab154aeea10a302aeac4bb8a22b1  gcc/rtlhooks-def.h
*************** da190488fa2f02c76c8f58a1d0330414  gcc/sa
*** 5246,5252 ****
  f9c51422b911561e2dbe74b86c179989  gcc/sanopt.c
  031f67a5fc61f2ead64dbd3606199c4c  gcc/sbitmap.c
  11ceae5c154051f959b40d43418751cb  gcc/sbitmap.h
! 983c5abbb40ee0804d8aa3404e204908  gcc/sched-deps.c
  bc2cdd934cc25969850f307ee699cda5  gcc/sched-ebb.c
  cc2c27a29c37bdf43fe18aaa80d8639f  gcc/sched-int.h
  5e8f08093ead857df7b6081c37d89ebb  gcc/sched-rgn.c
--- 5247,5253 ----
  f9c51422b911561e2dbe74b86c179989  gcc/sanopt.c
  031f67a5fc61f2ead64dbd3606199c4c  gcc/sbitmap.c
  11ceae5c154051f959b40d43418751cb  gcc/sbitmap.h
! e94f2d1298ecc687bf971fdaa8d7c89f  gcc/sched-deps.c
  bc2cdd934cc25969850f307ee699cda5  gcc/sched-ebb.c
  cc2c27a29c37bdf43fe18aaa80d8639f  gcc/sched-int.h
  5e8f08093ead857df7b6081c37d89ebb  gcc/sched-rgn.c
*************** c0e70487ac6c563b18c999487bf5bd1b  gcc/se
*** 5265,5274 ****
  2fb91fd80adbf8475258a996f5c6d9ec  gcc/selftest.h
  dffcbc242af3b5ae86b50e3972675593  gcc/sese.c
  658c410884b61ff14c3227571d956a2d  gcc/sese.h
! 470d4a9ed8353cf6cb2be23d9b083b80  gcc/shrink-wrap.c
  48ed9b4096ed4cea04dc58eef6feba03  gcc/shrink-wrap.h
  a4bcd5fe1b67e43fbe491ab8f67e4e9a  gcc/signop.h
! aaf0b4d538fc2dbc8aad55fb92389056  gcc/simplify-rtx.c
  08a839007ca3175ac49c421b71cb4936  gcc/sparseset.c
  3bab1d474e71a3caf57cd7f96fbd3b42  gcc/sparseset.h
  d7678840bc8ba8c9bf38d47667143ebb  gcc/spellcheck-tree.c
--- 5266,5275 ----
  2fb91fd80adbf8475258a996f5c6d9ec  gcc/selftest.h
  dffcbc242af3b5ae86b50e3972675593  gcc/sese.c
  658c410884b61ff14c3227571d956a2d  gcc/sese.h
! afd3211f2c9be70c2cc5fc0c9a034852  gcc/shrink-wrap.c
  48ed9b4096ed4cea04dc58eef6feba03  gcc/shrink-wrap.h
  a4bcd5fe1b67e43fbe491ab8f67e4e9a  gcc/signop.h
! e4860c74949b37b264e7b75b81697585  gcc/simplify-rtx.c
  08a839007ca3175ac49c421b71cb4936  gcc/sparseset.c
  3bab1d474e71a3caf57cd7f96fbd3b42  gcc/sparseset.h
  d7678840bc8ba8c9bf38d47667143ebb  gcc/spellcheck-tree.c
*************** ef59b71f37b9ee5f108521f8e0713995  gcc/st
*** 5285,5291 ****
  acfd89a99214448406e007b8b47be709  gcc/statistics.h
  40a28c460f172dd1d61a5085d3c0cb8e  gcc/stmt.c
  6241bf746244c38ee2b5bb2f50700720  gcc/stmt.h
! b9d96f26da759fb9923974eeffa2453c  gcc/stor-layout.c
  1c7daba8028822e5b94a2153155ad602  gcc/stor-layout.h
  8e1d62fd4e94be5e6ca36846b1aa8c50  gcc/store-motion.c
  f8d66329a1a49cc3f918ca0cc8dabe29  gcc/streamer-hooks.c
--- 5286,5292 ----
  acfd89a99214448406e007b8b47be709  gcc/statistics.h
  40a28c460f172dd1d61a5085d3c0cb8e  gcc/stmt.c
  6241bf746244c38ee2b5bb2f50700720  gcc/stmt.h
! dd8689c93f1877a7a663963f004790a7  gcc/stor-layout.c
  1c7daba8028822e5b94a2153155ad602  gcc/stor-layout.h
  8e1d62fd4e94be5e6ca36846b1aa8c50  gcc/store-motion.c
  f8d66329a1a49cc3f918ca0cc8dabe29  gcc/streamer-hooks.c
*************** f8d66329a1a49cc3f918ca0cc8dabe29  gcc/st
*** 5295,5301 ****
  363bf9610ccd5a07e44e4a6f3eb6dc71  gcc/substring-locations.c
  9878badb619687340998bcf3640b3cbd  gcc/substring-locations.h
  b7b5a00a031835983125f2937db4804a  gcc/symbol-summary.h
! 9cac484e9987d13642b3be0d459aad25  gcc/symtab.c
  bd271aa5ad96d6349cf5b502f6c1f5c4  gcc/sync-builtins.def
  4b3a7a754c52da9ef683b6f7294a8617  gcc/system.h
  08334c3b5c7914017c1b60360c0a1ff3  gcc/target-def.h
--- 5296,5302 ----
  363bf9610ccd5a07e44e4a6f3eb6dc71  gcc/substring-locations.c
  9878badb619687340998bcf3640b3cbd  gcc/substring-locations.h
  b7b5a00a031835983125f2937db4804a  gcc/symbol-summary.h
! 30129bff70c8649dddc3d8c9586a0d6f  gcc/symtab.c
  bd271aa5ad96d6349cf5b502f6c1f5c4  gcc/sync-builtins.def
  4b3a7a754c52da9ef683b6f7294a8617  gcc/system.h
  08334c3b5c7914017c1b60360c0a1ff3  gcc/target-def.h
*************** a05a444f8043177dc60812bbde449eda  gcc/ta
*** 5308,5314 ****
  130ded7300d8bd75644b06dd136911c9  gcc/targhooks.c
  0aab1bb3e79d26285582376c20aeb077  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 3e7a5fb2136327be4ac63f0bbf054046  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 5309,5315 ----
  130ded7300d8bd75644b06dd136911c9  gcc/targhooks.c
  0aab1bb3e79d26285582376c20aeb077  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! f3e8db809086f15907ea959fb6897bc2  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** d4234712e8b6ad1706a38530b6e6d890  gcc/te
*** 8620,8625 ****
--- 8621,8632 ----
  aef2bdc20ca665badeb6ae399bf1d7e0  gcc/testsuite/c-c++-common/gomp/pr79431.c
  a1d1201800784f60e84899ae25155f9b  gcc/testsuite/c-c++-common/gomp/pr79512.c
  61e2ab40aa3cda7576749f11b6037c39  gcc/testsuite/c-c++-common/gomp/pr81006.c
+ 9b8fd1f128a094e59cd894381166788a  gcc/testsuite/c-c++-common/gomp/pr83977-1.c
+ 2f7e224eea72eb9533c2b8dc9b23926c  gcc/testsuite/c-c++-common/gomp/pr83977-2.c
+ 5ed693b15605c7a6113e875ba1444a17  gcc/testsuite/c-c++-common/gomp/pr83977-3.c
+ 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
  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
*************** b7b47baf0eefc44ea18b3fd4f3ec1f7a  gcc/te
*** 8675,8681 ****
  26c78741b77cfef13280be97946c1113  gcc/testsuite/c-c++-common/pr41935.c
  87edf7a633ed33acea1114b550edc33b  gcc/testsuite/c-c++-common/pr42674.c
  ea15a33a5e79d19b579f6c3729ecc73f  gcc/testsuite/c-c++-common/pr43395.c
! 8dbc3891adbb8c401bc580982af3d5d7  gcc/testsuite/c-c++-common/pr43690.c
  5ed184bdc44bd7286743fe315d9e21d5  gcc/testsuite/c-c++-common/pr43772.c
  120b592aa97ef9bb93a55a83c6706437  gcc/testsuite/c-c++-common/pr43942.c
  aadf03d86632dc2c5d8b990a20395ac4  gcc/testsuite/c-c++-common/pr44832.c
--- 8682,8688 ----
  26c78741b77cfef13280be97946c1113  gcc/testsuite/c-c++-common/pr41935.c
  87edf7a633ed33acea1114b550edc33b  gcc/testsuite/c-c++-common/pr42674.c
  ea15a33a5e79d19b579f6c3729ecc73f  gcc/testsuite/c-c++-common/pr43395.c
! bfa72c1cf31152ed06d824cd89601afe  gcc/testsuite/c-c++-common/pr43690.c
  5ed184bdc44bd7286743fe315d9e21d5  gcc/testsuite/c-c++-common/pr43772.c
  120b592aa97ef9bb93a55a83c6706437  gcc/testsuite/c-c++-common/pr43942.c
  aadf03d86632dc2c5d8b990a20395ac4  gcc/testsuite/c-c++-common/pr44832.c
*************** ee387176acb2650d09f446c7722b79b9  gcc/te
*** 8780,8785 ****
--- 8787,8794 ----
  23a387907d550f4d99b8e38b9154c710  gcc/testsuite/c-c++-common/pr81052.c
  29c7ff6eb5caca1dd6391410ce6c69e4  gcc/testsuite/c-c++-common/pr82112.c
  21015038ab7179791a8c873570bdcb3c  gcc/testsuite/c-c++-common/pr83059.c
+ 9dba97555bca18ab93f6efcd421e0a52  gcc/testsuite/c-c++-common/pr84873.c
+ 2f717264a94f69b645aabceb21aa58e5  gcc/testsuite/c-c++-common/pr84999.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
*************** d6a020309f3771e59e357ca318d8b648  gcc/te
*** 8912,8917 ****
--- 8921,8928 ----
  98b9e5efd75f8d7411aa7620d489399f  gcc/testsuite/c-c++-common/torture/pr77544.c
  3ff9da542bfec1dd8c51f3260ffc51db  gcc/testsuite/c-c++-common/torture/pr79731.c
  575b9ac121d105d972c0a1d0cc759e1e  gcc/testsuite/c-c++-common/torture/pr83553.c
+ 10f3f13910c6235a4bbd08a729ec637b  gcc/testsuite/c-c++-common/torture/pr85022.c
+ 2272316d052efb7b0083de9c930c4e17  gcc/testsuite/c-c++-common/torture/pr87248.c
  fdeec1e5ecb339bf68961fab033b606e  gcc/testsuite/c-c++-common/torture/vector-compare-1.c
  e098360b3686787abea6589b13d9e806  gcc/testsuite/c-c++-common/torture/vector-compare-2.c
  26c13a49130d1f2d291bea112073585f  gcc/testsuite/c-c++-common/torture/vector-shift.c
*************** da953592b5918925210396862fda7319  gcc/te
*** 8952,8958 ****
  94a3ce6b0420494c8401106bec4aeff5  gcc/testsuite/c-c++-common/tsan/pr68260.c
  9651a827618e2399b209ed88d7c818cb  gcc/testsuite/c-c++-common/tsan/race_on_barrier.c
  c17ef9001f4d2a242d6818763dfa63ff  gcc/testsuite/c-c++-common/tsan/race_on_barrier2.c
! e67a39a2873754e03375bb55c452b32a  gcc/testsuite/c-c++-common/tsan/race_on_mutex.c
  0ca9b01051b9780acc43786d24c00a88  gcc/testsuite/c-c++-common/tsan/race_on_mutex2.c
  ce3ab87d530c18dea4f17e7144d048f6  gcc/testsuite/c-c++-common/tsan/sanitize-thread-macro.c
  06947c1efb0e54a370c6a8645033c300  gcc/testsuite/c-c++-common/tsan/simple_race.c
--- 8963,8969 ----
  94a3ce6b0420494c8401106bec4aeff5  gcc/testsuite/c-c++-common/tsan/pr68260.c
  9651a827618e2399b209ed88d7c818cb  gcc/testsuite/c-c++-common/tsan/race_on_barrier.c
  c17ef9001f4d2a242d6818763dfa63ff  gcc/testsuite/c-c++-common/tsan/race_on_barrier2.c
! 25a7f92de8e03951b0b62b8b9c7241ae  gcc/testsuite/c-c++-common/tsan/race_on_mutex.c
  0ca9b01051b9780acc43786d24c00a88  gcc/testsuite/c-c++-common/tsan/race_on_mutex2.c
  ce3ab87d530c18dea4f17e7144d048f6  gcc/testsuite/c-c++-common/tsan/sanitize-thread-macro.c
  06947c1efb0e54a370c6a8645033c300  gcc/testsuite/c-c++-common/tsan/simple_race.c
*************** b4933e6257ffe7874c63bb5463f4ee98  gcc/te
*** 9437,9446 ****
--- 9448,9459 ----
  86c19e1b42266f9002fd92e21d16f1d7  gcc/testsuite/g++.dg/asan/pr77396-2.C
  68963853257ccf17297ec53bb77fa2bf  gcc/testsuite/g++.dg/asan/pr77396.C
  5ce2469706c2beff887e6cb5f8d929aa  gcc/testsuite/g++.dg/asan/pr78201.C
+ 3fd5156b223b5cc79b69a1d371787ddf  gcc/testsuite/g++.dg/asan/pr78651.C
  b8f9375cf24299f4663d8538c4856b28  gcc/testsuite/g++.dg/asan/pr79783.C
  cf71b3ff337eb4d37f2f83d7dd92b137  gcc/testsuite/g++.dg/asan/pr81021.C
  665dc0ebb74dfcb4c784209cc38aea33  gcc/testsuite/g++.dg/asan/pr81715.C
  103ce786588ede05a2ab378b3f167132  gcc/testsuite/g++.dg/asan/pr82792.C
+ 46004f51a9fbd56fbbea9088e6a2d1af  gcc/testsuite/g++.dg/asan/pr85081.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
*************** ba9b2b011bb6d65e0f78322916048095  gcc/te
*** 9670,9675 ****
--- 9683,9689 ----
  f0dc277282e16a103ff36a6a075b7d0c  gcc/testsuite/g++.dg/concepts/alias4.C
  ee8941140e1cf436afcdf4f949bee7b3  gcc/testsuite/g++.dg/concepts/auto1.C
  ac5f78ce350a804e2ba4bbf8a23cd430  gcc/testsuite/g++.dg/concepts/auto3.C
+ 76566f6465a549a7b9af92fb585faad5  gcc/testsuite/g++.dg/concepts/auto4.C
  04f860c5fa2f862fd9748219341c975f  gcc/testsuite/g++.dg/concepts/class-deduction1.C
  c06e7269e2ed07889423a837d3b0e6d4  gcc/testsuite/g++.dg/concepts/class.C
  7fa072a884181e736c3eb1792393ffd9  gcc/testsuite/g++.dg/concepts/class1.C
*************** e679c3ff5560017984a9332e3cd8e485  gcc/te
*** 10014,10019 ****
--- 10028,10034 ----
  2dd5002330171bc4d37d9ba0cc381c6a  gcc/testsuite/g++.dg/cpp0x/attrib54.C
  85e5c6b94c0cc9e87d6a51765c8fc4a4  gcc/testsuite/g++.dg/cpp0x/attrib55.C
  1430719012d4ec7cb7d2aade1a23ef32  gcc/testsuite/g++.dg/cpp0x/attributes-enum-1.C
+ 3c0401d0c967c2be023b9a9ea58bbf4a  gcc/testsuite/g++.dg/cpp0x/auto-60626.C
  d6b8228e103f94d72e6a708fde32a706  gcc/testsuite/g++.dg/cpp0x/auto1.C
  d131ba46fa4bcaa7d35a00572aeccee4  gcc/testsuite/g++.dg/cpp0x/auto10.C
  1542c32ebbd7abdc32de3a250e383558  gcc/testsuite/g++.dg/cpp0x/auto11.C
*************** d9b716e1c070d979f6ba213732af91c4  gcc/te
*** 10056,10061 ****
--- 10071,10077 ----
  44db23ed368948ddb9b1a48f48c7bdaa  gcc/testsuite/g++.dg/cpp0x/auto47.C
  a9475f77c4033a39fd7cae71ded2db91  gcc/testsuite/g++.dg/cpp0x/auto48.C
  7abd7f6467fdec05adaab6e23e984bfb  gcc/testsuite/g++.dg/cpp0x/auto5.C
+ a7a713ea7071d14dc175b795f443d1b0  gcc/testsuite/g++.dg/cpp0x/auto51.C
  7051782825f2720fd5eee3be6f2027e9  gcc/testsuite/g++.dg/cpp0x/auto7.C
  06343ab290491cfe5141709b74ee2c2c  gcc/testsuite/g++.dg/cpp0x/auto9.C
  4a89b70ea75ae6415ffb0149eed4dc01  gcc/testsuite/g++.dg/cpp0x/bad_array_new1.C
*************** afb210848d078a6555666048b75692fb  gcc/te
*** 10124,10129 ****
--- 10140,10147 ----
  3232d16dd5c0ff4902f3535a7b6fd04e  gcc/testsuite/g++.dg/cpp0x/constexpr-71988.C
  48129e87fa4cb0b0f9a001145609bdb5  gcc/testsuite/g++.dg/cpp0x/constexpr-77482.C
  8a9f91865ab6d92e00b1d78f32c26682  gcc/testsuite/g++.dg/cpp0x/constexpr-79822.C
+ 1e7c8ba8ab02820df5254f7b652cafd5  gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C
+ c5c31ddd271a1ea41e1cc0115e3e4305  gcc/testsuite/g++.dg/cpp0x/constexpr-84463.C
  6aa74413b4ef74580a0a5da7abf23914  gcc/testsuite/g++.dg/cpp0x/constexpr-98.C
  1bc1c995533b047ed8df6f6f24905cd1  gcc/testsuite/g++.dg/cpp0x/constexpr-99.C
  3ccc1912e7827aae6b55936a3bf3bb24  gcc/testsuite/g++.dg/cpp0x/constexpr-__func__.C
*************** dfc43f4a6c6619f77e2370dc3ac7c5bd  gcc/te
*** 10200,10205 ****
--- 10218,10224 ----
  4d403c04d2b03456f9744d92ca3358c7  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor18.C
  71c411ba85123d4dd51ea4cce3467a2d  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor19.C
  b53901b01ead6799c051d88913ebc375  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor2.C
+ 75570067f1748bbf63ecff0edf089f3f  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C
  6149d79aef3c5dc04bce76d97b8072e3  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor3.C
  fe03ae0923ec0f159b32d4c95a97afbb  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor4.C
  a15ac39628455598191a6c7526c0ea4b  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor5.C
*************** eaac16fcdf22c3bbc12d42310c8808c0  gcc/te
*** 10294,10299 ****
--- 10313,10319 ----
  683db5db98fc74d6eadc7aa9954bdb28  gcc/testsuite/g++.dg/cpp0x/constexpr-invisiref1.C
  37f592a6d675c9e237fe68fa9fdf71ca  gcc/testsuite/g++.dg/cpp0x/constexpr-is_literal.C
  78f36282c1b77dbf3aea60391389914d  gcc/testsuite/g++.dg/cpp0x/constexpr-list1.C
+ f288c9405b4d691b91ef3844e3b9dd08  gcc/testsuite/g++.dg/cpp0x/constexpr-list2.C
  25358bf087f99e99f8fbfc8bcd9f01be  gcc/testsuite/g++.dg/cpp0x/constexpr-main.C
  795a9ff23653541832d521a034128e3d  gcc/testsuite/g++.dg/cpp0x/constexpr-memchr.C
  92eaaefb7f4d4e3e3d50a13597ae0b88  gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C
*************** d1ec0d16df219b4574614b6f4fa3b9b6  gcc/te
*** 10316,10323 ****
  7984f830cb12240213de4cb699fc0fad  gcc/testsuite/g++.dg/cpp0x/constexpr-nonlit.C
  be8f4e5fcb1c587cafceedac941319f3  gcc/testsuite/g++.dg/cpp0x/constexpr-nonlit2.C
  e30db9bfd86140e4533c65e96fcc3879  gcc/testsuite/g++.dg/cpp0x/constexpr-nonstatic.C
! 52726a96be5f6b2305f7f16df85b3049  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C
! 4feb765658c4afa6f2e726a8d4068c3d  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C
  d4c1a5cc0803346fbc25f7a4d5748fd8  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr.C
  9234777336f797ed877671569794ca38  gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C
  a3363a18129aba2537ab6af225e19a74  gcc/testsuite/g++.dg/cpp0x/constexpr-object2.C
--- 10336,10343 ----
  7984f830cb12240213de4cb699fc0fad  gcc/testsuite/g++.dg/cpp0x/constexpr-nonlit.C
  be8f4e5fcb1c587cafceedac941319f3  gcc/testsuite/g++.dg/cpp0x/constexpr-nonlit2.C
  e30db9bfd86140e4533c65e96fcc3879  gcc/testsuite/g++.dg/cpp0x/constexpr-nonstatic.C
! 990beb043ae4d800be378b30e8be4884  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C
! fe4bf603ed35e1ae451efb00709c23e1  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C
  d4c1a5cc0803346fbc25f7a4d5748fd8  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr.C
  9234777336f797ed877671569794ca38  gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C
  a3363a18129aba2537ab6af225e19a74  gcc/testsuite/g++.dg/cpp0x/constexpr-object2.C
*************** bc4346829b56020609cc74488154f418  gcc/te
*** 10437,10443 ****
  8305b7b7dfca623e4a99cb58ae840958  gcc/testsuite/g++.dg/cpp0x/dc8.C
  1772402035ea86d1426eefecdfae9712  gcc/testsuite/g++.dg/cpp0x/decl-loc1.C
  d20073ca1009509271524d321aea63b7  gcc/testsuite/g++.dg/cpp0x/decltype-1212.C
! ae3bba7fda613fe3a5a34c24f853d36d  gcc/testsuite/g++.dg/cpp0x/decltype-33837.C
  f00b922129e053cd1f5ed688a35ee5f3  gcc/testsuite/g++.dg/cpp0x/decltype-33838.C
  51bee11248b9515ebb07cbd465c4fc47  gcc/testsuite/g++.dg/cpp0x/decltype-38655.C
  b42a56c36f2871854befe2c275e21536  gcc/testsuite/g++.dg/cpp0x/decltype-54581.C
--- 10457,10463 ----
  8305b7b7dfca623e4a99cb58ae840958  gcc/testsuite/g++.dg/cpp0x/dc8.C
  1772402035ea86d1426eefecdfae9712  gcc/testsuite/g++.dg/cpp0x/decl-loc1.C
  d20073ca1009509271524d321aea63b7  gcc/testsuite/g++.dg/cpp0x/decltype-1212.C
! c2a9b59fdf83e881c9a8f6677ffa2654  gcc/testsuite/g++.dg/cpp0x/decltype-33837.C
  f00b922129e053cd1f5ed688a35ee5f3  gcc/testsuite/g++.dg/cpp0x/decltype-33838.C
  51bee11248b9515ebb07cbd465c4fc47  gcc/testsuite/g++.dg/cpp0x/decltype-38655.C
  b42a56c36f2871854befe2c275e21536  gcc/testsuite/g++.dg/cpp0x/decltype-54581.C
*************** d19f09ec1e20cf899925e0ef73d57180  gcc/te
*** 10486,10492 ****
  6ecda3200d1e3dc5bcc9f1d705d4288d  gcc/testsuite/g++.dg/cpp0x/decltype40.C
  72998cd64ca70f08cf0e10c26977ba53  gcc/testsuite/g++.dg/cpp0x/decltype41.C
  a62748c335775c13524854a1863cb205  gcc/testsuite/g++.dg/cpp0x/decltype42.C
! c5cb522e38159dab988d464557385ee9  gcc/testsuite/g++.dg/cpp0x/decltype43.C
  30af567d196c3316244215ca2ff212d7  gcc/testsuite/g++.dg/cpp0x/decltype44.C
  54dcc9841c374062b51b3eb83ed44320  gcc/testsuite/g++.dg/cpp0x/decltype45.C
  b6860c73cefcae60eb68cf0330f2aa17  gcc/testsuite/g++.dg/cpp0x/decltype46.C
--- 10506,10512 ----
  6ecda3200d1e3dc5bcc9f1d705d4288d  gcc/testsuite/g++.dg/cpp0x/decltype40.C
  72998cd64ca70f08cf0e10c26977ba53  gcc/testsuite/g++.dg/cpp0x/decltype41.C
  a62748c335775c13524854a1863cb205  gcc/testsuite/g++.dg/cpp0x/decltype42.C
! 26f780adec93249509ab39510259b2e8  gcc/testsuite/g++.dg/cpp0x/decltype43.C
  30af567d196c3316244215ca2ff212d7  gcc/testsuite/g++.dg/cpp0x/decltype44.C
  54dcc9841c374062b51b3eb83ed44320  gcc/testsuite/g++.dg/cpp0x/decltype45.C
  b6860c73cefcae60eb68cf0330f2aa17  gcc/testsuite/g++.dg/cpp0x/decltype46.C
*************** e0815b98196aea0739acd0b3e2b6b78f  gcc/te
*** 10512,10517 ****
--- 10532,10538 ----
  d1cca64c7d07feb94e9c8e864770cb6d  gcc/testsuite/g++.dg/cpp0x/decltype64.C
  55f881ad7708a2a5bbec53f3c555b54a  gcc/testsuite/g++.dg/cpp0x/decltype65.C
  ed578aa82f9f891f97537571406ae86e  gcc/testsuite/g++.dg/cpp0x/decltype66.C
+ dcfc19d4fbe83e8d2caf4e63c094ac05  gcc/testsuite/g++.dg/cpp0x/decltype67.C
  c3626f3b26fbb53bd234a4e39649b63f  gcc/testsuite/g++.dg/cpp0x/decltype7.C
  bbdff105c665351973aaa6a25eaa0940  gcc/testsuite/g++.dg/cpp0x/decltype8.C
  4b13c00f57a3a7cb225369c29f8fd6f6  gcc/testsuite/g++.dg/cpp0x/decltype9.C
*************** e111c1f4739203185f9d6294ebadcc5f  gcc/te
*** 10586,10591 ****
--- 10607,10613 ----
  d4426133b81413ad1d3051caa8d7c24a  gcc/testsuite/g++.dg/cpp0x/dyncast1.C
  66b2af972cbee8009e3e5f9895cb0a1a  gcc/testsuite/g++.dg/cpp0x/elision.C
  61e6b95f09ff3fc301b7bd5af3f1e592  gcc/testsuite/g++.dg/cpp0x/elision2.C
+ 27d722d5f244016b7eb68c69205b406b  gcc/testsuite/g++.dg/cpp0x/elision3.C
  5c711968979f97af62f871b9ff96e097  gcc/testsuite/g++.dg/cpp0x/elision_conv.C
  3370bb8bb4d3cb46e73b821ac6785756  gcc/testsuite/g++.dg/cpp0x/elision_neg.C
  af521f07a34d29e505189640746f3ea0  gcc/testsuite/g++.dg/cpp0x/elision_weak.C
*************** be032bb4361dd11f064d960f788b56ae  gcc/te
*** 10651,10656 ****
--- 10673,10679 ----
  17b14634dec8aeb365371418aa64cddf  gcc/testsuite/g++.dg/cpp0x/extern_template-1.C
  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
  592cc710524d5d21c28b065dd6c6de7c  gcc/testsuite/g++.dg/cpp0x/fallthrough1.C
  c2982fdb85366105719171be7bb04eb0  gcc/testsuite/g++.dg/cpp0x/fallthrough2.C
  e719fc0782c02fa926744188563c8722  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg1.C
*************** e59d3f76627bf31bf8cc43a2fe4b6df9  gcc/te
*** 10659,10664 ****
--- 10682,10688 ----
  cf1da5498725899c52629122a71d79b9  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg4.C
  addea0686f679f28f9e10317665cb558  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg5.C
  9cd5747227de9f575a1c66c4c948ad10  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg6.C
+ 27091ff6260b20eed4a8f25bb15a6a89  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg8.C
  345ce7592fe1c32e330c2d3d26949440  gcc/testsuite/g++.dg/cpp0x/forw_enum1.C
  1a0224c800121a670c310137cf3bd67d  gcc/testsuite/g++.dg/cpp0x/forw_enum10.C
  2239f6a9c812e24f922b1e66f627e481  gcc/testsuite/g++.dg/cpp0x/forw_enum11.C
*************** a5d7e64856d35c4f9d4fe7a1a1d99cab  gcc/te
*** 10740,10745 ****
--- 10764,10770 ----
  7b0e99b02e7789690f20d9d1114188d0  gcc/testsuite/g++.dg/cpp0x/gen-attrs-61.C
  b151953ee723cc3bd3afc60e2ad0e6ad  gcc/testsuite/g++.dg/cpp0x/gen-attrs-62.C
  c157a52995fc54c0b46c8795dea13ada  gcc/testsuite/g++.dg/cpp0x/gen-attrs-63.C
+ 5ac484eaba19c794225110a11b48ef2a  gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C
  f55fa66c82d267feca5db82dc835210a  gcc/testsuite/g++.dg/cpp0x/gen-attrs-7.C
  e0b4f953ad274eb8ec84b8e630f87d3a  gcc/testsuite/g++.dg/cpp0x/gen-attrs-8.C
  5dd92815927177080853d47a890f5439  gcc/testsuite/g++.dg/cpp0x/gen-attrs-9.C
*************** baf0ca575018768eef366236d48b8fdb  gcc/te
*** 10785,10790 ****
--- 10810,10816 ----
  4c4ae18e25ac45da8c988754866e6e46  gcc/testsuite/g++.dg/cpp0x/inh-ctor28.C
  a7a3abf33b10ca007c7fa43b9a1b4c19  gcc/testsuite/g++.dg/cpp0x/inh-ctor29.C
  c3eec0e197692faa6172feb3b5b4c58b  gcc/testsuite/g++.dg/cpp0x/inh-ctor3.C
+ ef58cfd45b994e29a5ffb11ea1d0cd8b  gcc/testsuite/g++.dg/cpp0x/inh-ctor30.C
  47ad482b069988147c4dcac60c026f4d  gcc/testsuite/g++.dg/cpp0x/inh-ctor3a.C
  071eafda7f7d2d4bff42921fbd048a45  gcc/testsuite/g++.dg/cpp0x/inh-ctor4.C
  972640c006b3bcd568fc760f06817f9f  gcc/testsuite/g++.dg/cpp0x/inh-ctor5.C
*************** c3eec0e197692faa6172feb3b5b4c58b  gcc/te
*** 10803,10808 ****
--- 10829,10835 ----
  994605127bf908d7a5b9745b9991101e  gcc/testsuite/g++.dg/cpp0x/initlist-ctor1.C
  8642aa67406b008384f59447a05a884c  gcc/testsuite/g++.dg/cpp0x/initlist-deduce.C
  164cef62ad37c1cf80ca6128f56094b2  gcc/testsuite/g++.dg/cpp0x/initlist-defarg1.C
+ be08dc99a94b7b3278c8c66a5274c415  gcc/testsuite/g++.dg/cpp0x/initlist-defarg2.C
  7f34f94c8b3b4fffe98a24b8ebadd5f6  gcc/testsuite/g++.dg/cpp0x/initlist-dr1518.C
  f61f621dcd5efc7adaf806419bd64a07  gcc/testsuite/g++.dg/cpp0x/initlist-explicit-sfinae.C
  f001f383104d84fe6269354c225ca1ec  gcc/testsuite/g++.dg/cpp0x/initlist-explicit1.C
*************** efc2f221b3ae75a1d4c0ccf4a3e021a9  gcc/te
*** 10915,10920 ****
--- 10942,10948 ----
  c27ca98c8a89c6bae88c1f75ab92d8f2  gcc/testsuite/g++.dg/cpp0x/initlist95.C
  bf2d775556971465a6aa220a09a606b0  gcc/testsuite/g++.dg/cpp0x/initlist96.C
  42af5338e0155a7ff301fc045e4cf139  gcc/testsuite/g++.dg/cpp0x/initlist97.C
+ 9dce1e7cf82bbdd6de947810fcefa39b  gcc/testsuite/g++.dg/cpp0x/initlist98.C
  2bd94659e18571416ec707555f61b80d  gcc/testsuite/g++.dg/cpp0x/inline-ns1.C
  3e2f011d130eb1b8b8c5b45e6f650dfb  gcc/testsuite/g++.dg/cpp0x/inline-ns2.C
  9ac74ab89dc8edcde76b2e7628340a13  gcc/testsuite/g++.dg/cpp0x/inline-ns3.C
*************** be7d5784718fa8841e1936204f404bd8  gcc/te
*** 10985,10990 ****
--- 11013,11019 ----
  ffc39c5b4c152803a184a9a8a8a77a77  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg4.C
  0ee6fa2440a52fd8a86025d3704e8fc8  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg5.C
  988889814e57352cbe162cc5e748cfd3  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg6.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
  608222e5fa9681660b33f435a7788d0a  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh.C
*************** f33b3ea62d84fcfc133c8244474d4e53  gcc/te
*** 11025,11030 ****
--- 11054,11060 ----
  bc4834e829a567ab458b88513efb0adc  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle2.C
  a3babe4a5a450c501c6d3daf88a2a741  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle3.C
  9dc008f9d5045d3deab89ba4ac3a1544  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle4.C
+ 543ea50ea09345cb7118e5bb0639b733  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle5.C
  eeae91bf7da7535c64375c8b6e2ad746  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
  3292c801823c4c4aa6fe6e560dd10624  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
  ed3cffe55f643c172f1955fc59175de2  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable2.C
*************** a7ce890814702f4e47accec9c16c9a87  gcc/te
*** 11149,11154 ****
--- 11179,11186 ----
  8a14caa5e693140f84b5e595cc4a5bcd  gcc/testsuite/g++.dg/cpp0x/noexcept27.C
  312e5911742d260a76aa347c139166f2  gcc/testsuite/g++.dg/cpp0x/noexcept28.C
  e72e3f7b7460146d789bd2377c71d5d0  gcc/testsuite/g++.dg/cpp0x/noexcept29.C
+ 561d9b65f7315d6bab3a710ec4347c9c  gcc/testsuite/g++.dg/cpp0x/noexcept32.C
+ 3d6304a7e40ea170469ff8d2c1f0376e  gcc/testsuite/g++.dg/cpp0x/noexcept33.C
  9a44c4b3694c2695584bf19a10b2844f  gcc/testsuite/g++.dg/cpp0x/nolinkage1.C
  6b7c91b931bbdacbbffbf9b90a79bc6a  gcc/testsuite/g++.dg/cpp0x/nolinkage1.h
  84840c32c28b1c181ccc33aecc2459a7  gcc/testsuite/g++.dg/cpp0x/nolinkage1a.cc
*************** e950526c0d7127f5718072cb9366641e  gcc/te
*** 11165,11170 ****
--- 11197,11203 ----
  75662f6c054f03b468701521fd3078f1  gcc/testsuite/g++.dg/cpp0x/nsdmi-defer6.C
  9a72677ce49b64f4a0e186df8902abff  gcc/testsuite/g++.dg/cpp0x/nsdmi-dr1397.C
  5af761999024cb836ca412ed02230774  gcc/testsuite/g++.dg/cpp0x/nsdmi-eh1.C
+ a10475b2a54810b2909ccfef2102f693  gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C
  b8706c4b353788bfe037cbbf67877a76  gcc/testsuite/g++.dg/cpp0x/nsdmi-list1.C
  28861172743173b9d509ef8324377edf  gcc/testsuite/g++.dg/cpp0x/nsdmi-list2.C
  ef20e3e0e53b4fb3163e5066efb89b64  gcc/testsuite/g++.dg/cpp0x/nsdmi-list3.C
*************** f9a95403a108b26b2de03038d43da14f  gcc/te
*** 11200,11205 ****
--- 11233,11239 ----
  ef00b2c2beb9680889aec5881ac6e71e  gcc/testsuite/g++.dg/cpp0x/nsdmi11.C
  73f3d24b7fde9a7bfe33075395c0b3db  gcc/testsuite/g++.dg/cpp0x/nsdmi12.C
  efbe4509f010d6478960eb76bc669dd0  gcc/testsuite/g++.dg/cpp0x/nsdmi13.C
+ 4d72e716873de669b52b72c5b41d93a3  gcc/testsuite/g++.dg/cpp0x/nsdmi14.C
  6441ebb320eb7cce0916b770b17635d3  gcc/testsuite/g++.dg/cpp0x/nsdmi2.C
  b49a256b7d52d077f75204867f7c282e  gcc/testsuite/g++.dg/cpp0x/nsdmi3.C
  5f65bb87e42c6ccb9b5a2788ce979bcf  gcc/testsuite/g++.dg/cpp0x/nsdmi4.C
*************** a5009c71493536f14c34f935f9b9d0a3  gcc/te
*** 11421,11433 ****
  56dff682c68971fd9a5e4c2cbca5e8db  gcc/testsuite/g++.dg/cpp0x/pr81325.C
  b0aef9b4e29c1c639c49513dd20eddaa  gcc/testsuite/g++.dg/cpp0x/pr82299.C
  5b2b43024e2826cfb8352cc9a3af7a5c  gcc/testsuite/g++.dg/cpp0x/pr82560.C
  22640f58e38b3f775918e32eb89ae1c5  gcc/testsuite/g++.dg/cpp0x/pr83556.C
  53428f69a6d0153074c9b06ee9fbe9e7  gcc/testsuite/g++.dg/cpp0x/ptrmem-cst-arg1.C
  6e8e648c26d9bf237cc152180e88c2c2  gcc/testsuite/g++.dg/cpp0x/range-for1.C
  5c7a98d8ca2f0f427c081bf6902aa831  gcc/testsuite/g++.dg/cpp0x/range-for10.C
  5eec4a19463d582cbc114d93dbff246a  gcc/testsuite/g++.dg/cpp0x/range-for11.C
  22acc783be03cde2f30fafef0d50d9a2  gcc/testsuite/g++.dg/cpp0x/range-for12.C
! 85bac76bf4cf7eb5b1307ab57058151e  gcc/testsuite/g++.dg/cpp0x/range-for13.C
  3982df26cef9ee27d82b753ea7cc8d36  gcc/testsuite/g++.dg/cpp0x/range-for14.C
  6744db312d947b21c87f772cadc96f8a  gcc/testsuite/g++.dg/cpp0x/range-for15.C
  e52b898f780ed4b01b2040fda37a40e1  gcc/testsuite/g++.dg/cpp0x/range-for16.C
--- 11455,11470 ----
  56dff682c68971fd9a5e4c2cbca5e8db  gcc/testsuite/g++.dg/cpp0x/pr81325.C
  b0aef9b4e29c1c639c49513dd20eddaa  gcc/testsuite/g++.dg/cpp0x/pr82299.C
  5b2b43024e2826cfb8352cc9a3af7a5c  gcc/testsuite/g++.dg/cpp0x/pr82560.C
+ 5208394efee72c1ca97c50c956e0cc45  gcc/testsuite/g++.dg/cpp0x/pr82878.C
  22640f58e38b3f775918e32eb89ae1c5  gcc/testsuite/g++.dg/cpp0x/pr83556.C
+ 0e513eaf320aa9c504e7cd59d73bb3ea  gcc/testsuite/g++.dg/cpp0x/pr83824.C
+ e220051a1789469e32d70224f27f40f1  gcc/testsuite/g++.dg/cpp0x/pr85147.C
  53428f69a6d0153074c9b06ee9fbe9e7  gcc/testsuite/g++.dg/cpp0x/ptrmem-cst-arg1.C
  6e8e648c26d9bf237cc152180e88c2c2  gcc/testsuite/g++.dg/cpp0x/range-for1.C
  5c7a98d8ca2f0f427c081bf6902aa831  gcc/testsuite/g++.dg/cpp0x/range-for10.C
  5eec4a19463d582cbc114d93dbff246a  gcc/testsuite/g++.dg/cpp0x/range-for11.C
  22acc783be03cde2f30fafef0d50d9a2  gcc/testsuite/g++.dg/cpp0x/range-for12.C
! 7fca70f7d238abc1bdf073e027cc68e4  gcc/testsuite/g++.dg/cpp0x/range-for13.C
  3982df26cef9ee27d82b753ea7cc8d36  gcc/testsuite/g++.dg/cpp0x/range-for14.C
  6744db312d947b21c87f772cadc96f8a  gcc/testsuite/g++.dg/cpp0x/range-for15.C
  e52b898f780ed4b01b2040fda37a40e1  gcc/testsuite/g++.dg/cpp0x/range-for16.C
*************** c30ef7e7c57a76e0b08aadd7962b3f40  gcc/te
*** 11451,11462 ****
  cac4db523ff451f6ffc7f57da72a4164  gcc/testsuite/g++.dg/cpp0x/range-for32.C
  c0e5ee89c913d75b3174c2833d03f665  gcc/testsuite/g++.dg/cpp0x/range-for33.C
  f6fdcf88436a7c2de904550e31de7cea  gcc/testsuite/g++.dg/cpp0x/range-for34.C
  cf3faabae812bd6f8ade13f3c1d36871  gcc/testsuite/g++.dg/cpp0x/range-for4.C
  9d70da20463079b62be580867a3e6601  gcc/testsuite/g++.dg/cpp0x/range-for5.C
  bf09a13cfe61445a898ea383c44bc795  gcc/testsuite/g++.dg/cpp0x/range-for6.C
  cf6c66c2c1f26f78f53b3a006d996662  gcc/testsuite/g++.dg/cpp0x/range-for7.C
  b111f953ff16a99ffc3ad09a151f0958  gcc/testsuite/g++.dg/cpp0x/range-for8.C
! 68a9925bd047631ad89890587ebf286d  gcc/testsuite/g++.dg/cpp0x/range-for9.C
  87cba3bd81389f956a4ab8405ad5dc46  gcc/testsuite/g++.dg/cpp0x/ref-qual-mangle1.C
  af4673410b97bcc5393dd82a2599c2d1  gcc/testsuite/g++.dg/cpp0x/ref-qual-multi-neg.C
  d0d588806aef3922d92ee7fb7c632659  gcc/testsuite/g++.dg/cpp0x/ref-qual1.C
--- 11488,11500 ----
  cac4db523ff451f6ffc7f57da72a4164  gcc/testsuite/g++.dg/cpp0x/range-for32.C
  c0e5ee89c913d75b3174c2833d03f665  gcc/testsuite/g++.dg/cpp0x/range-for33.C
  f6fdcf88436a7c2de904550e31de7cea  gcc/testsuite/g++.dg/cpp0x/range-for34.C
+ 856f64a94978bd5e8a4f2bce672e96ce  gcc/testsuite/g++.dg/cpp0x/range-for35.C
  cf3faabae812bd6f8ade13f3c1d36871  gcc/testsuite/g++.dg/cpp0x/range-for4.C
  9d70da20463079b62be580867a3e6601  gcc/testsuite/g++.dg/cpp0x/range-for5.C
  bf09a13cfe61445a898ea383c44bc795  gcc/testsuite/g++.dg/cpp0x/range-for6.C
  cf6c66c2c1f26f78f53b3a006d996662  gcc/testsuite/g++.dg/cpp0x/range-for7.C
  b111f953ff16a99ffc3ad09a151f0958  gcc/testsuite/g++.dg/cpp0x/range-for8.C
! 95c63c47fabae91ec605312aa14b8b87  gcc/testsuite/g++.dg/cpp0x/range-for9.C
  87cba3bd81389f956a4ab8405ad5dc46  gcc/testsuite/g++.dg/cpp0x/ref-qual-mangle1.C
  af4673410b97bcc5393dd82a2599c2d1  gcc/testsuite/g++.dg/cpp0x/ref-qual-multi-neg.C
  d0d588806aef3922d92ee7fb7c632659  gcc/testsuite/g++.dg/cpp0x/ref-qual1.C
*************** bf679e1b75877f28dc4d57155f61bcb1  gcc/te
*** 11468,11473 ****
--- 11506,11512 ----
  baf0dc0526b9c7116fa5e5cbccbe2286  gcc/testsuite/g++.dg/cpp0x/ref-qual15.C
  0a3150042efce88e411aee61e7fe784f  gcc/testsuite/g++.dg/cpp0x/ref-qual16.C
  0abe32df36a729d72295ed31565b5f9e  gcc/testsuite/g++.dg/cpp0x/ref-qual17.C
+ 406a665e1cf18ab29d627440010b6614  gcc/testsuite/g++.dg/cpp0x/ref-qual18.C
  17d77d3ef6cc0e1cfd53228f15a40017  gcc/testsuite/g++.dg/cpp0x/ref-qual2.C
  68b27ec15231994ad0330625660d2720  gcc/testsuite/g++.dg/cpp0x/ref-qual3.C
  1bb06529f586a3e77263290dd006534e  gcc/testsuite/g++.dg/cpp0x/ref-qual4.C
*************** c0fee994e880e6032fe6c1fa1a6efa69  gcc/te
*** 11588,11593 ****
--- 11627,11633 ----
  2628399b955cc58affa3be676427e085  gcc/testsuite/g++.dg/cpp0x/sfinae57.C
  a5e6ed91f0f646eb02d06d6e7670053e  gcc/testsuite/g++.dg/cpp0x/sfinae58.C
  7d2a515d9dca41b0e82b2e6ea54bd2d3  gcc/testsuite/g++.dg/cpp0x/sfinae6.C
+ 0cc7cf7d0ec0400e4be4d1ae2087c83f  gcc/testsuite/g++.dg/cpp0x/sfinae60.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
*************** efdeb5b65b79fc6ff926b12f711edcb1  gcc/te
*** 11734,11739 ****
--- 11774,11781 ----
  6c67e276177a53a05508b5e974504d12  gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
  b043a7c3881a23960f0e2b05e750d94c  gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn2.C
  08d2bff6abb7f96f072898cb08f80fbc  gcc/testsuite/g++.dg/cpp0x/variadic-nested1.C
+ 7932640fecd96fc5ff03d9f94a7cf005  gcc/testsuite/g++.dg/cpp0x/variadic-nested2.C
+ e47543bd9482646c5c0d1023519e7eb1  gcc/testsuite/g++.dg/cpp0x/variadic-nested3.C
  7d2b8191fa109fd1786f979fbfa18b4e  gcc/testsuite/g++.dg/cpp0x/variadic-new.C
  5ad1db01bdd9d87f2a8276b08cff8db7  gcc/testsuite/g++.dg/cpp0x/variadic-new2.C
  9965da4f62ae847ce666120789b29c79  gcc/testsuite/g++.dg/cpp0x/variadic-nondeduce1.C
*************** a704b3ce8270e6f8437ab87445750058  gcc/te
*** 12036,12047 ****
--- 12078,12091 ----
  87e6acf3f9570693090bc9744174253b  gcc/testsuite/g++.dg/cpp1y/constexpr-79681-1.C
  c31b3bbd5d5198b87b168be79f7471eb  gcc/testsuite/g++.dg/cpp1y/constexpr-79681-2.C
  e4f44ba83e70dc31ae39e2b7a5451b57  gcc/testsuite/g++.dg/cpp1y/constexpr-83116.C
+ f6c53aebab36b7a80efb88c7c97a2b51  gcc/testsuite/g++.dg/cpp1y/constexpr-84192.C
  c410a0259982426fcc8bf751139fbcd3  gcc/testsuite/g++.dg/cpp1y/constexpr-arith-overflow.C
  8ca7fb9e44e526f77542eaa59593c544  gcc/testsuite/g++.dg/cpp1y/constexpr-array1.C
  10c765e5671de39fd3d751b2e3a5408b  gcc/testsuite/g++.dg/cpp1y/constexpr-array2.C
  192478e53d1e7dc7ab67b7b22a9678c1  gcc/testsuite/g++.dg/cpp1y/constexpr-array3.C
  ce3d96795da2089956df925a1a9c9815  gcc/testsuite/g++.dg/cpp1y/constexpr-array4.C
  04db49bd5853458ca76dcfe52d4e5aa1  gcc/testsuite/g++.dg/cpp1y/constexpr-array5.C
+ a8edd1159f1c66a732eaec9685596ff4  gcc/testsuite/g++.dg/cpp1y/constexpr-array6.C
  9c189b4b801bac3aaf8dffbbc66e22fc  gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
  717b5c723c35c334359c678ac4628aa8  gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
  96e7ff76936ad5471dd6bfb8bb617ccc  gcc/testsuite/g++.dg/cpp1y/constexpr-assign1.C
*************** fd449c2760b279bd0767e28da8a563bf  gcc/te
*** 12124,12129 ****
--- 12168,12174 ----
  2d18bbc76edb8b7a9ae068d833d222fb  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice4.C
  a72b2bd09fb408a27f64449e8b8d9040  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice5.C
  a5e1f08b66165b58419bbab37da9a962  gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C
+ 52a13a3c9f86f7ceca034afb60b8f785  gcc/testsuite/g++.dg/cpp1y/lambda-generic-nsdmi1.C
  db3760d317d0220aeddc9a1ce4072105  gcc/testsuite/g++.dg/cpp1y/lambda-generic-static1.C
  c6cfff44332b8bfb7c52ace4e1af76c5  gcc/testsuite/g++.dg/cpp1y/lambda-generic-static2.C
  47327f13bcf8bd47595b03a1a51d80b1  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this1.C
*************** c6cfff44332b8bfb7c52ace4e1af76c5  gcc/te
*** 12132,12137 ****
--- 12177,12185 ----
  e947551033232c5abe95cce5adfd22aa  gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C
  7515a5372d247dd5a94ef0626c25c2ae  gcc/testsuite/g++.dg/cpp1y/lambda-generic-uneval1.C
  5ef24452c90a0becdfa786ec05bfd5b8  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic.C
+ c0a147006244a6b57ce3f875f94e64bc  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic16.C
+ 6646d8e79cf76118d275f7a8c0a7f36a  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic17.C
+ c9ebf7c65d25936f6751b5ecbf146c97  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C
  723f502d3b40be6c90106e7124cc9e69  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic2.C
  93fa62fac80c2db40c8540dcc1bb3cb1  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic3.C
  3b97ac4e949f2c389ffb4065dc536705  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic4.C
*************** fa5d36139114d3424b46d4a35fdcc931  gcc/te
*** 12158,12169 ****
  e43ff67655440de1b6368e3cd5e04a52  gcc/testsuite/g++.dg/cpp1y/lambda-init7.C
  eeda9ed3e95d7a31c74fcdebd07abf15  gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
  c9c747d6c51f186d14465f9e9bb8db01  gcc/testsuite/g++.dg/cpp1y/lambda-init9.C
! c855a0af7a9feddb90220f60a1622833  gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1.C
  d13aa7a67136b0f4d673be5df541a2ab  gcc/testsuite/g++.dg/cpp1y/lambda-var-templ1.C
  7686aff0777cf041b8454732d1f17d8e  gcc/testsuite/g++.dg/cpp1y/left-shift-1.C
  5905dcf4a0cf928e5f5eef8ea574d3ee  gcc/testsuite/g++.dg/cpp1y/left-shift-2.C
  8505d7bc855e9e02e1d7a75fe803d027  gcc/testsuite/g++.dg/cpp1y/mangle1.C
  4707396951c53026c3f457ecd9db5312  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr1.C
  6181386fced4d11038690bcc0729a80d  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr2.C
  379f3d0c83382658777fb1c2f47ed88a  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr3.C
  d986a2e035160bd06d7fd81798876e53  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr4.C
--- 12206,12219 ----
  e43ff67655440de1b6368e3cd5e04a52  gcc/testsuite/g++.dg/cpp1y/lambda-init7.C
  eeda9ed3e95d7a31c74fcdebd07abf15  gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
  c9c747d6c51f186d14465f9e9bb8db01  gcc/testsuite/g++.dg/cpp1y/lambda-init9.C
! b09f7464f0c692821ff03fb28a825adb  gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1.C
  d13aa7a67136b0f4d673be5df541a2ab  gcc/testsuite/g++.dg/cpp1y/lambda-var-templ1.C
  7686aff0777cf041b8454732d1f17d8e  gcc/testsuite/g++.dg/cpp1y/left-shift-1.C
  5905dcf4a0cf928e5f5eef8ea574d3ee  gcc/testsuite/g++.dg/cpp1y/left-shift-2.C
  8505d7bc855e9e02e1d7a75fe803d027  gcc/testsuite/g++.dg/cpp1y/mangle1.C
  4707396951c53026c3f457ecd9db5312  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr1.C
+ 5326d1798f69e0f75031ab294cf8dd21  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr10.C
+ c9dde900e1dd03846724a7195332d8ea  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr11.C
  6181386fced4d11038690bcc0729a80d  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr2.C
  379f3d0c83382658777fb1c2f47ed88a  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr3.C
  d986a2e035160bd06d7fd81798876e53  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr4.C
*************** f487f4137e5fa352c9bff3ababd18d3c  gcc/te
*** 12171,12176 ****
--- 12221,12227 ----
  2b0eb9826a6868b6c3240485258d8645  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr6.C
  e757c9e5123a47b020592e157d39abbf  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr7.C
  bdeca5af0e55118e69f4737603161a50  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr8.C
+ 977f379532a7d04c5460403b4511a64c  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr9.C
  59f7206fe6aeb01f4af1e60faed2a55a  gcc/testsuite/g++.dg/cpp1y/nsdmi-union1.C
  e9688e421c4569dce79ed59081112e1b  gcc/testsuite/g++.dg/cpp1y/nsdmi-union2.C
  842c48da3392c67af5a3e57320ee750f  gcc/testsuite/g++.dg/cpp1y/parameter-pack-1.C
*************** fd4301fd2844bd03569ca727f83a92f9  gcc/te
*** 12213,12221 ****
  33d4af5c44499231ca7101f70157f6d2  gcc/testsuite/g++.dg/cpp1y/pr60384.C
  89e823196ea2797ff0cdd8c41652d3c8  gcc/testsuite/g++.dg/cpp1y/pr60390.C
  578fb427264064fa9d0060547416a691  gcc/testsuite/g++.dg/cpp1y/pr60391.C
! 0c0d31c6cb5ac21b50dc1bca72dba1da  gcc/testsuite/g++.dg/cpp1y/pr60393.C
  52d100d1dbf5bb7aaa6e6bec63667dba  gcc/testsuite/g++.dg/cpp1y/pr60573.C
- e870b2124044ac1320cf992f181773a4  gcc/testsuite/g++.dg/cpp1y/pr60626.C
  ccdf243ad72b9b0a028429d373468fef  gcc/testsuite/g++.dg/cpp1y/pr60627.C
  57a0dc24fb99fbd479aab82399935d96  gcc/testsuite/g++.dg/cpp1y/pr60943.C
  36ea8d632059da318eba95db916a7d67  gcc/testsuite/g++.dg/cpp1y/pr61636-1.C
--- 12264,12271 ----
  33d4af5c44499231ca7101f70157f6d2  gcc/testsuite/g++.dg/cpp1y/pr60384.C
  89e823196ea2797ff0cdd8c41652d3c8  gcc/testsuite/g++.dg/cpp1y/pr60390.C
  578fb427264064fa9d0060547416a691  gcc/testsuite/g++.dg/cpp1y/pr60391.C
! 99c763cd99f25e862a2e2810898e21f2  gcc/testsuite/g++.dg/cpp1y/pr60393.C
  52d100d1dbf5bb7aaa6e6bec63667dba  gcc/testsuite/g++.dg/cpp1y/pr60573.C
  ccdf243ad72b9b0a028429d373468fef  gcc/testsuite/g++.dg/cpp1y/pr60627.C
  57a0dc24fb99fbd479aab82399935d96  gcc/testsuite/g++.dg/cpp1y/pr60943.C
  36ea8d632059da318eba95db916a7d67  gcc/testsuite/g++.dg/cpp1y/pr61636-1.C
*************** e498e8a1a8fb8d59ced1bf84781af0c9  gcc/te
*** 12256,12261 ****
--- 12306,12316 ----
  78f7b6310d849e70f4c919b5ac315cb8  gcc/testsuite/g++.dg/cpp1y/pr79435.C
  9b667c9d516823999474daebc2f8ea26  gcc/testsuite/g++.dg/cpp1y/pr79463.C
  d7dcd3f45ee6c394c4e684f054bf67ae  gcc/testsuite/g++.dg/cpp1y/pr82373.C
+ 5e7643db30c8d709c4ece3d86dcf091f  gcc/testsuite/g++.dg/cpp1y/pr83817.C
+ dbace3f995d674f58bab880f12a9759b  gcc/testsuite/g++.dg/cpp1y/pr84496.C
+ 940fc182569446c043306bfa0393ad5d  gcc/testsuite/g++.dg/cpp1y/pr84558.C
+ aea4fd5f8c777c7f1bfde6284bf03cfa  gcc/testsuite/g++.dg/cpp1y/pr84662.C
+ 11abcca649e7c260d96b20dd2bb71bc7  gcc/testsuite/g++.dg/cpp1y/pr85076.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
*************** ffde32febe1810ce3df7e034c7d427c5  gcc/te
*** 12324,12329 ****
--- 12379,12387 ----
  9008b4693cb1fe4b406e549765a2cc71  gcc/testsuite/g++.dg/cpp1y/var-templ54.C
  f47aed01d0a8d51c841d31adce366f2f  gcc/testsuite/g++.dg/cpp1y/var-templ55.C
  62a40ed13d8ec5a53669a5c03be0d97a  gcc/testsuite/g++.dg/cpp1y/var-templ56.C
+ 51a2667f777cf036c412dece4706f6a2  gcc/testsuite/g++.dg/cpp1y/var-templ58.C
+ 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
  3c670164f1a7f8f91ef1db2f80526182  gcc/testsuite/g++.dg/cpp1y/var-templ7.C
  7490ba7f2bf9511118a48f52e8c4ceed  gcc/testsuite/g++.dg/cpp1y/var-templ8.C
*************** e86adbdfc2a88c6fd1414e48d84967e6  gcc/te
*** 12393,12407 ****
--- 12451,12471 ----
  8aff83a5d4681169998cae7e72736be9  gcc/testsuite/g++.dg/cpp1z/class-deduction38.C
  f8fdfc7dec6e57f80913a999f1028494  gcc/testsuite/g++.dg/cpp1z/class-deduction4.C
  28091b915d174f79aadbce8f9f2aac08  gcc/testsuite/g++.dg/cpp1z/class-deduction40.C
+ d7a266361d7550d868f92df5cece8c62  gcc/testsuite/g++.dg/cpp1z/class-deduction49.C
  3667d12b987e4941e8e8777d151d7521  gcc/testsuite/g++.dg/cpp1z/class-deduction5.C
+ 2549753c3429a9203a9489db4ca7b4ba  gcc/testsuite/g++.dg/cpp1z/class-deduction50.C
+ f1683a9e2fc77cfa2ecf5b1a917b5bff  gcc/testsuite/g++.dg/cpp1z/class-deduction51.C
+ 22015d7dca3e418d189fb05288811fe5  gcc/testsuite/g++.dg/cpp1z/class-deduction54.C
  d791376e845f74e3cbe4a5cb5901b290  gcc/testsuite/g++.dg/cpp1z/class-deduction6.C
  8fa13e275a126cab5828334c0381a23f  gcc/testsuite/g++.dg/cpp1z/class-deduction7.C
  3e1851805813e2dfccfde4d6edbd9d87  gcc/testsuite/g++.dg/cpp1z/class-deduction8.C
  25081122404d22b2c035aa2ea1b948b3  gcc/testsuite/g++.dg/cpp1z/class-deduction9.C
+ caf699efc26c388e3126ad559c847c02  gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C
  b70f4276933d24cd68ae2e047a954ece  gcc/testsuite/g++.dg/cpp1z/constexpr-if1.C
  b6d2c8a0f6effa43adb2b3c812b242c8  gcc/testsuite/g++.dg/cpp1z/constexpr-if10.C
  df4fdf3872dad139c769015c77a3a509  gcc/testsuite/g++.dg/cpp1z/constexpr-if11.C
  56fcb4172bdc5b93179f6f6e94b04945  gcc/testsuite/g++.dg/cpp1z/constexpr-if12.C
+ 3810e4ee0ea0f14d611dd0db1a2ac837  gcc/testsuite/g++.dg/cpp1z/constexpr-if13.C
  2dc8e63803073fb37ce116457bb896f8  gcc/testsuite/g++.dg/cpp1z/constexpr-if2.C
  dd7cc15292a815c35ae2ba8f10f74b83  gcc/testsuite/g++.dg/cpp1z/constexpr-if3.C
  a02c2b6b67d061c35cdb50fa03569637  gcc/testsuite/g++.dg/cpp1z/constexpr-if4.C
*************** efbbb53ecbb605f5a50202d0813f9d89  gcc/te
*** 12429,12436 ****
  98b1106ed209b91da77baabfe32a0221  gcc/testsuite/g++.dg/cpp1z/cplusplus.C
  7d7a3a96969595696f9ac8a41581e13f  gcc/testsuite/g++.dg/cpp1z/decomp-bitfield1.C
  5a342aee9595ee7e0002406be439a897  gcc/testsuite/g++.dg/cpp1z/decomp-constexpr1.C
  0907046abd4eeb3337565765eec941bf  gcc/testsuite/g++.dg/cpp1z/decomp1.C
! 31250390e49779e31cbb8ea9125a2de9  gcc/testsuite/g++.dg/cpp1z/decomp10.C
  57f93ca9cbdea95f7230f5a5e0f0c972  gcc/testsuite/g++.dg/cpp1z/decomp11.C
  eb8f6f6cb3f16d3b3e4fd69222e115dc  gcc/testsuite/g++.dg/cpp1z/decomp12.C
  2c966c0ab01d199b88a37c9e6ff47082  gcc/testsuite/g++.dg/cpp1z/decomp13.C
--- 12493,12501 ----
  98b1106ed209b91da77baabfe32a0221  gcc/testsuite/g++.dg/cpp1z/cplusplus.C
  7d7a3a96969595696f9ac8a41581e13f  gcc/testsuite/g++.dg/cpp1z/decomp-bitfield1.C
  5a342aee9595ee7e0002406be439a897  gcc/testsuite/g++.dg/cpp1z/decomp-constexpr1.C
+ 2de75216ee9d6467b8caa151da892d3f  gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C
  0907046abd4eeb3337565765eec941bf  gcc/testsuite/g++.dg/cpp1z/decomp1.C
! 259a3a7f441de62ad34140e1a0b6858e  gcc/testsuite/g++.dg/cpp1z/decomp10.C
  57f93ca9cbdea95f7230f5a5e0f0c972  gcc/testsuite/g++.dg/cpp1z/decomp11.C
  eb8f6f6cb3f16d3b3e4fd69222e115dc  gcc/testsuite/g++.dg/cpp1z/decomp12.C
  2c966c0ab01d199b88a37c9e6ff47082  gcc/testsuite/g++.dg/cpp1z/decomp13.C
*************** d1091dea4099fea8102a725df71218b5  gcc/te
*** 12456,12467 ****
  91635ccf848dc8ca3989cfc2ddc2b4ef  gcc/testsuite/g++.dg/cpp1z/decomp32.C
  181a153149999adbeb8f1bf93ee23049  gcc/testsuite/g++.dg/cpp1z/decomp33.C
  f79ee70d40dffe40ad6203cc06b4e714  gcc/testsuite/g++.dg/cpp1z/decomp34.C
! 3d58d019b7f76fa2253655658f40d9d6  gcc/testsuite/g++.dg/cpp1z/decomp4.C
  f98a9feae4ead80bf6fea589d0978072  gcc/testsuite/g++.dg/cpp1z/decomp5.C
  94932c496662eac8e1fca1974af2185e  gcc/testsuite/g++.dg/cpp1z/decomp6.C
  6d3336af679ac74615e17a984a46d36e  gcc/testsuite/g++.dg/cpp1z/decomp7.C
  40a5735da2979ca0c51c734812daacc9  gcc/testsuite/g++.dg/cpp1z/decomp8.C
  b9eb638ba921c83a5b40a1c0fe229796  gcc/testsuite/g++.dg/cpp1z/decomp9.C
  ffe44a45e298c0e32a10bc0c78a8aa35  gcc/testsuite/g++.dg/cpp1z/direct-enum-init1.C
  f387d749fd22d2b2a196632ba393e6f8  gcc/testsuite/g++.dg/cpp1z/elide1.C
  6b57844cae97efac146accbaaa00449b  gcc/testsuite/g++.dg/cpp1z/elide2.C
--- 12521,12540 ----
  91635ccf848dc8ca3989cfc2ddc2b4ef  gcc/testsuite/g++.dg/cpp1z/decomp32.C
  181a153149999adbeb8f1bf93ee23049  gcc/testsuite/g++.dg/cpp1z/decomp33.C
  f79ee70d40dffe40ad6203cc06b4e714  gcc/testsuite/g++.dg/cpp1z/decomp34.C
! ba06c8a3bf8f2e52f493aceba693bb93  gcc/testsuite/g++.dg/cpp1z/decomp35.C
! 9a1493475a47a1652d3c7e30fe570be4  gcc/testsuite/g++.dg/cpp1z/decomp36.C
! a0b1b80cd241f9f881d8620db4841d7b  gcc/testsuite/g++.dg/cpp1z/decomp37.C
! 394e261e46f25de0d0959a6e07772804  gcc/testsuite/g++.dg/cpp1z/decomp38.C
! c3be5debcaadeed1590bfa9d901b6b4a  gcc/testsuite/g++.dg/cpp1z/decomp4.C
! eb9f8718288112ad5ebd15a4550540bf  gcc/testsuite/g++.dg/cpp1z/decomp41.C
! 1d5ef27ba1bc0d334fdace775bcca4de  gcc/testsuite/g++.dg/cpp1z/decomp42.C
  f98a9feae4ead80bf6fea589d0978072  gcc/testsuite/g++.dg/cpp1z/decomp5.C
  94932c496662eac8e1fca1974af2185e  gcc/testsuite/g++.dg/cpp1z/decomp6.C
  6d3336af679ac74615e17a984a46d36e  gcc/testsuite/g++.dg/cpp1z/decomp7.C
  40a5735da2979ca0c51c734812daacc9  gcc/testsuite/g++.dg/cpp1z/decomp8.C
  b9eb638ba921c83a5b40a1c0fe229796  gcc/testsuite/g++.dg/cpp1z/decomp9.C
+ 9509ca15e5a2e870769110e8de5a598c  gcc/testsuite/g++.dg/cpp1z/desig7.C
+ 1d7a45cf7614a5be2f4f9ef0ed9d126f  gcc/testsuite/g++.dg/cpp1z/desig8.C
  ffe44a45e298c0e32a10bc0c78a8aa35  gcc/testsuite/g++.dg/cpp1z/direct-enum-init1.C
  f387d749fd22d2b2a196632ba393e6f8  gcc/testsuite/g++.dg/cpp1z/elide1.C
  6b57844cae97efac146accbaaa00449b  gcc/testsuite/g++.dg/cpp1z/elide2.C
*************** effb1d8f526c3097004c94008e207544  gcc/te
*** 12503,12509 ****
  f69ee0a615bde7dfd06a3b48e0303b4a  gcc/testsuite/g++.dg/cpp1z/inh-ctor35a.C
  d95a7954c2fb5882e812dea5447bc8e2  gcc/testsuite/g++.dg/cpp1z/inh-ctor36.C
  e00bd522f82d2142164143e052a19333  gcc/testsuite/g++.dg/cpp1z/inh-ctor37.C
! 39b560dfa035bf7b634e086850dc401b  gcc/testsuite/g++.dg/cpp1z/inh-ctor38.C
  73bc70a4a9270cd9a335fe4c011dfa67  gcc/testsuite/g++.dg/cpp1z/init-statement1.C
  70237dd5f262d78110ecadc73c173f6e  gcc/testsuite/g++.dg/cpp1z/init-statement2.C
  7efe39a7622ac59c0b25cf4901ff2c83  gcc/testsuite/g++.dg/cpp1z/init-statement3.C
--- 12576,12582 ----
  f69ee0a615bde7dfd06a3b48e0303b4a  gcc/testsuite/g++.dg/cpp1z/inh-ctor35a.C
  d95a7954c2fb5882e812dea5447bc8e2  gcc/testsuite/g++.dg/cpp1z/inh-ctor36.C
  e00bd522f82d2142164143e052a19333  gcc/testsuite/g++.dg/cpp1z/inh-ctor37.C
! be0b9dc11980180485123e93ea184fee  gcc/testsuite/g++.dg/cpp1z/inh-ctor38.C
  73bc70a4a9270cd9a335fe4c011dfa67  gcc/testsuite/g++.dg/cpp1z/init-statement1.C
  70237dd5f262d78110ecadc73c173f6e  gcc/testsuite/g++.dg/cpp1z/init-statement2.C
  7efe39a7622ac59c0b25cf4901ff2c83  gcc/testsuite/g++.dg/cpp1z/init-statement3.C
*************** bf2c1740cfc229b7a47742a39c42151b  gcc/te
*** 12532,12537 ****
--- 12605,12612 ----
  e0b73494f7b91982a1836c4e948f3eea  gcc/testsuite/g++.dg/cpp1z/launder6.C
  3a812eb8b588d2b291e6a6ba0289d8b3  gcc/testsuite/g++.dg/cpp1z/launder6.cc
  fc7418031e26a28172ef21ddc7c912c4  gcc/testsuite/g++.dg/cpp1z/launder6.h
+ 487d661499bb066b39b803e765439022  gcc/testsuite/g++.dg/cpp1z/launder7.C
+ 8c00bb45a9c85ed9405a729bd816a035  gcc/testsuite/g++.dg/cpp1z/launder8.C
  9dcadfa9d20011f3e066495703f8c81a  gcc/testsuite/g++.dg/cpp1z/maybe_unused1.C
  e0309339d9cc8a24acb2c60a93ceef26  gcc/testsuite/g++.dg/cpp1z/namespace-attribs.C
  66309e5c6cf29618dbd8d7539e8d8d47  gcc/testsuite/g++.dg/cpp1z/nested-namespace-def1.C
*************** f87faeb2982523eb21d5a76f834e642b  gcc/te
*** 12550,12555 ****
--- 12625,12632 ----
  c97d9f51dd4c26b3ec2425a165a6310d  gcc/testsuite/g++.dg/cpp1z/noexcept-type15.C
  a57f9fa4a6d53699eb96b792afff1ac8  gcc/testsuite/g++.dg/cpp1z/noexcept-type16.C
  8fbde3d440dd8be42092f9ad3ebda48d  gcc/testsuite/g++.dg/cpp1z/noexcept-type17.C
+ 1d6c970ba35b0f8e2fe58b4474bb2d46  gcc/testsuite/g++.dg/cpp1z/noexcept-type19.C
+ 33ce675622544b3ea51091070fed1e79  gcc/testsuite/g++.dg/cpp1z/noexcept-type19.h
  14281105c789c8c4ade960f8b6416e9d  gcc/testsuite/g++.dg/cpp1z/noexcept-type2.C
  9ca1a972213d8d43ce70d96650351299  gcc/testsuite/g++.dg/cpp1z/noexcept-type3.C
  cf63743589e80c4e4a015c49bce3ebd0  gcc/testsuite/g++.dg/cpp1z/noexcept-type4.C
*************** bed8d123852d255e811f9196daf3eaba  gcc/te
*** 12695,12700 ****
--- 12772,12779 ----
  c97b36f101808a4d1b88e966d08df228  gcc/testsuite/g++.dg/debug/dwarf2/pr79129.C
  3ab0da15d5f47d7a8b827b5c7757e2f0  gcc/testsuite/g++.dg/debug/dwarf2/pr80234-1.C
  97746fde88b3156e4e9704f6bad8eb65  gcc/testsuite/g++.dg/debug/dwarf2/pr80234-2.C
+ a6b0d9b886cd92ee869a01fd967f123e  gcc/testsuite/g++.dg/debug/dwarf2/pr87462.C
+ eb8df2f4b1148c5f6b77553d91cb7877  gcc/testsuite/g++.dg/debug/dwarf2/pr88006.C
  48e69b012a6da8a3f37c0eea7d671389  gcc/testsuite/g++.dg/debug/dwarf2/ptrdmem-1.C
  5d8f03fa19703b37b960eccf4cdd64b6  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C
  69071f2ae478f0d1d78f2bcbfbd97e32  gcc/testsuite/g++.dg/debug/dwarf2/pubnames-2.C
*************** f1fa5cf0ff0d4ecdd2e636f162a3a570  gcc/te
*** 12842,12847 ****
--- 12921,12927 ----
  91df374c8aee5a90dd28fd3ee9193d32  gcc/testsuite/g++.dg/diagnostic/pr77949.C
  29ed80e4986945b87f11fecaa93456ba  gcc/testsuite/g++.dg/diagnostic/pr79304.C
  70f43920199e24ee81a25dfafae68a98  gcc/testsuite/g++.dg/diagnostic/pr80473.C
+ 57b92c115e79109cf96eddc39b98af38  gcc/testsuite/g++.dg/diagnostic/pr85464.C
  bb193b240fa78433d956d57357da2858  gcc/testsuite/g++.dg/diagnostic/ref1.C
  b70b854343c43b4b0eac609476ee8fc1  gcc/testsuite/g++.dg/diagnostic/ref2.C
  c5118b2b3d40ad89746624615a874180  gcc/testsuite/g++.dg/diagnostic/string-literal-concat.C
*************** d377fb4f9ef6d1ed2029c1551ddf7e3b  gcc/te
*** 13145,13150 ****
--- 13225,13233 ----
  25fbbf0ac13b6baebc40ebabaedfe317  gcc/testsuite/g++.dg/ext/asm11.C
  e44c9c980378260d4b601d86e9cc1197  gcc/testsuite/g++.dg/ext/asm12.C
  0262e403551bf2b3da1b5f7349d74e00  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
*************** e5f9fb7d1c25afe2ab0823f495d251e5  gcc/te
*** 13160,13165 ****
--- 13243,13249 ----
  50fb8b6924b95bd4f52f0db40ed5d5ec  gcc/testsuite/g++.dg/ext/atomic-1.C
  7c55adab57f8900b7952c724d9d1ac37  gcc/testsuite/g++.dg/ext/atomic-2.C
  08df1b213d9eeb12775360e53eec043b  gcc/testsuite/g++.dg/ext/atomic-3.C
+ 3bd94d186fb606881384da59e8f70e70  gcc/testsuite/g++.dg/ext/atomic-4.C
  f48f0952142f3f8ed8f9b4eb6628059f  gcc/testsuite/g++.dg/ext/attr-alias-1.C
  c21af9dbc94718fc298b5a372185c516  gcc/testsuite/g++.dg/ext/attr-alias-2.C
  c539a731f1a6de3f18f5433e194cc609  gcc/testsuite/g++.dg/ext/attr-alias-3.C
*************** ad620f3309b132f76780e1b18d9ccf44  gcc/te
*** 13170,13175 ****
--- 13254,13260 ----
  620342cf7dd87891e3a40fc63c98d22a  gcc/testsuite/g++.dg/ext/attr-ifunc-2.C
  83efbf34de5241ab0549d1572e2ca5f8  gcc/testsuite/g++.dg/ext/attr-ifunc-3.C
  bd27697247540ba2feb467794ccaa56d  gcc/testsuite/g++.dg/ext/attr-ifunc-4.C
+ c0753527e7e02acfc0eb52c0c85b43ad  gcc/testsuite/g++.dg/ext/attr-noinline-4.C
  5c2088defb983e68f4b6df2ee178d499  gcc/testsuite/g++.dg/ext/attr-used-1.C
  6ce972d5686790fe9c2f5bbd08661b2f  gcc/testsuite/g++.dg/ext/attrib1.C
  7e9f8e5acd7da503c63f6342955e1873  gcc/testsuite/g++.dg/ext/attrib10.C
*************** e84d64a7fbea15d590f3a2780abeffe4  gcc/te
*** 13253,13258 ****
--- 13338,13345 ----
  2688425f4bb09561395ab602acbbe5c1  gcc/testsuite/g++.dg/ext/builtin1.C
  913f9cc9acadced31bfe1ff51190752e  gcc/testsuite/g++.dg/ext/builtin10.C
  0159469d5f1eba2e6013c4c9e15f33ea  gcc/testsuite/g++.dg/ext/builtin11.C
+ 37c90bd75d238839255f0ee41d62aaab  gcc/testsuite/g++.dg/ext/builtin12.C
+ 37b1b92015b909a10a6517be87a9172f  gcc/testsuite/g++.dg/ext/builtin13.C
  4b79f0ca012fab75e5085a3acc4d333d  gcc/testsuite/g++.dg/ext/builtin2.C
  3fe483f5be2f7d7e3d26cd0d4864ba98  gcc/testsuite/g++.dg/ext/builtin3.C
  7c883048f0ed19d3dcbf405e1cf70cd0  gcc/testsuite/g++.dg/ext/builtin30.C
*************** f316c6cb603f1746eab7e3d67e84b5c4  gcc/te
*** 13460,13465 ****
--- 13547,13553 ----
  a9c9c773110bfd7f4dab4894b851f80d  gcc/testsuite/g++.dg/ext/is_trivially_constructible2.C
  c8b5af558a67cf874bb7bd69c49e93fb  gcc/testsuite/g++.dg/ext/is_trivially_constructible3.C
  76b226bf6ae177c81d4a2cf611add294  gcc/testsuite/g++.dg/ext/is_trivially_constructible4.C
+ 274ba6a4204132602ce81bb35c3ad2c9  gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C
  f68f695366fe576aaf12aeac3127a68d  gcc/testsuite/g++.dg/ext/is_union.C
  db0b295df95be25a97d67c002c45679e  gcc/testsuite/g++.dg/ext/ivdep-1.C
  81d5dcb570c603e51795c99355ec35f2  gcc/testsuite/g++.dg/ext/label1.C
*************** fb55d0e97756a33733f9bed9c07f8d0c  gcc/te
*** 13517,13522 ****
--- 13605,13612 ----
  65500604aa4619c879e00b15d9af5814  gcc/testsuite/g++.dg/ext/no-asm-2.C
  d5f662860124db72994e984fae6aac16  gcc/testsuite/g++.dg/ext/no-gnu-keywords-1.C
  edda0cc74c7d9533e37486b8713a3253  gcc/testsuite/g++.dg/ext/offsetof1.C
+ 47de43f8c508e21a684ca894d9bba346  gcc/testsuite/g++.dg/ext/offsetof2.C
+ 66473ff315effef0c96c785e95efe718  gcc/testsuite/g++.dg/ext/offsetof3.C
  8f3e3432664712c939fe6dea74deb533  gcc/testsuite/g++.dg/ext/oper1.C
  57293062af51d172446e19a8b1bd8167  gcc/testsuite/g++.dg/ext/packed10.C
  9cb80a2f0d2b2720aea9e37828f44d0f  gcc/testsuite/g++.dg/ext/packed11.C
*************** a3c7886e27f3c3227c55814be00ca890  gcc/te
*** 13574,13579 ****
--- 13664,13670 ----
  202c9dc1d40064ba895afcf341129f31  gcc/testsuite/g++.dg/ext/stmtexpr18.C
  697a11dfa8a2edf690d95082c330ae95  gcc/testsuite/g++.dg/ext/stmtexpr19.C
  e6bc1a09cf3c9d838c7ad4575c3d8740  gcc/testsuite/g++.dg/ext/stmtexpr2.C
+ 4d09ca3f75571211a1af55640503553d  gcc/testsuite/g++.dg/ext/stmtexpr22.C
  15be25b1a07f94e4d65103bfb52d6406  gcc/testsuite/g++.dg/ext/stmtexpr3.C
  7f4e8ebedb382ebc1349d7067b034121  gcc/testsuite/g++.dg/ext/stmtexpr4.C
  a6cc01634e0bd707301c873f2d35f891  gcc/testsuite/g++.dg/ext/stmtexpr5.C
*************** bc5e3935f9fd3f5f54ca89ee581b2c03  gcc/te
*** 13720,13725 ****
--- 13811,13817 ----
  da4518aa692947ef4c1cc1de9617e5d0  gcc/testsuite/g++.dg/ext/visibility/fvisibility-override2.C
  3a72a00418a387a4b941484f8782c6dd  gcc/testsuite/g++.dg/ext/visibility/fvisibility.C
  e803713a7240f84bdbab19c61f163d46  gcc/testsuite/g++.dg/ext/visibility/guard1.C
+ f6c9b76088d42f826ec014ca9ff2d0d6  gcc/testsuite/g++.dg/ext/visibility/lambda1.C
  f6ac3f034af2478f3ae3854a6b304cdb  gcc/testsuite/g++.dg/ext/visibility/local1.C
  d7e8086561549b3830b812ca5fcd9dd6  gcc/testsuite/g++.dg/ext/visibility/memfuncts.C
  7fbb869ca12df2407fdf22d0ba22baac  gcc/testsuite/g++.dg/ext/visibility/ms-compat-1.C
*************** d064d37eab722d0bbe6af95ae3d5c12d  gcc/te
*** 13777,13782 ****
--- 13869,13875 ----
  360895db3c1d93f3058f39a26cbf8a66  gcc/testsuite/g++.dg/ext/vla15.C
  79eef5be10ddbbef5af56947e2564ee0  gcc/testsuite/g++.dg/ext/vla16.C
  812eb35a45a954f99a0c5977b99a8174  gcc/testsuite/g++.dg/ext/vla17.C
+ f964b5b8563862b3b5de4077cc1fb8e4  gcc/testsuite/g++.dg/ext/vla18.C
  0764dadafc6c8278bbdc750a46f94ca8  gcc/testsuite/g++.dg/ext/vla2.C
  f603634b7e2ab93b87e602f38ebcc397  gcc/testsuite/g++.dg/ext/vla3.C
  ed33dc2d9d15f2684fe9377a6ae1b33d  gcc/testsuite/g++.dg/ext/vla4.C
*************** b818df42e2e83be27f8843cc160f0681  gcc/te
*** 14009,14014 ****
--- 14102,14112 ----
  61f6175348fda4d4917305d233417a28  gcc/testsuite/g++.dg/gomp/pr80141.C
  ba547a4dc52e5fa57b7cf7b21dfac263  gcc/testsuite/g++.dg/gomp/pr81011.C
  002e68c629105684ed6e09f1c3c9f806  gcc/testsuite/g++.dg/gomp/pr81154.C
+ 54e312e994ab6dd396abd0e47383da05  gcc/testsuite/g++.dg/gomp/pr84430.C
+ 7acf455fdf4b520ecba029196c8446ce  gcc/testsuite/g++.dg/gomp/pr84448.C
+ d43c7636f8d004a836e8c8543a39d4aa  gcc/testsuite/g++.dg/gomp/pr84556.C
+ 509552ea6a4e3381b95cf49447f0217f  gcc/testsuite/g++.dg/gomp/pr84557.C
+ f4af350e7c840b674d4df142d3432e80  gcc/testsuite/g++.dg/gomp/pr84791.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
*************** eee43d821eddc990c3c1e71480186ee2  gcc/te
*** 14072,14077 ****
--- 14170,14176 ----
  be57153d0806c5827262dfc205d1ddd5  gcc/testsuite/g++.dg/guality/pr55541.C
  09c7cb75ec3ba3ba9c29f5a1956f9e7c  gcc/testsuite/g++.dg/guality/pr55665.C
  1f6434a711b21741e7f18945125f326d  gcc/testsuite/g++.dg/guality/pr67192.C
+ a3cda500f9e56b21000414a6bf005515  gcc/testsuite/g++.dg/guality/pr86687.C
  8773744d52f1fedc9192c4b6b54678d9  gcc/testsuite/g++.dg/guality/redeclaration1.C
  d4b1aa612cf9b628d986d19617ad2770  gcc/testsuite/g++.dg/header.C
  176e66df5d6aa9dd76c8fe406b78a370  gcc/testsuite/g++.dg/inherit/access1.C
*************** a30e748e839e3234af2982a8507640f3  gcc/te
*** 14105,14110 ****
--- 14204,14210 ----
  1a712ed4a3f761571bfe894372a9032b  gcc/testsuite/g++.dg/inherit/covariant2.C
  3f2664dc416902abf3e84a4d95de8f7a  gcc/testsuite/g++.dg/inherit/covariant20.C
  3b17afe813a33607cf98920580202062  gcc/testsuite/g++.dg/inherit/covariant21.C
+ f67e485245faa505d24f220233d8e970  gcc/testsuite/g++.dg/inherit/covariant22.C
  24ff947b4da8f1fcee6c7b66d8388009  gcc/testsuite/g++.dg/inherit/covariant3.C
  8c6bb6aaa56fa2bea8b375c52fab5688  gcc/testsuite/g++.dg/inherit/covariant4.C
  93a19aa63029d81a5f4f59b8b81d11a8  gcc/testsuite/g++.dg/inherit/covariant5.C
*************** b00cbbf0a7198ffe55206723b3837c1a  gcc/te
*** 14378,14384 ****
  cbd73e68a7e047fb1fead38045398b76  gcc/testsuite/g++.dg/init/new41.C
  d11503933ddf4a9a5fa720f05ff832e4  gcc/testsuite/g++.dg/init/new42.C
  fd6869398cfa2f62439ddff9ad272dee  gcc/testsuite/g++.dg/init/new43.C
! c79ea9a4ffee3033ad6ef4aa38d44935  gcc/testsuite/g++.dg/init/new44.C
  d2d77d6c719441f941b5b510dcb137a2  gcc/testsuite/g++.dg/init/new45.C
  7d357b38717d9bc4094e5d7cc77d069d  gcc/testsuite/g++.dg/init/new46.C
  92f9a4a5c99df62b928e07de2269fcc8  gcc/testsuite/g++.dg/init/new47.C
--- 14478,14484 ----
  cbd73e68a7e047fb1fead38045398b76  gcc/testsuite/g++.dg/init/new41.C
  d11503933ddf4a9a5fa720f05ff832e4  gcc/testsuite/g++.dg/init/new42.C
  fd6869398cfa2f62439ddff9ad272dee  gcc/testsuite/g++.dg/init/new43.C
! 871ff62d499ee9a40413702b357f204f  gcc/testsuite/g++.dg/init/new44.C
  d2d77d6c719441f941b5b510dcb137a2  gcc/testsuite/g++.dg/init/new45.C
  7d357b38717d9bc4094e5d7cc77d069d  gcc/testsuite/g++.dg/init/new46.C
  92f9a4a5c99df62b928e07de2269fcc8  gcc/testsuite/g++.dg/init/new47.C
*************** a5a0c6bb188e4c01d4db2d84a5014752  gcc/te
*** 14423,14428 ****
--- 14523,14529 ----
  788ed5b002d14f945d06c72d6b7c78bc  gcc/testsuite/g++.dg/init/pr69658.C
  154196e0320831a54c0ed5e880a704cd  gcc/testsuite/g++.dg/init/pr70501.C
  effadbfc637d03ffccebf5ad6b37c6c0  gcc/testsuite/g++.dg/init/pr71516.C
+ f4a9a1e164470931fa7976c132918e97  gcc/testsuite/g++.dg/init/pr83993-2.C
  697d82f637fb8839d98efadd58ededf5  gcc/testsuite/g++.dg/init/ptrfn1.C
  c3eaccdcf8e35f944dee4d4b3d720336  gcc/testsuite/g++.dg/init/ptrfn2.C
  111716aa5bd4c456321772f776bd97d1  gcc/testsuite/g++.dg/init/ptrfn3.C
*************** eac75da8029ebf097e358f87837418c2  gcc/te
*** 14467,14473 ****
  4e0fdfa0a67cd3c3e1f1a9752829fecf  gcc/testsuite/g++.dg/init/static4.C
  8b181745d241d484dd529391acd12c57  gcc/testsuite/g++.dg/init/string1.C
  58b4c5838fafdec40fe718447129945f  gcc/testsuite/g++.dg/init/struct1.C
! 4659e4a9f0e209d3efc6a3da61e47a06  gcc/testsuite/g++.dg/init/struct2.C
  22d61e3cdadcbb46755a2e1556954646  gcc/testsuite/g++.dg/init/struct3.C
  fb4e7d34dd521424475c02bd1379d218  gcc/testsuite/g++.dg/init/switch1.C
  ab02e565927ee50b37c774159922e9d9  gcc/testsuite/g++.dg/init/synth1.C
--- 14568,14574 ----
  4e0fdfa0a67cd3c3e1f1a9752829fecf  gcc/testsuite/g++.dg/init/static4.C
  8b181745d241d484dd529391acd12c57  gcc/testsuite/g++.dg/init/string1.C
  58b4c5838fafdec40fe718447129945f  gcc/testsuite/g++.dg/init/struct1.C
! ecbe90032bd93aed4a7b737be9838847  gcc/testsuite/g++.dg/init/struct2.C
  22d61e3cdadcbb46755a2e1556954646  gcc/testsuite/g++.dg/init/struct3.C
  fb4e7d34dd521424475c02bd1379d218  gcc/testsuite/g++.dg/init/switch1.C
  ab02e565927ee50b37c774159922e9d9  gcc/testsuite/g++.dg/init/synth1.C
*************** c5be5b54243f6264bf84d49d4a16947c  gcc/te
*** 14676,14681 ****
--- 14777,14783 ----
  e9a3cd760e81664690da407f52b34364  gcc/testsuite/g++.dg/ipa/pr82352.C
  05592a0935fec817a7688eb12baa50c2  gcc/testsuite/g++.dg/ipa/pr82801.C
  a6ea68da40fdbc3c5627d8fd52058c74  gcc/testsuite/g++.dg/ipa/pr83549.C
+ d31daabe5d2bb29c818c1bbbe31a5a4b  gcc/testsuite/g++.dg/ipa/pr84658.C
  33a70012ed132fa7937f4953a4dc0f17  gcc/testsuite/g++.dg/ipa/pure-const-1.C
  c5bddc0233cbf24a8f75d96eb5685658  gcc/testsuite/g++.dg/ipa/pure-const-2.C
  b98de12e73f586f35f30ed6bf46a1463  gcc/testsuite/g++.dg/ipa/pure-const-3.C
*************** e2528624f74d72e058180aa73e89ab6b  gcc/te
*** 15327,15332 ****
--- 15429,15435 ----
  e3e63ced4f57071fce511810c74aa7be  gcc/testsuite/g++.dg/opt/pr36185.C
  9462fd9d3dbf2f96d18c423969b0a4f2  gcc/testsuite/g++.dg/opt/pr36187.C
  cf0bf4d4ab4024bd8b79002f9cfced1e  gcc/testsuite/g++.dg/opt/pr36449.C
+ 866a18905bd8cd2b3cc75156c0f7e43b  gcc/testsuite/g++.dg/opt/pr3698.C
  8fad458588ec31543de9506cdbd39461  gcc/testsuite/g++.dg/opt/pr39607.C
  d6a356e006ceb7cfd944f66314b28fac  gcc/testsuite/g++.dg/opt/pr40496.C
  5932b660e4368861f26ec5f7e1c980d4  gcc/testsuite/g++.dg/opt/pr42295.C
*************** f635f5c3eb615c7f94a708ab4fea5e47  gcc/te
*** 15430,15435 ****
--- 15533,15539 ----
  2b6feebad4b0325edc22f61d348816ca  gcc/testsuite/g++.dg/opt/pr78201.C
  01755f639353699f5b2ca77ad80febca  gcc/testsuite/g++.dg/opt/pr78373.C
  b8ca536d41e8477bd6c838e3069600de  gcc/testsuite/g++.dg/opt/pr78901.C
+ 4aecaf86eb3f2b59e22e6b9a2883dad9  gcc/testsuite/g++.dg/opt/pr79085.C
  4b62fdd883db12cb5eca8e85001a63b2  gcc/testsuite/g++.dg/opt/pr79267.C
  23fbbe3312a22eb4c300b6e8552085cc  gcc/testsuite/g++.dg/opt/pr79396.C
  32c1eadc1681e4670392d028173d847d  gcc/testsuite/g++.dg/opt/pr79734.C
*************** b8ca536d41e8477bd6c838e3069600de  gcc/te
*** 15444,15449 ****
--- 15548,15554 ----
  51275b1dfdc4bd6a07a6ff88ac8d81c3  gcc/testsuite/g++.dg/opt/pr83084.C
  ef14b1c0d0459097940d563471958957  gcc/testsuite/g++.dg/opt/pr83608.C
  58b650e9e9104f63b1cccbbef63a1887  gcc/testsuite/g++.dg/opt/pr83609.C
+ ca10d6d09de6260347893fccdabd81a8  gcc/testsuite/g++.dg/opt/pr85196.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
*************** e9155c2c93a966422697725e5965e0c1  gcc/te
*** 15516,15522 ****
  25bec11b40119085408d52eaa5b86f6e  gcc/testsuite/g++.dg/other/anon2.C
  ac03cab67f2c4f5731d36b19f2ee4f42  gcc/testsuite/g++.dg/other/anon3.C
  735bc52cab8eca56a711c2c10845c981  gcc/testsuite/g++.dg/other/anon4.C
! 6d368030a15296375251b49a071901f4  gcc/testsuite/g++.dg/other/anon5.C
  1c68df289b2577a8e2753eaf82704fed  gcc/testsuite/g++.dg/other/anon6.C
  6bdea0a90642ef923b08522ad0f6f67b  gcc/testsuite/g++.dg/other/anon7.C
  f282d7d63120a2f2e0ee707e7dd2fe1e  gcc/testsuite/g++.dg/other/anon8.C
--- 15621,15627 ----
  25bec11b40119085408d52eaa5b86f6e  gcc/testsuite/g++.dg/other/anon2.C
  ac03cab67f2c4f5731d36b19f2ee4f42  gcc/testsuite/g++.dg/other/anon3.C
  735bc52cab8eca56a711c2c10845c981  gcc/testsuite/g++.dg/other/anon4.C
! fd4316c02caafdf6cdbbcfe7f9ff8982  gcc/testsuite/g++.dg/other/anon5.C
  1c68df289b2577a8e2753eaf82704fed  gcc/testsuite/g++.dg/other/anon6.C
  6bdea0a90642ef923b08522ad0f6f67b  gcc/testsuite/g++.dg/other/anon7.C
  f282d7d63120a2f2e0ee707e7dd2fe1e  gcc/testsuite/g++.dg/other/anon8.C
*************** a9957b37b938af52bd091dea4f661da6  gcc/te
*** 15792,15797 ****
--- 15897,15905 ----
  37c0f6f7c04f78d10db7b76974117a16  gcc/testsuite/g++.dg/other/switch2.C
  bb7141945a25ded3ef95f8a4fab53bff  gcc/testsuite/g++.dg/other/switch3.C
  9bae0d01ef429f94e58c536f39c9ca7b  gcc/testsuite/g++.dg/other/synth1.C
+ bbbc42226f302577b317dbefbed13e8a  gcc/testsuite/g++.dg/other/thunk1.C
+ 123a1d9e28482bdcbc8dda30bc694c21  gcc/testsuite/g++.dg/other/thunk2a.C
+ 96ef308c0639c20dcd512d32e427f5f8  gcc/testsuite/g++.dg/other/thunk2b.C
  b3cee6698f91dc967087653171b6e50b  gcc/testsuite/g++.dg/other/typedef1.C
  2ae83dd33030d45c71b8674e327b61aa  gcc/testsuite/g++.dg/other/typedef2.C
  d4120067ea2a2f801d8e1d6c528e17e6  gcc/testsuite/g++.dg/other/typedef3.C
*************** de750a0f45576779662c617a85381256  gcc/te
*** 15813,15819 ****
  26c3e723ec1cf92ad6b8e63c466fb9e8  gcc/testsuite/g++.dg/other/void2.C
  82292981a24833a42c1fbb42d264143c  gcc/testsuite/g++.dg/other/void3.C
  7904744316bd21dc51afccc99c175c0f  gcc/testsuite/g++.dg/other/vrp1.C
- bbbc42226f302577b317dbefbed13e8a  gcc/testsuite/g++.dg/other/vthunk1.C
  920e26dc1d208f4b8eb154039ac70505  gcc/testsuite/g++.dg/other/warning1.C
  e01d22af2bf54a4df755dfb677defefb  gcc/testsuite/g++.dg/overload/VLA.C
  31a1eb67025f875651678e52a1e2b3d1  gcc/testsuite/g++.dg/overload/addr1.C
--- 15921,15926 ----
*************** bc8c4ed875b2c4b0e6b1ec9bcec25d41  gcc/te
*** 15916,15922 ****
  0befa26c74e8cbfa279f5b49a61408eb  gcc/testsuite/g++.dg/parse/angle-bracket2.C
  4d4f8ace7c1f4d0f32bbd4530d5b07c1  gcc/testsuite/g++.dg/parse/args1.C
  daf5f5fa938643351cbd008ccc3bb60f  gcc/testsuite/g++.dg/parse/array-size1.C
! cb1d8b1932a8d9b7101512c947816f33  gcc/testsuite/g++.dg/parse/array-size2.C
  765f7e5bc908ac50e66bdeeac57851f0  gcc/testsuite/g++.dg/parse/asm1.C
  16b06ccce5dbf6640797da7bada365f5  gcc/testsuite/g++.dg/parse/asm2.C
  231816ebf0d1f8c23a7446536f02f2fa  gcc/testsuite/g++.dg/parse/asm3.C
--- 16023,16029 ----
  0befa26c74e8cbfa279f5b49a61408eb  gcc/testsuite/g++.dg/parse/angle-bracket2.C
  4d4f8ace7c1f4d0f32bbd4530d5b07c1  gcc/testsuite/g++.dg/parse/args1.C
  daf5f5fa938643351cbd008ccc3bb60f  gcc/testsuite/g++.dg/parse/array-size1.C
! 4087b31a8ee936c7f226358b9350d268  gcc/testsuite/g++.dg/parse/array-size2.C
  765f7e5bc908ac50e66bdeeac57851f0  gcc/testsuite/g++.dg/parse/asm1.C
  16b06ccce5dbf6640797da7bada365f5  gcc/testsuite/g++.dg/parse/asm2.C
  231816ebf0d1f8c23a7446536f02f2fa  gcc/testsuite/g++.dg/parse/asm3.C
*************** d7aa943dfdc3e99eede0b5a6dc692306  gcc/te
*** 16027,16033 ****
  9780b0576f8f381caa012fd27c2b608b  gcc/testsuite/g++.dg/parse/crash64.C
  3fae4596904aa2d63a517ea2ea3ed98a  gcc/testsuite/g++.dg/parse/crash65.C
  07930e0dbd20d96ea69be3ee056c6870  gcc/testsuite/g++.dg/parse/crash66.C
! b01e370f78d3f590266a0c2e361ea94e  gcc/testsuite/g++.dg/parse/crash67.C
  34393b72e5dec85fca930dee15e2f669  gcc/testsuite/g++.dg/parse/crash7.C
  5818f331167c496db06ad694932a1beb  gcc/testsuite/g++.dg/parse/crash9.C
  5940e29a523673e2c47048c21c11d678  gcc/testsuite/g++.dg/parse/ctor1.C
--- 16134,16140 ----
  9780b0576f8f381caa012fd27c2b608b  gcc/testsuite/g++.dg/parse/crash64.C
  3fae4596904aa2d63a517ea2ea3ed98a  gcc/testsuite/g++.dg/parse/crash65.C
  07930e0dbd20d96ea69be3ee056c6870  gcc/testsuite/g++.dg/parse/crash66.C
! 066015727bd8653e221161866efece0a  gcc/testsuite/g++.dg/parse/crash67.C
  34393b72e5dec85fca930dee15e2f669  gcc/testsuite/g++.dg/parse/crash7.C
  5818f331167c496db06ad694932a1beb  gcc/testsuite/g++.dg/parse/crash9.C
  5940e29a523673e2c47048c21c11d678  gcc/testsuite/g++.dg/parse/ctor1.C
*************** da36360b1eaeaaf6b1adffefc9001717  gcc/te
*** 16490,16495 ****
--- 16597,16603 ----
  483cdd786d54a70863a7f43e89c3e57b  gcc/testsuite/g++.dg/pr57662.C
  81d244cbbe16d1fd91f82022ebe24bc4  gcc/testsuite/g++.dg/pr57878.C
  511234314f9b0a3ba0b9f5c6d7080948  gcc/testsuite/g++.dg/pr58123.C
+ c264814a0c0edc24308de82b796441e3  gcc/testsuite/g++.dg/pr58372.C
  a1888ee89e80f1205b9ddb9cc86a5133  gcc/testsuite/g++.dg/pr58389.C
  0c280631aeb0bc616580714fa3ff6cac  gcc/testsuite/g++.dg/pr58438.C
  1afffa3d74939421dcfa7501280f88dd  gcc/testsuite/g++.dg/pr58950.C
*************** bfc1d08789ff600f77190c59b402a8ec  gcc/te
*** 16588,16593 ****
--- 16696,16703 ----
  b5452fdc9af692c5acb4d9af45519954  gcc/testsuite/g++.dg/pr81007.C
  11fd788c1699adfa6c7e984373e41c98  gcc/testsuite/g++.dg/pr82128.C
  0776b7a6a5995c6b17c86a9c10abbdb2  gcc/testsuite/g++.dg/pr82155.C
+ da4464f64c7ae819c4a0629cfaf7095e  gcc/testsuite/g++.dg/pr84279.C
+ e4a1820535e55911e89f64e30d107b90  gcc/testsuite/g++.dg/pr85026.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
*************** f64b5dcbfa3d3051a358c8d1c1e8a878  gcc/te
*** 17010,17015 ****
--- 17120,17126 ----
  3e39818cd75d670c263210d492e83fc2  gcc/testsuite/g++.dg/template/dependent-args1.C
  ba2918f2d50d14da19e142ac392345e1  gcc/testsuite/g++.dg/template/dependent-base1.C
  2cfeba0039a93060ff77245f34166e52  gcc/testsuite/g++.dg/template/dependent-base2.C
+ 1ea2af4911d47cd67d9e3ab837ef48bc  gcc/testsuite/g++.dg/template/dependent-base3.C
  4e28ad3da9cf0f80841dd7ac6a9a0233  gcc/testsuite/g++.dg/template/dependent-expr1.C
  10b3f1b7a34c9d4e9be1e9844babd34d  gcc/testsuite/g++.dg/template/dependent-expr10.C
  5c363f74bcfd32858f0d7daa76f3d56b  gcc/testsuite/g++.dg/template/dependent-expr2.C
*************** d5d24fc94d133229a10c5b13f44c253b  gcc/te
*** 17211,17216 ****
--- 17322,17328 ----
  bead5f49843ac4a923c8b06419fc1688  gcc/testsuite/g++.dg/template/function1.C
  4b00efc6df70febef975b0e3b186b589  gcc/testsuite/g++.dg/template/incomplete1.C
  6eb242700c6d66d2e369769157f668e1  gcc/testsuite/g++.dg/template/incomplete10.C
+ 013b3193d7f45f44f8c7e8a4b8e35e24  gcc/testsuite/g++.dg/template/incomplete11.C
  df42e6e9d79980210f8fc115b6f3ea26  gcc/testsuite/g++.dg/template/incomplete2.C
  0b05707ff39fe3ad9f22ea6ba6d5be2c  gcc/testsuite/g++.dg/template/incomplete3.C
  8b8acaf760a13971063951b263ef315c  gcc/testsuite/g++.dg/template/incomplete4.C
*************** d2f711147c60030525ec70290e759fca  gcc/te
*** 17373,17378 ****
--- 17485,17491 ----
  30d31ed2484da393d79f5ad4a32e80cf  gcc/testsuite/g++.dg/template/non-type-template-argument-1.C
  c68d85d18e13eca7b98c51e07b278cf0  gcc/testsuite/g++.dg/template/non-type1.C
  34f277f524d88aeae4c0aec9d722fe04  gcc/testsuite/g++.dg/template/nontype-array1.C
+ 70124329ed68a5623ae87b10ff25d9a9  gcc/testsuite/g++.dg/template/nontype-fn1.C
  0841e0681f53f5792b711984e991f3a8  gcc/testsuite/g++.dg/template/nontype1.C
  e9af055ac6a0774b7565e0722c861adb  gcc/testsuite/g++.dg/template/nontype10.C
  9ba9723e8601b19208ac3f8350ee6695  gcc/testsuite/g++.dg/template/nontype11.C
*************** e94ec27485e6a01d93716524e71f7e4d  gcc/te
*** 18379,18385 ****
  1a5141d0024cd5aaec602821dfe13e1b  gcc/testsuite/g++.dg/torture/pr71571.C
  6d87997ae70f613b7ae47faba21523d9  gcc/testsuite/g++.dg/torture/pr71874.C
  a15c060e2c22c6e58169d9828fadc150  gcc/testsuite/g++.dg/torture/pr77674.C
! ce8345cc9d8686b468b76e778132c7c3  gcc/testsuite/g++.dg/torture/pr77745.C
  3ae4600309b6106a97263eaea5369b8b  gcc/testsuite/g++.dg/torture/pr77822.C
  ea126398515e20d945d8e298598ba010  gcc/testsuite/g++.dg/torture/pr77919-2.C
  8fcdf2e7c90f945065444414bbe585b8  gcc/testsuite/g++.dg/torture/pr77919.C
--- 18492,18499 ----
  1a5141d0024cd5aaec602821dfe13e1b  gcc/testsuite/g++.dg/torture/pr71571.C
  6d87997ae70f613b7ae47faba21523d9  gcc/testsuite/g++.dg/torture/pr71874.C
  a15c060e2c22c6e58169d9828fadc150  gcc/testsuite/g++.dg/torture/pr77674.C
! 906679c5de97fe31d0eaec73c19ef8ed  gcc/testsuite/g++.dg/torture/pr77745-2.C
! 7adcd400085a046be122b17236d8a414  gcc/testsuite/g++.dg/torture/pr77745.C
  3ae4600309b6106a97263eaea5369b8b  gcc/testsuite/g++.dg/torture/pr77822.C
  ea126398515e20d945d8e298598ba010  gcc/testsuite/g++.dg/torture/pr77919-2.C
  8fcdf2e7c90f945065444414bbe585b8  gcc/testsuite/g++.dg/torture/pr77919.C
*************** bff863905887579e8aac699fddb4b928  gcc/te
*** 18415,18421 ****
--- 18529,18543 ----
  7b31d7e6cf7338af5c217f792e597cec  gcc/testsuite/g++.dg/torture/pr82902.C
  c27ff8c719172e781d9a4d4c2da6a666  gcc/testsuite/g++.dg/torture/pr82985.C
  35480e23a9f13b249e2b78984fea51a7  gcc/testsuite/g++.dg/torture/pr83471.C
+ 86ac2e7064e5bf87450bd9e1e9a21024  gcc/testsuite/g++.dg/torture/pr83659.C
  80e19475a80104f2c2cb4bf4bbca1f3c  gcc/testsuite/g++.dg/torture/pr83713.C
+ 83254597583931853d8d25224f6bade3  gcc/testsuite/g++.dg/torture/pr84190.C
+ dea7b576a4c2e4d3fcde36a40bb8ba54  gcc/testsuite/g++.dg/torture/pr84233.C
+ 17b768d13833c7decabab6d0767f4274  gcc/testsuite/g++.dg/torture/pr84961-1.C
+ 6e66206d45b8fa6e745c399f62812a06  gcc/testsuite/g++.dg/torture/pr84961-2.C
+ cbc6cd52e3c07bb0cbd331817134fe42  gcc/testsuite/g++.dg/torture/pr85496.C
+ c004bb94adc4b3e0994cc5b6d5ebfb2c  gcc/testsuite/g++.dg/torture/pr86763.C
+ 7f01f3aa3a86678c9ff69f4ecb09c5c8  gcc/testsuite/g++.dg/torture/pr87014.C
  389892c1f2e87d69449479d1b053c70c  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
*************** bfa02bb1cdb37b00f78df34c92e226a6  gcc/te
*** 18653,18658 ****
--- 18775,18782 ----
  21d667243f1873cc74a1060b9e5a0f15  gcc/testsuite/g++.dg/tree-ssa/ssa-store-ccp-1.C
  49ee787a379cb6910b9e5718ae694e10  gcc/testsuite/g++.dg/tree-ssa/stabilize1.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
  2f2cb4fe0eb03e7d7bb6cb25c9e775b0  gcc/testsuite/g++.dg/tsan/aligned_vs_unaligned_race.C
  c4fadb9b98427f8db9f02151bb2399af  gcc/testsuite/g++.dg/tsan/atomic_free.C
  3e39048e4c714c6f83956bd90c7e0e01  gcc/testsuite/g++.dg/tsan/atomic_free2.C
*************** df2cb7ad5e4752d9785cfdde449e528c  gcc/te
*** 18729,18734 ****
--- 18853,18860 ----
  56dbd5bcb2dcecefd337ad0be152e680  gcc/testsuite/g++.dg/ubsan/pr81209.C
  e8bc9d8d25d9976d39a6ac63446f8a90  gcc/testsuite/g++.dg/ubsan/pr81212.C
  9d4cf2cbb1dc2baf567abd24e6896123  gcc/testsuite/g++.dg/ubsan/pr81929.C
+ 1e73d2818207263906c21f51263036de  gcc/testsuite/g++.dg/ubsan/pr83987-2.C
+ 18c06ad656504d030053c0f32b2e5da2  gcc/testsuite/g++.dg/ubsan/pr83987.C
  23b03c04f7b3df05a2e3c261dbfbc91d  gcc/testsuite/g++.dg/ubsan/return-1.C
  c729687b59770dc8f9e0991370cb1879  gcc/testsuite/g++.dg/ubsan/return-2.C
  40257a16173db28137a5538f88bfea0e  gcc/testsuite/g++.dg/ubsan/return-3.C
*************** e7062d8b8ae34f0a4f8b5b407e180316  gcc/te
*** 18764,18769 ****
--- 18890,18896 ----
  03d2a78bcc9e78b2411e9795306910ae  gcc/testsuite/g++.dg/uninit-pred-loop-1_b.cc
  78a350564146421e6be7ebee31e87669  gcc/testsuite/g++.dg/uninit-pred-loop-1_c.cc
  2fcbc57bdfc93414220095e1211dcd11  gcc/testsuite/g++.dg/uninit-pred-loop_1.cc
+ 23f9031d057c291176dcbd924966fe21  gcc/testsuite/g++.dg/vec-init-1.C
  ec1873d6dd21d2c7cc0b6215931efed0  gcc/testsuite/g++.dg/vect/param-max-aliased-pr26197.cc
  02ab0e7dea4c30ddeaecb971c0b8241e  gcc/testsuite/g++.dg/vect/pr19951.cc
  e7c5a636a280962b70166d1494223f9c  gcc/testsuite/g++.dg/vect/pr21218.cc
*************** b1978c6f16c1fc80de625694e19a8dcb  gcc/te
*** 18805,18810 ****
--- 18932,18938 ----
  e5c4e8df18b9ebc0d660121856c422c3  gcc/testsuite/g++.dg/vect/pr70729.cc
  38850e627ed3358f676624ac5c0c6286  gcc/testsuite/g++.dg/vect/pr70944.cc
  0258e5eedd1d313ba5369d22c0225708  gcc/testsuite/g++.dg/vect/pr71483.c
+ 57ec4c770d54501152de549d1dd29844  gcc/testsuite/g++.dg/vect/pr84556.cc
  bf5c8ee938eb29d9c5f2aad606d6074e  gcc/testsuite/g++.dg/vect/simd-bool-comparison-1.cc
  b83eac59b493f9c580ee676cf4be54bc  gcc/testsuite/g++.dg/vect/simd-bool-comparison-2.cc
  60c78be6738c5a1041dce7fc1657bcf0  gcc/testsuite/g++.dg/vect/simd-clone-1.cc
*************** fd872aba23fcbd09e4b5cb3b61dbaadf  gcc/te
*** 18880,18885 ****
--- 19008,19014 ----
  7261164c9598bc81ae5d66213779d5d4  gcc/testsuite/g++.dg/warn/Wextra-3.C
  5eb7ea7761d111befc6050ff4baa1559  gcc/testsuite/g++.dg/warn/Wfloat-equal-1.C
  b8518ff0a2e06c127ba0871da37351cd  gcc/testsuite/g++.dg/warn/Wformat-1.C
+ 410904ada3f7963a6e257984ca090127  gcc/testsuite/g++.dg/warn/Wformat-2.C
  caf05a8324926e9472342da0584539ad  gcc/testsuite/g++.dg/warn/Wignored-attributes-1.C
  55295c0bc11e5dffe89757d080280054  gcc/testsuite/g++.dg/warn/Wignored-attributes-2.C
  223a9cc82cfdc42f62bbb5398c219cc8  gcc/testsuite/g++.dg/warn/Wimplicit-fallthrough-1.C
*************** d8d1e3a45dd0a9c718cefdd08d54e264  gcc/te
*** 18911,18916 ****
--- 19040,19046 ----
  88849261dc2753b60777f99076e31e3f  gcc/testsuite/g++.dg/warn/Wnonnull1.C
  d38c5795330625342ab67317e9b6f464  gcc/testsuite/g++.dg/warn/Wnonnull2.C
  d8522883128c1eb223545be773c44b16  gcc/testsuite/g++.dg/warn/Wnonnull3.C
+ 754841cc2f972f4f939f30784b78678c  gcc/testsuite/g++.dg/warn/Wnonnull4.C
  31408de946ef5836f2d1678b9f86f912  gcc/testsuite/g++.dg/warn/Wnull-conversion-1.C
  7612268fc1d96d20aa8372be5730baee  gcc/testsuite/g++.dg/warn/Wnull-conversion-2.C
  8c56c916a791bfbd1ac25b63b43b766c  gcc/testsuite/g++.dg/warn/Wnvdtor-2.C
*************** c028f96ef429d16acd56c46dd1ef7140  gcc/te
*** 19088,19093 ****
--- 19218,19224 ----
  ca0d22afd6aea84bfeb4ed3f15ecbe43  gcc/testsuite/g++.dg/warn/Wunused-function1.C
  b34fd3a8e6fc2ca19e369ffca3d3e57c  gcc/testsuite/g++.dg/warn/Wunused-function2.C
  67f6a207fd3b633520865ef37c9ca6c6  gcc/testsuite/g++.dg/warn/Wunused-function3.C
+ 3b9516574680f4a5e56ce4a0bea9d73a  gcc/testsuite/g++.dg/warn/Wunused-function4.C
  35cb7d556d19aea81d449a8565f7e5db  gcc/testsuite/g++.dg/warn/Wunused-label-1.C
  0c7d97044e723227e4b7e6aaa771fe52  gcc/testsuite/g++.dg/warn/Wunused-label-2.C
  d5cff1ce2b6ee2338f66afe65583b24c  gcc/testsuite/g++.dg/warn/Wunused-label-3.C
*************** e7274165f26fc70eff73fddbd77e3811  gcc/te
*** 19127,19132 ****
--- 19258,19264 ----
  8f153046ad0f87a8a4eb0cb739ec384c  gcc/testsuite/g++.dg/warn/Wunused-var-25.C
  715f4e85764653a44e74c60a6624ff13  gcc/testsuite/g++.dg/warn/Wunused-var-26.C
  dd0f2a1889a83658587b5f12c08c0c1c  gcc/testsuite/g++.dg/warn/Wunused-var-3.C
+ 5f787106d61e9189fcf3a8ed521c2436  gcc/testsuite/g++.dg/warn/Wunused-var-33.C
  62e5565091b4ee3f018515196f818bf3  gcc/testsuite/g++.dg/warn/Wunused-var-4.C
  d9191ea69f8ac18b1043d3d093b1f0d4  gcc/testsuite/g++.dg/warn/Wunused-var-5.C
  87a6fe8bfeffa1f31aecfb6dc5c8fc8e  gcc/testsuite/g++.dg/warn/Wunused-var-6.C
*************** d30920f4e6c261179db5d5422da0b398  gcc/te
*** 19183,19197 ****
  5db9baaca9f35dabdbd94d03186f12ea  gcc/testsuite/g++.dg/warn/deprecated-10.C
  1ad1df12de321b9457640c9c53f46b52  gcc/testsuite/g++.dg/warn/deprecated-11.C
  5a5b9cd25ea60d04b4baa2fcbeef0fec  gcc/testsuite/g++.dg/warn/deprecated-12.C
  26bafcbe2a9f3729e0b0e2ff8ccf5317  gcc/testsuite/g++.dg/warn/deprecated-2.C
  482df2a6c06bdf9046c6729484298715  gcc/testsuite/g++.dg/warn/deprecated-3.C
  98c2c2dc0644115f45902f826dc56a04  gcc/testsuite/g++.dg/warn/deprecated-4.C
  9fb0087e50484de53d979d8e849be2eb  gcc/testsuite/g++.dg/warn/deprecated-5.C
! 2a93e7f6f490e6934096d58d3d1cc37c  gcc/testsuite/g++.dg/warn/deprecated-6.C
  1a91ee27a48ba8f3961c5489d98ca492  gcc/testsuite/g++.dg/warn/deprecated-7.C
  d045bc52a4a03d37180fee8ad8870655  gcc/testsuite/g++.dg/warn/deprecated-8.C
  23dd18e6f89656425163e0bb64041897  gcc/testsuite/g++.dg/warn/deprecated-9.C
! 27451f4b26459045f75f4771ba878638  gcc/testsuite/g++.dg/warn/deprecated.C
  9c49d36a54518ba5874b3fe7045ef791  gcc/testsuite/g++.dg/warn/do-empty.C
  5e598309e0a011e0e37afcaf0b658c4f  gcc/testsuite/g++.dg/warn/effc1.C
  ea529389c86d5a43c531a82630dfde8b  gcc/testsuite/g++.dg/warn/effc2.C
--- 19315,19330 ----
  5db9baaca9f35dabdbd94d03186f12ea  gcc/testsuite/g++.dg/warn/deprecated-10.C
  1ad1df12de321b9457640c9c53f46b52  gcc/testsuite/g++.dg/warn/deprecated-11.C
  5a5b9cd25ea60d04b4baa2fcbeef0fec  gcc/testsuite/g++.dg/warn/deprecated-12.C
+ f9f47c74a750ce8f2c75e0d27d3ad1f7  gcc/testsuite/g++.dg/warn/deprecated-13.C
  26bafcbe2a9f3729e0b0e2ff8ccf5317  gcc/testsuite/g++.dg/warn/deprecated-2.C
  482df2a6c06bdf9046c6729484298715  gcc/testsuite/g++.dg/warn/deprecated-3.C
  98c2c2dc0644115f45902f826dc56a04  gcc/testsuite/g++.dg/warn/deprecated-4.C
  9fb0087e50484de53d979d8e849be2eb  gcc/testsuite/g++.dg/warn/deprecated-5.C
! f7f37c3e5a0382f83d1b525ec7dc5fa0  gcc/testsuite/g++.dg/warn/deprecated-6.C
  1a91ee27a48ba8f3961c5489d98ca492  gcc/testsuite/g++.dg/warn/deprecated-7.C
  d045bc52a4a03d37180fee8ad8870655  gcc/testsuite/g++.dg/warn/deprecated-8.C
  23dd18e6f89656425163e0bb64041897  gcc/testsuite/g++.dg/warn/deprecated-9.C
! 464949bba720c23d7c95b5548ae66380  gcc/testsuite/g++.dg/warn/deprecated.C
  9c49d36a54518ba5874b3fe7045ef791  gcc/testsuite/g++.dg/warn/do-empty.C
  5e598309e0a011e0e37afcaf0b658c4f  gcc/testsuite/g++.dg/warn/effc1.C
  ea529389c86d5a43c531a82630dfde8b  gcc/testsuite/g++.dg/warn/effc2.C
*************** f49fb8a55a8bc186f2204980c5dcedd4  gcc/te
*** 24185,24193 ****
--- 24318,24331 ----
  31fc703875b35306db8bbc4f8fe2610d  gcc/testsuite/gcc.c-torture/compile/pr80443.c
  1bb1438d7ef7e7637f555205f23d9423  gcc/testsuite/gcc.c-torture/compile/pr81207.c
  d2821401144573975d9f5852f6fc676b  gcc/testsuite/gcc.c-torture/compile/pr81553.c
+ c66006d27d9a3bb3a5e84e943d10d273  gcc/testsuite/gcc.c-torture/compile/pr82096.c
  196daa7de18c0a8ecd7788d3e482cc7b  gcc/testsuite/gcc.c-torture/compile/pr82337.c
  793a4f5f0940ddfbb7bf0f7247486342  gcc/testsuite/gcc.c-torture/compile/pr82549.c
  e7f459c4af5a8e616ac0225605a4c7c0  gcc/testsuite/gcc.c-torture/compile/pr83448.c
+ 88a8aece4f21f4a06af4abec9669bc53  gcc/testsuite/gcc.c-torture/compile/pr84425.c
+ 1e2f6944d3ccc384e22d3ecf9dd66f9e  gcc/testsuite/gcc.c-torture/compile/pr84860.c
+ 46a9146c4c4cdf7759a366c4deb686dd  gcc/testsuite/gcc.c-torture/compile/pr85945.c
+ c07cb6bbf144841ec62369603efc6e0b  gcc/testsuite/gcc.c-torture/compile/pr87473.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
*************** e54823e5f85799a816f464339f03380a  gcc/te
*** 24765,24770 ****
--- 24903,24911 ----
  f8b802f2d501bc5da713d9ae58a70c11  gcc/testsuite/gcc.c-torture/execute/20170401-2.c
  13d1e16ba55cc014ade05fa4e93459a9  gcc/testsuite/gcc.c-torture/execute/20170419-1.c
  9c1efb560e25ad5267acb31e4893afd9  gcc/testsuite/gcc.c-torture/execute/20180112-1.c
+ 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
  65f01ac7346bd4d47ed9c1ca94ab74ff  gcc/testsuite/gcc.c-torture/execute/900409-1.c
  5aefab4daab0bd29ecf2a389f3c44f40  gcc/testsuite/gcc.c-torture/execute/920202-1.c
  655936aaf9a63e991a555cbc16738485  gcc/testsuite/gcc.c-torture/execute/920302-1.c
*************** e1282d6044e34443f85ed878da7dc97b  gcc/te
*** 25889,25896 ****
--- 26030,26045 ----
  a3668023bbf40452e1d0a33bfb6710f1  gcc/testsuite/gcc.c-torture/execute/pr81556.c
  6477b94998805ccc2d01eb6a5264be86  gcc/testsuite/gcc.c-torture/execute/pr81588.c
  82ecaeaef4478746e0f34cb881ad4e74  gcc/testsuite/gcc.c-torture/execute/pr82192.c
+ e813fc4c1416ba3b1d94f39c21be3db4  gcc/testsuite/gcc.c-torture/execute/pr82210.c
  a9b36d09db3e98d889d5dabebaac9c84  gcc/testsuite/gcc.c-torture/execute/pr82524.c
  2cab2fe97f5bacd44f67721ad29e5bf1  gcc/testsuite/gcc.c-torture/execute/pr83269.c
+ fbbd0f56ebb4adc4f4a843526fe18ebd  gcc/testsuite/gcc.c-torture/execute/pr84524.c
+ b0a8a4011318f7b4aa4b9ef5d3016133  gcc/testsuite/gcc.c-torture/execute/pr84748.c
+ 1cc7242d79158d8a3349f3c15d1a3592  gcc/testsuite/gcc.c-torture/execute/pr85095.c
+ ebba06cada42b66940cf9eb3e3d99c95  gcc/testsuite/gcc.c-torture/execute/pr85529-1.c
+ 7ef8799b809624e5fa67184df448ee45  gcc/testsuite/gcc.c-torture/execute/pr85529-2.c
+ 3ab7b8879941a2bdaa3491b532cd4a8d  gcc/testsuite/gcc.c-torture/execute/pr86231.c
+ be5244d3595e8650a26f33594260da75  gcc/testsuite/gcc.c-torture/execute/pr87623.c
  85441b3599a9d20a4ede0f10c54a4e6b  gcc/testsuite/gcc.c-torture/execute/printf-1.c
  54f80bf321bfe46d44040493d9821a03  gcc/testsuite/gcc.c-torture/execute/printf-chk-1.c
  f397d221ccf3a7ce631cf42078dfadb5  gcc/testsuite/gcc.c-torture/execute/pta-field-1.c
*************** f30bf0095addeef700a83f36c598deab  gcc/te
*** 25988,25994 ****
  540bc182381f68374a6cb9c7f45dd001  gcc/testsuite/gcc.c-torture/execute/zerolen-1.c
  47b383f4da2b2ea2ce19f91de8dcf5a2  gcc/testsuite/gcc.c-torture/execute/zerolen-2.c
  44c6ad090d3f06206aa54f59582ae32c  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.c
! df543b6c76d4d2df5b676b93b931f394  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x
  4bfcf991d630411c702e499492861a6c  gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp
  d0289bfc068c575e2168df7bc156b45a  gcc/testsuite/gcc.dg/20000108-1.c
  586ef49702317acb226ba076aeea11ee  gcc/testsuite/gcc.dg/20000111-1.c
--- 26137,26143 ----
  540bc182381f68374a6cb9c7f45dd001  gcc/testsuite/gcc.c-torture/execute/zerolen-1.c
  47b383f4da2b2ea2ce19f91de8dcf5a2  gcc/testsuite/gcc.c-torture/execute/zerolen-2.c
  44c6ad090d3f06206aa54f59582ae32c  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.c
! a429f5a0ba3c0935919fca085ca3c8e1  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x
  4bfcf991d630411c702e499492861a6c  gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp
  d0289bfc068c575e2168df7bc156b45a  gcc/testsuite/gcc.dg/20000108-1.c
  586ef49702317acb226ba076aeea11ee  gcc/testsuite/gcc.dg/20000111-1.c
*************** e5ca96452b2454b4114a7544cd70e256  gcc/te
*** 26213,26218 ****
--- 26362,26384 ----
  3b152bda38c8adacaa17cce7b0cf4e42  gcc/testsuite/gcc.dg/Waddress-2.c
  e061bee34094ea6ecd29d049eafb229b  gcc/testsuite/gcc.dg/Waddress.c
  92e0f6dce9be7a9119066cc81f5f6407  gcc/testsuite/gcc.dg/Wall.c
+ 4d94ecdb845c416b2f88185761237f07  gcc/testsuite/gcc.dg/Walloc-size-larger-than-1.c
+ 47f319a9e00eb54e9627ad88f18bc24a  gcc/testsuite/gcc.dg/Walloc-size-larger-than-10.c
+ ed269831fdef18f7da23626f18f45b9d  gcc/testsuite/gcc.dg/Walloc-size-larger-than-11.c
+ 6aa7d242aa6b8764e6ce90a895f4a698  gcc/testsuite/gcc.dg/Walloc-size-larger-than-12.c
+ 82608f28e60b1b20a9cfda9c3d59a40d  gcc/testsuite/gcc.dg/Walloc-size-larger-than-13.c
+ a555e6d5ea6bd1f1a4d69ffbba32dfda  gcc/testsuite/gcc.dg/Walloc-size-larger-than-14.c
+ 4129bc778f1f91d60d665a2b848db932  gcc/testsuite/gcc.dg/Walloc-size-larger-than-15.c
+ 30dfeb29f46624abe69e70400cc60ec4  gcc/testsuite/gcc.dg/Walloc-size-larger-than-16.c
+ 40a664b6d19bf9a2fbb6d1e15c19d9b1  gcc/testsuite/gcc.dg/Walloc-size-larger-than-2.c
+ 6b952c5492255739e572276fdcb0199a  gcc/testsuite/gcc.dg/Walloc-size-larger-than-3.c
+ 0d59786ef596d508dc5d6c1977d3e4b0  gcc/testsuite/gcc.dg/Walloc-size-larger-than-4.c
+ bbd7937a3c0ab44aa928707579469e25  gcc/testsuite/gcc.dg/Walloc-size-larger-than-5.c
+ 370602b82244cfe831aec11cb9cc3ce7  gcc/testsuite/gcc.dg/Walloc-size-larger-than-6.c
+ 96d4f23569aa933c0d3c403ea1eaa36e  gcc/testsuite/gcc.dg/Walloc-size-larger-than-7.c
+ b580d6c39293c3a9a94690d5dfc0c878  gcc/testsuite/gcc.dg/Walloc-size-larger-than-8.c
+ 9a97a011793c5a7247611e2bc518f6f5  gcc/testsuite/gcc.dg/Walloc-size-larger-than-9.c
+ 273a2c834452fc45390aa6d1a81ea2f2  gcc/testsuite/gcc.dg/Walloc-size-larger-than.c
  6faa7a4aa98a3829ede3d0afbe2e6e98  gcc/testsuite/gcc.dg/Walloca-1.c
  538a90f3521bf6b465ebbc392080610e  gcc/testsuite/gcc.dg/Walloca-10.c
  bb3fac63e26e1a1793361a553f83b373  gcc/testsuite/gcc.dg/Walloca-11.c
*************** bad46dc3aecb70d53e1132e7986da491  gcc/te
*** 28060,28065 ****
--- 28226,28232 ----
  f05e936895687df50da3e0f17f68c57b  gcc/testsuite/gcc.dg/cpp/trad/paste.c
  528cd03ef970d063bd9212fbf0a2e65b  gcc/testsuite/gcc.dg/cpp/trad/pr65238-3.c
  0304cd1170d1d4f1cf8309ca3a1d3b60  gcc/testsuite/gcc.dg/cpp/trad/pr65238-4.c
+ 2ae99643239ad0dcb3a83344686068ad  gcc/testsuite/gcc.dg/cpp/trad/pr69869.c
  c77e7691c0a10f1a6d612705553d72c6  gcc/testsuite/gcc.dg/cpp/trad/quote.c
  ef4f422edbeb55f5e7aa5eee46bf15d3  gcc/testsuite/gcc.dg/cpp/trad/recurse-1.c
  2a6c500b6641ffd5242b8a9cf9d8c39d  gcc/testsuite/gcc.dg/cpp/trad/recurse-2.c
*************** f3585dc62ae648c6def8f07287ea7b86  gcc/te
*** 28283,28289 ****
  eb3e8d32cc98a65b9bf903f485425719  gcc/testsuite/gcc.dg/debug/dwarf2/pr66482.c
  f03dc9944066917662e80164971b7db3  gcc/testsuite/gcc.dg/debug/dwarf2/pr71855.c
  adcb04100f301278ba60a4cc3b3966e4  gcc/testsuite/gcc.dg/debug/dwarf2/pr80263.c
! b7e55f0772873df2d2550f27432ac07c  gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c
  84c94e8435cec0cb1a4a8e83a9c3633d  gcc/testsuite/gcc.dg/debug/dwarf2/short-circuit.c
  fd5753c0c85e2e3c862b46c2f851ad80  gcc/testsuite/gcc.dg/debug/dwarf2/sso.c
  09751288671698dde4edb8c708f7ba96  gcc/testsuite/gcc.dg/debug/dwarf2/stacked-qualified-types-1.c
--- 28450,28456 ----
  eb3e8d32cc98a65b9bf903f485425719  gcc/testsuite/gcc.dg/debug/dwarf2/pr66482.c
  f03dc9944066917662e80164971b7db3  gcc/testsuite/gcc.dg/debug/dwarf2/pr71855.c
  adcb04100f301278ba60a4cc3b3966e4  gcc/testsuite/gcc.dg/debug/dwarf2/pr80263.c
! 04ed708ea8db6a152acb5ebe98de283b  gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c
  84c94e8435cec0cb1a4a8e83a9c3633d  gcc/testsuite/gcc.dg/debug/dwarf2/short-circuit.c
  fd5753c0c85e2e3c862b46c2f851ad80  gcc/testsuite/gcc.dg/debug/dwarf2/sso.c
  09751288671698dde4edb8c708f7ba96  gcc/testsuite/gcc.dg/debug/dwarf2/stacked-qualified-types-1.c
*************** f83af2708ba44addea950f47d1a44c95  gcc/te
*** 28330,28335 ****
--- 28497,28503 ----
  f04843ea87c9c55accf161e9ee241f15  gcc/testsuite/gcc.dg/debug/pr66432.c
  1a1a5a16846e5e1f309692815729ce1d  gcc/testsuite/gcc.dg/debug/pr78587.c
  2444e8441e19d7a1f14287f247114ea3  gcc/testsuite/gcc.dg/debug/pr80321.c
+ 240d53072f9b064ae6ea8d4d1b72f427  gcc/testsuite/gcc.dg/debug/pr85252.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
*************** e4c1f7966a0b687ade65605b5ef05172  gcc/te
*** 30127,30132 ****
--- 30295,30308 ----
  3b4bd973fa6b96913327e429117c532a  gcc/testsuite/gcc.dg/lto/pr69188_1.c
  90a4d5f47ebe1ffb08d2ceea08a50077  gcc/testsuite/gcc.dg/lto/pr70955_0.c
  9e070e93615d99f5f50d833d9a344c13  gcc/testsuite/gcc.dg/lto/pr70955_1.c
+ f81e0e9147c6abb1e4b7ce4953fda6e5  gcc/testsuite/gcc.dg/lto/pr81440.h
+ e9ff238723b78ce9df572712d231be5f  gcc/testsuite/gcc.dg/lto/pr81440_0.c
+ 09f388182bee7149045dad5a209510c0  gcc/testsuite/gcc.dg/lto/pr81440_1.c
+ 4f9eacf4c94ac2a58a8d84f093e2c490  gcc/testsuite/gcc.dg/lto/pr83954.h
+ 197d1eb297bc02eb3d0ed7634f1bcdf5  gcc/testsuite/gcc.dg/lto/pr83954_0.c
+ 9a2072fdcc9f631ef319beead5326f1d  gcc/testsuite/gcc.dg/lto/pr83954_1.c
+ 6428e1d34804348de4f0ff99845fa0ba  gcc/testsuite/gcc.dg/lto/pr85248_0.c
+ 4656266c7db0c0e6a9f9b406df75deda  gcc/testsuite/gcc.dg/lto/pr85248_1.c
  260506c568e35bc49112021166edf8f2  gcc/testsuite/gcc.dg/lto/resolutions_0.c
  1084184a9b11a84eee39ef130211f70b  gcc/testsuite/gcc.dg/lto/save-temps_0.c
  46d188c0319bf02d664cc2c49c9df2ef  gcc/testsuite/gcc.dg/lto/simd-function_0.c
*************** e493111d21e55c655eba6eaa3ebdda47  gcc/te
*** 30185,30190 ****
--- 30361,30367 ----
  954b75a10cc7c4acd20d0a13dd9b8a0f  gcc/testsuite/gcc.dg/nested-calls-1.c
  d07d9c82b2a97d45b09c04346a5ac493  gcc/testsuite/gcc.dg/nested-func-1.c
  b290d4b46f9b4f3b547af34fc6d6102c  gcc/testsuite/gcc.dg/nested-func-10.c
+ a267c54ded564d4503609c4e3b0c06d5  gcc/testsuite/gcc.dg/nested-func-11.c
  09b5bf76a67802372892a2a1af9d82b2  gcc/testsuite/gcc.dg/nested-func-2.c
  dc2268399923a1dc34a044ba5a9fc3c6  gcc/testsuite/gcc.dg/nested-func-3.c
  4bc44650c99364fa62ff8683492dcb8f  gcc/testsuite/gcc.dg/nested-func-4.c
*************** c18713c02dd6db585d0b717323e42243  gcc/te
*** 31924,31947 ****
--- 32101,32154 ----
  55873f1cbff0d2709f50c0f4f5c1b1e5  gcc/testsuite/gcc.dg/pr80747.c
  e3501e79a84ec5c54c17e7fa34c87587  gcc/testsuite/gcc.dg/pr80903.c
  2d3008b06f6add111e8e825b9d93b0a7  gcc/testsuite/gcc.dg/pr81192.c
+ f8b9e7e40bbdc976061399c74f48e7e0  gcc/testsuite/gcc.dg/pr81228.c
  bb156c6c81366579b6d35fa7f4c47036  gcc/testsuite/gcc.dg/pr81455.c
  d0740fea8c2bde45e4d2daafa1a131cc  gcc/testsuite/gcc.dg/pr81588.c
  25643ed86459e72b894b58fd0ca23c45  gcc/testsuite/gcc.dg/pr81621.c
  15e9928cc7fd07b5da8b5ab724a2878d  gcc/testsuite/gcc.dg/pr81650.c
+ 44463eeb15323b96c557afddb523b471  gcc/testsuite/gcc.dg/pr81661.c
  6275ac69ea3af7836ee4b4f35a012f5b  gcc/testsuite/gcc.dg/pr81988.c
  6ab73da237e4b1f4a00a90b19e6d538b  gcc/testsuite/gcc.dg/pr82112.c
  3f25e46f965a27a369afdbd4a7198ff7  gcc/testsuite/gcc.dg/pr82274-1.c
  764c02762bebaad407461b2e21341c14  gcc/testsuite/gcc.dg/pr82274-2.c
  ae605184856a82a47dbd32ae477f514f  gcc/testsuite/gcc.dg/pr82703.c
  090f08b3a0f18a09d76a66610bb47031  gcc/testsuite/gcc.dg/pr82765.c
+ e79c2215ff716f8bc659a730924fd37f  gcc/testsuite/gcc.dg/pr82916.c
  3b6383789fec91d0e0c3792510760ca9  gcc/testsuite/gcc.dg/pr82975.c
  ee769f3adcf7fab595250b248a69fc79  gcc/testsuite/gcc.dg/pr83198.c
  4cfcf9fb49e0c6531f60ce19ff899760  gcc/testsuite/gcc.dg/pr83424.c
  8737dcae5fe714e2a9c7615d0daa08bb  gcc/testsuite/gcc.dg/pr83512.c
  ebf3ad75a7f26e3b9af3d5d4e2389afd  gcc/testsuite/gcc.dg/pr83521.c
  ae7d69a2b5ce2e83ee3853b71000d655  gcc/testsuite/gcc.dg/pr83552.c
+ 921053a1d94ff36e09c26d33eba4042e  gcc/testsuite/gcc.dg/pr83605.c
  81f7605ff01265c2f5be2ced12074dbc  gcc/testsuite/gcc.dg/pr83609.c
  ccfd72718953da255079c43c6c6a8a33  gcc/testsuite/gcc.dg/pr83623.c
+ 7322bdcabbdef7d769fc894b6e8694da  gcc/testsuite/gcc.dg/pr83930.c
+ 9eeba6fce77e55ccdcedf59ccf4edfc7  gcc/testsuite/gcc.dg/pr83985.c
+ 0a681331473e7aabb020a483acf3d081  gcc/testsuite/gcc.dg/pr83986.c
+ 790fd17b400b88519015df9dbf42bcac  gcc/testsuite/gcc.dg/pr84503-1.c
+ a82e5256d3a033fdd127392c71e71bb5  gcc/testsuite/gcc.dg/pr84503-2.c
+ 48512baea15c433fec04f8fc4f06900b  gcc/testsuite/gcc.dg/pr84607.c
+ 3486b93523994e789a532b80c62ed6cf  gcc/testsuite/gcc.dg/pr84628.c
+ d8e6557f46b42c9dfedfdd6664cf7af3  gcc/testsuite/gcc.dg/pr84739.c
+ 2626715aa8dc94dce0f12984ea68b9ba  gcc/testsuite/gcc.dg/pr84772.c
+ c63e7806c3d2d9248a99f9d2bbc5619b  gcc/testsuite/gcc.dg/pr84834.c
+ 350ecde2080adce3b16ae868d60d4aa7  gcc/testsuite/gcc.dg/pr84841.c
+ 0b86071d460e95cfac961b6b9e5ddc6d  gcc/testsuite/gcc.dg/pr84853.c
+ 13a2c6ed4e8585ccd298c2bbe58a83f9  gcc/testsuite/gcc.dg/pr84875.c
+ 4294a6745f3296677b46dd5bfd884901  gcc/testsuite/gcc.dg/pr84899.c
+ c9f762eb0b2a4e8131f51af77314b6ab  gcc/testsuite/gcc.dg/pr84941.c
+ 10853acb471ecaea1557d0f0b8f741e4  gcc/testsuite/gcc.dg/pr84953.c
+ c225bb9a94447d43ab8196e9559ae2df  gcc/testsuite/gcc.dg/pr84956.c
+ 7b105cf4c5c1f15634bc3e69c614bd30  gcc/testsuite/gcc.dg/pr85167.c
+ 442d2e03bec24aee04c4192279d48cc3  gcc/testsuite/gcc.dg/pr85257.c
+ 73272cb6ab6453fb7e7f14a2c5ab9f90  gcc/testsuite/gcc.dg/pr85300.c
+ 396503de7f50fa67c64fbce7eff9176d  gcc/testsuite/gcc.dg/pr85430.c
+ 94404ad63f60731d03dc7d04243a8533  gcc/testsuite/gcc.dg/pr85529.c
+ cd48e0546e5f7e9d101ff76d0ac20137  gcc/testsuite/gcc.dg/pr85859.c
+ 7a01da1f64d70f7d2af4f656b97d91a3  gcc/testsuite/gcc.dg/pr86076.c
+ 972652b27f9136f45590d2ba210b09e6  gcc/testsuite/gcc.dg/pr86314.c
+ 1eccee440762e525a97556576c144d1f  gcc/testsuite/gcc.dg/pr87024.c
  8b7d73da2d5d78000716492365a85d5a  gcc/testsuite/gcc.dg/pr8715.c
  45a1003c5d24f4875b1c3a5d4f9569fe  gcc/testsuite/gcc.dg/pr8788-1.c
  be04382a35ebb1cfae1b2168f1693a94  gcc/testsuite/gcc.dg/pr8835-1.c
*************** cba9e84173ef7cd7fe188fc74a21c9b4  gcc/te
*** 32047,32053 ****
  3a9704d0df301152dace95218afa80c6  gcc/testsuite/gcc.dg/rtl/unknown-rtx-code.c
  80ddae3611729e00a29574502629166d  gcc/testsuite/gcc.dg/rtl/x86_64/dfinit.c
  e6be5b0e59456716966a1df6c27b4524  gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c
! b781ab5c78c6ab655ffda0043f8db5ba  gcc/testsuite/gcc.dg/rtl/x86_64/final.c
  27fbdc5130153553dc82837574ea77af  gcc/testsuite/gcc.dg/rtl/x86_64/into-cfglayout.c
  b33004ecc6eb9c724fbb982faf6bbe85  gcc/testsuite/gcc.dg/rtl/x86_64/ira.c
  8d2c37260ff6505748440e7880827a04  gcc/testsuite/gcc.dg/rtl/x86_64/pro_and_epilogue.c
--- 32254,32260 ----
  3a9704d0df301152dace95218afa80c6  gcc/testsuite/gcc.dg/rtl/unknown-rtx-code.c
  80ddae3611729e00a29574502629166d  gcc/testsuite/gcc.dg/rtl/x86_64/dfinit.c
  e6be5b0e59456716966a1df6c27b4524  gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c
! 7cb433afad7af65b6faaf8f92aa621d5  gcc/testsuite/gcc.dg/rtl/x86_64/final.c
  27fbdc5130153553dc82837574ea77af  gcc/testsuite/gcc.dg/rtl/x86_64/into-cfglayout.c
  b33004ecc6eb9c724fbb982faf6bbe85  gcc/testsuite/gcc.dg/rtl/x86_64/ira.c
  8d2c37260ff6505748440e7880827a04  gcc/testsuite/gcc.dg/rtl/x86_64/pro_and_epilogue.c
*************** a831de49f2d41703b35fb1187a5eaacf  gcc/te
*** 32416,32421 ****
--- 32623,32629 ----
  7193b5d66103274fe5171afd9347d3b2  gcc/testsuite/gcc.dg/tls/pr58595.c
  f12db64d724ba7ee8005f9b84bbac338  gcc/testsuite/gcc.dg/tls/pr66470.c
  ae692fa875b26ff84dbf9d73d4b87604  gcc/testsuite/gcc.dg/tls/pr78796.c
+ 237b9cf194db36ab11f01771186e6a0a  gcc/testsuite/gcc.dg/tls/pr83945.c
  796d5642fd9a5bf2871955a7f51a2b2c  gcc/testsuite/gcc.dg/tls/section-1.c
  b6230b3887f6b80a34081478f9506950  gcc/testsuite/gcc.dg/tls/section-2.c
  bd750cfcc2981be8695d1ba87cf4e02d  gcc/testsuite/gcc.dg/tls/struct-1.c
*************** e1f76d1c7221d8b358de9e1afec3b0af  gcc/te
*** 33096,33102 ****
  a5c2783ab5ddf3529e7f6c7e2fd5069b  gcc/testsuite/gcc.dg/torture/pr57521.c
  d4d870805cc25dec6df7af24f58f6572  gcc/testsuite/gcc.dg/torture/pr57569.c
  ab3afea7e6068f3d641661689418c23a  gcc/testsuite/gcc.dg/torture/pr57584.c
! 8534fdea4d74f4a82515872dd4723697  gcc/testsuite/gcc.dg/torture/pr57656.c
  015f612e92cf7535bcd713cc928cf326  gcc/testsuite/gcc.dg/torture/pr57676.c
  26110023944b046641989ad92c41a349  gcc/testsuite/gcc.dg/torture/pr57685.c
  f2dddb213748ccb1b2e30ff1ff7f59e4  gcc/testsuite/gcc.dg/torture/pr57748-1.c
--- 33304,33310 ----
  a5c2783ab5ddf3529e7f6c7e2fd5069b  gcc/testsuite/gcc.dg/torture/pr57521.c
  d4d870805cc25dec6df7af24f58f6572  gcc/testsuite/gcc.dg/torture/pr57569.c
  ab3afea7e6068f3d641661689418c23a  gcc/testsuite/gcc.dg/torture/pr57584.c
! 0b745a857b3c7efb0e1061874c943ce1  gcc/testsuite/gcc.dg/torture/pr57656.c
  015f612e92cf7535bcd713cc928cf326  gcc/testsuite/gcc.dg/torture/pr57676.c
  26110023944b046641989ad92c41a349  gcc/testsuite/gcc.dg/torture/pr57685.c
  f2dddb213748ccb1b2e30ff1ff7f59e4  gcc/testsuite/gcc.dg/torture/pr57748-1.c
*************** de7dbbd134e802d02b8e9f377abab351  gcc/te
*** 33437,33442 ****
--- 33645,33651 ----
  1f77c0aef3f955d849d1a8c1768668af  gcc/testsuite/gcc.dg/torture/pr79194.c
  f035d14564ace5e14a2e47394b4a0b29  gcc/testsuite/gcc.dg/torture/pr79244.c
  670a4718bb54e94df3b6d9e06d148fc5  gcc/testsuite/gcc.dg/torture/pr79276.c
+ ae247169684f7b3650812885c860024c  gcc/testsuite/gcc.dg/torture/pr79351.c
  ecad54cff466f02e3fa89fa5ba6a198e  gcc/testsuite/gcc.dg/torture/pr79432.c
  0df5ceb12f76a6dc1bf36e2c5183b1b7  gcc/testsuite/gcc.dg/torture/pr79536.c
  454f620b10b777ffe98a6272450350e7  gcc/testsuite/gcc.dg/torture/pr79666.c
*************** fceb11db75335ec403cac84c4b7152dc  gcc/te
*** 33476,33481 ****
--- 33685,33700 ----
  c4067e68903cdc2e5aaad5e7fa945264  gcc/testsuite/gcc.dg/torture/pr82402.c
  7486e2be0c8bd30e05693a45799dca21  gcc/testsuite/gcc.dg/torture/pr82603.c
  9751e831af5032dd0fef399e0fa3c24c  gcc/testsuite/gcc.dg/torture/pr82697.c
+ 7f1150514530c325d4ab11a44bfef85e  gcc/testsuite/gcc.dg/torture/pr85168.c
+ 4a262d46aeb406a4774a474eee1d9e1b  gcc/testsuite/gcc.dg/torture/pr85244-1.c
+ e7da68ecb5c3ee758ea96fc820f3665b  gcc/testsuite/gcc.dg/torture/pr85244-2.c
+ 8fd878a7b2caf92cbc79ebc9f688e7d6  gcc/testsuite/gcc.dg/torture/pr85284.c
+ 47b056416b9dd37d19818009b7f64fbe  gcc/testsuite/gcc.dg/torture/pr85567.c
+ 84582e6576b1677bf5e7a5707e957a38  gcc/testsuite/gcc.dg/torture/pr85588.c
+ d85ac821c4f08b30a3a217a09f4b7f83  gcc/testsuite/gcc.dg/torture/pr85989.c
+ 327321c3c176f377b100524879fff77a  gcc/testsuite/gcc.dg/torture/pr86505.c
+ 81a3b9b7d7f1325b323debfc6a0661f1  gcc/testsuite/gcc.dg/torture/pr87645.c
+ 6a8a30446e8686e53d5eabab08339206  gcc/testsuite/gcc.dg/torture/pr87665.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
*************** e1decb9e86857df6bd3eb4df41220bbf  gcc/te
*** 33488,33493 ****
--- 33707,33713 ----
  b82f09e52f40b5e142ca17a69421bfad  gcc/testsuite/gcc.dg/torture/restrict-3.c
  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
  ae4bd16210e8a183a5a9c10baeb4171c  gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c
  fed60676d191957175e5d7d91ce11f0b  gcc/testsuite/gcc.dg/torture/stackalign/alloca-1.c
  2d416072232dd69f1b2a756bbb4d1dfd  gcc/testsuite/gcc.dg/torture/stackalign/alloca-2.c
*************** c67cf0466fac268885ab9cb1e32a9c9c  gcc/te
*** 34971,34976 ****
--- 35191,35197 ----
  32b55fee9ad1ebad5d4674969e5762f4  gcc/testsuite/gcc.dg/tree-ssa/vrp110.c
  d724d7ec05622a70bf8755f8070f53f5  gcc/testsuite/gcc.dg/tree-ssa/vrp111.c
  9cb326fc9cc53ef1d75fc5716fb3d044  gcc/testsuite/gcc.dg/tree-ssa/vrp112.c
+ 5f71fab228e137fc38027e7906bc45cd  gcc/testsuite/gcc.dg/tree-ssa/vrp119.c
  419ced6aac18d78614ce2296a1a6b660  gcc/testsuite/gcc.dg/tree-ssa/vrp12.c
  5c02e78e0a19d3b4ab362211af9c057d  gcc/testsuite/gcc.dg/tree-ssa/vrp13.c
  7e4e2677592121fe637fead20ff82420  gcc/testsuite/gcc.dg/tree-ssa/vrp14.c
*************** f63ff5680f9ddf2bc63277d0a4c08517  gcc/te
*** 35086,35092 ****
  38f4467be27d0432adea9abcaf9cc366  gcc/testsuite/gcc.dg/typespec-1.c
  b9d67dbc50419a82b76d70029936f329  gcc/testsuite/gcc.dg/ubsan/bounds-1.c
  8ef707e5f4c734c1b8be85269cd93d06  gcc/testsuite/gcc.dg/ubsan/bounds-2.c
! 804ebe3c0a2fc929bc12b7e5c7c4098f  gcc/testsuite/gcc.dg/ubsan/bounds-3.c
  7740693c7bb19d8fc6ab727a6ffbb65c  gcc/testsuite/gcc.dg/ubsan/c-shift-1.c
  577cc36a854722ee2c73da1a6a6e2322  gcc/testsuite/gcc.dg/ubsan/c-shift-2.c
  2dbfddf9f012a91eb07b3c83841941a1  gcc/testsuite/gcc.dg/ubsan/c99-shift-1.c
--- 35307,35313 ----
  38f4467be27d0432adea9abcaf9cc366  gcc/testsuite/gcc.dg/typespec-1.c
  b9d67dbc50419a82b76d70029936f329  gcc/testsuite/gcc.dg/ubsan/bounds-1.c
  8ef707e5f4c734c1b8be85269cd93d06  gcc/testsuite/gcc.dg/ubsan/bounds-2.c
! 49c14bdc09fb274e14fd4f886b5e6fb9  gcc/testsuite/gcc.dg/ubsan/bounds-3.c
  7740693c7bb19d8fc6ab727a6ffbb65c  gcc/testsuite/gcc.dg/ubsan/c-shift-1.c
  577cc36a854722ee2c73da1a6a6e2322  gcc/testsuite/gcc.dg/ubsan/c-shift-2.c
  2dbfddf9f012a91eb07b3c83841941a1  gcc/testsuite/gcc.dg/ubsan/c99-shift-1.c
*************** ab01171ee6ad27ca13cbc3085178f4b6  gcc/te
*** 35769,35774 ****
--- 35990,35997 ----
  3b59a28d58088fb3cfd4756b716a52cb  gcc/testsuite/gcc.dg/vect/pr81633.c
  7b87a8f59e1bd5262c259ee074d8f12a  gcc/testsuite/gcc.dg/vect/pr82108.c
  e14263baf37160b7fe78dcea65251c62  gcc/testsuite/gcc.dg/vect/pr82436.c
+ 8a0a2f34f0be9c53f74aefbc7f6e8f97  gcc/testsuite/gcc.dg/vect/pr84485.c
+ b9935cee50a5b2b9496865c653bad56a  gcc/testsuite/gcc.dg/vect/pr85597.c
  32d06c886c85516fbdce4ca1bd516496  gcc/testsuite/gcc.dg/vect/section-anchors-pr27770.c
  00b8b4e778221f5bedb59cfc69f6c9d7  gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c
  218f2e2bcfb33c838c80a2ae8c302759  gcc/testsuite/gcc.dg/vect/slp-1.c
*************** d8cfefc063686118062e9fc3b774907b  gcc/te
*** 37458,37464 ****
  03a49570ccde1e568907a8f9485fff2f  gcc/testsuite/gcc.target/aarch64/pr62178.c
  26fcfb82395e818d8d0bcfe702b2e752  gcc/testsuite/gcc.target/aarch64/pr62262.c
  5b090e5d951a21826fd629be991b5411  gcc/testsuite/gcc.target/aarch64/pr62308.c
! 717f5745659dd0e2adbecdda29cdb2d2  gcc/testsuite/gcc.target/aarch64/pr63304_1.c
  5195785cc7216a9662357829a66aa2c7  gcc/testsuite/gcc.target/aarch64/pr63424.c
  baf71778326c44f90d27479f00af7a63  gcc/testsuite/gcc.target/aarch64/pr63874.c
  193743022291a9918f493ad3090965ec  gcc/testsuite/gcc.target/aarch64/pr64263_1.c
--- 37681,37687 ----
  03a49570ccde1e568907a8f9485fff2f  gcc/testsuite/gcc.target/aarch64/pr62178.c
  26fcfb82395e818d8d0bcfe702b2e752  gcc/testsuite/gcc.target/aarch64/pr62262.c
  5b090e5d951a21826fd629be991b5411  gcc/testsuite/gcc.target/aarch64/pr62308.c
! f03bb186faf71fa69d98af630aa537c0  gcc/testsuite/gcc.target/aarch64/pr63304_1.c
  5195785cc7216a9662357829a66aa2c7  gcc/testsuite/gcc.target/aarch64/pr63424.c
  baf71778326c44f90d27479f00af7a63  gcc/testsuite/gcc.target/aarch64/pr63874.c
  193743022291a9918f493ad3090965ec  gcc/testsuite/gcc.target/aarch64/pr64263_1.c
*************** f6bde67b38258da0213fe94e0328086e  gcc/te
*** 37492,37497 ****
--- 37715,37723 ----
  f5c871a487631f83cd217777a75ab65c  gcc/testsuite/gcc.target/aarch64/pr79041-2.c
  aa2dfd18bc6784e0bc7ee00c3ef8561a  gcc/testsuite/gcc.target/aarch64/pr80295.c
  03c2d3e09e76becf66ec361f70b99040  gcc/testsuite/gcc.target/aarch64/pr81414.C
+ 61509ec6c4ac78da70369f76797f43be  gcc/testsuite/gcc.target/aarch64/pr81647.c
+ 1d033f86e944555bbda9ca32ec2cb181  gcc/testsuite/gcc.target/aarch64/pr83370.c
+ 438fbd8d80e583c9dd8e4b6f03d561d9  gcc/testsuite/gcc.target/aarch64/pr87511.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
*************** c9a382c97b4a968dd441a5a16d02a099  gcc/te
*** 38339,38344 ****
--- 38565,38571 ----
  4c670413ffa35c00c8cf86a9eda18d8b  gcc/testsuite/gcc.target/arm/anddi3-opt.c
  dfc4bf650d099d2aff3f9e5f3d4b62ac  gcc/testsuite/gcc.target/arm/anddi3-opt2.c
  8acda08d68bcc11cfdd01eb0a1ed850d  gcc/testsuite/gcc.target/arm/anddi_notdi-1.c
+ 2de4b776a367481e41c80f0bf35fc6e4  gcc/testsuite/gcc.target/arm/arm-soft-strd-even.c
  eb3d52e0e5f802e679e500e946caaace  gcc/testsuite/gcc.target/arm/arm.exp
  30369aea23a527014e8bea0527958ce9  gcc/testsuite/gcc.target/arm/armv5_thumb_isa.c
  12dc8396b9afbc212b8534f4a61a77bb  gcc/testsuite/gcc.target/arm/armv6-unaligned-load-ice.c
*************** ba4d912b7df5b05880a1fcd6ed2f861c  gcc/te
*** 38450,38460 ****
  d73affc874ce0f2af9cd4673c5935094  gcc/testsuite/gcc.target/arm/cmse/bitfield-1.c
  c98322bc74e742e17d883b6f08eba6b6  gcc/testsuite/gcc.target/arm/cmse/bitfield-2.c
  47975be0917defd863d260e03341ca9f  gcc/testsuite/gcc.target/arm/cmse/bitfield-3.c
! 072cd20ecdc2b1c1c9dd17389cfb13fd  gcc/testsuite/gcc.target/arm/cmse/cmse-1.c
  1e1c02e1686193d25b6ba38abeaf153c  gcc/testsuite/gcc.target/arm/cmse/cmse-10.c
  ebdb15be89bef0e9c175a92e85f05897  gcc/testsuite/gcc.target/arm/cmse/cmse-12.c
  9533b51796764846665f25883a998099  gcc/testsuite/gcc.target/arm/cmse/cmse-14.c
  fc905be774a4cc4f64a854487d186e87  gcc/testsuite/gcc.target/arm/cmse/cmse-15.c
  266f2af407dee9fa3bf85b781282684c  gcc/testsuite/gcc.target/arm/cmse/cmse-3.c
  4c264cc4ce26c3ecec599c99d3e29942  gcc/testsuite/gcc.target/arm/cmse/cmse-4.c
  3e08dab2191a28ebf2e7cc39595d7dc7  gcc/testsuite/gcc.target/arm/cmse/cmse-9.c
--- 38677,38689 ----
  d73affc874ce0f2af9cd4673c5935094  gcc/testsuite/gcc.target/arm/cmse/bitfield-1.c
  c98322bc74e742e17d883b6f08eba6b6  gcc/testsuite/gcc.target/arm/cmse/bitfield-2.c
  47975be0917defd863d260e03341ca9f  gcc/testsuite/gcc.target/arm/cmse/bitfield-3.c
! 875d522ed8e7c24de2f9400b9b33aae0  gcc/testsuite/gcc.target/arm/cmse/cmse-1.c
  1e1c02e1686193d25b6ba38abeaf153c  gcc/testsuite/gcc.target/arm/cmse/cmse-10.c
  ebdb15be89bef0e9c175a92e85f05897  gcc/testsuite/gcc.target/arm/cmse/cmse-12.c
  9533b51796764846665f25883a998099  gcc/testsuite/gcc.target/arm/cmse/cmse-14.c
  fc905be774a4cc4f64a854487d186e87  gcc/testsuite/gcc.target/arm/cmse/cmse-15.c
+ f76ced2a530d80991ba85c2e39dd5dd4  gcc/testsuite/gcc.target/arm/cmse/cmse-16.c
+ d307e00dde7714d2f353a08b08451b57  gcc/testsuite/gcc.target/arm/cmse/cmse-1c99.c
  266f2af407dee9fa3bf85b781282684c  gcc/testsuite/gcc.target/arm/cmse/cmse-3.c
  4c264cc4ce26c3ecec599c99d3e29942  gcc/testsuite/gcc.target/arm/cmse/cmse-4.c
  3e08dab2191a28ebf2e7cc39595d7dc7  gcc/testsuite/gcc.target/arm/cmse/cmse-9.c
*************** c516e326d8b57e14b9119f95a0b6d475  gcc/te
*** 38575,38581 ****
  59b43d7fa573aec56d37e8d3ee175b75  gcc/testsuite/gcc.target/arm/fp16-unprototyped-1.c
  a60c72361842412ed806a9caeafedd5b  gcc/testsuite/gcc.target/arm/fp16-unprototyped-2.c
  b627f1fc53dc3aa6e38826de78cc3f9d  gcc/testsuite/gcc.target/arm/fp16-variadic-1.c
! 662eaf09e7fb7e8da30a485a60b49e36  gcc/testsuite/gcc.target/arm/fpscr.c
  becd73a8b67b5a5ea5ac098897654766  gcc/testsuite/gcc.target/arm/frame-pointer-1.c
  d197c58c217da8cdebc4b5d30cce8a52  gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c
  f8c88e22189f7cae3d54e35f7511abc6  gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c
--- 38804,38810 ----
  59b43d7fa573aec56d37e8d3ee175b75  gcc/testsuite/gcc.target/arm/fp16-unprototyped-1.c
  a60c72361842412ed806a9caeafedd5b  gcc/testsuite/gcc.target/arm/fp16-unprototyped-2.c
  b627f1fc53dc3aa6e38826de78cc3f9d  gcc/testsuite/gcc.target/arm/fp16-variadic-1.c
! 7e1f0ef170934d68aa70264acedd0c41  gcc/testsuite/gcc.target/arm/fpscr.c
  becd73a8b67b5a5ea5ac098897654766  gcc/testsuite/gcc.target/arm/frame-pointer-1.c
  d197c58c217da8cdebc4b5d30cce8a52  gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c
  f8c88e22189f7cae3d54e35f7511abc6  gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c
*************** e9273f96fab761cd7ea5079114cf850a  gcc/te
*** 38912,38918 ****
--- 39141,39150 ----
  9af668f971102617e44a1aabe76bd18b  gcc/testsuite/gcc.target/arm/pr79131-2.c
  3116e99b993df2059971c2fae6d9b6b0  gcc/testsuite/gcc.target/arm/pr79145.c
  886e1e8bcef4564f65d87770aeced965  gcc/testsuite/gcc.target/arm/pr79239.c
+ 8be1830a6ab834d38ea072aa6d567865  gcc/testsuite/gcc.target/arm/pr82518.c
+ 433157273902c9544461f755ababe38e  gcc/testsuite/gcc.target/arm/pr82989.c
  c3c03d98bf1110fec6902ef64b984fde  gcc/testsuite/gcc.target/arm/pr83687.c
+ 3c9cf24fda1d77cb6ade61e736cb8056  gcc/testsuite/gcc.target/arm/pr84826.c
  321232597c3b16471c510b972ad557b4  gcc/testsuite/gcc.target/arm/pragma_attribute.c
  cdf14fd079c2cd544c152c39ceb8ac66  gcc/testsuite/gcc.target/arm/pragma_cpp_fma.c
  5b1a9414b404b74eb5cf36760730cf83  gcc/testsuite/gcc.target/arm/pure-code/ffunction-sections.c
*************** bce67b236520c561f93006d5bd66eea1  gcc/te
*** 40812,40817 ****
--- 41044,41050 ----
  2578aaea4945a191c1767c5b6ebde5b2  gcc/testsuite/gcc.target/i386/avx512bw-pr70329-2.c
  923b4b67baacfc2aedf431c5989f2d6e  gcc/testsuite/gcc.target/i386/avx512bw-pr70509.c
  acddcdfbf1c37bd8a7c7778c2c6eeea1  gcc/testsuite/gcc.target/i386/avx512bw-pr77476.c
+ a27fb111df1b083f6396bafe5a66337b  gcc/testsuite/gcc.target/i386/avx512bw-pr84524.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
*************** ed3d90dbe58b8809b57c676f74ba1f79  gcc/te
*** 41196,41202 ****
  089ab042671ce8bbdf2286fd0da5d1a0  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28sd-2.c
  ded4731821711b0feaeb0843f87bcafb  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-1.c
  1b64a797542074126432cd4c0eeb4940  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-2.c
! 848eeff915167de4b7db43649930109b  gcc/testsuite/gcc.target/i386/avx512f-abspd-1.c
  848eeff915167de4b7db43649930109b  gcc/testsuite/gcc.target/i386/avx512f-absps-1.c
  61431e7d7c36503f37d6b37b71138983  gcc/testsuite/gcc.target/i386/avx512f-additional-reg-names.c
  ac444822bf41eda8ff9b0517ed627613  gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-1.c
--- 41429,41435 ----
  089ab042671ce8bbdf2286fd0da5d1a0  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28sd-2.c
  ded4731821711b0feaeb0843f87bcafb  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-1.c
  1b64a797542074126432cd4c0eeb4940  gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-2.c
! 293c0a0037da464f897d16eb6f1159b5  gcc/testsuite/gcc.target/i386/avx512f-abspd-1.c
  848eeff915167de4b7db43649930109b  gcc/testsuite/gcc.target/i386/avx512f-absps-1.c
  61431e7d7c36503f37d6b37b71138983  gcc/testsuite/gcc.target/i386/avx512f-additional-reg-names.c
  ac444822bf41eda8ff9b0517ed627613  gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-1.c
*************** e97c0c19cafc88b7e3701f64c4ee5e2f  gcc/te
*** 41293,41298 ****
--- 41526,41534 ----
  d3690c9abdc1f96ff5183a85ab642fc8  gcc/testsuite/gcc.target/i386/avx512f-pr70421.c
  2bec208bfec85d6675be24e134318011  gcc/testsuite/gcc.target/i386/avx512f-pr71559.c
  f536b3eaf7c592092d8cabbb3c2d0021  gcc/testsuite/gcc.target/i386/avx512f-pr77476.c
+ a80f9cd2887df8ed2219ed1b4c04450f  gcc/testsuite/gcc.target/i386/avx512f-pr84786-1.c
+ 180e1de7c7ce45b94a8aeb5c6ef9250b  gcc/testsuite/gcc.target/i386/avx512f-pr84786-2.c
+ 94a22888479288823ac9d596b6c017ab  gcc/testsuite/gcc.target/i386/avx512f-pr84786-3.c
  fa779c05cab9a2378601e3ad5ae642ef  gcc/testsuite/gcc.target/i386/avx512f-reduce-op-1.c
  ada32523be27898684e961dc8a530319  gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-1.c
  cf72f487882aa5cbbf2a730ccced5372  gcc/testsuite/gcc.target/i386/avx512f-rint-sfix-vec-2.c
*************** a8fd5ae752b69f78e55af10766938030  gcc/te
*** 41442,41452 ****
  b4c8de87ce138b42ea91b7329ee78279  gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2ps-2.c
  4fff44f8d2f9394908b1d8286c1a8c66  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd-1.c
  46ee73a82d7c125d7f6e86b33b3ec472  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd-2.c
! bbd8e96d78b12050cb453db8082c1080  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c
  a21fc318d6e23490a99a693be7964b5b  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-2.c
  975d372caf8b80e2734354ba07697c1f  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-1.c
  0a376976db34cb09e61596ddd3740d4e  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-2.c
! 39a9867441942eb49936e4fc1a56bfcf  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c
  ce2025b5a73196a72a43eac34a5c9a18  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-2.c
  0cb92e177c8c0ac9237bb2dbd389ad0f  gcc/testsuite/gcc.target/i386/avx512f-vdivpd-1.c
  5e355df713ee7c05ba9e5392595eb09a  gcc/testsuite/gcc.target/i386/avx512f-vdivpd-2.c
--- 41678,41688 ----
  b4c8de87ce138b42ea91b7329ee78279  gcc/testsuite/gcc.target/i386/avx512f-vcvtudq2ps-2.c
  4fff44f8d2f9394908b1d8286c1a8c66  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd-1.c
  46ee73a82d7c125d7f6e86b33b3ec472  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd-2.c
! 0fb521bfc3952809ffc19f8f34bd9bb1  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c
  a21fc318d6e23490a99a693be7964b5b  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-2.c
  975d372caf8b80e2734354ba07697c1f  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-1.c
  0a376976db34cb09e61596ddd3740d4e  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-2.c
! 0564847f881a9bd950121fc38b983b12  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c
  ce2025b5a73196a72a43eac34a5c9a18  gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-2.c
  0cb92e177c8c0ac9237bb2dbd389ad0f  gcc/testsuite/gcc.target/i386/avx512f-vdivpd-1.c
  5e355df713ee7c05ba9e5392595eb09a  gcc/testsuite/gcc.target/i386/avx512f-vdivpd-2.c
*************** c7a149a80b76351d66c8c6d26298bece  gcc/te
*** 41668,41674 ****
  4469a2497500a44fbee5e07165ba9bde  gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-1.c
  0d85648b7a0ee7f131e478405e74c9d3  gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-2.c
  56cc6978621a2fa60cdd5c47423758a3  gcc/testsuite/gcc.target/i386/avx512f-vpermd-1.c
! 1da1f179055f9440b93333d02c952094  gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c
  fb76e1bda0a89bf425010ca6fd6dbe29  gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-1.c
  d63c71755bb5d6088819774633ad6384  gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c
  f8728d83283a36e9976da2e818d371a7  gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-1.c
--- 41904,41910 ----
  4469a2497500a44fbee5e07165ba9bde  gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-1.c
  0d85648b7a0ee7f131e478405e74c9d3  gcc/testsuite/gcc.target/i386/avx512f-vpcompressq-2.c
  56cc6978621a2fa60cdd5c47423758a3  gcc/testsuite/gcc.target/i386/avx512f-vpermd-1.c
! 9d65450db3497392d68570cca3f64238  gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c
  fb76e1bda0a89bf425010ca6fd6dbe29  gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-1.c
  d63c71755bb5d6088819774633ad6384  gcc/testsuite/gcc.target/i386/avx512f-vpermi2d-2.c
  f8728d83283a36e9976da2e818d371a7  gcc/testsuite/gcc.target/i386/avx512f-vpermi2pd-1.c
*************** d2c6f29cf15bd159c57b7a7751538156  gcc/te
*** 41692,41701 ****
  a69dcded8f8cda6919946e7f208c7e08  gcc/testsuite/gcc.target/i386/avx512f-vpermps-1.c
  8ecec2925d6b8dda8c997da7b45252e5  gcc/testsuite/gcc.target/i386/avx512f-vpermps-2.c
  6fa8297902e32330d3af90524ae35521  gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-1.c
! 374f3564875f70be948c0808aeca41a6  gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c
  6c3389cb00c407197758b866941b89f5  gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-3.c
  bf34908219e7ac4da3846cb7ccd0d897  gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-1.c
! a43fb72815cea06978fc5af5490fdd6e  gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c
  fcb39e2f1232da8f86561c215408e878  gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-1.c
  21b99b232f662ff8d53463f1e77e4a47  gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c
  0a68710763e7c64f16f043ccb0a6fd5b  gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-1.c
--- 41928,41937 ----
  a69dcded8f8cda6919946e7f208c7e08  gcc/testsuite/gcc.target/i386/avx512f-vpermps-1.c
  8ecec2925d6b8dda8c997da7b45252e5  gcc/testsuite/gcc.target/i386/avx512f-vpermps-2.c
  6fa8297902e32330d3af90524ae35521  gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-1.c
! 1825d0fa80df5b7618623d9aab7d1d1d  gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c
  6c3389cb00c407197758b866941b89f5  gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-3.c
  bf34908219e7ac4da3846cb7ccd0d897  gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-1.c
! 2bc5000b59c72a1b2a61e90dc41574b9  gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c
  fcb39e2f1232da8f86561c215408e878  gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-1.c
  21b99b232f662ff8d53463f1e77e4a47  gcc/testsuite/gcc.target/i386/avx512f-vpermt2d-2.c
  0a68710763e7c64f16f043ccb0a6fd5b  gcc/testsuite/gcc.target/i386/avx512f-vpermt2pd-1.c
*************** fad6dc416073968b83030debf528dee6  gcc/te
*** 42311,42317 ****
  1dd51a1fcd20c49d0f062301e4b92963  gcc/testsuite/gcc.target/i386/avx512vl-vpconflictd-1.c
  49877147c87fe283d931254425e464a6  gcc/testsuite/gcc.target/i386/avx512vl-vpconflictq-1.c
  6f961bf650fb20355b4fd6a9abb73b8d  gcc/testsuite/gcc.target/i386/avx512vl-vpermb-2.c
! 2e520b9d59f1bd65c0048215c29b15b3  gcc/testsuite/gcc.target/i386/avx512vl-vpermd-1.c
  7715b8a77d3548989cd85d97de9d6dac  gcc/testsuite/gcc.target/i386/avx512vl-vpermd-2.c
  488d864c45366528d5712cdd884fa7b2  gcc/testsuite/gcc.target/i386/avx512vl-vpermi2b-2.c
  c0287d4b84678b137a175a70a148f434  gcc/testsuite/gcc.target/i386/avx512vl-vpermi2d-1.c
--- 42547,42553 ----
  1dd51a1fcd20c49d0f062301e4b92963  gcc/testsuite/gcc.target/i386/avx512vl-vpconflictd-1.c
  49877147c87fe283d931254425e464a6  gcc/testsuite/gcc.target/i386/avx512vl-vpconflictq-1.c
  6f961bf650fb20355b4fd6a9abb73b8d  gcc/testsuite/gcc.target/i386/avx512vl-vpermb-2.c
! 391edbb140a8abff15d425bbc449ea39  gcc/testsuite/gcc.target/i386/avx512vl-vpermd-1.c
  7715b8a77d3548989cd85d97de9d6dac  gcc/testsuite/gcc.target/i386/avx512vl-vpermd-2.c
  488d864c45366528d5712cdd884fa7b2  gcc/testsuite/gcc.target/i386/avx512vl-vpermi2b-2.c
  c0287d4b84678b137a175a70a148f434  gcc/testsuite/gcc.target/i386/avx512vl-vpermi2d-1.c
*************** a004b3262185cb66999271674c8749bc  gcc/te
*** 42337,42345 ****
  e702cee988ad9fc897b2b5659547e4e8  gcc/testsuite/gcc.target/i386/avx512vl-vpermpdi-2.c
  50d3cee62f314f875d9d3f6fb03cf726  gcc/testsuite/gcc.target/i386/avx512vl-vpermps-1.c
  e028a282518a4f6a40ce731f1a436f7a  gcc/testsuite/gcc.target/i386/avx512vl-vpermps-2.c
! e9ffb9660280130024597f411800ff2c  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-1.c
  f5eac59fdbcb4d1a1788b5d5309795c7  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-2.c
! 0ca5976cb8712de3453265ddae548d16  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-1.c
  ec8e0f36c6ffb30e7cea6a8dac61e991  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-2.c
  d4361e728bf26a7d8a548009190cb751  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2b-2.c
  2d4643c86e84bd1f7a5418e6d8f669e6  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2d-1.c
--- 42573,42581 ----
  e702cee988ad9fc897b2b5659547e4e8  gcc/testsuite/gcc.target/i386/avx512vl-vpermpdi-2.c
  50d3cee62f314f875d9d3f6fb03cf726  gcc/testsuite/gcc.target/i386/avx512vl-vpermps-1.c
  e028a282518a4f6a40ce731f1a436f7a  gcc/testsuite/gcc.target/i386/avx512vl-vpermps-2.c
! 08360635fb49596c05858509a2d2c713  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-1.c
  f5eac59fdbcb4d1a1788b5d5309795c7  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-2.c
! d1acb4c8d870192e89237724af894247  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-1.c
  ec8e0f36c6ffb30e7cea6a8dac61e991  gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-2.c
  d4361e728bf26a7d8a548009190cb751  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2b-2.c
  2d4643c86e84bd1f7a5418e6d8f669e6  gcc/testsuite/gcc.target/i386/avx512vl-vpermt2d-1.c
*************** ebc315087303e52034dda4e281f500fd  gcc/te
*** 42969,42975 ****
  d95f56a3f95ba78c3fdb5f418f8d953a  gcc/testsuite/gcc.target/i386/hle-xchg-rel-1.c
  c937938a0a49e70d699ee5ef70d33cb0  gcc/testsuite/gcc.target/i386/hle-xor-acq-1.c
  7aef940035776cbf7ecabc540f63e33e  gcc/testsuite/gcc.target/i386/hle-xor-rel-1.c
! c1686f811990dfdc5e41d7bdf6d6aec1  gcc/testsuite/gcc.target/i386/i386.exp
  3474cb2ceefc34c7edf31a21ff7e0ae3  gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp
  824179ec90e1e4fdb872aed133f8d523  gcc/testsuite/gcc.target/i386/iamcu/args.h
  75e691882a781a986cbf2b848eacc017  gcc/testsuite/gcc.target/i386/iamcu/asm-support.S
--- 43205,43211 ----
  d95f56a3f95ba78c3fdb5f418f8d953a  gcc/testsuite/gcc.target/i386/hle-xchg-rel-1.c
  c937938a0a49e70d699ee5ef70d33cb0  gcc/testsuite/gcc.target/i386/hle-xor-acq-1.c
  7aef940035776cbf7ecabc540f63e33e  gcc/testsuite/gcc.target/i386/hle-xor-rel-1.c
! b1a3a99f204ff2b69e1844bbb946f993  gcc/testsuite/gcc.target/i386/i386.exp
  3474cb2ceefc34c7edf31a21ff7e0ae3  gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp
  824179ec90e1e4fdb872aed133f8d523  gcc/testsuite/gcc.target/i386/iamcu/args.h
  75e691882a781a986cbf2b848eacc017  gcc/testsuite/gcc.target/i386/iamcu/asm-support.S
*************** b56cbb83f01d0feeec0ec874e60a703c  gcc/te
*** 43010,43054 ****
  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
! 03827a2c9780d33bb4db45891893647a  gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
  20988adf9b08c4b293517a2c73863343  gcc/testsuite/gcc.target/i386/indirect-thunk-10.c
! 885fe8bc8b78c46d553ff7c466379c82  gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
! 21e2b7df8300cb76b9018c098259deaa  gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
! 33fb08984b3be497a1d2eb67b20d7821  gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
! 57a08ef10015d22dd132d82e1cfd8591  gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
! fbd73d360e72d55b4389997eee3a9ad6  gcc/testsuite/gcc.target/i386/indirect-thunk-6.c
! e6e69a8edb8e20c3784c2f82ab9ad9b7  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
! 373c98be1b17bda68d48f75c5d262748  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
! a587209ff1b92eaad7f636abeeb72660  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
! fa84c0071555de176c8a83d1df04cd29  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
! fa0a854dc2c4190e78c0e55bca9a1d19  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
! 804bd46f4f3779cfdc76ab2fae269bce  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
! c746655caa029f480bb12e9dc214b6ef  gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
! e50dd0ba47d814e6b0a0fbb2869a7b14  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
! dc83c9450064c7dda1e87339e30b0d43  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c
! 20f28b3a736c2b03960b4e41d0cd3369  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c
! b3b3bdc4e4e24c19e16c0c6c4db58f7c  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c
! 9190089f7729ddc47163d344a05e1c83  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c
! dd8256d3f87843ddd24cde617c8d3ba5  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
! ea1264812baa47369ff7cc693094ff18  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
! db1e96221b78c9edb04889433c4cfceb  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
! 30c60bce395af473e6e5c2d4993983d1  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
! c18cb8b6d05ccdaf5b32709c926d064d  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c
! a4a76dccf77b61a7515f7140cb7b9285  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c
! e506915b7dd184f2d562ceb7c6382b46  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
! a371765837086c89059792db2b194819  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
! dcfba2869236846c712674c3c23e4cc0  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
! b229e26bfd55409bc698e4cd4d3cc905  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
! c57dd8cf50eefb5bd2083eb7834c9af2  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
! c521c3c6c64bd07588efc34613c8e39b  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c
! 7dde9a5f2bdd50ae13358562cde0c346  gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c
! 3c404f2f6fc975c818cb49d89930fc71  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
--- 43246,43290 ----
  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
! d5a10c340aca1e4c1b2116dc0bc19ebe  gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
! bfa68ec42c5a8e83f24ab6be88127029  gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
! e893e88ca56cb471d1d2aef3d0750402  gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
! 76b5340f3d1cae758f7f24f209df6970  gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
! f337c4677a3c1c6729fe81c061d9d002  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
! 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
! b5359c757d218de412eb45871137cbee  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
! 03f873271ded2e06b27882e045268f8d  gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c
! 14cc4f9a9b2dd94edd821f84af94c611  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.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
! 1821b816a47c91c728ca25d527e6eef6  gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.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
*************** b9816b57d822b91888e41f297b660efe  gcc/te
*** 44600,44605 ****
--- 44836,44842 ----
  19b3622fb150753481d323bf9ac175ff  gcc/testsuite/gcc.target/i386/pr81906.c
  115b670aa5d368116903b6d6bf4c83ef  gcc/testsuite/gcc.target/i386/pr81921.c
  c68e8244d2a128db4097c8be34013b64  gcc/testsuite/gcc.target/i386/pr82556.c
+ fee48546949cab9b7dea834adf9c10c3  gcc/testsuite/gcc.target/i386/pr82795.c
  515e5dcd6ad99630111df5a872a15e5d  gcc/testsuite/gcc.target/i386/pr82941-1.c
  cce8682d8e49dc83cd8b34fceaf37849  gcc/testsuite/gcc.target/i386/pr82941-2.c
  1aea5be2654d4ae28e01b3b0bdbeddc4  gcc/testsuite/gcc.target/i386/pr82942-1.c
*************** c154f3d5dbf0100ab4daf298da4d51da  gcc/te
*** 44614,44619 ****
--- 44851,44870 ----
  4f189869ec48c57ebc59f27fe7a3e028  gcc/testsuite/gcc.target/i386/pr83330.c
  cd9a57159b45a8dc9f69fb76dba516c9  gcc/testsuite/gcc.target/i386/pr83467-1.c
  f9fd161edde06fb92941f348f3942cd9  gcc/testsuite/gcc.target/i386/pr83467-2.c
+ 4b92883a9199a3a13718961bb0dca3b2  gcc/testsuite/gcc.target/i386/pr84310-2.c
+ c69c3bea82e3b6d7058e5910c4e290f2  gcc/testsuite/gcc.target/i386/pr84310.c
+ cc51cb48f7db1678bae9e4da234e3807  gcc/testsuite/gcc.target/i386/pr84625.c
+ 5435d67b61a499c7fee5dceca4d38535  gcc/testsuite/gcc.target/i386/pr84827.c
+ b7f2c0b3d382bb72b6dc274a9b8ae5cf  gcc/testsuite/gcc.target/i386/pr84829.c
+ 5201e4b46743783ec10e1007df3e29bf  gcc/testsuite/gcc.target/i386/pr85034.c
+ 240d163e1ad4d0cb25ce82ae3b980872  gcc/testsuite/gcc.target/i386/pr85095-1.c
+ da8dddf5375beef8a5899951924780ea  gcc/testsuite/gcc.target/i386/pr85095-2.c
+ 2c9fa20db8db57984e210a776424e3aa  gcc/testsuite/gcc.target/i386/pr85193.c
+ 4302cd96928c315422f2c1fd5d5e767e  gcc/testsuite/gcc.target/i386/pr86627.c
+ 7300b3d2e6c51732192703b00e1633eb  gcc/testsuite/gcc.target/i386/pr87065.c
+ 4bcf1f2404bf83c2e402690653adf2bc  gcc/testsuite/gcc.target/i386/pr87370.c
+ 640f95ee3bcfcdd3ddddf350e70a219e  gcc/testsuite/gcc.target/i386/pr87550.c
+ 4b54801016bc4b3cc228ac7dd70de407  gcc/testsuite/gcc.target/i386/pr87928.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
*** 44643,44654 ****
  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
! f7ddc9357e27cb1a35858228246b103f  gcc/testsuite/gcc.target/i386/ret-thunk-10.c
! 698bef1f53cf010233e212c8fe19b7ab  gcc/testsuite/gcc.target/i386/ret-thunk-11.c
! 1e34c804e73f44c3d03b858886434790  gcc/testsuite/gcc.target/i386/ret-thunk-12.c
! 643f3ad3cf96563036a9a2bd89dc5511  gcc/testsuite/gcc.target/i386/ret-thunk-13.c
! 06360908356b170618f1d1c2b8af0ef6  gcc/testsuite/gcc.target/i386/ret-thunk-14.c
! ec8ee957ca4270e5708010918e265a01  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
--- 44894,44905 ----
  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
! 6e20f7a638ba67005154ba64a205629f  gcc/testsuite/gcc.target/i386/ret-thunk-10.c
! 75f06d0b0b8a0aa78cbafd8eb7ac2ac3  gcc/testsuite/gcc.target/i386/ret-thunk-11.c
! 09edc45a2c857d7bf5d35a27ba84d494  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
! 305b2b3bbf8f5059edc1a6cd5d289c9f  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
*************** cc34b9f508b9c8334f3288b096cb78f7  gcc/te
*** 44656,44668 ****
  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
  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
! 909a19120c19fc13bd747c8a92b1fb19  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
--- 44907,44924 ----
  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
+ 8322bb75badb0a22b6e9d839deed11ee  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
! a5919d44210b1a316a9c96379d2a234c  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
*************** ce1ce04665fe9006445fc744101735c0  gcc/te
*** 46059,46064 ****
--- 46315,46322 ----
  3553d737da02b3496cec1235bfbb22d8  gcc/testsuite/gcc.target/msp430/mul_f5_muldef.c
  bfd6a195d1aef391ff7d50f95ad68d21  gcc/testsuite/gcc.target/msp430/mul_main.h
  5d3a9707cfd44967f987f7dba28c0676  gcc/testsuite/gcc.target/msp430/mul_none.c
+ 86446266130da24b1d107d958453330a  gcc/testsuite/gcc.target/msp430/pr79242.c
+ 69500889eed192041fd9a134ef51dcc8  gcc/testsuite/gcc.target/msp430/pr86662.c
  82173e7c1c627427f8e71b7496727f05  gcc/testsuite/gcc.target/nds32/basic-main.c
  0e03754fee073e7c8a117d1a11e9f750  gcc/testsuite/gcc.target/nds32/builtin-isb.c
  a76e9bdd8dd768b474700a1307ac151c  gcc/testsuite/gcc.target/nds32/builtin-isync.c
*************** da5463224c767fe4525ff97ea55cf59b  gcc/te
*** 46154,46160 ****
--- 46412,46421 ----
  ce8d3cdf413d2ecd740f727aa605f41d  gcc/testsuite/gcc.target/nvptx/decl-shared-init.c
  ee7a219079a9befc9911075c0ddf6ec4  gcc/testsuite/gcc.target/nvptx/decl-shared.c
  b5bc7203f9caebe44d835739cd6150f6  gcc/testsuite/gcc.target/nvptx/decl.c
+ dd4edeaa5bae2549fa0790bb949f2a76  gcc/testsuite/gcc.target/nvptx/indirect_call.c
  526aab90d6bb4edba0d4c7df742b1d69  gcc/testsuite/gcc.target/nvptx/nvptx.exp
+ ee10a595a6c816802a83d13637d1f4ce  gcc/testsuite/gcc.target/nvptx/pr85056.c
+ 85d991e87550d6e0750de2b4f0ef4e8d  gcc/testsuite/gcc.target/nvptx/pr85056a.c
  0851aa76429cdec3f332dcfc7d32f6f4  gcc/testsuite/gcc.target/nvptx/proto-1.c
  b6dd5ea026f06ffb6e299fe2a4b5b9a0  gcc/testsuite/gcc.target/nvptx/sincos.c
  741e8b3981b97dba04d2d0ab288e2aca  gcc/testsuite/gcc.target/nvptx/softstack.c
*************** caf01994c96172dac156c3da29317823  gcc/te
*** 46385,46395 ****
  28a093e56a3b3b438802b7510941c3d7  gcc/testsuite/gcc.target/powerpc/bswap64-2.c
  931398e0111335374a570dab11f94aba  gcc/testsuite/gcc.target/powerpc/bswap64-3.c
  37c12fff6f77333d7cb7d787bbb7f908  gcc/testsuite/gcc.target/powerpc/bswap64-4.c
! 1bdcd38f4043a35aa4799e5b7e1fd590  gcc/testsuite/gcc.target/powerpc/builtins-1.c
  fc8793b521e1298ab0e99e4fb318b34b  gcc/testsuite/gcc.target/powerpc/builtins-2.c
! e39cfd1ce02900ceb69480a1218c8dff  gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c
! 0e99659f3cc8824783e11b2ca1733f88  gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c
! 94eccf14ae06590446e0f90ba42e79f4  gcc/testsuite/gcc.target/powerpc/builtins-3.c
  7f35a56e8dea223eabe96fb48dba06ed  gcc/testsuite/gcc.target/powerpc/byte-in-either-range-0.c
  ffc28a6e3572df02a4e4068818687d49  gcc/testsuite/gcc.target/powerpc/byte-in-either-range-1.c
  8fcbbe3c61eee66451e8c680411c0224  gcc/testsuite/gcc.target/powerpc/byte-in-range-0.c
--- 46646,46657 ----
  28a093e56a3b3b438802b7510941c3d7  gcc/testsuite/gcc.target/powerpc/bswap64-2.c
  931398e0111335374a570dab11f94aba  gcc/testsuite/gcc.target/powerpc/bswap64-3.c
  37c12fff6f77333d7cb7d787bbb7f908  gcc/testsuite/gcc.target/powerpc/bswap64-4.c
! 5d7722a5bfe7fbb9896a1eb4f88e022d  gcc/testsuite/gcc.target/powerpc/builtins-1.c
  fc8793b521e1298ab0e99e4fb318b34b  gcc/testsuite/gcc.target/powerpc/builtins-2.c
! b46abca6c4cd08a5de1d13f33c9a9ef6  gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c
! 492ac089419f0bb359f220419b9dd912  gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c
! 87b0fefa6c0cfed1e213437588c52b0d  gcc/testsuite/gcc.target/powerpc/builtins-3.c
! 152da1e6a5994b32721d906034b3265b  gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c
  7f35a56e8dea223eabe96fb48dba06ed  gcc/testsuite/gcc.target/powerpc/byte-in-either-range-0.c
  ffc28a6e3572df02a4e4068818687d49  gcc/testsuite/gcc.target/powerpc/byte-in-either-range-1.c
  8fcbbe3c61eee66451e8c680411c0224  gcc/testsuite/gcc.target/powerpc/byte-in-range-0.c
*************** caf3aba39c0565b4369f2e0263b16af5  gcc/te
*** 46411,46416 ****
--- 46673,46679 ----
  1f7277471f008809ee3572d95097e11a  gcc/testsuite/gcc.target/powerpc/copysign128-1.c
  4b60a8662648a73cedee85dd08e278eb  gcc/testsuite/gcc.target/powerpc/cprophard.c
  ceee196d52c1e634069b5d122f09e1ae  gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c
+ 30020a956cfba3e60bd9193370a7c3b8  gcc/testsuite/gcc.target/powerpc/crypto-builtin-1-runnable.c
  1fb2215d04b688ce2fdb0faccd58b012  gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c
  14fe4a3bc84df2b97d9440c94d7c8339  gcc/testsuite/gcc.target/powerpc/crypto-builtin-2.c
  4e3992362b37b544083ac6eaeaa1acca  gcc/testsuite/gcc.target/powerpc/ctz-1.c
*************** c08abaae6dddb0af0b1430cc189c6040  gcc/te
*** 46552,46559 ****
  6ea92a9945a83333f8d1ba665d65f560  gcc/testsuite/gcc.target/powerpc/e500-unord-1.c
  83d3ef0422135a547b552e5700f1e4a6  gcc/testsuite/gcc.target/powerpc/e500-unord-2.c
  52468a71868e251587d1c07bc7e2b10f  gcc/testsuite/gcc.target/powerpc/ehreturn.c
! b89f1f90359f5c6fcd8b4e8483dcef6e  gcc/testsuite/gcc.target/powerpc/extend-divide-1.c
! 87169efbc95439d84121932cc077ac9c  gcc/testsuite/gcc.target/powerpc/extend-divide-2.c
  8c72cdf8bfe8722381118fb2f830c083  gcc/testsuite/gcc.target/powerpc/extswsli-1.c
  2abdaa0ff5a02ac7f3a5b158d0c7caf2  gcc/testsuite/gcc.target/powerpc/extswsli-2.c
  66355bb17c4f25c93f5cbcb194923e36  gcc/testsuite/gcc.target/powerpc/extswsli-3.c
--- 46815,46822 ----
  6ea92a9945a83333f8d1ba665d65f560  gcc/testsuite/gcc.target/powerpc/e500-unord-1.c
  83d3ef0422135a547b552e5700f1e4a6  gcc/testsuite/gcc.target/powerpc/e500-unord-2.c
  52468a71868e251587d1c07bc7e2b10f  gcc/testsuite/gcc.target/powerpc/ehreturn.c
! 240a6965cf69dae658c7eeff5e50b809  gcc/testsuite/gcc.target/powerpc/extend-divide-1.c
! cfef4ec2f53fc3ca62b496ee1e54832f  gcc/testsuite/gcc.target/powerpc/extend-divide-2.c
  8c72cdf8bfe8722381118fb2f830c083  gcc/testsuite/gcc.target/powerpc/extswsli-1.c
  2abdaa0ff5a02ac7f3a5b158d0c7caf2  gcc/testsuite/gcc.target/powerpc/extswsli-2.c
  66355bb17c4f25c93f5cbcb194923e36  gcc/testsuite/gcc.target/powerpc/extswsli-3.c
*************** fb0a89e45ba252c43353b0f5f4c7ce06  gcc/te
*** 46581,46588 ****
  260bfb66fa2d757649eab8ec626c156f  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-float.c
  8ba6a8584e37813e445b766498f22eec  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-floatdouble.c
  e1f76686e8ed9d21c3e93cb876436d94  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int.c
! dd4d551b9f9fd9d15f7feb3212e4277b  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p8.c
! fc4c1496186a673fc32bd41dfed6808d  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c
  38fa9f7eba074a468077daeb1f8851cf  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-longlong.c
  49b251a50e1bf1e51c1a49aa6fd075f0  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-short.c
  ad2b4572d2db6cc1979e2268ca64ca93  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-char.c
--- 46844,46851 ----
  260bfb66fa2d757649eab8ec626c156f  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-float.c
  8ba6a8584e37813e445b766498f22eec  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-floatdouble.c
  e1f76686e8ed9d21c3e93cb876436d94  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int.c
! 842be06bd7b4cecf3c18ef5ff83c670c  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p8.c
! 17703b3bccd13abf083011b1e95894b8  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c
  38fa9f7eba074a468077daeb1f8851cf  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-longlong.c
  49b251a50e1bf1e51c1a49aa6fd075f0  gcc/testsuite/gcc.target/powerpc/fold-vec-mult-short.c
  ad2b4572d2db6cc1979e2268ca64ca93  gcc/testsuite/gcc.target/powerpc/fold-vec-sub-char.c
*************** de6c3cf42bacd45ce2c483d586831396  gcc/te
*** 46612,46618 ****
  edd0512cd703018bda99c607e742ce2c  gcc/testsuite/gcc.target/powerpc/longcall-1.c
  094f3e09aed127827288e30d1b8d8303  gcc/testsuite/gcc.target/powerpc/longcall-2.c
  d864673ce536459f426008bf55d90e07  gcc/testsuite/gcc.target/powerpc/loop_align.c
! 51f54ac58363b5ddc516388357a853ed  gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
  95f0a3ed470b480e62e5510f13cd33b8  gcc/testsuite/gcc.target/powerpc/macho-lo-sum.c
  a6e075ba7caf3f7b2b5becd9cf51075b  gcc/testsuite/gcc.target/powerpc/maddld.c
  9db67e8f35964a8ae2afb7840142608c  gcc/testsuite/gcc.target/powerpc/medium_offset.c
--- 46875,46881 ----
  edd0512cd703018bda99c607e742ce2c  gcc/testsuite/gcc.target/powerpc/longcall-1.c
  094f3e09aed127827288e30d1b8d8303  gcc/testsuite/gcc.target/powerpc/longcall-2.c
  d864673ce536459f426008bf55d90e07  gcc/testsuite/gcc.target/powerpc/loop_align.c
! e3e42cd5092a59ffd4a63afcc6c1efe5  gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
  95f0a3ed470b480e62e5510f13cd33b8  gcc/testsuite/gcc.target/powerpc/macho-lo-sum.c
  a6e075ba7caf3f7b2b5becd9cf51075b  gcc/testsuite/gcc.target/powerpc/maddld.c
  9db67e8f35964a8ae2afb7840142608c  gcc/testsuite/gcc.target/powerpc/medium_offset.c
*************** ae816fd528711a489a96d36403ab4796  gcc/te
*** 46669,46676 ****
  76e637efba841cdc036746e8f48a0914  gcc/testsuite/gcc.target/powerpc/p9-splat-4.c
  281d50a4ea6225f5242fc0a4af18c5c1  gcc/testsuite/gcc.target/powerpc/p9-splat-5.c
  f177eaa3d0b3133708761261ab01b9d1  gcc/testsuite/gcc.target/powerpc/p9-vbpermd.c
- 78aaadd4e796b8eb8bdc1e0229bc80cf  gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-1.c
- 55f219c8a90b20a65f1b4197c7916de3  gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-2.c
  1001e87b8d8b5b7135c100a89e4def45  gcc/testsuite/gcc.target/powerpc/p9-vneg.c
  69dc6d7d44a9c96a4258141385a846d7  gcc/testsuite/gcc.target/powerpc/p9-vparity.c
  7d6c7bf2bdc6cb2de461278049408eb4  gcc/testsuite/gcc.target/powerpc/p9-vpermr.c
--- 46932,46937 ----
*************** af2944b9bcefbeb4a6dffdabb0ff76f8  gcc/te
*** 46737,46743 ****
  e96063eb30ef5f87d6277fc1883c2930  gcc/testsuite/gcc.target/powerpc/ppc-round2.c
  1bccbbd277ea4368b0f659b0c87988fb  gcc/testsuite/gcc.target/powerpc/ppc-round3.c
  01aaaef3cb8cee0f105c2e9489dc423d  gcc/testsuite/gcc.target/powerpc/ppc-sdata-1.c
! 860fdd35425c1e9e3cd0af60d01d2ed4  gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c
  f330b1449ff081f9288491fb5ecf814c  gcc/testsuite/gcc.target/powerpc/ppc-spe.c
  87e474f57be9adad2f6d0a89328b39c3  gcc/testsuite/gcc.target/powerpc/ppc-spe64-1.c
  031e121f3288d78b35a626363fbb6306  gcc/testsuite/gcc.target/powerpc/ppc-stackalign-1.c
--- 46998,47004 ----
  e96063eb30ef5f87d6277fc1883c2930  gcc/testsuite/gcc.target/powerpc/ppc-round2.c
  1bccbbd277ea4368b0f659b0c87988fb  gcc/testsuite/gcc.target/powerpc/ppc-round3.c
  01aaaef3cb8cee0f105c2e9489dc423d  gcc/testsuite/gcc.target/powerpc/ppc-sdata-1.c
! 9dc1fa13d3f31bcd3a134627edb4458a  gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c
  f330b1449ff081f9288491fb5ecf814c  gcc/testsuite/gcc.target/powerpc/ppc-spe.c
  87e474f57be9adad2f6d0a89328b39c3  gcc/testsuite/gcc.target/powerpc/ppc-spe64-1.c
  031e121f3288d78b35a626363fbb6306  gcc/testsuite/gcc.target/powerpc/ppc-stackalign-1.c
*************** e16e95e49a068e3c198ca05f1f517f27  gcc/te
*** 46913,46919 ****
  2ade3ead61d3cab26f7ebe4b285b9137  gcc/testsuite/gcc.target/powerpc/pr79439.c
  8c1e3ce96b0244e674ef5e0620a4b88e  gcc/testsuite/gcc.target/powerpc/pr79544.c
  10bc4b6172ee1fc37b5d7f8da24537ee  gcc/testsuite/gcc.target/powerpc/pr79799-1.c
! 7e1a5eef488ae4e6b47fc8fdc00352f3  gcc/testsuite/gcc.target/powerpc/pr79799-2.c
  14b9e39f78e01528365eded066632779  gcc/testsuite/gcc.target/powerpc/pr79799-3.c
  467b382b65b1ebbac6326ad8455010b0  gcc/testsuite/gcc.target/powerpc/pr79799-4.c
  6fb3807ef298bd1214fdd2135b1c617a  gcc/testsuite/gcc.target/powerpc/pr79799-5.c
--- 47174,47180 ----
  2ade3ead61d3cab26f7ebe4b285b9137  gcc/testsuite/gcc.target/powerpc/pr79439.c
  8c1e3ce96b0244e674ef5e0620a4b88e  gcc/testsuite/gcc.target/powerpc/pr79544.c
  10bc4b6172ee1fc37b5d7f8da24537ee  gcc/testsuite/gcc.target/powerpc/pr79799-1.c
! 751b4e054465cb49b8e06dd1775c4f1d  gcc/testsuite/gcc.target/powerpc/pr79799-2.c
  14b9e39f78e01528365eded066632779  gcc/testsuite/gcc.target/powerpc/pr79799-3.c
  467b382b65b1ebbac6326ad8455010b0  gcc/testsuite/gcc.target/powerpc/pr79799-4.c
  6fb3807ef298bd1214fdd2135b1c617a  gcc/testsuite/gcc.target/powerpc/pr79799-5.c
*************** d47ea1598c1321fc4399901853c2e875  gcc/te
*** 46947,46959 ****
--- 47208,47233 ----
  6998ed5bc17f2c2cae45a8fe179c2d16  gcc/testsuite/gcc.target/powerpc/pr80695-p9.c
  12068e972df8c5dd156551254f178638  gcc/testsuite/gcc.target/powerpc/pr80718.c
  301df4d12681f11583133c52aaa21227  gcc/testsuite/gcc.target/powerpc/pr81348.c
+ 4400c1c9f663abff19e28961ea1e4b32  gcc/testsuite/gcc.target/powerpc/pr81572.c
  d8a50436a257e5e490d186255b113b43  gcc/testsuite/gcc.target/powerpc/pr81622.c
  91aa94bfbc5294b4a595ae532afc83cc  gcc/testsuite/gcc.target/powerpc/pr81833-1.c
  19cfa2a5c1f2939acd4ac7362754d9b0  gcc/testsuite/gcc.target/powerpc/pr81833-2.c
  8594eb52b8a7ff0cff5ca6a853090510  gcc/testsuite/gcc.target/powerpc/pr81959.c
  118dd26456facc5560611716506ec4a3  gcc/testsuite/gcc.target/powerpc/pr82112.c
+ 08873c18cd4dc5f6310b0cdfbaef26c8  gcc/testsuite/gcc.target/powerpc/pr83399.c
  af41d1f7ab09c5aeb8e8a2984b5dab5b  gcc/testsuite/gcc.target/powerpc/pr83629.c
+ 8619704fd1bd12720d6dadca8b77f4d5  gcc/testsuite/gcc.target/powerpc/pr83660.C
  d301886da183d8d6d112b1ec7d01024d  gcc/testsuite/gcc.target/powerpc/pr83677.c
+ 83c10799d3a35a6219f402f5ff99274a  gcc/testsuite/gcc.target/powerpc/pr83862.c
+ 97363ed47bfba39cb4cdc1518084a7ca  gcc/testsuite/gcc.target/powerpc/pr83969.c
+ f933cd0da11eebb48da12afacd0c1f1b  gcc/testsuite/gcc.target/powerpc/pr84154-1.c
+ 4fd6082802d1baf586110097c4b248b7  gcc/testsuite/gcc.target/powerpc/pr84154-2.c
+ 7dece685b3ae3bc15f2ebbbe188ef463  gcc/testsuite/gcc.target/powerpc/pr84154-3.c
+ 051202397c19754b2a90622d9c2bc23f  gcc/testsuite/gcc.target/powerpc/pr84700.c
+ 874e5579ccc7cea1bb0bdaa8eabfdcb3  gcc/testsuite/gcc.target/powerpc/pr84878.c
+ 48d76dd15431a54c280ce4fa945acb55  gcc/testsuite/gcc.target/powerpc/pr85698.c
+ a350423ed93def71f8b093f25456d889  gcc/testsuite/gcc.target/powerpc/pr85755.c
+ d86d5375cd27e7c265ce5093d761b62e  gcc/testsuite/gcc.target/powerpc/pr87033.c
  17f878b62dd2e08735d53fce64232a47  gcc/testsuite/gcc.target/powerpc/quad-atomic.c
  171a411d14f30e8450dc3f2ef38b1bd7  gcc/testsuite/gcc.target/powerpc/recip-1.c
  6b7c4920c070e84f6819377bcdb90c0d  gcc/testsuite/gcc.target/powerpc/recip-2.c
*************** bf385d7310a8dab90ee44f86832aa03b  gcc/te
*** 46994,47007 ****
  afd35ba530c1198a75e9e1a79650add6  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-1.c
  7aacc521251d44cf2fa3a75a564c4270  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-2.c
  b21c33d525f0c97602d4a2348994de36  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c
! 589b520b24be329639b6a19bf46a21be  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c
! 991657dd32fa10208631317b8b971fc8  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c
! 185454bb81c4040670a29160d3887ae5  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c
! 12993ee5ee0dfc0b45dc8aeeffb00431  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-4.c
! a9f59812e009ec10fa71a45c0eb87893  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c
! 9cfacfcd00bdbf48ea7285479e96fad9  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-6.c
! 1ebc8b36658f5a909752cc23480793d6  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c
! c15cdd2288e98bbf31d2967424ef41a2  gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-8.c
  f66a7c7a9b7cdd49a6b9860dbb16d90a  gcc/testsuite/gcc.target/powerpc/savres.c
  98a0676ba42103cce9e60b2313f8b2ef  gcc/testsuite/gcc.target/powerpc/sd-pwr6.c
  65a53924a48d5df99017fa40a01962f4  gcc/testsuite/gcc.target/powerpc/sd-vsx.c
--- 47268,47280 ----
  afd35ba530c1198a75e9e1a79650add6  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-1.c
  7aacc521251d44cf2fa3a75a564c4270  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-2.c
  b21c33d525f0c97602d4a2348994de36  gcc/testsuite/gcc.target/powerpc/rs6000-ldouble-3.c
! 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
  98a0676ba42103cce9e60b2313f8b2ef  gcc/testsuite/gcc.target/powerpc/sd-pwr6.c
  65a53924a48d5df99017fa40a01962f4  gcc/testsuite/gcc.target/powerpc/sd-vsx.c
*************** a2e47a22218959dff98bce634778ac59  gcc/te
*** 47046,47051 ****
--- 47319,47325 ----
  6fe65c4dc12e9e595c44e7bbf8f65dea  gcc/testsuite/gcc.target/powerpc/swaps-p8-27.c
  84237fc0555dd56c639a0274a8f4dbde  gcc/testsuite/gcc.target/powerpc/swaps-p8-3.c
  0df14a19fd6ee081105fc2b90003a0b4  gcc/testsuite/gcc.target/powerpc/swaps-p8-4.c
+ d67cbfac4392dc796baa96af78236b3f  gcc/testsuite/gcc.target/powerpc/swaps-p8-46.c
  26517c689d143f1397c457beaff12ae6  gcc/testsuite/gcc.target/powerpc/swaps-p8-5.c
  0822c3753f3d5eb389f4e197f60558d9  gcc/testsuite/gcc.target/powerpc/swaps-p8-6.c
  b8cea10d187ee0ff03310bf53b54d85e  gcc/testsuite/gcc.target/powerpc/swaps-p8-7.c
*************** d10764d77e5bf498f053a1dcc3189476  gcc/te
*** 47287,47293 ****
  245dcb032bfffd6eb1f4d061772b4bbe  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c
  bd49be19b83d45c209260e0ce7a74076  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c
  f21f1ccb428aa3d728272b28733d173e  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c
! e3bb35a748eed44522e5a2c187cf22f8  gcc/testsuite/gcc.target/powerpc/vsxcopy.c
  8b5c58cdeae1cc3d92696c3c863690e8  gcc/testsuite/gcc.target/powerpc/warn-1.c
  c88c25be01895313981c649a1f57b4c6  gcc/testsuite/gcc.target/powerpc/warn-2.c
  a416d38760a620b535b56c151a15e3f4  gcc/testsuite/gcc.target/powerpc/warn-lvsl-lvsr.c
--- 47561,47567 ----
  245dcb032bfffd6eb1f4d061772b4bbe  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c
  bd49be19b83d45c209260e0ce7a74076  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c
  f21f1ccb428aa3d728272b28733d173e  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c
! 9925ed7f51670db65d30b14417310b39  gcc/testsuite/gcc.target/powerpc/vsxcopy.c
  8b5c58cdeae1cc3d92696c3c863690e8  gcc/testsuite/gcc.target/powerpc/warn-1.c
  c88c25be01895313981c649a1f57b4c6  gcc/testsuite/gcc.target/powerpc/warn-2.c
  a416d38760a620b535b56c151a15e3f4  gcc/testsuite/gcc.target/powerpc/warn-lvsl-lvsr.c
*************** d69baea5be0d866cbde5003e28cfb811  gcc/te
*** 47328,47336 ****
--- 47602,47612 ----
  2750052bc05f059828b76c05a2a7da2e  gcc/testsuite/gcc.target/s390/bswaphi-1.c
  c5136e0bb58277988b6c8fb48db7921f  gcc/testsuite/gcc.target/s390/dfp-1.c
  7a9f6920ab3e490fbba0f30bd72676f7  gcc/testsuite/gcc.target/s390/dfp-conv1.c
+ 8fe194c399b90414286b1fe87a584938  gcc/testsuite/gcc.target/s390/dfp_to_bfp_rounding.c
  1d597c2c76602bea7e4683b7c43d63ab  gcc/testsuite/gcc.target/s390/dwarfregtable-1.c
  3df32b127f6505d5afe3b8ea351491f1  gcc/testsuite/gcc.target/s390/dwarfregtable-2.c
  e4935aebfbac92efa594724b44e77822  gcc/testsuite/gcc.target/s390/dwarfregtable-3.c
+ 9d34a3245581ff3208ddbda615ef6617  gcc/testsuite/gcc.target/s390/flogr-1.c
  2f2404c29092408bd406cc2e185ee7d4  gcc/testsuite/gcc.target/s390/fp2int1.c
  9b770970bea6710409e92c9a84d3a5d3  gcc/testsuite/gcc.target/s390/frame-addr1.c
  c7958dc9fa4da0d50fe09b45a6790ac0  gcc/testsuite/gcc.target/s390/frame-addr2.c
*************** ac7ad6d9f91b32a565e8783a2ab45f5e  gcc/te
*** 47384,47389 ****
--- 47660,47666 ----
  4178b3de1bcb9044aedd4c8ae7af272c  gcc/testsuite/gcc.target/s390/htm-builtins-compile-1.c
  c767047b57d5964d4b69c91432d25576  gcc/testsuite/gcc.target/s390/htm-builtins-compile-2.c
  ab0f83b02eabb2022df1ceee50ef4733  gcc/testsuite/gcc.target/s390/htm-builtins-compile-3.c
+ b4b351f743f85d6222579341377c02c8  gcc/testsuite/gcc.target/s390/htm-builtins-compile-4.c
  def4a5321d04b176ac0db1488fdbec1b  gcc/testsuite/gcc.target/s390/htm-builtins-z13-1.c
  b3dd05db76a00a764bd5968152b2ef72  gcc/testsuite/gcc.target/s390/htm-nofloat-1.c
  81eabdfd43ce0edc626c27f72b8cbfed  gcc/testsuite/gcc.target/s390/htm-nofloat-compile-1.c
*************** bb08fa1f6627522f43f5fe89dadd04a3  gcc/te
*** 47411,47416 ****
--- 47688,47720 ----
  a57f54483446dc5f464df08f79495bf7  gcc/testsuite/gcc.target/s390/memset-2.c
  a105158cf4633c30f58d84f95c33ee67  gcc/testsuite/gcc.target/s390/morestack.c
  ee3f00537b1c391d545c37c6ea4a145c  gcc/testsuite/gcc.target/s390/nearestint-1.c
+ 062259b85f76e8eaa4f342bcb50de319  gcc/testsuite/gcc.target/s390/nobp-function-pointer-attr.c
+ fea682ccb6ddf5d48ba2e5b9a2ef8ae6  gcc/testsuite/gcc.target/s390/nobp-function-pointer-nothunk.c
+ f470a64f5fa76b61ccc1b696fc104257  gcc/testsuite/gcc.target/s390/nobp-function-pointer-z10.c
+ fd86b7ccb5768e7a2d450e84f1f92ab5  gcc/testsuite/gcc.target/s390/nobp-function-pointer-z900.c
+ f94a714ea89af757b2fbeea46e5e4785  gcc/testsuite/gcc.target/s390/nobp-indirect-jump-attr.c
+ 3ded1361a1c121a538059f23afec68ef  gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-attr.c
+ 92ed3b6ae3bc561ddf22524222cf59a7  gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z10.c
+ cf099f048fb412c0177515bf4d2c2867  gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z900.c
+ ee503be3b266ab1c4ddc1f4777eef09b  gcc/testsuite/gcc.target/s390/nobp-indirect-jump-nothunk.c
+ e69045f2efe9ce842e75eb186c58fc4f  gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z10.c
+ 0f7a2f99d225d5a5420e0694c65199ad  gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z900.c
+ 87cfd8a21239ff00441153de8c51a367  gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c
+ 239288b3c1d2c6ad3d7c27c16343437c  gcc/testsuite/gcc.target/s390/nobp-return-attr-all.c
+ b684d45c88d2d681994f187439cd14f4  gcc/testsuite/gcc.target/s390/nobp-return-attr-neg.c
+ 22a2c9c093a2ce7f30ecfda493e4c35c  gcc/testsuite/gcc.target/s390/nobp-return-mem-attr.c
+ 37270da1ca7fc4b46ee4d2c668fe6515  gcc/testsuite/gcc.target/s390/nobp-return-mem-nothunk.c
+ db4cbdfd9248064e4e5f35f37f19f3b3  gcc/testsuite/gcc.target/s390/nobp-return-mem-z10.c
+ f6c9a1626e9a01ba8b1e1747c7ec32e9  gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c
+ 68f4f5fc6c6bb154f39fafd3be8bc57b  gcc/testsuite/gcc.target/s390/nobp-return-reg-attr.c
+ b8264f568a96c8a4f482377d2149b99f  gcc/testsuite/gcc.target/s390/nobp-return-reg-mixed.c
+ 3c3b24e4e96dd2749db97eb637e27ea4  gcc/testsuite/gcc.target/s390/nobp-return-reg-nothunk.c
+ b412cfef2c17bbb3667d188ea07e88d8  gcc/testsuite/gcc.target/s390/nobp-return-reg-z10.c
+ 702518f6d91053d4346822b49e5f21c8  gcc/testsuite/gcc.target/s390/nobp-return-reg-z900.c
+ d10ede3615cc75687ebe5e233896851a  gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z10.c
+ 8f2deb25c94340c19360ebdf6d822acf  gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z900.c
+ ce04de73ecbaa0a12a0313d3aed72942  gcc/testsuite/gcc.target/s390/nobp-table-jump-z10.c
+ dfee7fa2ec55ccfb935c28226ca15fe3  gcc/testsuite/gcc.target/s390/nobp-table-jump-z900.c
  7ea6fcf7afbdc4bcd57407e5299e712a  gcc/testsuite/gcc.target/s390/nolrl-1.c
  eb96a92710915622b3f65dba4a30955d  gcc/testsuite/gcc.target/s390/oscbreak-1.c
  25c3bd00fd3d097e42ac8cfc215fd0c4  gcc/testsuite/gcc.target/s390/pfpo.c
*************** acda2f0eed359b6c50d33952658d4fad  gcc/te
*** 47438,47443 ****
--- 47742,47748 ----
  d127ee93571cc359b60fa89c63392525  gcc/testsuite/gcc.target/s390/pr79895.c
  8b4969fbf314851ec142b17e9a328088  gcc/testsuite/gcc.target/s390/pr80725.c
  735bf8da0d759e7de791e71467439655  gcc/testsuite/gcc.target/s390/pr81534.c
+ d8d4be7f8d46a289e2ef8e7db7fd3f21  gcc/testsuite/gcc.target/s390/pr84295.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
*************** b09307dc50aad69d9ba101705dce41f4  gcc/te
*** 48355,48360 ****
--- 48660,48666 ----
  0cc15a108beed2a60551b41eecccb6a1  gcc/testsuite/gcc.test-framework/gen_directive_tests
  201ec337399ff7b56217e99a2a95a5d5  gcc/testsuite/gcc.test-framework/test-framework.awk
  aafefcdfeee623f5d86f894a99929978  gcc/testsuite/gcc.test-framework/test-framework.exp
+ 38343e39577a1d093c40818070ea1d7b  gcc/testsuite/gfortran.dg/20181025-1.f
  36cd9c1e3875c80db22097b9c2ad49b3  gcc/testsuite/gfortran.dg/PR19754_1.f90
  0c95496297d3f7c6f4da308bb248095b  gcc/testsuite/gfortran.dg/PR19754_2.f90
  c835e26c02b37171b452acf68df9d289  gcc/testsuite/gfortran.dg/PR19872.f
*************** aad2f9f0db664a3b7edac15f2083c164  gcc/te
*** 48501,48511 ****
  0cf46fb1b972cef547a15b98c99067ed  gcc/testsuite/gfortran.dg/allocatable_scalar_7.f90
  fea5e495c3693fa83e789fad350b77c1  gcc/testsuite/gfortran.dg/allocatable_scalar_8.f90
  4a889a7fef27e234354d8ab8c8afda42  gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90
! b2bb9a39d2749a07d2ef93fb4bd4b9b1  gcc/testsuite/gfortran.dg/allocate_alloc_opt_1.f90
  a85311f77c807137eeb26b218ec3a3e4  gcc/testsuite/gfortran.dg/allocate_alloc_opt_10.f90
  da5d5b7965daec91596c4c854f913229  gcc/testsuite/gfortran.dg/allocate_alloc_opt_11.f90
  690e1952bbd8580233f07cf2ebf12bb6  gcc/testsuite/gfortran.dg/allocate_alloc_opt_12.f90
  defe3a05f941a9b5c9f6a22338429ba8  gcc/testsuite/gfortran.dg/allocate_alloc_opt_13.f90
  3c813b0a7d13f9aa20c4646947272369  gcc/testsuite/gfortran.dg/allocate_alloc_opt_2.f90
  d2e2db611a120ae0c8ccc46d77f60b4f  gcc/testsuite/gfortran.dg/allocate_alloc_opt_3.f90
  99d5a861de70768d4b39b55425f3fbe6  gcc/testsuite/gfortran.dg/allocate_alloc_opt_4.f90
--- 48807,48818 ----
  0cf46fb1b972cef547a15b98c99067ed  gcc/testsuite/gfortran.dg/allocatable_scalar_7.f90
  fea5e495c3693fa83e789fad350b77c1  gcc/testsuite/gfortran.dg/allocatable_scalar_8.f90
  4a889a7fef27e234354d8ab8c8afda42  gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90
! 78b38d37b7b298f5f93ff182730c0c9c  gcc/testsuite/gfortran.dg/allocate_alloc_opt_1.f90
  a85311f77c807137eeb26b218ec3a3e4  gcc/testsuite/gfortran.dg/allocate_alloc_opt_10.f90
  da5d5b7965daec91596c4c854f913229  gcc/testsuite/gfortran.dg/allocate_alloc_opt_11.f90
  690e1952bbd8580233f07cf2ebf12bb6  gcc/testsuite/gfortran.dg/allocate_alloc_opt_12.f90
  defe3a05f941a9b5c9f6a22338429ba8  gcc/testsuite/gfortran.dg/allocate_alloc_opt_13.f90
+ 27f657b814cdc497725d00a0dfe1ece8  gcc/testsuite/gfortran.dg/allocate_alloc_opt_14.f90
  3c813b0a7d13f9aa20c4646947272369  gcc/testsuite/gfortran.dg/allocate_alloc_opt_2.f90
  d2e2db611a120ae0c8ccc46d77f60b4f  gcc/testsuite/gfortran.dg/allocate_alloc_opt_3.f90
  99d5a861de70768d4b39b55425f3fbe6  gcc/testsuite/gfortran.dg/allocate_alloc_opt_4.f90
*************** d2e2db611a120ae0c8ccc46d77f60b4f  gcc/te
*** 48515,48520 ****
--- 48822,48828 ----
  5e798936b9fb2d772485a6a5a7fc344f  gcc/testsuite/gfortran.dg/allocate_alloc_opt_8.f90
  90a5c6f59d30dae22d02074a82b8cf2d  gcc/testsuite/gfortran.dg/allocate_alloc_opt_9.f90
  b4a7703b0fdb74fb104e9430417f16e6  gcc/testsuite/gfortran.dg/allocate_assumed_charlen_1.f90
+ eb75106fbfae3ef283ff9b6073962446  gcc/testsuite/gfortran.dg/allocate_assumed_charlen_4.f90
  7ad72f1f76221dbdec0ab077ae3b8dd8  gcc/testsuite/gfortran.dg/allocate_char_star_scalar_1.f90
  c8af6a632c789d3dc3fb0b76448852dd  gcc/testsuite/gfortran.dg/allocate_class_1.f90
  5d06d590dfc06d981d4fd70c9246eb64  gcc/testsuite/gfortran.dg/allocate_class_2.f90
*************** b985d75d4d77d7f24d29efbb0266b7c1  gcc/te
*** 48535,48543 ****
  3e270457a0730f64cb7deaefe7256b90  gcc/testsuite/gfortran.dg/allocate_error_6.f90
  fb64bc7d356ec60804fbf43d60862c56  gcc/testsuite/gfortran.dg/allocate_scalar_with_shape.f90
  85b517b1e2ad96a7d4e84672378d9fc3  gcc/testsuite/gfortran.dg/allocate_stat.f90
! 253a002731f9a4dd5588b787f6b8b83c  gcc/testsuite/gfortran.dg/allocate_stat_2.f90
  ff3f13c9787c4de8c525fed52a7cf077  gcc/testsuite/gfortran.dg/allocate_with_arrayspec_1.f90
  21039e5391c81439295b5f228ebb435c  gcc/testsuite/gfortran.dg/allocate_with_mold_1.f90
  38e31a9c8efb7f50005c46dfb7e1d27e  gcc/testsuite/gfortran.dg/allocate_with_source_1.f90
  b7a38e6411c1c3bdc53bf81a10203dfc  gcc/testsuite/gfortran.dg/allocate_with_source_10.f08
  eb2a7d116743913f7db6287a6d095620  gcc/testsuite/gfortran.dg/allocate_with_source_11.f08
--- 48843,48852 ----
  3e270457a0730f64cb7deaefe7256b90  gcc/testsuite/gfortran.dg/allocate_error_6.f90
  fb64bc7d356ec60804fbf43d60862c56  gcc/testsuite/gfortran.dg/allocate_scalar_with_shape.f90
  85b517b1e2ad96a7d4e84672378d9fc3  gcc/testsuite/gfortran.dg/allocate_stat.f90
! fd47cb2ee3abca7f4ec8637b9e9e793b  gcc/testsuite/gfortran.dg/allocate_stat_2.f90
  ff3f13c9787c4de8c525fed52a7cf077  gcc/testsuite/gfortran.dg/allocate_with_arrayspec_1.f90
  21039e5391c81439295b5f228ebb435c  gcc/testsuite/gfortran.dg/allocate_with_mold_1.f90
+ 9f39ddc177a6f3ff474548de040842f7  gcc/testsuite/gfortran.dg/allocate_with_mold_2.f90
  38e31a9c8efb7f50005c46dfb7e1d27e  gcc/testsuite/gfortran.dg/allocate_with_source_1.f90
  b7a38e6411c1c3bdc53bf81a10203dfc  gcc/testsuite/gfortran.dg/allocate_with_source_10.f08
  eb2a7d116743913f7db6287a6d095620  gcc/testsuite/gfortran.dg/allocate_with_source_11.f08
*************** d5ea8f5a9e2574f03e0f07aefb628587  gcc/te
*** 48669,48674 ****
--- 48978,48984 ----
  b3fed1ef4a2d1acbb8f29ba81a3ade35  gcc/testsuite/gfortran.dg/array_constructor_49.f90
  9918ac77cf760a3800e94da773f0a74b  gcc/testsuite/gfortran.dg/array_constructor_5.f90
  7b8fbbe044e7a6ab2be8274984852be8  gcc/testsuite/gfortran.dg/array_constructor_50.f90
+ 74902cf57199c682dc3775323dd67fe3  gcc/testsuite/gfortran.dg/array_constructor_52.f90
  6dc05669b848d267b25c38806e59d51f  gcc/testsuite/gfortran.dg/array_constructor_6.f90
  0965c3437a2116ac32e573441184fdee  gcc/testsuite/gfortran.dg/array_constructor_7.f90
  b4019b0f6faabbc51d698bec4f4094ee  gcc/testsuite/gfortran.dg/array_constructor_8.f90
*************** c0997c9e951767642f9b109c7f40a532  gcc/te
*** 48778,48785 ****
  0035e7a4d34420e29e254e40238cdb9c  gcc/testsuite/gfortran.dg/associate_28.f90
  9236179c94e8ef2f6258dcf917d9dee9  gcc/testsuite/gfortran.dg/associate_29.f90
  ada9a3758cef9c8c02a55f1139c4f13b  gcc/testsuite/gfortran.dg/associate_3.f03
! 49705e479c6ca71ab3678aef4ee07687  gcc/testsuite/gfortran.dg/associate_30.f90
  a1f5f0d8423367d45fe9382b407ce7e9  gcc/testsuite/gfortran.dg/associate_4.f08
  5dfaf5e9c3d8b8b8f835046ca42ccbf4  gcc/testsuite/gfortran.dg/associate_5.f03
  b9a80d4815a13a74f89c8e64782f5c16  gcc/testsuite/gfortran.dg/associate_6.f03
  794e238fe8d1288b6698f51d3c536d13  gcc/testsuite/gfortran.dg/associate_7.f03
--- 49088,49097 ----
  0035e7a4d34420e29e254e40238cdb9c  gcc/testsuite/gfortran.dg/associate_28.f90
  9236179c94e8ef2f6258dcf917d9dee9  gcc/testsuite/gfortran.dg/associate_29.f90
  ada9a3758cef9c8c02a55f1139c4f13b  gcc/testsuite/gfortran.dg/associate_3.f03
! 6eab1bfbc8235d8fcf743d9f5635aea3  gcc/testsuite/gfortran.dg/associate_30.f90
! 4143f553bd13a860954e31145b26bcba  gcc/testsuite/gfortran.dg/associate_33.f03
  a1f5f0d8423367d45fe9382b407ce7e9  gcc/testsuite/gfortran.dg/associate_4.f08
+ 6143ba2a228800dde0bd37f3665e0994  gcc/testsuite/gfortran.dg/associate_46.f90
  5dfaf5e9c3d8b8b8f835046ca42ccbf4  gcc/testsuite/gfortran.dg/associate_5.f03
  b9a80d4815a13a74f89c8e64782f5c16  gcc/testsuite/gfortran.dg/associate_6.f03
  794e238fe8d1288b6698f51d3c536d13  gcc/testsuite/gfortran.dg/associate_7.f03
*************** e6719846a0d56fb08570363cc942d985  gcc/te
*** 48810,48815 ****
--- 49122,49128 ----
  1eb74813f6083e8ae40cefdc0ddd1755  gcc/testsuite/gfortran.dg/assumed_charlen_function_6.f90
  5893a88ec7ab47fda1daa4953b37559d  gcc/testsuite/gfortran.dg/assumed_charlen_in_main.f90
  9593ca2177be6b3e0aee7138f62389c4  gcc/testsuite/gfortran.dg/assumed_charlen_needed_1.f90
+ ca87784564232e0a6814ebeab8eba19d  gcc/testsuite/gfortran.dg/assumed_charlen_parameter.f90
  994aa6997da39a67cf365954885c693e  gcc/testsuite/gfortran.dg/assumed_charlen_sharing.f90
  99fbd7567ee971b88ebc11f905c14953  gcc/testsuite/gfortran.dg/assumed_charlen_substring_1.f90
  f9560349fe697cf56f8bbe006a5e7609  gcc/testsuite/gfortran.dg/assumed_dummy_1.f90
*************** aa62cef37602fad57a16f5be33ed1282  gcc/te
*** 48821,48826 ****
--- 49134,49141 ----
  902ad8d66d78f508c5a7a8e21a177906  gcc/testsuite/gfortran.dg/assumed_rank_11.f90
  7b5ed633a8322cf6570abdcd1f341dad  gcc/testsuite/gfortran.dg/assumed_rank_12.f90
  93ff0ad792c55f57799a102080fa1412  gcc/testsuite/gfortran.dg/assumed_rank_13.f90
+ db38a8bc3741440823daac3739cdf86a  gcc/testsuite/gfortran.dg/assumed_rank_14.f90
+ 3c615b993303fefbc0f951f83cda320b  gcc/testsuite/gfortran.dg/assumed_rank_15.f90
  d6f30c8e29ab67ebb49be7bca4d7e8bf  gcc/testsuite/gfortran.dg/assumed_rank_1_c.c
  a2d91ef8d92f36690244cc280037c31d  gcc/testsuite/gfortran.dg/assumed_rank_2.f90
  9478ccb330ec844df5877a48096c9976  gcc/testsuite/gfortran.dg/assumed_rank_3.f90
*************** d736b542d4ef5e539b6ab402b0d757c1  gcc/te
*** 48874,48880 ****
  b347390b63a364594179b619dec33a75  gcc/testsuite/gfortran.dg/automatic_char_len_1.f90
  0bb10fbdd251207409a82e8715768a6e  gcc/testsuite/gfortran.dg/automatic_char_len_2.f90
  3ac3473c59bc5aca3c919aa527aa2503  gcc/testsuite/gfortran.dg/automatic_default_init_1.f90
! d5b2ee81246f6427b4f5a7f1e1c7156d  gcc/testsuite/gfortran.dg/automatic_module_variable.f90
  54d92b19e932e4a9883f0853756d5bbd  gcc/testsuite/gfortran.dg/backslash_1.f90
  239114651bbe9b53f1996646af1a1149  gcc/testsuite/gfortran.dg/backslash_2.f90
  0b4a6c1ad97418a1e5b7698a54d99ac8  gcc/testsuite/gfortran.dg/backslash_3.f
--- 49189,49195 ----
  b347390b63a364594179b619dec33a75  gcc/testsuite/gfortran.dg/automatic_char_len_1.f90
  0bb10fbdd251207409a82e8715768a6e  gcc/testsuite/gfortran.dg/automatic_char_len_2.f90
  3ac3473c59bc5aca3c919aa527aa2503  gcc/testsuite/gfortran.dg/automatic_default_init_1.f90
! 73d6e8707024d85b939354155ff259a3  gcc/testsuite/gfortran.dg/automatic_module_variable.f90
  54d92b19e932e4a9883f0853756d5bbd  gcc/testsuite/gfortran.dg/backslash_1.f90
  239114651bbe9b53f1996646af1a1149  gcc/testsuite/gfortran.dg/backslash_2.f90
  0b4a6c1ad97418a1e5b7698a54d99ac8  gcc/testsuite/gfortran.dg/backslash_3.f
*************** e380ee240bef5ba4ef76004d28c8e451  gcc/te
*** 48890,48896 ****
  b0a1eabf595071c300d6a5f2ad5c3de0  gcc/testsuite/gfortran.dg/backspace_8.f
  5329cced0d79c6bc5e98309b48ec3103  gcc/testsuite/gfortran.dg/backspace_9.f
  91d6853dde1f32b190a55c30188a48c7  gcc/testsuite/gfortran.dg/backtrace_1.f90
! 1caecf47c75a5289cf7aaab54f8f3116  gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90
  d863afb920048efbca3bf6b678a61dec  gcc/testsuite/gfortran.dg/badline.f
  41f643d6c81415110d1ab61fb7f523ab  gcc/testsuite/gfortran.dg/bessel_1.f90
  4a1b60a52196cc2e6c4bb8912eac8359  gcc/testsuite/gfortran.dg/bessel_2.f90
--- 49205,49211 ----
  b0a1eabf595071c300d6a5f2ad5c3de0  gcc/testsuite/gfortran.dg/backspace_8.f
  5329cced0d79c6bc5e98309b48ec3103  gcc/testsuite/gfortran.dg/backspace_9.f
  91d6853dde1f32b190a55c30188a48c7  gcc/testsuite/gfortran.dg/backtrace_1.f90
! 8571429fea8df6ee2c97c22a846b432a  gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90
  d863afb920048efbca3bf6b678a61dec  gcc/testsuite/gfortran.dg/badline.f
  41f643d6c81415110d1ab61fb7f523ab  gcc/testsuite/gfortran.dg/bessel_1.f90
  4a1b60a52196cc2e6c4bb8912eac8359  gcc/testsuite/gfortran.dg/bessel_2.f90
*************** ca6bbc99fbc23476b8d70ee57510d9fb  gcc/te
*** 49270,49275 ****
--- 49585,49591 ----
  aa76a700f1775b4615f5bc59e6a6f86f  gcc/testsuite/gfortran.dg/char_result_14.f90
  2c012b25be62885e19ecb346e3e0b8c0  gcc/testsuite/gfortran.dg/char_result_15.f90
  a8c885ea4e0c6bc88f0ace8c9441b54c  gcc/testsuite/gfortran.dg/char_result_16.f90
+ c57ff1e13c323e08a3d7e31aaad2177d  gcc/testsuite/gfortran.dg/char_result_18.f90
  addbd6613662098935525e2467474eb4  gcc/testsuite/gfortran.dg/char_result_2.f90
  7aca40512679e7e9da0693bc91c40364  gcc/testsuite/gfortran.dg/char_result_3.f90
  1d3114221c526ae44bd098b162824d82  gcc/testsuite/gfortran.dg/char_result_4.f90
*************** e8904afb9adfeb76555179cf83d18504  gcc/te
*** 49378,49383 ****
--- 49694,49700 ----
  0ce4624d38091f6542bcf6fab4486b51  gcc/testsuite/gfortran.dg/class_64.f90
  123e8fdbca935f6b90c89e509f0a97f7  gcc/testsuite/gfortran.dg/class_65.f90
  6cc892c72c07b16501f3fb172d19f06e  gcc/testsuite/gfortran.dg/class_66.f90
+ 21a5ae6531304c6748be745ba95ac961  gcc/testsuite/gfortran.dg/class_67.f90
  cc0c048415b8d0593fe7e5b164763dc7  gcc/testsuite/gfortran.dg/class_7.f03
  765b5ae237d318aee8909def266c457e  gcc/testsuite/gfortran.dg/class_8.f03
  dac9a57a157d95214c44d80cc02bd042  gcc/testsuite/gfortran.dg/class_9.f03
*************** f2e0d8eab800c2440470c47e27dbc818  gcc/te
*** 49481,49486 ****
--- 49798,49805 ----
  550ba8c1ff1a87edf22c84bbaf1b23c8  gcc/testsuite/gfortran.dg/coarray/failed_images_1.f08
  46fd85e4e0f66017776125b64c85dcae  gcc/testsuite/gfortran.dg/coarray/failed_images_2.f08
  7d4c5cfc3c55e28060d2d7c4a70d70d9  gcc/testsuite/gfortran.dg/coarray/get_array.f90
+ e3489bfc8266709eba8fcf20caaaa62b  gcc/testsuite/gfortran.dg/coarray/get_to_indexed_array_1.f90
+ b7cd4ce2d77c6bd4ba77204cafd677bd  gcc/testsuite/gfortran.dg/coarray/get_to_indirect_array.f90
  6cb57e0edb7420fbfa56608c6eaa63df  gcc/testsuite/gfortran.dg/coarray/image_index_1.f90
  c9182edacbb3ad98cf9b81ced7356078  gcc/testsuite/gfortran.dg/coarray/image_index_2.f90
  c5358ecc3b389637c6a699d4be4f5206  gcc/testsuite/gfortran.dg/coarray/image_index_3.f90
*************** ccea5fe2d622c1b4b11ac162a1a5ab5d  gcc/te
*** 49533,49539 ****
  2375cb901f66b2a115a101939d52aada  gcc/testsuite/gfortran.dg/coarray_28.f90
  d6171beaca591e43e576d2592d78374d  gcc/testsuite/gfortran.dg/coarray_29_1.f90
  5408a8e18baed9f6c69e9e2450432e7e  gcc/testsuite/gfortran.dg/coarray_29_2.f90
! d97b4a30f4d4ec8cae35e68614b29709  gcc/testsuite/gfortran.dg/coarray_3.f90
  6ea7f18b1240af64fbab9370d01fc2cf  gcc/testsuite/gfortran.dg/coarray_30.f90
  71de0eeb3cf2a98786f81af339f3ebc1  gcc/testsuite/gfortran.dg/coarray_31.f90
  41ef600d16174aadd2e383883bb3cbb6  gcc/testsuite/gfortran.dg/coarray_32.f90
--- 49852,49858 ----
  2375cb901f66b2a115a101939d52aada  gcc/testsuite/gfortran.dg/coarray_28.f90
  d6171beaca591e43e576d2592d78374d  gcc/testsuite/gfortran.dg/coarray_29_1.f90
  5408a8e18baed9f6c69e9e2450432e7e  gcc/testsuite/gfortran.dg/coarray_29_2.f90
! 92ec970015b6fb1e203559f55748dcb8  gcc/testsuite/gfortran.dg/coarray_3.f90
  6ea7f18b1240af64fbab9370d01fc2cf  gcc/testsuite/gfortran.dg/coarray_30.f90
  71de0eeb3cf2a98786f81af339f3ebc1  gcc/testsuite/gfortran.dg/coarray_31.f90
  41ef600d16174aadd2e383883bb3cbb6  gcc/testsuite/gfortran.dg/coarray_32.f90
*************** a0baae37f57b46ddb5f4e90b382dcd9b  gcc/te
*** 49550,49559 ****
  cf7cfa2032f638ac67ce56b7d4e08a3d  gcc/testsuite/gfortran.dg/coarray_41.f90
  248d8d9892330b8d193515001f8f85ab  gcc/testsuite/gfortran.dg/coarray_42.f90
  b67430669a5503a2b6f70e534e303644  gcc/testsuite/gfortran.dg/coarray_43.f90
  ef172e1d19584d7e55648b555dbf8fa3  gcc/testsuite/gfortran.dg/coarray_5.f90
  337935b709715398df39ee0eeaaec67b  gcc/testsuite/gfortran.dg/coarray_6.f90
  8cd45380911a9bd61eac7c6b76c8862b  gcc/testsuite/gfortran.dg/coarray_7.f90
! cd9743d87e2443efef86a0f60dacdc41  gcc/testsuite/gfortran.dg/coarray_8.f90
  8050aad4b4793d0de2c06e98903ca98b  gcc/testsuite/gfortran.dg/coarray_9.f90
  33e90ac4b81b1481bfb534ddfd6b939b  gcc/testsuite/gfortran.dg/coarray_alloc_comp_1.f08
  ae0859f4706c53c70278bf18187aed93  gcc/testsuite/gfortran.dg/coarray_alloc_comp_2.f08
--- 49869,49880 ----
  cf7cfa2032f638ac67ce56b7d4e08a3d  gcc/testsuite/gfortran.dg/coarray_41.f90
  248d8d9892330b8d193515001f8f85ab  gcc/testsuite/gfortran.dg/coarray_42.f90
  b67430669a5503a2b6f70e534e303644  gcc/testsuite/gfortran.dg/coarray_43.f90
+ ae84ff8684b83df37cd04c93355bb779  gcc/testsuite/gfortran.dg/coarray_45.f90
+ bdfb211ff859c6346ab45b3805256ba0  gcc/testsuite/gfortran.dg/coarray_46.f90
  ef172e1d19584d7e55648b555dbf8fa3  gcc/testsuite/gfortran.dg/coarray_5.f90
  337935b709715398df39ee0eeaaec67b  gcc/testsuite/gfortran.dg/coarray_6.f90
  8cd45380911a9bd61eac7c6b76c8862b  gcc/testsuite/gfortran.dg/coarray_7.f90
! 8ee88d8049750d443475d7289d4c08f2  gcc/testsuite/gfortran.dg/coarray_8.f90
  8050aad4b4793d0de2c06e98903ca98b  gcc/testsuite/gfortran.dg/coarray_9.f90
  33e90ac4b81b1481bfb534ddfd6b939b  gcc/testsuite/gfortran.dg/coarray_alloc_comp_1.f08
  ae0859f4706c53c70278bf18187aed93  gcc/testsuite/gfortran.dg/coarray_alloc_comp_2.f08
*************** d8b0925104e27edfd7554327aec7e656  gcc/te
*** 49597,49602 ****
--- 49918,49924 ----
  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
+ 9548b18ea57c3895468bd270375183d8  gcc/testsuite/gfortran.dg/coarray_dependency_1.f90
  ae24a8ba632b111617b5af3d9ec9ed23  gcc/testsuite/gfortran.dg/coarray_event_1.f08
  a863774927689ef296949ebaa242ffb2  gcc/testsuite/gfortran.dg/coarray_fail_st.f90
  3ba815ec354d8e22623cd34e97c404af  gcc/testsuite/gfortran.dg/coarray_failed_images_1.f08
*************** cfe684f5b35d41e24c9205e3f305bb02  gcc/te
*** 49605,49611 ****
  9127925813480208932fb9d8668ceff0  gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90
  67bd05aeb98a1f66f977d0e67035deac  gcc/testsuite/gfortran.dg/coarray_lib_alloc_3.f90
  d88ff2ab0c2de5894fe654132c28ab51  gcc/testsuite/gfortran.dg/coarray_lib_alloc_4.f90
! 8e31c01a9045465f1ee783ec7168be81  gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90
  fb3fff2823ee279a3e0c3a44eb7956ab  gcc/testsuite/gfortran.dg/coarray_lib_move_alloc_1.f90
  8e6320cab0d0a19628f0d163955d0f9a  gcc/testsuite/gfortran.dg/coarray_lib_realloc_1.f90
  86e1c68d070859c3fb832b2183d75771  gcc/testsuite/gfortran.dg/coarray_lib_this_image_1.f90
--- 49927,49933 ----
  9127925813480208932fb9d8668ceff0  gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90
  67bd05aeb98a1f66f977d0e67035deac  gcc/testsuite/gfortran.dg/coarray_lib_alloc_3.f90
  d88ff2ab0c2de5894fe654132c28ab51  gcc/testsuite/gfortran.dg/coarray_lib_alloc_4.f90
! d70c32103d688f968da2184928ac6bdc  gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90
  fb3fff2823ee279a3e0c3a44eb7956ab  gcc/testsuite/gfortran.dg/coarray_lib_move_alloc_1.f90
  8e6320cab0d0a19628f0d163955d0f9a  gcc/testsuite/gfortran.dg/coarray_lib_realloc_1.f90
  86e1c68d070859c3fb832b2183d75771  gcc/testsuite/gfortran.dg/coarray_lib_this_image_1.f90
*************** b9804b4b0a71d39afd82b778f0536a3e  gcc/te
*** 49701,49707 ****
  d57b192629fc2adfa507680ea3f866e8  gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90
  b2591a1967b937b0841fc5fb3f73d5ce  gcc/testsuite/gfortran.dg/conflicts.f90
  64f1ee1dbe6f1744d125233e48c831fa  gcc/testsuite/gfortran.dg/conflicts_2.f90
! 9c8fa5f2f155ce74f6167719d3fb9e1f  gcc/testsuite/gfortran.dg/constant_shape.f90
  fc2c9ce66c34cedb05c7fc4d41cb66ef  gcc/testsuite/gfortran.dg/constant_substring.f
  407db943d891796588cfa3a7f6a60084  gcc/testsuite/gfortran.dg/constructor_1.f90
  0d887c40896aed88a9d30cdc998a021e  gcc/testsuite/gfortran.dg/constructor_2.f90
--- 50023,50029 ----
  d57b192629fc2adfa507680ea3f866e8  gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90
  b2591a1967b937b0841fc5fb3f73d5ce  gcc/testsuite/gfortran.dg/conflicts.f90
  64f1ee1dbe6f1744d125233e48c831fa  gcc/testsuite/gfortran.dg/conflicts_2.f90
! 54782d6556ddbba18903dff6510de207  gcc/testsuite/gfortran.dg/constant_shape.f90
  fc2c9ce66c34cedb05c7fc4d41cb66ef  gcc/testsuite/gfortran.dg/constant_substring.f
  407db943d891796588cfa3a7f6a60084  gcc/testsuite/gfortran.dg/constructor_1.f90
  0d887c40896aed88a9d30cdc998a021e  gcc/testsuite/gfortran.dg/constructor_2.f90
*************** b7d89e8d12585a9f475b54ab7958bccd  gcc/te
*** 49774,49781 ****
  ba80841da4b4a0e5982fbcf93b136bfc  gcc/testsuite/gfortran.dg/data_array_4.f90
  898b470ca20458dcd409748bb5ce3481  gcc/testsuite/gfortran.dg/data_array_5.f90
  76386a9e40ac13aed9db89cefaa67ba5  gcc/testsuite/gfortran.dg/data_array_6.f
! b4aba9c1942c276db0411d7beeaa71e8  gcc/testsuite/gfortran.dg/data_bounds_1.f90
! 7cee9fc4a4bf87f25e5132f7ac497ffb  gcc/testsuite/gfortran.dg/data_char_1.f90
  2f85629e7226a9fa811d9ce79e5f6730  gcc/testsuite/gfortran.dg/data_char_2.f90
  a1227914cb43a159c0a0621b4ad71144  gcc/testsuite/gfortran.dg/data_char_3.f90
  43b77886b68f7c4f9a354c43d800dbcf  gcc/testsuite/gfortran.dg/data_components_1.f90
--- 50096,50103 ----
  ba80841da4b4a0e5982fbcf93b136bfc  gcc/testsuite/gfortran.dg/data_array_4.f90
  898b470ca20458dcd409748bb5ce3481  gcc/testsuite/gfortran.dg/data_array_5.f90
  76386a9e40ac13aed9db89cefaa67ba5  gcc/testsuite/gfortran.dg/data_array_6.f
! c283a95e07da2c4668245b44f6b8815c  gcc/testsuite/gfortran.dg/data_bounds_1.f90
! 4c93c5acb2457007194586d814f4c9cc  gcc/testsuite/gfortran.dg/data_char_1.f90
  2f85629e7226a9fa811d9ce79e5f6730  gcc/testsuite/gfortran.dg/data_char_2.f90
  a1227914cb43a159c0a0621b4ad71144  gcc/testsuite/gfortran.dg/data_char_3.f90
  43b77886b68f7c4f9a354c43d800dbcf  gcc/testsuite/gfortran.dg/data_components_1.f90
*************** f7e6506db3e2a2cf1acda6f7ed5bb367  gcc/te
*** 49789,49800 ****
  933976674d89973b726184d45668d1af  gcc/testsuite/gfortran.dg/data_invalid.f90
  5d5172533259b8e20dca6557e26c18a0  gcc/testsuite/gfortran.dg/data_namelist_conflict.f90
  bca7e4fe42af4bdc8c5dce540cb962e5  gcc/testsuite/gfortran.dg/data_pointer_1.f90
  503918b2128c29daa249b849ffe01756  gcc/testsuite/gfortran.dg/data_value_1.f90
! 10f0c8adce060dc0f3e77c644f08c68b  gcc/testsuite/gfortran.dg/deallocate_alloc_opt_1.f90
  079ebbd99b715d218c0619d77fffa7f4  gcc/testsuite/gfortran.dg/deallocate_alloc_opt_2.f90
  1f4b25a7361bcab591c1e3f9dd109880  gcc/testsuite/gfortran.dg/deallocate_alloc_opt_3.f90
  bed6e5db54bbf80cf32d9482e2a1f7e4  gcc/testsuite/gfortran.dg/deallocate_error_1.f90
  adf3e611b5d9dd41324a93faee4fe2c9  gcc/testsuite/gfortran.dg/deallocate_error_2.f90
  2b25720bbab3dd5097001c5ca8a09002  gcc/testsuite/gfortran.dg/deallocate_stat.f90
  e62cb07af37a3023dea48cda7bae2544  gcc/testsuite/gfortran.dg/deallocate_stat_2.f90
  1f6d173ba353df6282857ed63520cb21  gcc/testsuite/gfortran.dg/debug/debug.exp
--- 50111,50125 ----
  933976674d89973b726184d45668d1af  gcc/testsuite/gfortran.dg/data_invalid.f90
  5d5172533259b8e20dca6557e26c18a0  gcc/testsuite/gfortran.dg/data_namelist_conflict.f90
  bca7e4fe42af4bdc8c5dce540cb962e5  gcc/testsuite/gfortran.dg/data_pointer_1.f90
+ ea42e7a04380338a9946ffc999ea6767  gcc/testsuite/gfortran.dg/data_substring.f90
  503918b2128c29daa249b849ffe01756  gcc/testsuite/gfortran.dg/data_value_1.f90
! 14af14ea46e3fb85fe303f1c5942b0fa  gcc/testsuite/gfortran.dg/deallocate_alloc_opt_1.f90
  079ebbd99b715d218c0619d77fffa7f4  gcc/testsuite/gfortran.dg/deallocate_alloc_opt_2.f90
  1f4b25a7361bcab591c1e3f9dd109880  gcc/testsuite/gfortran.dg/deallocate_alloc_opt_3.f90
  bed6e5db54bbf80cf32d9482e2a1f7e4  gcc/testsuite/gfortran.dg/deallocate_error_1.f90
  adf3e611b5d9dd41324a93faee4fe2c9  gcc/testsuite/gfortran.dg/deallocate_error_2.f90
+ 52586650fe9ae6a4d43afc25f3b01e7a  gcc/testsuite/gfortran.dg/deallocate_error_3.f90
+ 88c4e7deca20be3e33e616092b99e017  gcc/testsuite/gfortran.dg/deallocate_error_4.f90
  2b25720bbab3dd5097001c5ca8a09002  gcc/testsuite/gfortran.dg/deallocate_stat.f90
  e62cb07af37a3023dea48cda7bae2544  gcc/testsuite/gfortran.dg/deallocate_stat_2.f90
  1f6d173ba353df6282857ed63520cb21  gcc/testsuite/gfortran.dg/debug/debug.exp
*************** f32ad08a02b92f28b5033f6ba186eb06  gcc/te
*** 49830,49837 ****
  519c3622603d8bdfcdd819606ab71a39  gcc/testsuite/gfortran.dg/dec_logical_xor_2.f90
  7634f260da3c6ee6123a7feaf3e1ab68  gcc/testsuite/gfortran.dg/dec_logical_xor_3.f03
  fb60e7442033f45f458bd0789a2ce5f4  gcc/testsuite/gfortran.dg/dec_math.f90
! 5e0b3d3fa1ada1bb42e175338e87caa8  gcc/testsuite/gfortran.dg/dec_parameter_1.f
! 5a5eb1ec87835f8e77414939fb96a635  gcc/testsuite/gfortran.dg/dec_parameter_2.f90
  fda7b33d4e9546e000649a147e272b6b  gcc/testsuite/gfortran.dg/dec_parameter_3.f90
  b5027dd480b5ebe7e0147828f05aed61  gcc/testsuite/gfortran.dg/dec_parameter_4.f90
  640600acbf9052225ff291f1cb90596d  gcc/testsuite/gfortran.dg/dec_static_1.f90
--- 50155,50162 ----
  519c3622603d8bdfcdd819606ab71a39  gcc/testsuite/gfortran.dg/dec_logical_xor_2.f90
  7634f260da3c6ee6123a7feaf3e1ab68  gcc/testsuite/gfortran.dg/dec_logical_xor_3.f03
  fb60e7442033f45f458bd0789a2ce5f4  gcc/testsuite/gfortran.dg/dec_math.f90
! b8c791c9ac69ad2ac73af11513734fef  gcc/testsuite/gfortran.dg/dec_parameter_1.f
! 05f15489676243947555e5b37db7cbc1  gcc/testsuite/gfortran.dg/dec_parameter_2.f90
  fda7b33d4e9546e000649a147e272b6b  gcc/testsuite/gfortran.dg/dec_parameter_3.f90
  b5027dd480b5ebe7e0147828f05aed61  gcc/testsuite/gfortran.dg/dec_parameter_4.f90
  640600acbf9052225ff291f1cb90596d  gcc/testsuite/gfortran.dg/dec_static_1.f90
*************** a72e275582cc00af9666fcd65f11856b  gcc/te
*** 49848,49859 ****
  0c2deddf183b1829738b6c015b933f07  gcc/testsuite/gfortran.dg/dec_structure_16.f90
  6609d701473c6ac18cb7eaf33f217448  gcc/testsuite/gfortran.dg/dec_structure_17.f90
  c065ec9eab467c19e2503ea2b5ec35f6  gcc/testsuite/gfortran.dg/dec_structure_2.f90
  17d1e3238da3930c57838b7f1d610c40  gcc/testsuite/gfortran.dg/dec_structure_3.f90
  17bdec7f0e2ee1d7fce0b23ebd82610a  gcc/testsuite/gfortran.dg/dec_structure_4.f90
  e60b5448cb28834a5043d778f28b0029  gcc/testsuite/gfortran.dg/dec_structure_5.f90
  5276660c4588b2f9922aacd54e303a2d  gcc/testsuite/gfortran.dg/dec_structure_6.f90
  b7df816a5764cf98d0af9a21fc087015  gcc/testsuite/gfortran.dg/dec_structure_7.f90
! a3842131746a182a4d0d806a0ead8cf9  gcc/testsuite/gfortran.dg/dec_structure_8.f90
  ba7bd70d8f9beaa28febfa1d800b3cf7  gcc/testsuite/gfortran.dg/dec_structure_9.f90
  cad42db351ade11e383560c34e3e978b  gcc/testsuite/gfortran.dg/dec_type_print.f90
  13560c998f2fbbcc2fd45b4777d0e4c9  gcc/testsuite/gfortran.dg/dec_union_1.f90
--- 50173,50185 ----
  0c2deddf183b1829738b6c015b933f07  gcc/testsuite/gfortran.dg/dec_structure_16.f90
  6609d701473c6ac18cb7eaf33f217448  gcc/testsuite/gfortran.dg/dec_structure_17.f90
  c065ec9eab467c19e2503ea2b5ec35f6  gcc/testsuite/gfortran.dg/dec_structure_2.f90
+ e2a1e1b15aac566b0fdce1a94c97eea0  gcc/testsuite/gfortran.dg/dec_structure_23.f90
  17d1e3238da3930c57838b7f1d610c40  gcc/testsuite/gfortran.dg/dec_structure_3.f90
  17bdec7f0e2ee1d7fce0b23ebd82610a  gcc/testsuite/gfortran.dg/dec_structure_4.f90
  e60b5448cb28834a5043d778f28b0029  gcc/testsuite/gfortran.dg/dec_structure_5.f90
  5276660c4588b2f9922aacd54e303a2d  gcc/testsuite/gfortran.dg/dec_structure_6.f90
  b7df816a5764cf98d0af9a21fc087015  gcc/testsuite/gfortran.dg/dec_structure_7.f90
! 3b431c64ce5bd944baabdaf4328b230a  gcc/testsuite/gfortran.dg/dec_structure_8.f90
  ba7bd70d8f9beaa28febfa1d800b3cf7  gcc/testsuite/gfortran.dg/dec_structure_9.f90
  cad42db351ade11e383560c34e3e978b  gcc/testsuite/gfortran.dg/dec_type_print.f90
  13560c998f2fbbcc2fd45b4777d0e4c9  gcc/testsuite/gfortran.dg/dec_union_1.f90
*************** b3d836c21b21e9a9c286cec049d09f39  gcc/te
*** 50297,50302 ****
--- 50623,50629 ----
  dc477d471c26336a1e32bb016376bc9d  gcc/testsuite/gfortran.dg/exit_3.f08
  3699c9dfdbc050c3abd8ea8057f15dd2  gcc/testsuite/gfortran.dg/exit_4.f08
  ee478d85aa892ebcfab70ab167d53520  gcc/testsuite/gfortran.dg/exit_5.f03
+ aba05b23ecd1251a580dd9c49543c477  gcc/testsuite/gfortran.dg/explicit_shape_1.f90
  a63a7b8242052318c442feca7de32008  gcc/testsuite/gfortran.dg/exponent_1.f90
  a0b74fda00f9c5255be3c14e5cade4fb  gcc/testsuite/gfortran.dg/exponent_2.f90
  67b1a5f1fc1b03b37fe0ddb31db8314f  gcc/testsuite/gfortran.dg/extended_char_comparison_1.f
*************** aac30443117734b3e7052646be882d77  gcc/te
*** 50690,50695 ****
--- 51017,51023 ----
  8903ef8f818c080ee22a33c4093134b8  gcc/testsuite/gfortran.dg/generic_3.f90
  9f63f9825952be23ec6a3769a960c639  gcc/testsuite/gfortran.dg/generic_30.f90
  8a51f0c660263f5d592b1689ce1bc829  gcc/testsuite/gfortran.dg/generic_31.f90
+ 4705e58dd699635bea41b395496c1088  gcc/testsuite/gfortran.dg/generic_34.f90
  d21248018105fd7ccacf9fa869f57e0a  gcc/testsuite/gfortran.dg/generic_4.f90
  6b638ae392f7e94c1592d0efbc053876  gcc/testsuite/gfortran.dg/generic_5.f90
  dc5927a86c1c614c2ff8285c60cf86f9  gcc/testsuite/gfortran.dg/generic_6.f90
*************** f111c33f57aecc85e59e669c980e4436  gcc/te
*** 50781,50786 ****
--- 51109,51115 ----
  b4f5bf838607d6206aae8d768d23c64e  gcc/testsuite/gfortran.dg/goacc/pr71704.f90
  dff0c4a3dcd2aac51063c6e05c6d4665  gcc/testsuite/gfortran.dg/goacc/pr72743.f90
  fc686524ed127ce392011e6c6d596cb9  gcc/testsuite/gfortran.dg/goacc/pr78027.f90
+ 98021166ee2b55420ca83360835ea78c  gcc/testsuite/gfortran.dg/goacc/pr84963.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
*************** c77cea4fe3e6db60cec6014217b3e898  gcc/te
*** 50965,50970 ****
--- 51294,51302 ----
  89009b94c2292a295111511b7690212f  gcc/testsuite/gfortran.dg/gomp/pr79154-1.f90
  eaa9f5415777a4aa8e9cb87901c13910  gcc/testsuite/gfortran.dg/gomp/pr79154-2.f90
  9b10d6e97e6ec036398bc75fe623a968  gcc/testsuite/gfortran.dg/gomp/pr80918.f90
+ 13b62b43e8c430a8a748b9782ee8d3d1  gcc/testsuite/gfortran.dg/gomp/pr83977.f90
+ 28b8381f9a6407f3fbdf2a45fe796f66  gcc/testsuite/gfortran.dg/gomp/pr84116.f90
+ 900e29bb957f49d5b8cee27818655396  gcc/testsuite/gfortran.dg/gomp/pr85313.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
*************** de6e16c026cfee9d026f5b2916db7e3e  gcc/te
*** 51179,51184 ****
--- 51511,51517 ----
  eb00bea0923fcc4ca2121a3cad715f0f  gcc/testsuite/gfortran.dg/implicit_pure_3.f90
  ed9b46b80fba02ea5657d6ed2bf9073a  gcc/testsuite/gfortran.dg/implicit_pure_4.f90
  2348275de36b4052b5aaeb2ae73a6494  gcc/testsuite/gfortran.dg/implied_do_1.f90
+ 79d235d8144a6b966e05d500c1aec29d  gcc/testsuite/gfortran.dg/implied_do_2.f90
  42d282b943d10363c33bec69d3d4f846  gcc/testsuite/gfortran.dg/implied_shape_1.f08
  f9528d7042bf84bf037d6e2b109272ec  gcc/testsuite/gfortran.dg/implied_shape_2.f90
  1b2b68c816459c1a9395771e9851de87  gcc/testsuite/gfortran.dg/implied_shape_3.f08
*************** dad4002c56704f8859ae12ceb2ecee92  gcc/te
*** 51223,51228 ****
--- 51556,51564 ----
  aa404e052ee988b1fefe2904b2b8406e  gcc/testsuite/gfortran.dg/init_flag_13.f90
  a5fd5796dd882ac9dd4b4ac0c6f0055a  gcc/testsuite/gfortran.dg/init_flag_14.f90
  5522cc2c539cf5dcdec2304d07b669e5  gcc/testsuite/gfortran.dg/init_flag_15.f03
+ eed16d38d622ad7391dea611543b61b9  gcc/testsuite/gfortran.dg/init_flag_17.f90
+ b988918875d857d86496e0e9a3c4b68a  gcc/testsuite/gfortran.dg/init_flag_18.f90
+ 551b068e646ecd0bea1a38c0c5b3e3c5  gcc/testsuite/gfortran.dg/init_flag_19.f03
  f3a235d09bce4c144233db13cafc71c2  gcc/testsuite/gfortran.dg/init_flag_2.f90
  d6ec5bc83de3b5682a4df257dae96146  gcc/testsuite/gfortran.dg/init_flag_3.f90
  8e49fde0fcd93481c7abf8e8b248041a  gcc/testsuite/gfortran.dg/init_flag_4.f90
*************** acad20cfccb57d2647ecdf23fe5b886a  gcc/te
*** 51267,51272 ****
--- 51603,51610 ----
  5135df163bc5b691e32b58951ac51b60  gcc/testsuite/gfortran.dg/inline_matmul_13.f90
  5abbe3af3cfa0676bdd7f6167d713f0d  gcc/testsuite/gfortran.dg/inline_matmul_18.f90
  f795a637ed0930936889b850d661485d  gcc/testsuite/gfortran.dg/inline_matmul_2.f90
+ e5a418513e079e50ea576e021cf5ad8e  gcc/testsuite/gfortran.dg/inline_matmul_22.f90
+ 89a35f94060b171becdc54771a02040b  gcc/testsuite/gfortran.dg/inline_matmul_24.f90
  3b5fafa7209a9785dd1f1b9b3260691d  gcc/testsuite/gfortran.dg/inline_matmul_3.f90
  5f091280b988f874dd17d1b57d12a3ce  gcc/testsuite/gfortran.dg/inline_matmul_4.f90
  b7b9d3c7b676446c76d5444b469e69b9  gcc/testsuite/gfortran.dg/inline_matmul_5.f90
*************** a85d9b173509ec81f0e8eea4f903aedf  gcc/te
*** 51293,51298 ****
--- 51631,51638 ----
  83afca5041b4e1bc04aa54f0efed9e5a  gcc/testsuite/gfortran.dg/inquire_15.f90
  44cdb6f6eed5f646190e5ec3eb4b5886  gcc/testsuite/gfortran.dg/inquire_16.f90
  709b7d5db0659cf45b4d7a89c9c7e176  gcc/testsuite/gfortran.dg/inquire_17.f90
+ af5dbdb1d8b1712a4beb02208513ced7  gcc/testsuite/gfortran.dg/inquire_18.f90
+ 95bd7d5ee0b0f6b1b4217afe4f7be751  gcc/testsuite/gfortran.dg/inquire_19.f90
  46381b0ac618fd43b13d9fe6a0683198  gcc/testsuite/gfortran.dg/inquire_5.f90
  416611b673267dc72f7c7b52abfa5158  gcc/testsuite/gfortran.dg/inquire_6.f90
  8283bb4be36f05c63ad546fdd62f3531  gcc/testsuite/gfortran.dg/inquire_7.f90
*************** fc2b293a2d13f23c8a72aa82b137a7b1  gcc/te
*** 51360,51365 ****
--- 51700,51706 ----
  6e3222282c29d4f4e30d8d92c1def6b3  gcc/testsuite/gfortran.dg/interface_39.f90
  46314c1c8afc8b271fe6647ff2e4415f  gcc/testsuite/gfortran.dg/interface_4.f90
  79c3ef8a8610d213e1de2702a8e7d1c5  gcc/testsuite/gfortran.dg/interface_40.f90
+ 7381840ff5e15738d4111258de81b4ee  gcc/testsuite/gfortran.dg/interface_41.f90
  dd9e2fc1a583154b041bbab80861551a  gcc/testsuite/gfortran.dg/interface_5.f90
  a63ff5460cdc25350f43a09d899581db  gcc/testsuite/gfortran.dg/interface_6.f90
  b4d472d28fc0ac004218dc87eb241306  gcc/testsuite/gfortran.dg/interface_7.f90
*************** f83b1bf4d5da4b9b222cbb323f92f831  gcc/te
*** 51402,51408 ****
  8bf8dab685dfc8db514b460e22648f80  gcc/testsuite/gfortran.dg/internal_readwrite_2.f90
  2cc95ecc20be055b39f34f4641169852  gcc/testsuite/gfortran.dg/internal_readwrite_3.f90
  e82fa551841033a84bee9fc477e55194  gcc/testsuite/gfortran.dg/internal_readwrite_4.f90
! 447249af7d2fd8c44e94ff5e234f1965  gcc/testsuite/gfortran.dg/internal_references_1.f90
  d0c6db8313177997e1e7250226095e1d  gcc/testsuite/gfortran.dg/internal_references_2.f90
  1307f861e759364c3550be7b5ef0d46c  gcc/testsuite/gfortran.dg/internal_write_1.f90
  c7381103ca4fbef62989010c882fc4ce  gcc/testsuite/gfortran.dg/interop_params.f03
--- 51743,51749 ----
  8bf8dab685dfc8db514b460e22648f80  gcc/testsuite/gfortran.dg/internal_readwrite_2.f90
  2cc95ecc20be055b39f34f4641169852  gcc/testsuite/gfortran.dg/internal_readwrite_3.f90
  e82fa551841033a84bee9fc477e55194  gcc/testsuite/gfortran.dg/internal_readwrite_4.f90
! 4ae3ee8af36214c0f4a1bbbf4e3e2823  gcc/testsuite/gfortran.dg/internal_references_1.f90
  d0c6db8313177997e1e7250226095e1d  gcc/testsuite/gfortran.dg/internal_references_2.f90
  1307f861e759364c3550be7b5ef0d46c  gcc/testsuite/gfortran.dg/internal_write_1.f90
  c7381103ca4fbef62989010c882fc4ce  gcc/testsuite/gfortran.dg/interop_params.f03
*************** fe28afe7f9810e42c427b8255d92da09  gcc/te
*** 51684,51689 ****
--- 52025,52031 ----
  113fca60ed9cef03a1103a58567d9296  gcc/testsuite/gfortran.dg/matmul_bounds_7.f90
  a57b62aa12e483031baa4ffa748bfcaf  gcc/testsuite/gfortran.dg/matmul_bounds_8.f90
  c627becc9c040a6d6fc80de439e9653a  gcc/testsuite/gfortran.dg/matmul_bounds_9.f90
+ a7713918ec13950e8efe9741aec82184  gcc/testsuite/gfortran.dg/matmul_rank_1.f90
  972c75c45fe63e2fd205d48d266f9af9  gcc/testsuite/gfortran.dg/maxerrors.f90
  c60b22787099293d12b274f5bfb806b5  gcc/testsuite/gfortran.dg/maxloc_1.f90
  473edde1f84fbcc87f36034a288da68c  gcc/testsuite/gfortran.dg/maxloc_2.f90
*************** a96bcaba231d868e55f5131bd40acf4f  gcc/te
*** 52251,52256 ****
--- 52593,52599 ----
  7cef03a40a597eb4b5451fee74e39670  gcc/testsuite/gfortran.dg/pr37286.f90
  17b9f86508019c72c9945cca2b66fbbc  gcc/testsuite/gfortran.dg/pr37287-1.f90
  0be5a982949c9b36aeb25665f1ecca78  gcc/testsuite/gfortran.dg/pr37287-2.F90
+ 714c90f4bfd84fbc7a9d64d9dbf91a0c  gcc/testsuite/gfortran.dg/pr38351.f90
  4432a49ae30a550db7d56c17f898ab47  gcc/testsuite/gfortran.dg/pr38722.f90
  208fd896c0d243a462ea9a6f221bea24  gcc/testsuite/gfortran.dg/pr38868.f
  c28f56ac28d07d5c6a114a4d14c467c6  gcc/testsuite/gfortran.dg/pr39152.f
*************** eaee3644bb72757f7c01f19f8c77dfbd  gcc/te
*** 52286,52291 ****
--- 52629,52635 ----
  2185b7aa8c377d749a70cb4872ee56f8  gcc/testsuite/gfortran.dg/pr43866.f90
  14f3866051d030f1fe3aa68c16775d53  gcc/testsuite/gfortran.dg/pr43984.f90
  c86efca0876ea8b42851b885f6a07b46  gcc/testsuite/gfortran.dg/pr43996.f90
+ c7309474b0f239683a5a4528ef54c07a  gcc/testsuite/gfortran.dg/pr44491.f90
  d3b293eecaa4492a7c3a436f79a36dbd  gcc/testsuite/gfortran.dg/pr44592.f90
  b825380a4b4b28ec13e27baf423c281f  gcc/testsuite/gfortran.dg/pr44691.f
  cc1eefb16c8a037aa7b09d8f1397134a  gcc/testsuite/gfortran.dg/pr44735.f90
*************** f687c2bae87e50ac2773852543037742  gcc/te
*** 52329,52334 ****
--- 52673,52679 ----
  58ef52a5a164af942250c1ed58c78a9d  gcc/testsuite/gfortran.dg/pr50069_2.f90
  baba316baa03ee3527448735c40da508  gcc/testsuite/gfortran.dg/pr50769.f90
  6d40b8b2b18fefbafaa1495c64dc7b65  gcc/testsuite/gfortran.dg/pr50875.f90
+ 106b6d8b2bc880f0a9cd862194a6c34e  gcc/testsuite/gfortran.dg/pr51434.f90
  392a9020525f62a719dfb6ec68012809  gcc/testsuite/gfortran.dg/pr51993.f90
  bb7add9250612f62914277baa59b409c  gcc/testsuite/gfortran.dg/pr52370.f90
  d427f4eb6f044237726ce98aa1dc9754  gcc/testsuite/gfortran.dg/pr52608.f90
*************** f7993d3f2e1e940d6cd1e3bbe859e52d  gcc/te
*** 52379,52387 ****
--- 52724,52734 ----
  23809d15c621567e576a52586993ed9e  gcc/testsuite/gfortran.dg/pr62135.f90
  4cbfef7e413a52675ae38f22b2777d01  gcc/testsuite/gfortran.dg/pr62695.f90
  2ab32374fe63527656c5652f6804cd06  gcc/testsuite/gfortran.dg/pr63331.f90
+ 1984d41530f1be811fd36bc981abb1b0  gcc/testsuite/gfortran.dg/pr63514.f90
  603263e08fedbbf88311bc089fe3cc34  gcc/testsuite/gfortran.dg/pr63778.f
  397b25a42e5d0cf5eca320bdb2909d9c  gcc/testsuite/gfortran.dg/pr63821.f90
  c35d65ea2827d93eaf5b83cc8d96a6f0  gcc/testsuite/gfortran.dg/pr63883.f90
+ 02ddefab3da701a0eba517923d7c056d  gcc/testsuite/gfortran.dg/pr64124.f90
  c04ed077a9fe2c4b36a264eaa130003c  gcc/testsuite/gfortran.dg/pr64230.f90
  1e9cfb40b3307f2fd2466b7c533b2a10  gcc/testsuite/gfortran.dg/pr64528.f90
  65d3c7db0cee9d876a3079342615ac8e  gcc/testsuite/gfortran.dg/pr64530.f90
*************** bcd64217acf1df6b8a291afee3064409  gcc/te
*** 52391,52396 ****
--- 52738,52744 ----
  f9bd0f155bedcd3e724bcdab0799b3d2  gcc/testsuite/gfortran.dg/pr65045.f90
  1e508dbbc1b6dd41e7c0aa8e44a99f29  gcc/testsuite/gfortran.dg/pr65429.f90
  a7d0e45320243070a480eeee13682ca3  gcc/testsuite/gfortran.dg/pr65450.f90
+ 9c8e6469038c2d19eb2320129ef2769a  gcc/testsuite/gfortran.dg/pr65453.f90
  c4a8a09fc45863c77a2a6b80d33772a9  gcc/testsuite/gfortran.dg/pr65504.f90
  4d8c9a213b736bc9aa808dafff69edb1  gcc/testsuite/gfortran.dg/pr65903.f90
  3b1f0df2e476202d303bc30096291958  gcc/testsuite/gfortran.dg/pr65996.f90
*************** bf41141715e20ed734f32d9329dca8ea  gcc/te
*** 52415,52422 ****
  0cd5be3bc19d66df1e0bf874a3458016  gcc/testsuite/gfortran.dg/pr67615.f90
  0bfa6e741c486d27fbd1d68e80ab467d  gcc/testsuite/gfortran.dg/pr67616.f90
  f7b255646efb403e4fd6d6c4c721b6c6  gcc/testsuite/gfortran.dg/pr67802.f90
! 25ba12fafaad4b70dcbbe6690162a999  gcc/testsuite/gfortran.dg/pr67803.f90
! bbee45365f7b5bd7b2e40a3921a1271c  gcc/testsuite/gfortran.dg/pr67805.f90
  d67c65ab4e579ec1a9ed16fa540e87f1  gcc/testsuite/gfortran.dg/pr67805_2.f90
  dafd0ec424b7951754678a25f688bd0a  gcc/testsuite/gfortran.dg/pr67885.f90
  60853550b35c1efdadb2d417aa6eec8b  gcc/testsuite/gfortran.dg/pr67900.f90
--- 52763,52770 ----
  0cd5be3bc19d66df1e0bf874a3458016  gcc/testsuite/gfortran.dg/pr67615.f90
  0bfa6e741c486d27fbd1d68e80ab467d  gcc/testsuite/gfortran.dg/pr67616.f90
  f7b255646efb403e4fd6d6c4c721b6c6  gcc/testsuite/gfortran.dg/pr67802.f90
! 9cfe60384f2e4f1cbec4ea41ea7e4e44  gcc/testsuite/gfortran.dg/pr67803.f90
! 41e85145304080db4dd22c98def9ee20  gcc/testsuite/gfortran.dg/pr67805.f90
  d67c65ab4e579ec1a9ed16fa540e87f1  gcc/testsuite/gfortran.dg/pr67805_2.f90
  dafd0ec424b7951754678a25f688bd0a  gcc/testsuite/gfortran.dg/pr67885.f90
  60853550b35c1efdadb2d417aa6eec8b  gcc/testsuite/gfortran.dg/pr67900.f90
*************** ad1c20f5706de185c8d1a0e845e5710d  gcc/te
*** 52459,52471 ****
--- 52807,52822 ----
  c718be52c08cbfe5941dc1bb7a50bcb5  gcc/testsuite/gfortran.dg/pr69987.f90
  1e3beec10530abe0c48aa254080544a5  gcc/testsuite/gfortran.dg/pr70006.f90
  7f656e5a6d13d6ab788f5c3e8fb90572  gcc/testsuite/gfortran.dg/pr70040.f90
+ aa6073708fcde459f6b44a5e294fd6b0  gcc/testsuite/gfortran.dg/pr70409.f90
  23dc11b0707086a8168e76c17d13d620  gcc/testsuite/gfortran.dg/pr70673.f90
  b476378eb8250b54f4b3b5f63d128940  gcc/testsuite/gfortran.dg/pr70754.f90
+ 859e303d3e720c33547f3996d66d7637  gcc/testsuite/gfortran.dg/pr70870_1.f90
  0e424f05f2fdeb786b877ace2617112d  gcc/testsuite/gfortran.dg/pr70931.f90
  768e159c79aa0aa1e1ae6e13122ed1b2  gcc/testsuite/gfortran.dg/pr70937.f90
  a16162b0759105febc1efc1311184688  gcc/testsuite/gfortran.dg/pr71047.f08
  2adcf4116aa4365895bb3d287e182ddd  gcc/testsuite/gfortran.dg/pr71067_1.f90
  17102b0b3177b5b5beb36730bd460100  gcc/testsuite/gfortran.dg/pr71067_2.f90
+ c31ee0cba51f9635f36dcdaea3239684  gcc/testsuite/gfortran.dg/pr71085.f90
  75b8abd1f0f9d2e236605ecc6792b9fb  gcc/testsuite/gfortran.dg/pr71204.f90
  89bbeaec468d2179f3fa27a03f16ea55  gcc/testsuite/gfortran.dg/pr71230-1.f90
  5aee7aca4bb8bc17bcd259efbba8d8fe  gcc/testsuite/gfortran.dg/pr71230-2.f90
*************** ab680d2f6cc0648921a054114a485973  gcc/te
*** 52490,52495 ****
--- 52841,52847 ----
  0e6eddcfc83690ffde7c6675dbaf7f56  gcc/testsuite/gfortran.dg/pr77380.f90
  c80f60155bcb84d08e36147df56ee2a7  gcc/testsuite/gfortran.dg/pr77391.f90
  98fa011f3b9cb0fda809c579d18e2aff  gcc/testsuite/gfortran.dg/pr77406.f90
+ 861a6e0fb19177aad919ae63aa50d43e  gcc/testsuite/gfortran.dg/pr77414.f90
  273708f3f44a1085948126b236c9f875  gcc/testsuite/gfortran.dg/pr77420_1.f90
  85915b4b10039334da3368e57192ff34  gcc/testsuite/gfortran.dg/pr77420_2.f90
  e88169f0671cbd27372fc637327b8b76  gcc/testsuite/gfortran.dg/pr77420_3.f90
*************** a997ec96c9e5b5703664c90f0b844fe1  gcc/te
*** 52511,52520 ****
--- 52863,52874 ----
  e54adfde54f7051d2c213313e32967ac  gcc/testsuite/gfortran.dg/pr78061.f
  6701f92b9541522f589f8caf4f94fe71  gcc/testsuite/gfortran.dg/pr78092.f90
  46b05b28d9c2a5643e5c9999f913781a  gcc/testsuite/gfortran.dg/pr78259.f90
+ fadb08b8fc33159559b83dbbbb0cff19  gcc/testsuite/gfortran.dg/pr78278.f90
  38417bf1cb92bb7d70724f9be2c325ca  gcc/testsuite/gfortran.dg/pr78279.f90
  c8893a59741e05d503a560b19c9684a9  gcc/testsuite/gfortran.dg/pr78297.f90
  b0372de9ab64f58fe8095fafb7257fab  gcc/testsuite/gfortran.dg/pr78619.f90
  4066e9daf333a7637b737c7b1c244da5  gcc/testsuite/gfortran.dg/pr78686.f90
+ 5b2aa5e5d8aa97b69f0cc98bc9709f3f  gcc/testsuite/gfortran.dg/pr78741.f90
  18ef55c7791c30ff0793ca246df65036  gcc/testsuite/gfortran.dg/pr78758.f90
  ee35970003b8954b57c5ce45c7fd506c  gcc/testsuite/gfortran.dg/pr79315.f90
  7dde52ec5dffa2ae8586c577cf97f742  gcc/testsuite/gfortran.dg/pr79886.f90
*************** d6ba5de6e97cfb946328be25aba5d7db  gcc/te
*** 52524,52531 ****
--- 52878,52909 ----
  ff48bac9fecdd1e7a7054b92e1959192  gcc/testsuite/gfortran.dg/pr81723.f
  d1aef01880835db4a541fe2fb5d9b4b4  gcc/testsuite/gfortran.dg/pr81735.f90
  b6ff04901e3aee18765a74bf65804e38  gcc/testsuite/gfortran.dg/pr82253.f90
+ 3efdf6eef62b5bb55c7bd5d6342e1943  gcc/testsuite/gfortran.dg/pr83149.f90
+ b7e5bb91d4ee23a891d1d4b6fb4ad916  gcc/testsuite/gfortran.dg/pr83149_1.f90
+ a0d91b3e4bc44943398d32213588392c  gcc/testsuite/gfortran.dg/pr83149_a.f90
+ b7a2ebc3f20996032962acc5e26b8851  gcc/testsuite/gfortran.dg/pr83149_b.f90
  3e5e2dd987641b643ea03f228e33bc00  gcc/testsuite/gfortran.dg/pr83864.f90
  34ffb26eca5fadb11dd891f51b3e475e  gcc/testsuite/gfortran.dg/pr83874.f90
+ 3d847069ff4f87a831062ece033f3bf1  gcc/testsuite/gfortran.dg/pr83939.f90
+ ee7b5aa850a8be8a1ed15f2fcdca347a  gcc/testsuite/gfortran.dg/pr84117.f90
+ 7cb3611bc701529711c1f596921afaa3  gcc/testsuite/gfortran.dg/pr84734.f90
+ 4355c9f07079d67c1134f6106f8fcb0b  gcc/testsuite/gfortran.dg/pr85138_1.f90
+ 024b55ef8c68dc11bd1d65bbc8cf1b13  gcc/testsuite/gfortran.dg/pr85138_2.f90
+ 286fa2d8f5b3fa55fd3173261d6b4eea  gcc/testsuite/gfortran.dg/pr85520.f90
+ 3daad136d0cfc95d8964dc923c7cc4ac  gcc/testsuite/gfortran.dg/pr85521_1.f90
+ bd361a07290488b6483c3d2cbc61c2dd  gcc/testsuite/gfortran.dg/pr85521_2.f90
+ 8a38dba72563cd634a47718362876075  gcc/testsuite/gfortran.dg/pr85542.f90
+ e5468da2525b5c88fb154b0609572950  gcc/testsuite/gfortran.dg/pr85543.f90
+ b0eb41d6d5e0aa8384db509e9ccf6109  gcc/testsuite/gfortran.dg/pr85687.f90
+ 7015fea37cfa3077dcf663f014a04889  gcc/testsuite/gfortran.dg/pr85779_1.f90
+ cf956ba7ea568a1ec1e49d5d32949c70  gcc/testsuite/gfortran.dg/pr85779_2.f90
+ bc3e0be49dbdfdfc634c8f0f2c908763  gcc/testsuite/gfortran.dg/pr85779_3.f90
+ e09a0ecad84cbee49613c16f8e8538ce  gcc/testsuite/gfortran.dg/pr85780.f90
+ 052b31eec86fd95fce096fa3b0045dd3  gcc/testsuite/gfortran.dg/pr85895.f90
+ 38e09a1ffde1bb73657e9c54235df44e  gcc/testsuite/gfortran.dg/pr85996.f90
+ 47fbecd6ce7dba0a6b21dadaec06da18  gcc/testsuite/gfortran.dg/pr86045.f90
+ a1e635c44207be5bef0583d4e95b9b59  gcc/testsuite/gfortran.dg/pr86059.f90
+ 2546ce0ab701ca0a37f0ee8ef6e3ef0e  gcc/testsuite/gfortran.dg/pr86110.f90
  6ff99f4b0021f30bee039a61db7cba9d  gcc/testsuite/gfortran.dg/predcom-1.f
  20a411a7e5a57891297c4c6a96d92009  gcc/testsuite/gfortran.dg/predcom-2.f
  93166017899716f4c3742eda5aaf4087  gcc/testsuite/gfortran.dg/predict-1.f90
*************** fbfcfdd0751320bb90e2488052dfe7de  gcc/te
*** 52630,52635 ****
--- 53008,53014 ----
  0336d1b3744f35876d457535208fd1ef  gcc/testsuite/gfortran.dg/proc_ptr_48.f90
  a50ed014f3fd628f8e8e8e09f44f8c0f  gcc/testsuite/gfortran.dg/proc_ptr_49.f90
  8315cc72db332168e57edf018a4b8f1f  gcc/testsuite/gfortran.dg/proc_ptr_5.f90
+ 43ca301c170d61a34b8db85b8fcd1d84  gcc/testsuite/gfortran.dg/proc_ptr_50.f90
  2e1358865c3ec02c3c45568f5eebb128  gcc/testsuite/gfortran.dg/proc_ptr_6.f90
  3648c097522ae5858550c7d7776afd28  gcc/testsuite/gfortran.dg/proc_ptr_7.c
  03be7ba134a9b19dcfa3ec09f4064fc4  gcc/testsuite/gfortran.dg/proc_ptr_7.f90
*************** c4ab590e1a84db0ed7c686c504deea8d  gcc/te
*** 52827,52833 ****
--- 53206,53214 ----
  6da090aaff0dee1f6b557a0ebdf387d1  gcc/testsuite/gfortran.dg/realloc_on_assign_25.f90
  77311ad18cfec3fcffefaedf658436db  gcc/testsuite/gfortran.dg/realloc_on_assign_26.f90
  ec0143539e2f0fdc39289e17828e2b3c  gcc/testsuite/gfortran.dg/realloc_on_assign_27.f08
+ 50a5326b8ea76403cd2d44076c856a3a  gcc/testsuite/gfortran.dg/realloc_on_assign_29.f90
  10876d611fdffc7b6cf97c8e1abf90b2  gcc/testsuite/gfortran.dg/realloc_on_assign_3.f03
+ 49bf0e7694296a669511de15c46006df  gcc/testsuite/gfortran.dg/realloc_on_assign_30.f90
  f49b54ba1324c9645d5ab321e82b6873  gcc/testsuite/gfortran.dg/realloc_on_assign_4.f03
  600455d0e569cd93d229832b42ef84a2  gcc/testsuite/gfortran.dg/realloc_on_assign_5.f03
  b200cea4f37b8ec05400029eddd3317b  gcc/testsuite/gfortran.dg/realloc_on_assign_6.f03
*************** a9670c9c4db6be8cbf121e47fb09e3ad  gcc/te
*** 52997,53002 ****
--- 53378,53386 ----
  8be92dfb3cc0e7954dcf0c7c1a64b2a7  gcc/testsuite/gfortran.dg/select_type_38.f03
  ec40f6628038f9f6e9ba16e588a9b8c2  gcc/testsuite/gfortran.dg/select_type_39.f03
  402dd7c959e0269e964ee68c701dfb67  gcc/testsuite/gfortran.dg/select_type_4.f90
+ e89fd7896cb639b6f282d37cefd8c3be  gcc/testsuite/gfortran.dg/select_type_40.f90
+ 3040c1e84327028f026493d2815ce052  gcc/testsuite/gfortran.dg/select_type_41.f90
+ c3b4456f67768c5c49eeccb9868aae56  gcc/testsuite/gfortran.dg/select_type_42.f90
  3ab901522e5a6c2930daa42a08c5a4c3  gcc/testsuite/gfortran.dg/select_type_5.f03
  08871f191c3a23bf7de4d00e2c1959a3  gcc/testsuite/gfortran.dg/select_type_6.f03
  2ba60576db34ceefab51c78da10da0b6  gcc/testsuite/gfortran.dg/select_type_7.f03
*************** eed94040461dc3f4fa1bba34b2b82dca  gcc/te
*** 53024,53029 ****
--- 53408,53414 ----
  311fedd0eb4347d62531750c8df6e3cd  gcc/testsuite/gfortran.dg/shape_6.f90
  ec53b4e26212c9f5f878bda9043ca979  gcc/testsuite/gfortran.dg/shape_7.f90
  8ea0bac9f18b067195563f8be8fbbfe4  gcc/testsuite/gfortran.dg/shape_8.f90
+ 39bb8f10a1fe0db1751ccf321f87bd1b  gcc/testsuite/gfortran.dg/shape_9.f90
  30fc9ad5840248ef596a1216e5c12bc9  gcc/testsuite/gfortran.dg/shift-alloc.f90
  7b1184e923af066c99dfd04c9b054ebd  gcc/testsuite/gfortran.dg/shift-kind.f90
  bc8bd628ea9b26898618898ace33fc92  gcc/testsuite/gfortran.dg/shift-kind_2.f90
*************** daf0222210712781403f97bde0118f88  gcc/te
*** 53074,53079 ****
--- 53459,53467 ----
  660cebcc8ffff86cb4ccb16d81f894fb  gcc/testsuite/gfortran.dg/spread_zerosize_1.f90
  f9876044f9f8cff199e7e8790d078f14  gcc/testsuite/gfortran.dg/stat_1.f90
  471e27504b954c62f2f64eb6ffc11426  gcc/testsuite/gfortran.dg/stat_2.f90
+ 6fd4f51de0ba02b7c11c54cc3d2847c3  gcc/testsuite/gfortran.dg/statement_function_1.f90
+ 5fc47d7780848b7c842c444d94dc4eca  gcc/testsuite/gfortran.dg/statement_function_2.f90
+ dbb65e9cc1aa2d7834531d84c81cb2d0  gcc/testsuite/gfortran.dg/statement_function_3.f
  8297205d0fd462057bf77c41569c1427  gcc/testsuite/gfortran.dg/static_linking_1.c
  fdcc241cfe92b58fca2cd6843c525442  gcc/testsuite/gfortran.dg/static_linking_1.f
  473702ed9f48aef8d5a3691a01c19c73  gcc/testsuite/gfortran.dg/stfunc_1.f90
*************** e1ecc346f86103555c66ea6afae29102  gcc/te
*** 53167,53172 ****
--- 53555,53561 ----
  d1663fd4e1368341812629ea5580dde9  gcc/testsuite/gfortran.dg/submodule_28.f08
  147400141f6bbfa5c2a66612b85d0557  gcc/testsuite/gfortran.dg/submodule_29.f08
  aa943f2bec85bb461999d2cb2adfc73a  gcc/testsuite/gfortran.dg/submodule_3.f08
+ 701cab3628ee98dbcccc1d64e72d4ed6  gcc/testsuite/gfortran.dg/submodule_31.f08
  68f9f70d888318a31160ba732171726f  gcc/testsuite/gfortran.dg/submodule_4.f08
  1fbed56af4313e533e45631365afe8d6  gcc/testsuite/gfortran.dg/submodule_5.f08
  ab6a5345256483144d5cd961b6f2889c  gcc/testsuite/gfortran.dg/submodule_6.f08
*************** b7a62e7e66660ff27fee98bbb6e14702  gcc/te
*** 53197,53202 ****
--- 53586,53593 ----
  3b4201ec9c6aea178a28aa44df4df077  gcc/testsuite/gfortran.dg/t_editing.f
  c44df1b5d22bd3481e75627f7f0214f9  gcc/testsuite/gfortran.dg/tab_continuation.f
  a5cd2889d5b26628860e7d35908c096a  gcc/testsuite/gfortran.dg/temporary_1.f90
+ c745f4ff35ab6a66b342ec611f072f93  gcc/testsuite/gfortran.dg/temporary_2.f90
+ ffde897f517056c4b345871c13cda9cc  gcc/testsuite/gfortran.dg/temporary_3.f90
  b9668073458516366faa48a7cc09f2d3  gcc/testsuite/gfortran.dg/test_bind_c_parens.f03
  255b06daed4005b05a1ecbd6ba613761  gcc/testsuite/gfortran.dg/test_c_assoc.c
  c9f0cf78756c2fab307aaf7ba7991497  gcc/testsuite/gfortran.dg/test_com_block.f90
*************** c4048d1316962bdfac9778e053901dfc  gcc/te
*** 53339,53345 ****
  7002c2ecd1b22ace8e7586a45c537016  gcc/testsuite/gfortran.dg/typebound_operator_20.f90
  815596917e70f83c2b97b9e48191ea9a  gcc/testsuite/gfortran.dg/typebound_operator_21.f03
  62c27193ce31348dff362d70299cedf6  gcc/testsuite/gfortran.dg/typebound_operator_3.f03
! fedf7b956040f6f16a43b80819a8f7de  gcc/testsuite/gfortran.dg/typebound_operator_4.f03
  a0ec0eaa57721661722789d40b59235f  gcc/testsuite/gfortran.dg/typebound_operator_5.f03
  934f972fe0ba9a2aa34d4e20d88e5753  gcc/testsuite/gfortran.dg/typebound_operator_6.f03
  ac5c092dfb7ce6ee6fe91699bdf80f18  gcc/testsuite/gfortran.dg/typebound_operator_7.f03
--- 53730,53736 ----
  7002c2ecd1b22ace8e7586a45c537016  gcc/testsuite/gfortran.dg/typebound_operator_20.f90
  815596917e70f83c2b97b9e48191ea9a  gcc/testsuite/gfortran.dg/typebound_operator_21.f03
  62c27193ce31348dff362d70299cedf6  gcc/testsuite/gfortran.dg/typebound_operator_3.f03
! b538bcee45e45094ee55a7cda8247939  gcc/testsuite/gfortran.dg/typebound_operator_4.f03
  a0ec0eaa57721661722789d40b59235f  gcc/testsuite/gfortran.dg/typebound_operator_5.f03
  934f972fe0ba9a2aa34d4e20d88e5753  gcc/testsuite/gfortran.dg/typebound_operator_6.f03
  ac5c092dfb7ce6ee6fe91699bdf80f18  gcc/testsuite/gfortran.dg/typebound_operator_7.f03
*************** b3a43bafc8e7200eb67008c977cfe543  gcc/te
*** 53431,53437 ****
--- 53822,53830 ----
  2c2a072b05218226207ba40936fc82aa  gcc/testsuite/gfortran.dg/unlimited_polymorphic_25.f90
  7bc0e1c2dd386e9692865fceeb21dffd  gcc/testsuite/gfortran.dg/unlimited_polymorphic_26.f90
  1ed74102999daaa6c4980638954407ec  gcc/testsuite/gfortran.dg/unlimited_polymorphic_27.f90
+ 7e7a7ae9debf426cb9a72de5784be0f1  gcc/testsuite/gfortran.dg/unlimited_polymorphic_29.f90
  a1930b128a7add0a89bb806192040714  gcc/testsuite/gfortran.dg/unlimited_polymorphic_3.f03
+ 260aa02b581b990fd7887506c5bb6013  gcc/testsuite/gfortran.dg/unlimited_polymorphic_30.f03
  27f9d22da25fab9449a6d82ad7501184  gcc/testsuite/gfortran.dg/unlimited_polymorphic_4.f03
  0ba9f1a9802f64d7ebf0bbc66606237b  gcc/testsuite/gfortran.dg/unlimited_polymorphic_5.f90
  77922855d5f19416bc6a859ef3ed99e6  gcc/testsuite/gfortran.dg/unlimited_polymorphic_6.f90
*************** e3ed6ec2719e9380031e3e22af66563e  gcc/te
*** 53589,53594 ****
--- 53982,53988 ----
  60b6c0b296cd87bb7d567f85b1d5706e  gcc/testsuite/gfortran.dg/vect/pr69980.f90
  dff7a17c6c288d124c6557a801b20ab1  gcc/testsuite/gfortran.dg/vect/pr70043.f90
  ac371bdfdb4930c6ce11f698db046cdf  gcc/testsuite/gfortran.dg/vect/pr77848.f
+ 48c80a6c163523eb726f99224a1e283a  gcc/testsuite/gfortran.dg/vect/pr86421.f90
  0e65ff4a3d90f2b73a5088d94b53586a  gcc/testsuite/gfortran.dg/vect/vect-1.f90
  8e654b3e9bc1768b128007f0eeeb537a  gcc/testsuite/gfortran.dg/vect/vect-2.f90
  e2b81c1f2d366c255252a0c7cd3fb4c3  gcc/testsuite/gfortran.dg/vect/vect-3.f90
*************** e2dd8115622860575ce72139d603a847  gcc/te
*** 53671,53676 ****
--- 54065,54071 ----
  4179a357d57c03402f3b139d65faa997  gcc/testsuite/gfortran.dg/where_4.f90
  182a4bf9b505e389529f505ad87bcede  gcc/testsuite/gfortran.dg/where_5.f90
  1d287cc9e958f47ab705383330836258  gcc/testsuite/gfortran.dg/where_6.f90
+ 8cbbfc43eaf1320be1a7858282aaffbd  gcc/testsuite/gfortran.dg/where_7.f90
  355f71857e4d70eec2b706ae1ab82a95  gcc/testsuite/gfortran.dg/where_nested_1.f90
  9ed3fb7c28651e33f2d22957e7ad8da6  gcc/testsuite/gfortran.dg/where_operator_assign_1.f90
  e065fb63b7634d2874e6ce1fb7f3c610  gcc/testsuite/gfortran.dg/where_operator_assign_2.f90
*************** d0171ed05b99dc6a37226ff000e81cc8  gcc/te
*** 53851,53856 ****
--- 54246,54252 ----
  8970763a0d6640ed8045b377b1d8169d  gcc/testsuite/gfortran.fortran-torture/compile/pr77798.f90
  410f18b3d4cb0a5385b6b174bbb60601  gcc/testsuite/gfortran.fortran-torture/compile/pr80158.f
  60ec5373de19f8eb86d53d7b8bd09c1a  gcc/testsuite/gfortran.fortran-torture/compile/pr80464.f90
+ 8cac6cf4407b71b32a20b8544ab1a503  gcc/testsuite/gfortran.fortran-torture/compile/pr85878.f90
  7602f8cc2d0ebd2bf0bb974069a764e0  gcc/testsuite/gfortran.fortran-torture/compile/shape_reshape.f90
  d5ee9d72b3b02f47b393934ca0c89627  gcc/testsuite/gfortran.fortran-torture/compile/stoppause.f90
  0be215e4a53f9370c44eaa153bf1ed6e  gcc/testsuite/gfortran.fortran-torture/compile/strparm_1.f90
*************** e22a73416ff2fd193f2c78a86cb4f706  gcc/te
*** 54156,54161 ****
--- 54552,54560 ----
  d1761b5aeb44651e4fb14099289d169a  gcc/testsuite/gnat.dg/aggr21.adb
  9f0b1af027d77b51f40f8dc897706196  gcc/testsuite/gnat.dg/aggr21_pkg.adb
  d0b1bae52ad49484cf02a56de75f2bd3  gcc/testsuite/gnat.dg/aggr21_pkg.ads
+ 2e68c0dfb9bd8afe566fd10660732b15  gcc/testsuite/gnat.dg/aggr24.adb
+ 11ce56a4571937bb89c43c45b0e6a628  gcc/testsuite/gnat.dg/aggr24_pkg.adb
+ 80faef71b12594e05c7ba1d0aac4a928  gcc/testsuite/gnat.dg/aggr24_pkg.ads
  674ef7d1ee7e35c007365502de84ded5  gcc/testsuite/gnat.dg/aggr3.adb
  35168b6dce753ec723ff0dcf21d977d0  gcc/testsuite/gnat.dg/aggr4.adb
  a12ec40d7ebc1ab08b05b0d1f6a57bc4  gcc/testsuite/gnat.dg/aggr7.adb
*************** ce3465c950e55fea4ab2dc6fef270190  gcc/te
*** 54196,54202 ****
  4384340b82a3264f85bd960f81292b76  gcc/testsuite/gnat.dg/array1.adb
  2ba96fdcf6eb85d783b1a3431a416086  gcc/testsuite/gnat.dg/array1.ads
  927aa515c48c440b5b3f566fd2f3573e  gcc/testsuite/gnat.dg/array10.adb
! 19886fea006babf4586f2cc9ba6d3852  gcc/testsuite/gnat.dg/array11.adb
  d4d8b82dbf85cb4c9b2e380b2a68a04c  gcc/testsuite/gnat.dg/array12.adb
  6a4540c8c64eaa3333190cd6d89d5bb8  gcc/testsuite/gnat.dg/array13.adb
  e6da6f873a575042dfab209c84088ecf  gcc/testsuite/gnat.dg/array13.ads
--- 54595,54601 ----
  4384340b82a3264f85bd960f81292b76  gcc/testsuite/gnat.dg/array1.adb
  2ba96fdcf6eb85d783b1a3431a416086  gcc/testsuite/gnat.dg/array1.ads
  927aa515c48c440b5b3f566fd2f3573e  gcc/testsuite/gnat.dg/array10.adb
! ad0497f6027cba0c8f369ed487f6291d  gcc/testsuite/gnat.dg/array11.adb
  d4d8b82dbf85cb4c9b2e380b2a68a04c  gcc/testsuite/gnat.dg/array12.adb
  6a4540c8c64eaa3333190cd6d89d5bb8  gcc/testsuite/gnat.dg/array13.adb
  e6da6f873a575042dfab209c84088ecf  gcc/testsuite/gnat.dg/array13.ads
*************** fde25bc1895a7cd298ce73cdbf1a78b2  gcc/te
*** 54490,54495 ****
--- 54889,54898 ----
  6b288d196590751b637a4bffb615a84f  gcc/testsuite/gnat.dg/discr46.ads
  c0cb675cb411da6d7c94b8d283353a91  gcc/testsuite/gnat.dg/discr47.adb
  fe51b5d7f2580febe7dbfa6ab9b9391f  gcc/testsuite/gnat.dg/discr5.adb
+ 81adec6906aea44a68b04854f2a39a4f  gcc/testsuite/gnat.dg/discr53.adb
+ 5609221ef72855694d74cf8438b79057  gcc/testsuite/gnat.dg/discr53.ads
+ 76bf2b03e26d3b1b364b192d9ed2a407  gcc/testsuite/gnat.dg/discr53_pkg.ads
+ 8d64e464dbf0142c485ae6c9f6fa5999  gcc/testsuite/gnat.dg/discr55.adb
  5ecce02a24b9db283dee01453682f913  gcc/testsuite/gnat.dg/discr7.adb
  6676509ce09b0e8b59ddf049ee91cdd9  gcc/testsuite/gnat.dg/discr8.adb
  ec62c93c8bb18ad3dccd42de6a5a106d  gcc/testsuite/gnat.dg/discr8.ads
*************** b14ff5af6d465c52e8a4c926aa190ef4  gcc/te
*** 54501,54511 ****
  dcaafd57f9217fff0e685a7456812b58  gcc/testsuite/gnat.dg/discr_range_check.adb
  ff0f2d0f8e8de90bdcfbf3e74d699b90  gcc/testsuite/gnat.dg/discr_test.adb
  d3867a1a352f43bb512b03878716ccfe  gcc/testsuite/gnat.dg/discr_test2.adb
! 17878ed91e7c2e6da32e5528711f2192  gcc/testsuite/gnat.dg/dispatch1.adb
! 5e2d09b5eedbe75f1e0a5d063d6dc819  gcc/testsuite/gnat.dg/dispatch1_p.ads
! 5a8fcfacf8591e1423937e7b30ac36a1  gcc/testsuite/gnat.dg/dispatch2.adb
! f3658aaaeec6e98b555363b4d59e648e  gcc/testsuite/gnat.dg/dispatch2_p.adb
! 636ded24b317e36ac4ad221b0a525709  gcc/testsuite/gnat.dg/dispatch2_p.ads
  3ff72ebe3cf496e89941efc9df26c8cf  gcc/testsuite/gnat.dg/div_no_warning.adb
  d65bcf76d480f439aab679b09d9c0371  gcc/testsuite/gnat.dg/dse_step.adb
  ad16edae9320a0014102921e32b92dab  gcc/testsuite/gnat.dg/dse_step.ads
--- 54904,54914 ----
  dcaafd57f9217fff0e685a7456812b58  gcc/testsuite/gnat.dg/discr_range_check.adb
  ff0f2d0f8e8de90bdcfbf3e74d699b90  gcc/testsuite/gnat.dg/discr_test.adb
  d3867a1a352f43bb512b03878716ccfe  gcc/testsuite/gnat.dg/discr_test2.adb
! 1d6953d72fa7261547fd53375c4c8ea9  gcc/testsuite/gnat.dg/disp1.adb
! be12d3fb109247c1aaf6b19f5a65234e  gcc/testsuite/gnat.dg/disp1_pkg.ads
! 502f6df206148707eccf5d2169dc3a0c  gcc/testsuite/gnat.dg/disp2.adb
! 27e284ecfab36dff4aeb5b0e7a760992  gcc/testsuite/gnat.dg/disp2_pkg.adb
! aade8ed441d181cc943e854b4195d970  gcc/testsuite/gnat.dg/disp2_pkg.ads
  3ff72ebe3cf496e89941efc9df26c8cf  gcc/testsuite/gnat.dg/div_no_warning.adb
  d65bcf76d480f439aab679b09d9c0371  gcc/testsuite/gnat.dg/dse_step.adb
  ad16edae9320a0014102921e32b92dab  gcc/testsuite/gnat.dg/dse_step.ads
*************** d0689d7d2df99b8a9bdfa7461addbca6  gcc/te
*** 54554,54562 ****
  42a1a84a561d8513a3ddb03c1873df86  gcc/testsuite/gnat.dg/g_tables.ads
  98054bebce7ebc5df6d4a6a4178bf29c  gcc/testsuite/gnat.dg/gen_disp.adb
  8ce8ee3ebe319b0b6252b4307844d6c5  gcc/testsuite/gnat.dg/gen_disp.ads
! 378515f5abe94360ef1c9648e98250ff  gcc/testsuite/gnat.dg/generic_dispatch.adb
! 7d925d3bd1ab2e82703371c4e1998436  gcc/testsuite/gnat.dg/generic_dispatch_p.adb
! ee2b6ca79560241f2072641970442abe  gcc/testsuite/gnat.dg/generic_dispatch_p.ads
  cc4ebe6ac2f1c00b421a891817d2d911  gcc/testsuite/gnat.dg/gnat_malloc.adb
  82cb70c21ba1318cac8f07e58a6b386d  gcc/testsuite/gnat.dg/gnatg.adb
  622a5855bd8db0ed030a5154bd9c3266  gcc/testsuite/gnat.dg/graphic.adb
--- 54957,54965 ----
  42a1a84a561d8513a3ddb03c1873df86  gcc/testsuite/gnat.dg/g_tables.ads
  98054bebce7ebc5df6d4a6a4178bf29c  gcc/testsuite/gnat.dg/gen_disp.adb
  8ce8ee3ebe319b0b6252b4307844d6c5  gcc/testsuite/gnat.dg/gen_disp.ads
! 26c448ca0e6aaa93e38582d3d912525d  gcc/testsuite/gnat.dg/generic_disp.adb
! f1692f526c4f792a7f4bb9ab70c04d62  gcc/testsuite/gnat.dg/generic_disp_pkg.adb
! 408f13c04910fcb870929fb8095f4f09  gcc/testsuite/gnat.dg/generic_disp_pkg.ads
  cc4ebe6ac2f1c00b421a891817d2d911  gcc/testsuite/gnat.dg/gnat_malloc.adb
  82cb70c21ba1318cac8f07e58a6b386d  gcc/testsuite/gnat.dg/gnatg.adb
  622a5855bd8db0ed030a5154bd9c3266  gcc/testsuite/gnat.dg/graphic.adb
*************** fe3289c7493b99d78ab8ea45e1f6b8f9  gcc/te
*** 54843,54858 ****
  5ac9ac562fddac1d8385d31dd03fee42  gcc/testsuite/gnat.dg/noreturn5.ads
  4bc2c394a21020e8c9725519ba294558  gcc/testsuite/gnat.dg/not_null.adb
  210a12989054c999f3b84ea7db7a0319  gcc/testsuite/gnat.dg/notnot.adb
! a5867890b026eed2903d692d23100203  gcc/testsuite/gnat.dg/null_pointer_deref1.adb
! 470aad2b0de3fb4bc247e35707bf6377  gcc/testsuite/gnat.dg/null_pointer_deref2.adb
! 0ff4b31c7435f35d138a9cbe28757cc2  gcc/testsuite/gnat.dg/null_pointer_deref3.adb
  fc981669e9edb4257f4d7aa1d746a985  gcc/testsuite/gnat.dg/oalign1.ads
  18d8b818d36450ab34b392635110ddf4  gcc/testsuite/gnat.dg/oalign2.ads
! 673fbe32e75e755439a989a9f83ffbc2  gcc/testsuite/gnat.dg/object_overflow1.adb
! 250b61811a4e87b9d344dc4219c70a0b  gcc/testsuite/gnat.dg/object_overflow2.adb
! e99769fb5c8087e854da5fe47e32d7f1  gcc/testsuite/gnat.dg/object_overflow3.adb
! b4be325e2ef433aa552715d0ce79ba10  gcc/testsuite/gnat.dg/object_overflow4.adb
! d33c6169911884bb60e2c357a890f018  gcc/testsuite/gnat.dg/object_overflow5.adb
  e4e9b879fcb6c0fae2ce6dc54901dbba  gcc/testsuite/gnat.dg/oconst1.adb
  54f4ef39aa8725fc1134c89f1a561281  gcc/testsuite/gnat.dg/oconst1.ads
  f1b41bfbdd33a295a1045fdcee8eb9fd  gcc/testsuite/gnat.dg/oconst2.adb
--- 55246,55261 ----
  5ac9ac562fddac1d8385d31dd03fee42  gcc/testsuite/gnat.dg/noreturn5.ads
  4bc2c394a21020e8c9725519ba294558  gcc/testsuite/gnat.dg/not_null.adb
  210a12989054c999f3b84ea7db7a0319  gcc/testsuite/gnat.dg/notnot.adb
! 27a91517900479e55d7649f35f1a28fc  gcc/testsuite/gnat.dg/null_pointer_deref1.adb
! b6ddbcc9aad979466c27adf0582a5d78  gcc/testsuite/gnat.dg/null_pointer_deref2.adb
! afdcecd19e04016f6d8992767c2c465f  gcc/testsuite/gnat.dg/null_pointer_deref3.adb
  fc981669e9edb4257f4d7aa1d746a985  gcc/testsuite/gnat.dg/oalign1.ads
  18d8b818d36450ab34b392635110ddf4  gcc/testsuite/gnat.dg/oalign2.ads
! e2c8479333425ea75c63f23a2938caf3  gcc/testsuite/gnat.dg/object_overflow1.adb
! 26f9931288d2f5e635011e0da09f5923  gcc/testsuite/gnat.dg/object_overflow2.adb
! d50145f03dccc1452d670a7462c428c6  gcc/testsuite/gnat.dg/object_overflow3.adb
! a855945053dc41dfa1c42e3b145ac9af  gcc/testsuite/gnat.dg/object_overflow4.adb
! 4c53d9e0e30637a7ed0c2d2612c24354  gcc/testsuite/gnat.dg/object_overflow5.adb
  e4e9b879fcb6c0fae2ce6dc54901dbba  gcc/testsuite/gnat.dg/oconst1.adb
  54f4ef39aa8725fc1134c89f1a561281  gcc/testsuite/gnat.dg/oconst1.ads
  f1b41bfbdd33a295a1045fdcee8eb9fd  gcc/testsuite/gnat.dg/oconst2.adb
*************** fa4c27f02bb3b9657f76e2ed18da2f02  gcc/te
*** 54994,54999 ****
--- 55397,55405 ----
  ecc4c6c9f42f03d3d6a69b2ab6a2f13c  gcc/testsuite/gnat.dg/opt69.adb
  a441d166cc0d4b34342468308b350060  gcc/testsuite/gnat.dg/opt7.adb
  8ea613067c21d3bbf860fb8bb4013c79  gcc/testsuite/gnat.dg/opt7.ads
+ 7b50ee2703cb5b6f1cc1351cf5ac13ca  gcc/testsuite/gnat.dg/opt74.adb
+ 28261fe08e53f03084939ac1513087d2  gcc/testsuite/gnat.dg/opt74_pkg.adb
+ 806487ea35207410d066e54a00127ca2  gcc/testsuite/gnat.dg/opt74_pkg.ads
  81951fc84d3d36131be8aca4f80c113b  gcc/testsuite/gnat.dg/opt7_pkg.ads
  9df643a09a85f1f88656c303fed9ef56  gcc/testsuite/gnat.dg/opt8.adb
  328d673eb1b44dc8fd4fcd430ebc2ddf  gcc/testsuite/gnat.dg/opt8.ads
*************** d610552f4ea2d1327494884e4fbe72e2  gcc/te
*** 55073,55078 ****
--- 55479,55487 ----
  ea217462fb02deca69a51d157dc77fd8  gcc/testsuite/gnat.dg/prot2_pkg1.ads
  5c0dd1ded75b5d8dbe8869fa698a559f  gcc/testsuite/gnat.dg/prot2_pkg2.adb
  4425b69ff6c1bdb8a67769183e53832d  gcc/testsuite/gnat.dg/prot2_pkg2.ads
+ b41ce2938f97909d07c7e12fb8e4fbde  gcc/testsuite/gnat.dg/prot3.adb
+ 59da87167c81199d22df8ccc3f46dcca  gcc/testsuite/gnat.dg/prot3_pkg.adb
+ 37406422deec51fe735bbe0b1018bc91  gcc/testsuite/gnat.dg/prot3_pkg.ads
  8b9d81034e4a3268cbc4aae764775fd9  gcc/testsuite/gnat.dg/prot_def.adb
  e6da11fd6483154a13820d7470de4efb  gcc/testsuite/gnat.dg/protected_self_ref1.adb
  bffe9a3ac9d57a27e4b093a45da1b8bf  gcc/testsuite/gnat.dg/protected_self_ref2.adb
*************** bc9e693a63b338619703ea41ddab830f  gcc/te
*** 55271,55276 ****
--- 55680,55687 ----
  736e6da3ba29f65b23041cc0858f53f6  gcc/testsuite/gnat.dg/specs/oconst6.ads
  2aa7761f2d549d6555ab3c60e1ae19e6  gcc/testsuite/gnat.dg/specs/opt1.ads
  03cd0423ab66723ebaaf0e0ae9c6219b  gcc/testsuite/gnat.dg/specs/opt2.ads
+ 853cfb2d66af6930f55bfa93cdfe43c1  gcc/testsuite/gnat.dg/specs/opt3.ads
+ 55cfaa66ec1a146c63f5e82738917aa3  gcc/testsuite/gnat.dg/specs/opt3_pkg.ads
  a33d565d33da0c1fd4225f3e0005c81e  gcc/testsuite/gnat.dg/specs/oversize.ads
  c177b376a4a8546663a7caa87b66abb4  gcc/testsuite/gnat.dg/specs/pack10.ads
  aca39671a4d090d6d3c7a2abf4ee74a6  gcc/testsuite/gnat.dg/specs/pack10_pkg.adb
*************** e8b5ace9ad343821d243b4055e935502  gcc/te
*** 55432,55437 ****
--- 55843,55850 ----
  b69cc56a25b14c1e9a822978b0da99a8  gcc/testsuite/gnat.dg/sso/u5.adb
  1c370de592b98be9b7cefb5ec19f06d7  gcc/testsuite/gnat.dg/sso/u6.adb
  2b29e1dbd377ec154a532fa5eadacbe8  gcc/testsuite/gnat.dg/sso1.adb
+ d5c146078d224d7491b0622d11647b77  gcc/testsuite/gnat.dg/sso14.adb
+ d0480aca937a9fe678328be80c523277  gcc/testsuite/gnat.dg/sso15.adb
  ff784f7bca69d0717e740273960b0387  gcc/testsuite/gnat.dg/sso2.adb
  ccf43eb5df39869bb23ff9110d3b93cb  gcc/testsuite/gnat.dg/sso2.ads
  6fe64945c0d0238672cdece04341c316  gcc/testsuite/gnat.dg/sso3.adb
*************** a16408deff983193400446f0843b5c6a  gcc/te
*** 55651,55658 ****
  aac18a98145d0eb18cc893fbd8e0fa55  gcc/testsuite/gnat.dg/warn10.ads
  93332b5d9cbfd73edbdd13d517ff7bb2  gcc/testsuite/gnat.dg/warn10_pkg.ads
  98c4c3d69758f446e3a1b150b7ae739b  gcc/testsuite/gnat.dg/warn11.adb
- dbe942ea57b12b756f02138082906172  gcc/testsuite/gnat.dg/warn12.adb
- 07bb261cd154d42b2cbb60e7eb04cb5f  gcc/testsuite/gnat.dg/warn12_pkg.ads
  d951bd0b2a29136b2300bbd76a480159  gcc/testsuite/gnat.dg/warn13.adb
  3907bbd489f2001876b87441ac8ab513  gcc/testsuite/gnat.dg/warn2.adb
  322f2bd4e376d2571dc108f92c498851  gcc/testsuite/gnat.dg/warn3.adb
--- 56064,56069 ----
*************** e4f810d480db4aab70255e3feac28e96  gcc/te
*** 55673,55678 ****
--- 56084,56090 ----
  0061543aa5d577f3cf1232427ffba895  gcc/testsuite/go.dg/dg.exp
  df3ff5f9e0759960e0959e71a0d0583f  gcc/testsuite/go.dg/err-1.go
  ec0e3914d3f5df5bec3a4fd8dcf1c0af  gcc/testsuite/go.dg/goto-1.go
+ 9e34a59c2e2b6c322b73c7727068b4bf  gcc/testsuite/go.dg/pr85436.go
  a15752f522823a4bb86ac0b6d5e86305  gcc/testsuite/go.dg/undef-1.go
  922b41af54f5d7211d9ae73b47a46d1b  gcc/testsuite/go.go-torture/execute/array-1.go
  a06ac97125a90b106e6e0dfd7a0cd8cb  gcc/testsuite/go.go-torture/execute/array-2.go
*************** b02011c7edbcfca8dfb3bd46815567fc  gcc/te
*** 56890,56896 ****
  361a6cd2bdbc5e54103e111c1ef4b2cd  gcc/testsuite/jit.dg/test-fuzzer.c
  84606b0daf7effa1be60975ee90658d3  gcc/testsuite/jit.dg/test-hello-world.c
  282cb9f2d6f6d4287ac88a6e77bd3aa9  gcc/testsuite/jit.dg/test-linked-list.c
! 1b066c36dfae0d4f419e39345b537a56  gcc/testsuite/jit.dg/test-long-names.c
  c36d06171cf29aa67856b3136828352f  gcc/testsuite/jit.dg/test-nested-contexts.c
  e476b3e50d2451ccb2e83dcb94690dc6  gcc/testsuite/jit.dg/test-nested-loops.c
  3bf17216559dc2f55aae92782ae349e9  gcc/testsuite/jit.dg/test-operator-overloading.cc
--- 57302,57308 ----
  361a6cd2bdbc5e54103e111c1ef4b2cd  gcc/testsuite/jit.dg/test-fuzzer.c
  84606b0daf7effa1be60975ee90658d3  gcc/testsuite/jit.dg/test-hello-world.c
  282cb9f2d6f6d4287ac88a6e77bd3aa9  gcc/testsuite/jit.dg/test-linked-list.c
! 98ebb9b31736f32dab268c122c5d8d2d  gcc/testsuite/jit.dg/test-long-names.c
  c36d06171cf29aa67856b3136828352f  gcc/testsuite/jit.dg/test-nested-contexts.c
  e476b3e50d2451ccb2e83dcb94690dc6  gcc/testsuite/jit.dg/test-nested-loops.c
  3bf17216559dc2f55aae92782ae349e9  gcc/testsuite/jit.dg/test-operator-overloading.cc
*************** d6a9ca756a1aa49d715b8cddbb455bc9  gcc/te
*** 56952,56958 ****
  3be117a3834bb555505f132cf0247274  gcc/testsuite/lib/options.exp
  839e980bac44a823cd11f689f2ec13f3  gcc/testsuite/lib/plugin-support.exp
  8c1541dcedd895d11cda13061421a478  gcc/testsuite/lib/profopt.exp
! 7bdccb186f8ebe4b810dfbc4f9a21091  gcc/testsuite/lib/prune.exp
  9c6d33569cf604413f68d57c0afe8ace  gcc/testsuite/lib/scanasm.exp
  7d82573b4996625ff7ef4fdb21835322  gcc/testsuite/lib/scandump.exp
  05bb46135f5008e82061df74c4ed3466  gcc/testsuite/lib/scanipa.exp
--- 57364,57370 ----
  3be117a3834bb555505f132cf0247274  gcc/testsuite/lib/options.exp
  839e980bac44a823cd11f689f2ec13f3  gcc/testsuite/lib/plugin-support.exp
  8c1541dcedd895d11cda13061421a478  gcc/testsuite/lib/profopt.exp
! 0dfa91871c3df4146a06f57f1867c6a8  gcc/testsuite/lib/prune.exp
  9c6d33569cf604413f68d57c0afe8ace  gcc/testsuite/lib/scanasm.exp
  7d82573b4996625ff7ef4fdb21835322  gcc/testsuite/lib/scandump.exp
  05bb46135f5008e82061df74c4ed3466  gcc/testsuite/lib/scanipa.exp
*************** d6a9ca756a1aa49d715b8cddbb455bc9  gcc/te
*** 56960,56966 ****
  3b3f36e96e89e5aaa2ffc3b3e75eea8a  gcc/testsuite/lib/scantree.exp
  b1df537fb91fd69120df252f52b27873  gcc/testsuite/lib/target-libpath.exp
  e079de022f07dc380fbd4e8490136cd1  gcc/testsuite/lib/target-supports-dg.exp
! 4b4a0f8a68935680202d5ec3f0c73422  gcc/testsuite/lib/target-supports.exp
  d064f4e641d32cc8ccbe1f2853cc502c  gcc/testsuite/lib/target-utils.exp
  b96a73aab1d3f546b8911126a60bec69  gcc/testsuite/lib/timeout-dg.exp
  31892baa0052b423e00975b658dcfd9f  gcc/testsuite/lib/timeout.exp
--- 57372,57378 ----
  3b3f36e96e89e5aaa2ffc3b3e75eea8a  gcc/testsuite/lib/scantree.exp
  b1df537fb91fd69120df252f52b27873  gcc/testsuite/lib/target-libpath.exp
  e079de022f07dc380fbd4e8490136cd1  gcc/testsuite/lib/target-supports-dg.exp
! f408569441cc19674385448bcc094cba  gcc/testsuite/lib/target-supports.exp
  d064f4e641d32cc8ccbe1f2853cc502c  gcc/testsuite/lib/target-utils.exp
  b96a73aab1d3f546b8911126a60bec69  gcc/testsuite/lib/timeout-dg.exp
  31892baa0052b423e00975b658dcfd9f  gcc/testsuite/lib/timeout.exp
*************** f6b27d32bbcd5170a02e9787e6f5484e  gcc/tl
*** 57945,57951 ****
  bf1ca0c8d6f7aa3ec077ca07f81fb48d  gcc/tree-affine.c
  284126de2a59b6236d8ac9c724fb0fc1  gcc/tree-affine.h
  3603e3d075155f4470364e64801460b9  gcc/tree-call-cdce.c
! b45735e394ef3a941126f6505cc65133  gcc/tree-cfg.c
  44a714fe5a2bb4ca8dd0f32aa310c7f7  gcc/tree-cfg.h
  907aeb3baac97f2aff5fcaf76bccac85  gcc/tree-cfgcleanup.c
  8158974f8a5252ada87cd6fa950cb1bf  gcc/tree-cfgcleanup.h
--- 58357,58363 ----
  bf1ca0c8d6f7aa3ec077ca07f81fb48d  gcc/tree-affine.c
  284126de2a59b6236d8ac9c724fb0fc1  gcc/tree-affine.h
  3603e3d075155f4470364e64801460b9  gcc/tree-call-cdce.c
! 7acc81add1062e825901c4e7a66c51bd  gcc/tree-cfg.c
  44a714fe5a2bb4ca8dd0f32aa310c7f7  gcc/tree-cfg.h
  907aeb3baac97f2aff5fcaf76bccac85  gcc/tree-cfgcleanup.c
  8158974f8a5252ada87cd6fa950cb1bf  gcc/tree-cfgcleanup.h
*************** d3b531c744233e39c8d1680d100db262  gcc/tr
*** 57958,57977 ****
  8474bb7c121b2597050f38a2eb42c634  gcc/tree-core.h
  7d78717aa6a0f789a43aa1ba33be3da9  gcc/tree-data-ref.c
  0e39400878554545caaf195808c5126a  gcc/tree-data-ref.h
! 4c623cca1af3bb93d4e124f3ec018565  gcc/tree-dfa.c
  67a9e2efaa9690ae165df4c23ebef3fa  gcc/tree-dfa.h
  051fa8613d33abf3756316de9fa9f30f  gcc/tree-diagnostic.c
  cdd8772724226d41e49acfaae2bb846b  gcc/tree-diagnostic.h
  e99bf85c6ababdb83b4347bb43d3fa82  gcc/tree-dump.c
  466495caa48c842c98b4d0fe6ca75cd5  gcc/tree-dump.h
! edac3ced744a1f0105010c26d5714c8d  gcc/tree-eh.c
! 1e8e77672f05264f6b3137d48fa05276  gcc/tree-eh.h
! fb5a184de27472cda879bcb534d515c1  gcc/tree-emutls.c
  c6c6e56ccc550a7826b1cdb5ca62f4e8  gcc/tree-hash-traits.h
  fbd4781af8861fb55dcdcdd79809a1ed  gcc/tree-hasher.h
! 4c4f30cef773d8c10ba55ab4a3cfadc1  gcc/tree-if-conv.c
  26f079f6fb72717b74fd761099b24329  gcc/tree-if-conv.h
! 6b03d70d856a27560a011b4823961fab  gcc/tree-inline.c
  5b5c7e160316ca96ead85364ab90c2fc  gcc/tree-inline.h
  bc9d14687fd8689e05b55f0db6b61b64  gcc/tree-into-ssa.c
  514b25ed7303f88e6212e1467ef200c7  gcc/tree-into-ssa.h
--- 58370,58389 ----
  8474bb7c121b2597050f38a2eb42c634  gcc/tree-core.h
  7d78717aa6a0f789a43aa1ba33be3da9  gcc/tree-data-ref.c
  0e39400878554545caaf195808c5126a  gcc/tree-data-ref.h
! 9f44b98bc5691e316c5d5455663bdf99  gcc/tree-dfa.c
  67a9e2efaa9690ae165df4c23ebef3fa  gcc/tree-dfa.h
  051fa8613d33abf3756316de9fa9f30f  gcc/tree-diagnostic.c
  cdd8772724226d41e49acfaae2bb846b  gcc/tree-diagnostic.h
  e99bf85c6ababdb83b4347bb43d3fa82  gcc/tree-dump.c
  466495caa48c842c98b4d0fe6ca75cd5  gcc/tree-dump.h
! 1decead9d8e5da3fbc64f2065d05b827  gcc/tree-eh.c
! 9a1f435bdf65ae5f85347bb7852f35dd  gcc/tree-eh.h
! 36c2f8616307d5dabb5b3888ba3dc6e8  gcc/tree-emutls.c
  c6c6e56ccc550a7826b1cdb5ca62f4e8  gcc/tree-hash-traits.h
  fbd4781af8861fb55dcdcdd79809a1ed  gcc/tree-hasher.h
! 000bfe93e33763e5b1b3ba7b5c079abb  gcc/tree-if-conv.c
  26f079f6fb72717b74fd761099b24329  gcc/tree-if-conv.h
! 945f23f96b4aa570c2fee6b960ac210a  gcc/tree-inline.c
  5b5c7e160316ca96ead85364ab90c2fc  gcc/tree-inline.h
  bc9d14687fd8689e05b55f0db6b61b64  gcc/tree-into-ssa.c
  514b25ed7303f88e6212e1467ef200c7  gcc/tree-into-ssa.h
*************** b7109254a84860974b0d55d580b68626  gcc/tr
*** 58014,58027 ****
  389cb071722144f72ebf78289ec82965  gcc/tree-ssa-ifcombine.c
  2747af87035e55b411af1a2dfd1982ed  gcc/tree-ssa-live.c
  27f182c46da4e0babeb83f0dc3a6fe44  gcc/tree-ssa-live.h
! 732da9ae7eb44e25bbe52e825cbea716  gcc/tree-ssa-loop-ch.c
  f56c3e2b82fb07bf466feff827a22669  gcc/tree-ssa-loop-im.c
  40a1e1211106ff6d7c6147330a4f2277  gcc/tree-ssa-loop-ivcanon.c
  f198a805f2cdb8b1498286e1269fb2bf  gcc/tree-ssa-loop-ivopts.c
  8e29657be03c1b4a6b31bb0f3c04532d  gcc/tree-ssa-loop-ivopts.h
  9235efdadb6242e3ec1be0a1f77a8bd2  gcc/tree-ssa-loop-manip.c
  bd52a938042a3d9ee70f78865379c60c  gcc/tree-ssa-loop-manip.h
! 4991a8e9e93fedbde5ddbbee9f032130  gcc/tree-ssa-loop-niter.c
  a53387a05fd56f1c0a7b258041d09524  gcc/tree-ssa-loop-niter.h
  4dbfc3b9f8f9c989a279e20ebed7411c  gcc/tree-ssa-loop-prefetch.c
  7bb19ef1c822c0df63d1d066943cf499  gcc/tree-ssa-loop-split.c
--- 58426,58439 ----
  389cb071722144f72ebf78289ec82965  gcc/tree-ssa-ifcombine.c
  2747af87035e55b411af1a2dfd1982ed  gcc/tree-ssa-live.c
  27f182c46da4e0babeb83f0dc3a6fe44  gcc/tree-ssa-live.h
! 90b99cc4468369588273c4caa0978199  gcc/tree-ssa-loop-ch.c
  f56c3e2b82fb07bf466feff827a22669  gcc/tree-ssa-loop-im.c
  40a1e1211106ff6d7c6147330a4f2277  gcc/tree-ssa-loop-ivcanon.c
  f198a805f2cdb8b1498286e1269fb2bf  gcc/tree-ssa-loop-ivopts.c
  8e29657be03c1b4a6b31bb0f3c04532d  gcc/tree-ssa-loop-ivopts.h
  9235efdadb6242e3ec1be0a1f77a8bd2  gcc/tree-ssa-loop-manip.c
  bd52a938042a3d9ee70f78865379c60c  gcc/tree-ssa-loop-manip.h
! e4139d58162c526de253f2ea8977df22  gcc/tree-ssa-loop-niter.c
  a53387a05fd56f1c0a7b258041d09524  gcc/tree-ssa-loop-niter.h
  4dbfc3b9f8f9c989a279e20ebed7411c  gcc/tree-ssa-loop-prefetch.c
  7bb19ef1c822c0df63d1d066943cf499  gcc/tree-ssa-loop-split.c
*************** f3a1ba8cdac9b155fe4b3d2bfd7c0e04  gcc/tr
*** 58033,58051 ****
  faf546a32913cc858b6e35a17288bf4a  gcc/tree-ssa-operands.h
  8886d357d83d57390c1f023dfd8d3d04  gcc/tree-ssa-phionlycprop.c
  3111ecbd2dc501cbece38863c5588190  gcc/tree-ssa-phiopt.c
! 885c59dc4630d2a2790254654a35a785  gcc/tree-ssa-phiprop.c
! e94a9fccb0425b54e3140c37fe9c6282  gcc/tree-ssa-pre.c
  236253ad5db25fc718d0c974ebca50f6  gcc/tree-ssa-propagate.c
  3e37daab7057d09f238f1b5a1107d339  gcc/tree-ssa-propagate.h
! e805649a2d042e676b630fda0e92060a  gcc/tree-ssa-reassoc.c
! beeeb865cef7b6db9a5291815ec48b3e  gcc/tree-ssa-sccvn.c
  855a6a94016da8307d4a7f81ac586a02  gcc/tree-ssa-sccvn.h
  52aad650c67052f4d0fb05119b5b33d2  gcc/tree-ssa-scopedtables.c
  f7c97819a8d6cd14e1ba52ff42f9519b  gcc/tree-ssa-scopedtables.h
  26212a5bd2bf0ebc8b5eb1d44ffedfbd  gcc/tree-ssa-sink.c
  e9fbcbbd081eef6ddecc218bb001fa4e  gcc/tree-ssa-strlen.c
! 42a84dc7a2a7700bc7df1a80fa7f9a36  gcc/tree-ssa-structalias.c
! fb5dee46b6b91059ab1db6d5cb9cc478  gcc/tree-ssa-tail-merge.c
  983e049bd2b8555cefd79a1857036f27  gcc/tree-ssa-ter.c
  629b1346e41d0eaf7999d9273d12343b  gcc/tree-ssa-ter.h
  d4c6c6ceed8639bbc2aeb01cbeaa97cd  gcc/tree-ssa-threadbackward.c
--- 58445,58463 ----
  faf546a32913cc858b6e35a17288bf4a  gcc/tree-ssa-operands.h
  8886d357d83d57390c1f023dfd8d3d04  gcc/tree-ssa-phionlycprop.c
  3111ecbd2dc501cbece38863c5588190  gcc/tree-ssa-phiopt.c
! 9d7306e718598b3e9d0fae302523f99d  gcc/tree-ssa-phiprop.c
! 2abc4316e81a84b7e2a8469af9882876  gcc/tree-ssa-pre.c
  236253ad5db25fc718d0c974ebca50f6  gcc/tree-ssa-propagate.c
  3e37daab7057d09f238f1b5a1107d339  gcc/tree-ssa-propagate.h
! 20a322b9080487295afc3c1629d1685a  gcc/tree-ssa-reassoc.c
! ef3951621d58993778d3716e963946e2  gcc/tree-ssa-sccvn.c
  855a6a94016da8307d4a7f81ac586a02  gcc/tree-ssa-sccvn.h
  52aad650c67052f4d0fb05119b5b33d2  gcc/tree-ssa-scopedtables.c
  f7c97819a8d6cd14e1ba52ff42f9519b  gcc/tree-ssa-scopedtables.h
  26212a5bd2bf0ebc8b5eb1d44ffedfbd  gcc/tree-ssa-sink.c
  e9fbcbbd081eef6ddecc218bb001fa4e  gcc/tree-ssa-strlen.c
! f3c5e79d1904eecb1143e768ecca2cdf  gcc/tree-ssa-structalias.c
! 22b107f85a2b67e04443d79b0000ff67  gcc/tree-ssa-tail-merge.c
  983e049bd2b8555cefd79a1857036f27  gcc/tree-ssa-ter.c
  629b1346e41d0eaf7999d9273d12343b  gcc/tree-ssa-ter.h
  d4c6c6ceed8639bbc2aeb01cbeaa97cd  gcc/tree-ssa-threadbackward.c
*************** aeb197a9ce8db0f44a2c21accdfc4252  gcc/tr
*** 58056,58062 ****
  a1c75828ecf8fd1c6eaf74c6ec6ff367  gcc/tree-ssa-threadupdate.h
  48f066aa5a376e7a36880dda3175f693  gcc/tree-ssa-uncprop.c
  8352e9f09efc638da2e95e7caedde2df  gcc/tree-ssa-uninit.c
! ff8c6f3ea3a80efdb5465075b830bdba  gcc/tree-ssa.c
  40537e4def470af52fd09e8f581a87a4  gcc/tree-ssa.h
  a4ec23ea5dc99ee2c0f433cc4380cf71  gcc/tree-ssanames.c
  7b878704c463f54f6e5169fc3e4e0e11  gcc/tree-ssanames.h
--- 58468,58474 ----
  a1c75828ecf8fd1c6eaf74c6ec6ff367  gcc/tree-ssa-threadupdate.h
  48f066aa5a376e7a36880dda3175f693  gcc/tree-ssa-uncprop.c
  8352e9f09efc638da2e95e7caedde2df  gcc/tree-ssa-uninit.c
! 72099748fefd16515175796f4b856ff7  gcc/tree-ssa.c
  40537e4def470af52fd09e8f581a87a4  gcc/tree-ssa.h
  a4ec23ea5dc99ee2c0f433cc4380cf71  gcc/tree-ssanames.c
  7b878704c463f54f6e5169fc3e4e0e11  gcc/tree-ssanames.h
*************** f074a5b3661311f44cd97298ce2721c8  gcc/tr
*** 58067,58085 ****
  258742a6a20e3226f6a1bb968e470187  gcc/tree-streamer.c
  ddb2dd33dea05630b1bcaf17cf1e6fe6  gcc/tree-streamer.h
  1dae91fc5487d137906e2984f737b2fc  gcc/tree-switch-conversion.c
! 4f1437900d1eae97e34eee340c78d8f0  gcc/tree-tailcall.c
! 60ac277fe744bdffc1d3cc8d23c114e3  gcc/tree-vect-data-refs.c
! 9c4b793372502f0d56cc72e8bf4bd0c3  gcc/tree-vect-generic.c
  de2a4509a3f3fdf59c0e96c1fb5d368c  gcc/tree-vect-loop-manip.c
! 46e827311bbf8fdfb1591039c2eacc58  gcc/tree-vect-loop.c
  13b9ab9878d38fbb5b9ab9e2a3b9fc3e  gcc/tree-vect-patterns.c
  f197c7c8e99de5214d384509ebb6944f  gcc/tree-vect-slp.c
! 141eed5be7d6df1c702136c8533627f6  gcc/tree-vect-stmts.c
  6491d8028906ba909a4fd71f061f338f  gcc/tree-vectorizer.c
! 76daa3059be9109db2b7dce0d0cf119a  gcc/tree-vectorizer.h
! b03da7a5c9800ea4e58962dbc7df7d13  gcc/tree-vrp.c
  d0b07570d4815d6988ff91b7d96f35c1  gcc/tree-vrp.h
! 8893b18805ad8418a04858636de77a47  gcc/tree.c
  c54cff3017739446f22655474c5be4d4  gcc/tree.def
  223a81503038013bef7ce9d880566d21  gcc/tree.h
  f8aeb637e24e2147a52ec643e9c28aef  gcc/treestruct.def
--- 58479,58497 ----
  258742a6a20e3226f6a1bb968e470187  gcc/tree-streamer.c
  ddb2dd33dea05630b1bcaf17cf1e6fe6  gcc/tree-streamer.h
  1dae91fc5487d137906e2984f737b2fc  gcc/tree-switch-conversion.c
! 1890ec2660cfa4e8fafa1d34129ff83b  gcc/tree-tailcall.c
! 18fecfbd93d600e754a1060cfe7e58aa  gcc/tree-vect-data-refs.c
! c64e840e80fd120d32993735457bf2d6  gcc/tree-vect-generic.c
  de2a4509a3f3fdf59c0e96c1fb5d368c  gcc/tree-vect-loop-manip.c
! 2c358fa9d8bc50f0913bbad67796ad24  gcc/tree-vect-loop.c
  13b9ab9878d38fbb5b9ab9e2a3b9fc3e  gcc/tree-vect-patterns.c
  f197c7c8e99de5214d384509ebb6944f  gcc/tree-vect-slp.c
! e9f2fa40a822f816a451abbb7f6cfc9e  gcc/tree-vect-stmts.c
  6491d8028906ba909a4fd71f061f338f  gcc/tree-vectorizer.c
! ad5f7e1f1671334e24e59845598f4d8d  gcc/tree-vectorizer.h
! 7a7fb7be9e501636d61df18b9187b09b  gcc/tree-vrp.c
  d0b07570d4815d6988ff91b7d96f35c1  gcc/tree-vrp.h
! aa21e8039f824750ba20ae6087f30496  gcc/tree.c
  c54cff3017739446f22655474c5be4d4  gcc/tree.def
  223a81503038013bef7ce9d880566d21  gcc/tree.h
  f8aeb637e24e2147a52ec643e9c28aef  gcc/treestruct.def
*************** fe46b58c2d968098a9ae6e7a7445cae3  gcc/va
*** 58096,58102 ****
  98fdc9a291306955c55665ff6b44c42b  gcc/value-prof.c
  ac107bcf2a6f3e451007922fe6c8da2a  gcc/value-prof.h
  08bf2c7378d10540c4ebbbdf57a90827  gcc/var-tracking.c
! de0aa24b5d1dcbba68b0797102ca4b12  gcc/varasm.c
  3075dcabae19eef70790c35d5576a237  gcc/varasm.h
  a1e741d53ddf1d949ec51b34ae13e6d5  gcc/varpool.c
  c77ffc837d830d397f3be14b28431037  gcc/vec.c
--- 58508,58514 ----
  98fdc9a291306955c55665ff6b44c42b  gcc/value-prof.c
  ac107bcf2a6f3e451007922fe6c8da2a  gcc/value-prof.h
  08bf2c7378d10540c4ebbbdf57a90827  gcc/var-tracking.c
! e5e07d507d78369a67a61e6f57822bdf  gcc/varasm.c
  3075dcabae19eef70790c35d5576a237  gcc/varasm.h
  a1e741d53ddf1d949ec51b34ae13e6d5  gcc/varpool.c
  c77ffc837d830d397f3be14b28431037  gcc/vec.c
*************** d494f7267d3ff1290b8f6e9b0ce5e012  gcc/ve
*** 58104,58110 ****
  ca4f6963e6fd01c43e6c4f82f1af83bf  gcc/version.c
  206ce76c6ce744048f99fdcc938dc713  gcc/version.h
  4d5472949ea84a6c049baaf1031f9c8e  gcc/vmsdbg.h
! c7fbaaef606f61c1aa583d1a0e56057a  gcc/vmsdbgout.c
  94aebbb48447d837161ece5b2d4f0faa  gcc/vtable-verify.c
  5778d6a9b39a1f9f47ebab37005e1e5e  gcc/vtable-verify.h
  bf9aae8885dc1968da10c6a7115941f2  gcc/web.c
--- 58516,58522 ----
  ca4f6963e6fd01c43e6c4f82f1af83bf  gcc/version.c
  206ce76c6ce744048f99fdcc938dc713  gcc/version.h
  4d5472949ea84a6c049baaf1031f9c8e  gcc/vmsdbg.h
! b71a436ce37d4d39edef9c114b741c74  gcc/vmsdbgout.c
  94aebbb48447d837161ece5b2d4f0faa  gcc/vtable-verify.c
  5778d6a9b39a1f9f47ebab37005e1e5e  gcc/vtable-verify.h
  bf9aae8885dc1968da10c6a7115941f2  gcc/web.c
*************** e48b954d508e3167f06f4a8d82ea5cd8  gcc/wi
*** 58115,58125 ****
  4610af587f4dc950fe9a6ef2235dfff9  gcc/xcoff.h
  d7feb10b49afbc551ef8ef0e7c8b382a  gcc/xcoffout.c
  8ac0a7cac3c2354f43d17230a00549ee  gcc/xcoffout.h
! 335e82b464efbb300226d808cf24ca72  gnattools/ChangeLog
  aaa671ca98fa9f94bfedd0ab395c5505  gnattools/Makefile.in
  c59f18e88cbf4b04095185094daf9a84  gnattools/configure
  eb3f980bf11ec11e25ddc6f29983830a  gnattools/configure.ac
! 2f22e44a2af15334163d3276c7d8321c  gotools/ChangeLog
  240cdfac222bad04b3c6c59b6e33224f  gotools/Makefile.am
  b135327a9b19851bf704c9bdac3735cf  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
--- 58527,58537 ----
  4610af587f4dc950fe9a6ef2235dfff9  gcc/xcoff.h
  d7feb10b49afbc551ef8ef0e7c8b382a  gcc/xcoffout.c
  8ac0a7cac3c2354f43d17230a00549ee  gcc/xcoffout.h
! 1f928523b785c5846d658a95331a6ef9  gnattools/ChangeLog
  aaa671ca98fa9f94bfedd0ab395c5505  gnattools/Makefile.in
  c59f18e88cbf4b04095185094daf9a84  gnattools/configure
  eb3f980bf11ec11e25ddc6f29983830a  gnattools/configure.ac
! f59a86e836317441e4eb489d359c7667  gotools/ChangeLog
  240cdfac222bad04b3c6c59b6e33224f  gotools/Makefile.am
  b135327a9b19851bf704c9bdac3735cf  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 58131,58137 ****
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 9715299feb9a5a57527e6fe033fa28e7  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  f5224d917e0ec7656fa5c368c93b1c13  include/ansidecl.h
--- 58543,58549 ----
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 683918215667178552bf5822bf46a40e  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  f5224d917e0ec7656fa5c368c93b1c13  include/ansidecl.h
*************** a2c2be56ed85992d72e0a1e16388ce83  includ
*** 58175,58181 ****
  a3809e336de193fa8866271870dd0443  include/xregex2.h
  323e072fba874802e42a3a1a6468b335  include/xtensa-config.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 8db5696095c153c4474f4caa06b74736  intl/ChangeLog
  cad1d6fab2274517783de7433c0faa74  intl/Makefile.in
  6ec998bb4716c744bf8185e607f69301  intl/README
  76ca170a525d5b84d90f0478fe788931  intl/VERSION
--- 58587,58593 ----
  a3809e336de193fa8866271870dd0443  include/xregex2.h
  323e072fba874802e42a3a1a6468b335  include/xtensa-config.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 143cd1d06179ecca146e618e89e286f7  intl/ChangeLog
  cad1d6fab2274517783de7433c0faa74  intl/Makefile.in
  6ec998bb4716c744bf8185e607f69301  intl/README
  76ca170a525d5b84d90f0478fe788931  intl/VERSION
*************** d50a8c6c5b41089930accbdce767d3c0  intl/p
*** 58217,58228 ****
  b4758a0194e3e41362b939911472ce62  intl/relocatable.c
  bedade7bcfc3bc5eb09a2c6844f637f3  intl/relocatable.h
  43f287d082528203fc85c1d2d81bf30d  intl/textdomain.c
! 667592b34a262e9ae2c75b66c55d929b  libada/ChangeLog
  85a2c02d6be7c7bbef19b47329e3f001  libada/Makefile.in
! e5e690bd9711d1a0ae3494a605a70916  libada/configure
  e29be9defcc56c307519b82f9be9bf6b  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! b88e69ba2978aa781b28dc5e4f54aed4  libatomic/ChangeLog
  0e2617e8dd9c8750a069dec0be5238aa  libatomic/Makefile.am
  a4b4277b02f2c77ee920b5da5684fc9f  libatomic/Makefile.in
  361fca640a8f8ae0534948c6464cd031  libatomic/acinclude.m4
--- 58629,58640 ----
  b4758a0194e3e41362b939911472ce62  intl/relocatable.c
  bedade7bcfc3bc5eb09a2c6844f637f3  intl/relocatable.h
  43f287d082528203fc85c1d2d81bf30d  intl/textdomain.c
! 4bc4920d212a4212b4197fa90b1fc83d  libada/ChangeLog
  85a2c02d6be7c7bbef19b47329e3f001  libada/Makefile.in
! 554be3385e4af61bda0453b864b0bd82  libada/configure
  e29be9defcc56c307519b82f9be9bf6b  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 61aed21b6250191b571f2b74dd609091  libatomic/ChangeLog
  0e2617e8dd9c8750a069dec0be5238aa  libatomic/Makefile.am
  a4b4277b02f2c77ee920b5da5684fc9f  libatomic/Makefile.in
  361fca640a8f8ae0534948c6464cd031  libatomic/acinclude.m4
*************** b045981f1596898d6e97a9d6ac3edbc6  libato
*** 58244,58255 ****
  d04f86e742ddfedb71fb4a3d0ceede39  libatomic/config/powerpc/host-config.h
  4db19ba7f910c89ddcbb4aec36832042  libatomic/config/rtems/host-config.h
  c3178d6b66484de4ef9336f2e82647fa  libatomic/config/rtems/lock.c
  b2ef19d0807b749f16df8f44d8336643  libatomic/config/x86/fenv.c
  e78ffe700baea724b0a891a96e9e67b1  libatomic/config/x86/host-config.h
  f603ed775018887a9778942f081b8163  libatomic/config/x86/init.c
! 9c7c26d950ce75cfc19e929595374e20  libatomic/configure
  449b252221ed88ce03289a80f8263985  libatomic/configure.ac
! 5a68cd0599bd2fb35dfb3e64e9f8f454  libatomic/configure.tgt
  0d0291952f3d023962d0562ef683caa0  libatomic/exch_n.c
  64680733e3d789032a74049ddeacf961  libatomic/fadd_n.c
  ee6f02fad9bd551a906477f16740578f  libatomic/fand_n.c
--- 58656,58668 ----
  d04f86e742ddfedb71fb4a3d0ceede39  libatomic/config/powerpc/host-config.h
  4db19ba7f910c89ddcbb4aec36832042  libatomic/config/rtems/host-config.h
  c3178d6b66484de4ef9336f2e82647fa  libatomic/config/rtems/lock.c
+ 0ab581d09f5c9f35fec15bf82097e678  libatomic/config/s390/exch_n.c
  b2ef19d0807b749f16df8f44d8336643  libatomic/config/x86/fenv.c
  e78ffe700baea724b0a891a96e9e67b1  libatomic/config/x86/host-config.h
  f603ed775018887a9778942f081b8163  libatomic/config/x86/init.c
! 5e680315b13a565c4b57f3a5a152ed62  libatomic/configure
  449b252221ed88ce03289a80f8263985  libatomic/configure.ac
! b2c0d1b24925f3d5b807493aa7d1dada  libatomic/configure.tgt
  0d0291952f3d023962d0562ef683caa0  libatomic/exch_n.c
  64680733e3d789032a74049ddeacf961  libatomic/fadd_n.c
  ee6f02fad9bd551a906477f16740578f  libatomic/fand_n.c
*************** c03a072efac9b30f8f8429ac52fd246b  libato
*** 58306,58312 ****
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! b1fa4188808da237c034a12a86cf7910  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
  be5cf12569500d943e2cb547bdf7a602  libbacktrace/Makefile.am
  d470ca14200db6955e2aa4b9e0bdb4ad  libbacktrace/Makefile.in
--- 58719,58725 ----
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! 95f93b85242f7475a4547170a17abd61  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
  be5cf12569500d943e2cb547bdf7a602  libbacktrace/Makefile.am
  d470ca14200db6955e2aa4b9e0bdb4ad  libbacktrace/Makefile.in
*************** ba2412bc59c92c67dbc379a84dd9f9e8  libbac
*** 58338,58351 ****
  2fbbbd9fd16e0d40ff744a53d93672f4  libbacktrace/state.c
  2659132b1c1fb664296bed58947a1327  libbacktrace/stest.c
  0c34f70856e684a5a2d88cef4d26a433  libbacktrace/unknown.c
! 7a139742f98fc9574b714535d7f1f324  libcc1/ChangeLog
  a046123da46f45ef05c23464bda5ea4c  libcc1/Makefile.am
  3b8fea7df7b2debbea080163365ba6ae  libcc1/Makefile.in
  5f253fc15bb29a40419f12ce42f92147  libcc1/aclocal.m4
  32d43337a8a89f57a798f01e92d8a474  libcc1/callbacks.cc
  986cd35281253252d52d38a839bdcc6d  libcc1/callbacks.hh
  9d81ce1461f24e4af7c8639d94f06789  libcc1/cc1plugin-config.h.in
! 4d2da8fd4e7c184bb32ca60f025e4f24  libcc1/configure
  c04a64dcf539d1a1b0fa85fa90dd66d8  libcc1/configure.ac
  8e2e71449878c03083f063b27d1ed55c  libcc1/connection.cc
  b8cc2f74e62b1e39c0ed98b672edcbe3  libcc1/connection.hh
--- 58751,58764 ----
  2fbbbd9fd16e0d40ff744a53d93672f4  libbacktrace/state.c
  2659132b1c1fb664296bed58947a1327  libbacktrace/stest.c
  0c34f70856e684a5a2d88cef4d26a433  libbacktrace/unknown.c
! 11f1fb164dc58b7e4a79af3180c0ea03  libcc1/ChangeLog
  a046123da46f45ef05c23464bda5ea4c  libcc1/Makefile.am
  3b8fea7df7b2debbea080163365ba6ae  libcc1/Makefile.in
  5f253fc15bb29a40419f12ce42f92147  libcc1/aclocal.m4
  32d43337a8a89f57a798f01e92d8a474  libcc1/callbacks.cc
  986cd35281253252d52d38a839bdcc6d  libcc1/callbacks.hh
  9d81ce1461f24e4af7c8639d94f06789  libcc1/cc1plugin-config.h.in
! 7035b34e5a0ea94dba559a464b68d65b  libcc1/configure
  c04a64dcf539d1a1b0fa85fa90dd66d8  libcc1/configure.ac
  8e2e71449878c03083f063b27d1ed55c  libcc1/connection.cc
  b8cc2f74e62b1e39c0ed98b672edcbe3  libcc1/connection.hh
*************** adf6e179394cf6ed80e1c2c7fcf92d1f  libcc1
*** 58366,58377 ****
  c66f2f1d1887d636535fd09532a98f2f  libcc1/names.hh
  4e2e588c20bbaefa4ce3a333e0ba9a98  libcc1/rpc.hh
  e0b03ce59463dc7215bdec25060a78fe  libcc1/status.hh
! 883e47907e8fe25752928170cbfd04b6  libcilkrts/ChangeLog
  c60cb24ed9572dea78562531f0136e1d  libcilkrts/Makefile.am
  6e9956a8b6e5fc457cc5ddb53701d8ca  libcilkrts/Makefile.in
  ec72a9778565ec08ebbe13cb95aa7245  libcilkrts/README
  49cb389d7dff64b95e25b4d7e85c7ecf  libcilkrts/aclocal.m4
! 25dc8f37c52a7657cc1318797c2e0363  libcilkrts/configure
  91a17f4cbc90b10e4ce7ec4106b65dea  libcilkrts/configure.ac
  61b7389e182015ae1d68f27d53e10cfc  libcilkrts/configure.tgt
  b525d80111c9415a4a40edd78f6bb474  libcilkrts/include/cilk/cilk.h
--- 58779,58790 ----
  c66f2f1d1887d636535fd09532a98f2f  libcc1/names.hh
  4e2e588c20bbaefa4ce3a333e0ba9a98  libcc1/rpc.hh
  e0b03ce59463dc7215bdec25060a78fe  libcc1/status.hh
! b2b874a17c2f91ecf96671c010473823  libcilkrts/ChangeLog
  c60cb24ed9572dea78562531f0136e1d  libcilkrts/Makefile.am
  6e9956a8b6e5fc457cc5ddb53701d8ca  libcilkrts/Makefile.in
  ec72a9778565ec08ebbe13cb95aa7245  libcilkrts/README
  49cb389d7dff64b95e25b4d7e85c7ecf  libcilkrts/aclocal.m4
! c043791a5d2611aeec067a79d3ce2bfb  libcilkrts/configure
  91a17f4cbc90b10e4ce7ec4106b65dea  libcilkrts/configure.ac
  61b7389e182015ae1d68f27d53e10cfc  libcilkrts/configure.tgt
  b525d80111c9415a4a40edd78f6bb474  libcilkrts/include/cilk/cilk.h
*************** ed7c4b18a37a9956d38cc2de890d5c0f  libcil
*** 58495,58501 ****
  0c426f98ab2644f7789533e26a81622e  libcilkrts/runtime/sysdep.h
  2c3a3b2209bf4b41ad77b803856dc02a  libcilkrts/runtime/worker_mutex.c
  ef828695a2adb12b2c20e35ffae8e0c8  libcilkrts/runtime/worker_mutex.h
! 859b1092c134f37db673b8b6cbfa7ffa  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  09398b05cc9619875b188b5b9b5fb8a0  libcpp/Makefile.in
  efb9decde4743620252ededfe7310a3d  libcpp/aclocal.m4
--- 58908,58914 ----
  0c426f98ab2644f7789533e26a81622e  libcilkrts/runtime/sysdep.h
  2c3a3b2209bf4b41ad77b803856dc02a  libcilkrts/runtime/worker_mutex.c
  ef828695a2adb12b2c20e35ffae8e0c8  libcilkrts/runtime/worker_mutex.h
! 8fbe8ad50a227c9edd8ff75f2e27d02c  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  09398b05cc9619875b188b5b9b5fb8a0  libcpp/Makefile.in
  efb9decde4743620252ededfe7310a3d  libcpp/aclocal.m4
*************** f597dd77b708b28fd08dd9d83302dda4  libcpp
*** 58510,58529 ****
  9665490b6f74bfd3b4bb5b8982fd7b94  libcpp/files.c
  ed5ae555e8b77d54908f99c283c3c9e3  libcpp/identifiers.c
  88917cb13d68faf310e60022f49dbe12  libcpp/include/cpp-id-data.h
! 1a3c4f602b07b321fd191c9380d6bc4c  libcpp/include/cpplib.h
  61fc4a831fbf27ff095616c451d88eab  libcpp/include/line-map.h
  8dd2c69613d2429827c48234ca9a4e18  libcpp/include/mkdeps.h
  256e5394d29351bac347fd897d54b1e8  libcpp/include/symtab.h
  97ee7d4a3afe6532296b07ebbb2b15f9  libcpp/init.c
  b618c6ecc923dab6711dc34f8ed6881f  libcpp/internal.h
! 7485b7c49eff198df495f1913b1cb9d9  libcpp/lex.c
  f74674c346dfa1c3fbd08fa9869f6a48  libcpp/line-map.c
  eba197e195fb1c007bf0724c8bed75ea  libcpp/location-example.txt
  c5c375af513d7883fd2eb47dfc975855  libcpp/macro.c
  5bd25c7374dce6b4204276b21cdfa31d  libcpp/makeucnid.c
  e70c5326d8d9cbbf9ca5ae4ca2dc1370  libcpp/mkdeps.c
  9f76d47dc04496af0317d5a8d0a1bcbd  libcpp/pch.c
! 861ed67759d42c659a9fa48d8c2c021e  libcpp/po/ChangeLog
  17a463bdc4264f83ff6f5deb2fc0b3a6  libcpp/po/be.gmo
  674a2819e662ae2d8bfbb6285a7ad2c4  libcpp/po/be.po
  c4f0b21d10c51c5c842d92f8c6bd1e2b  libcpp/po/ca.gmo
--- 58923,58942 ----
  9665490b6f74bfd3b4bb5b8982fd7b94  libcpp/files.c
  ed5ae555e8b77d54908f99c283c3c9e3  libcpp/identifiers.c
  88917cb13d68faf310e60022f49dbe12  libcpp/include/cpp-id-data.h
! 18d2982eb83cf233f5ed161a3b829436  libcpp/include/cpplib.h
  61fc4a831fbf27ff095616c451d88eab  libcpp/include/line-map.h
  8dd2c69613d2429827c48234ca9a4e18  libcpp/include/mkdeps.h
  256e5394d29351bac347fd897d54b1e8  libcpp/include/symtab.h
  97ee7d4a3afe6532296b07ebbb2b15f9  libcpp/init.c
  b618c6ecc923dab6711dc34f8ed6881f  libcpp/internal.h
! 6f3c6af04c81b64e118e3a181133c25b  libcpp/lex.c
  f74674c346dfa1c3fbd08fa9869f6a48  libcpp/line-map.c
  eba197e195fb1c007bf0724c8bed75ea  libcpp/location-example.txt
  c5c375af513d7883fd2eb47dfc975855  libcpp/macro.c
  5bd25c7374dce6b4204276b21cdfa31d  libcpp/makeucnid.c
  e70c5326d8d9cbbf9ca5ae4ca2dc1370  libcpp/mkdeps.c
  9f76d47dc04496af0317d5a8d0a1bcbd  libcpp/pch.c
! 40e031924505cb4372e1850ac59ad034  libcpp/po/ChangeLog
  17a463bdc4264f83ff6f5deb2fc0b3a6  libcpp/po/be.gmo
  674a2819e662ae2d8bfbb6285a7ad2c4  libcpp/po/be.po
  c4f0b21d10c51c5c842d92f8c6bd1e2b  libcpp/po/ca.gmo
*************** bba925b89abde1ce7bf009abeb6cfb37  libcpp
*** 58569,58579 ****
  736b75a3b1e019a555f42e9cc074b04c  libcpp/po/zh_TW.po
  ebd4a0c892d3fcca288f6f37cf3e8cd8  libcpp/symtab.c
  ff183a65de336d785700a5f4b77527e2  libcpp/system.h
! cea4768b3d4d14d9a800773faf100388  libcpp/traditional.c
  a62eb585eca6fd68a7bbe8b9294972d4  libcpp/ucnid.h
  29a3c2eb1562ff70daad7253fabaeffb  libcpp/ucnid.tab
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! f68ff63672ed87f646d41249f7396b0b  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
  1a6bde55e34f3c983baa5211a6400cba  libdecnumber/Makefile.in
  b9ab907f769f0664ed31991a9c9bf3bb  libdecnumber/aclocal.m4
--- 58982,58992 ----
  736b75a3b1e019a555f42e9cc074b04c  libcpp/po/zh_TW.po
  ebd4a0c892d3fcca288f6f37cf3e8cd8  libcpp/symtab.c
  ff183a65de336d785700a5f4b77527e2  libcpp/system.h
! e21ce279a54dc038acab0eb2424f760b  libcpp/traditional.c
  a62eb585eca6fd68a7bbe8b9294972d4  libcpp/ucnid.h
  29a3c2eb1562ff70daad7253fabaeffb  libcpp/ucnid.tab
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! 8c0e97f067efaca06804994d875a0117  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
  1a6bde55e34f3c983baa5211a6400cba  libdecnumber/Makefile.in
  b9ab907f769f0664ed31991a9c9bf3bb  libdecnumber/aclocal.m4
*************** a97c47969dfc92a7666dfe3c2e1e1448  libdec
*** 58636,58642 ****
  f8f385e8ac437b3cec6d5d257a8ca92b  libdecnumber/dpd/decimal64.c
  c44ad1b41c2725fb70917c5f60b033d2  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
! 0881e1571c2df2a1339ed96cd7f9a597  libffi/ChangeLog
  ba66fc19311348d373ec271be939a659  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
--- 59049,59055 ----
  f8f385e8ac437b3cec6d5d257a8ca92b  libdecnumber/dpd/decimal64.c
  c44ad1b41c2725fb70917c5f60b033d2  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
! 82e5c5024e6874b49d775117d9a6a0af  libffi/ChangeLog
  ba66fc19311348d373ec271be939a659  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
*************** d946d2b97454ad50a1dbfbf48923c5be  libffi
*** 58646,58652 ****
  f0aff67c9a90cc128022ee5b0055b968  libffi/README
  e0338ba1ce12fd810fe35fed3a694725  libffi/acinclude.m4
  82458c2895926a7a6da1788cb3bb26f4  libffi/aclocal.m4
! 35c77080c241b6cd736c725e77a07274  libffi/configure
  4c7d6d08dda5a535e8c8d970ae159680  libffi/configure.ac
  84d2d9f2ebfac28a1697db5dc956a25b  libffi/configure.host
  cfec4a5a1bb5d36550e15ac051c14148  libffi/doc/libffi.texi
--- 59059,59065 ----
  f0aff67c9a90cc128022ee5b0055b968  libffi/README
  e0338ba1ce12fd810fe35fed3a694725  libffi/acinclude.m4
  82458c2895926a7a6da1788cb3bb26f4  libffi/aclocal.m4
! 0ffd2b54a40b8ad337e9585a6758f004  libffi/configure
  4c7d6d08dda5a535e8c8d970ae159680  libffi/configure.ac
  84d2d9f2ebfac28a1697db5dc956a25b  libffi/configure.host
  cfec4a5a1bb5d36550e15ac051c14148  libffi/doc/libffi.texi
*************** d47c79b281339983862a8e52d8c73f0f  libffi
*** 58993,58999 ****
  291be426192f460f6a07dfe1c96ab094  libffi/testsuite/libffi.special/special.exp
  93fc3ea311b79f64004992807ce75d1e  libffi/testsuite/libffi.special/unwindtest.cc
  185d0795017fbbe253a13db8e34085f9  libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
! f4e7baa344f6fd2468153b84bf994ee6  libgcc/ChangeLog
  14791b3aecdd572b8a4ecb3ea32778db  libgcc/Makefile.in
  186f54217a4d7fe1af46a0228b0997b4  libgcc/config.host
  d379c1b8013b8714e8c9b01110f0ceb9  libgcc/config.in
--- 59406,59412 ----
  291be426192f460f6a07dfe1c96ab094  libffi/testsuite/libffi.special/special.exp
  93fc3ea311b79f64004992807ce75d1e  libffi/testsuite/libffi.special/unwindtest.cc
  185d0795017fbbe253a13db8e34085f9  libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
! 3bdbfba25943e3697535aacfe13f6987  libgcc/ChangeLog
  14791b3aecdd572b8a4ecb3ea32778db  libgcc/Makefile.in
  186f54217a4d7fe1af46a0228b0997b4  libgcc/config.host
  d379c1b8013b8714e8c9b01110f0ceb9  libgcc/config.in
*************** ef028014ee051f9d75991f8e0ed72451  libgcc
*** 59075,59081 ****
  81f767e5fe256f1cf14545872c660777  libgcc/config/arm/bpabi-v6m.S
  76e8065adada128ea5126a3ea8b1d219  libgcc/config/arm/bpabi.S
  2228c20bff4e1b6d941c9651ecde6355  libgcc/config/arm/bpabi.c
! 5e337e71f785213b71ed954593895bda  libgcc/config/arm/cmse.c
  b1d4286d6fd33f745d7419343a5444ce  libgcc/config/arm/cmse_nonsecure_call.S
  403316d730be517f32fa2e0a1fdc99a4  libgcc/config/arm/crtfastmath.c
  f6069a5a82c5ef1fe057510083e29c94  libgcc/config/arm/crti.S
--- 59488,59494 ----
  81f767e5fe256f1cf14545872c660777  libgcc/config/arm/bpabi-v6m.S
  76e8065adada128ea5126a3ea8b1d219  libgcc/config/arm/bpabi.S
  2228c20bff4e1b6d941c9651ecde6355  libgcc/config/arm/bpabi.c
! 7ec8c6c86f2c4ac88eb03b84074676c2  libgcc/config/arm/cmse.c
  b1d4286d6fd33f745d7419343a5444ce  libgcc/config/arm/cmse_nonsecure_call.S
  403316d730be517f32fa2e0a1fdc99a4  libgcc/config/arm/crtfastmath.c
  f6069a5a82c5ef1fe057510083e29c94  libgcc/config/arm/crti.S
*************** b2bcf8b944f937cb4f3799c02670dcee  libgcc
*** 59250,59256 ****
  a92aa384cf96b81c0dbb642826200dd7  libgcc/config/i386/64/letf2.c
  d1337b28acd8dbde9817492f9027dbc3  libgcc/config/i386/64/sfp-machine.h
  498bbaf506a5bbdaa793f66399ece491  libgcc/config/i386/64/t-softfp-compat
! bcf7d34813251ae035fd569e9b344cbc  libgcc/config/i386/cpuinfo.c
  fbfb418db9224afc8668787ab053ea28  libgcc/config/i386/cpuinfo.h
  8234b9407339e72e409cf68df3a04562  libgcc/config/i386/crtfastmath.c
  628f5b3a30682dae361a41bcb7a01584  libgcc/config/i386/crti.S
--- 59663,59669 ----
  a92aa384cf96b81c0dbb642826200dd7  libgcc/config/i386/64/letf2.c
  d1337b28acd8dbde9817492f9027dbc3  libgcc/config/i386/64/sfp-machine.h
  498bbaf506a5bbdaa793f66399ece491  libgcc/config/i386/64/t-softfp-compat
! 6cf4469add8f3dc7f374b7aee7065b85  libgcc/config/i386/cpuinfo.c
  fbfb418db9224afc8668787ab053ea28  libgcc/config/i386/cpuinfo.h
  8234b9407339e72e409cf68df3a04562  libgcc/config/i386/crtfastmath.c
  628f5b3a30682dae361a41bcb7a01584  libgcc/config/i386/crti.S
*************** e8ba4116276e7713f582c7b0193fac3f  libgcc
*** 59339,59345 ****
  19e293667c8b673f1c0e2284b85f9b99  libgcc/config/ia64/vms-unwind.h
  57c6f8e50666a31bd88fbbebfbd77725  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! 39f998db687cee6b109fb6e51abf0da5  libgcc/config/libbid/ChangeLog
  bf92e3d9d8c85d16491b46e9b705e9d6  libgcc/config/libbid/_addsub_dd.c
  07fb00a8e3903086b062319087bfd206  libgcc/config/libbid/_addsub_sd.c
  7ae95dbcf6a647ed194b9156e261646f  libgcc/config/libbid/_addsub_td.c
--- 59752,59758 ----
  19e293667c8b673f1c0e2284b85f9b99  libgcc/config/ia64/vms-unwind.h
  57c6f8e50666a31bd88fbbebfbd77725  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! 38d3b79d795a63b678bf69587f30c0fd  libgcc/config/libbid/ChangeLog
  bf92e3d9d8c85d16491b46e9b705e9d6  libgcc/config/libbid/_addsub_dd.c
  07fb00a8e3903086b062319087bfd206  libgcc/config/libbid/_addsub_sd.c
  7ae95dbcf6a647ed194b9156e261646f  libgcc/config/libbid/_addsub_td.c
*************** ac9e935b6261d1ec4cd82699c0b2214b  libgcc
*** 59867,59877 ****
  b9f28602618ae206adea3fe582c282cc  libgcc/config/nvptx/nvptx-malloc.h
  be145b314d4451b42ac7f63db0bd7720  libgcc/config/nvptx/reduction.c
  dffcd9969bf41775f6581a1dd31f351f  libgcc/config/nvptx/t-nvptx
! 67582c27cc5cf6c4f93d0d45faad65bf  libgcc/config/pa/fptr.c
  d0b094f86833c0a1cc783cb88c345bd6  libgcc/config/pa/gthr-dce.h
  a7d11931dfa53cd28d81ec5f0632ceaa  libgcc/config/pa/hpux-unwind.h
  e5cfeef8cdbb60163d03728934368168  libgcc/config/pa/lib2funcs.S
! db1e514e68c0fd5b47f4fc7ad54bbb66  libgcc/config/pa/linux-atomic.c
  55cc3e42404133a33058f7028530ddef  libgcc/config/pa/linux-unwind.h
  2521f808a86e3d3248618bbfdd26cd33  libgcc/config/pa/milli64.S
  841e2cfad5c8e939812e14367b9fc152  libgcc/config/pa/pa64-hpux-lib.h
--- 60280,60290 ----
  b9f28602618ae206adea3fe582c282cc  libgcc/config/nvptx/nvptx-malloc.h
  be145b314d4451b42ac7f63db0bd7720  libgcc/config/nvptx/reduction.c
  dffcd9969bf41775f6581a1dd31f351f  libgcc/config/nvptx/t-nvptx
! 4b3650613d6f2fb787c187004cff3a62  libgcc/config/pa/fptr.c
  d0b094f86833c0a1cc783cb88c345bd6  libgcc/config/pa/gthr-dce.h
  a7d11931dfa53cd28d81ec5f0632ceaa  libgcc/config/pa/hpux-unwind.h
  e5cfeef8cdbb60163d03728934368168  libgcc/config/pa/lib2funcs.S
! 4af98cf6c40226ad06738e79d35deb61  libgcc/config/pa/linux-atomic.c
  55cc3e42404133a33058f7028530ddef  libgcc/config/pa/linux-unwind.h
  2521f808a86e3d3248618bbfdd26cd33  libgcc/config/pa/milli64.S
  841e2cfad5c8e939812e14367b9fc152  libgcc/config/pa/pa64-hpux-lib.h
*************** b9cd590f5c1e6238b6ab206e07305458  libgcc
*** 60174,60181 ****
  2ce85317187cb677233d85814961e347  libgcc/config/vxlib.c
  abb50614554adbd89fd57730481cf2fd  libgcc/config/xtensa/crti.S
  80a0d063d42ac902c4ee9de56d80c91c  libgcc/config/xtensa/crtn.S
! 7a62a4c550efc9a29d72c0d5dbd1d68f  libgcc/config/xtensa/ieee754-df.S
! 00e7cf351e56f1fa8f6495e7c8afa39a  libgcc/config/xtensa/ieee754-sf.S
  51d0d68dfa013f26914d51e64c7eea73  libgcc/config/xtensa/lib1funcs.S
  6d331228694c1d2aae30404724c9bbfa  libgcc/config/xtensa/lib2funcs.S
  8074695f5eea7b961c59ee9608973dac  libgcc/config/xtensa/libgcc-glibc.ver
--- 60587,60594 ----
  2ce85317187cb677233d85814961e347  libgcc/config/vxlib.c
  abb50614554adbd89fd57730481cf2fd  libgcc/config/xtensa/crti.S
  80a0d063d42ac902c4ee9de56d80c91c  libgcc/config/xtensa/crtn.S
! d38a31890c1528332f13fc1cb0f50e2a  libgcc/config/xtensa/ieee754-df.S
! 0038f43a487f3efdfc118d44a5e23752  libgcc/config/xtensa/ieee754-sf.S
  51d0d68dfa013f26914d51e64c7eea73  libgcc/config/xtensa/lib1funcs.S
  6d331228694c1d2aae30404724c9bbfa  libgcc/config/xtensa/lib2funcs.S
  8074695f5eea7b961c59ee9608973dac  libgcc/config/xtensa/libgcc-glibc.ver
*************** ce614fa17d52c2d7121d7e2d6f80b02d  libgcc
*** 60186,60192 ****
  9acbec9b3406a3560d608714300a7edf  libgcc/config/xtensa/t-xtensa
  52c63e24e865e7d3438d8cd7525e0929  libgcc/config/xtensa/unwind-dw2-xtensa.c
  d5a4b2ace6f8b31a12c87968726af4a1  libgcc/config/xtensa/unwind-dw2-xtensa.h
! cb28e057ef5e061bab1c7c1982c0f488  libgcc/configure
  02f85646f1b3d27965a5ceaf5c168384  libgcc/configure.ac
  991b872cd62bda98ff01a541d9a824d1  libgcc/crtstuff.c
  9e127f1f1924d9f6ff6bf02146b8f5d3  libgcc/dfp-bit.c
--- 60599,60605 ----
  9acbec9b3406a3560d608714300a7edf  libgcc/config/xtensa/t-xtensa
  52c63e24e865e7d3438d8cd7525e0929  libgcc/config/xtensa/unwind-dw2-xtensa.c
  d5a4b2ace6f8b31a12c87968726af4a1  libgcc/config/xtensa/unwind-dw2-xtensa.h
! b07ac2ab4226b48b55f5431bd9a176b0  libgcc/configure
  02f85646f1b3d27965a5ceaf5c168384  libgcc/configure.ac
  991b872cd62bda98ff01a541d9a824d1  libgcc/crtstuff.c
  9e127f1f1924d9f6ff6bf02146b8f5d3  libgcc/dfp-bit.c
*************** def8eb8348b4ef12e5f4f6b14c9c79b8  libgcc
*** 60348,60354 ****
  85a736ad90e4160d44daa22a1ee856e0  libgcc/vtv_end_preinit.c
  fc4b471f8466a3e259cd068859f264ed  libgcc/vtv_start.c
  9f844965cec8eed0fa3ddc704bfb5262  libgcc/vtv_start_preinit.c
! 14c297b83959185f26a3222d9d15133d  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
--- 60761,60767 ----
  85a736ad90e4160d44daa22a1ee856e0  libgcc/vtv_end_preinit.c
  fc4b471f8466a3e259cd068859f264ed  libgcc/vtv_start.c
  9f844965cec8eed0fa3ddc704bfb5262  libgcc/vtv_start_preinit.c
! b8334c7c78c5793d0fb1dc633fcb444f  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
*************** ea0a33a5c0ae0cffffdca91c87f49241  libgfo
*** 60378,60384 ****
  5868cacfd4c9ed84c5d0d1fc576e500a  libgfortran/config/fpu-generic.h
  ddc8a754f84f3720f8e6e61fd97a3072  libgfortran/config/fpu-glibc.h
  0a21f9e003e23203ed2bcec2bb3ab547  libgfortran/config/fpu-sysv.h
! 6ad9f5b2ecc6948c50ca607f246f34ea  libgfortran/configure
  17fde774fca767004246c3356516a1dd  libgfortran/configure.ac
  26d3d2f20028a910fbd80fc9c770806a  libgfortran/configure.host
  70a9c856b02f7d8c9eb0a7a01ad50f48  libgfortran/generated/_abs_c10.F90
--- 60791,60797 ----
  5868cacfd4c9ed84c5d0d1fc576e500a  libgfortran/config/fpu-generic.h
  ddc8a754f84f3720f8e6e61fd97a3072  libgfortran/config/fpu-glibc.h
  0a21f9e003e23203ed2bcec2bb3ab547  libgfortran/config/fpu-sysv.h
! 52c9f367ef10a9be039a0d9244d763ea  libgfortran/configure
  17fde774fca767004246c3356516a1dd  libgfortran/configure.ac
  26d3d2f20028a910fbd80fc9c770806a  libgfortran/configure.host
  70a9c856b02f7d8c9eb0a7a01ad50f48  libgfortran/generated/_abs_c10.F90
*************** b6e52668e3894622ea89b94c199d26ae  libgfo
*** 60928,60934 ****
  61bec0e62526e49a59541acc89b80cb0  libgfortran/intrinsics/umask.c
  b30f2596faa8d21830b04696efd1b4b0  libgfortran/intrinsics/unlink.c
  c0483537bb9ba818ee3aa55cc04f0583  libgfortran/intrinsics/unpack_generic.c
! d6fdb691f829666c2f963b0f5bc54baa  libgfortran/io/close.c
  ffdfa716b85d33300947cfb00ac4a60f  libgfortran/io/fbuf.c
  322bb696e6a56c4c313c89de1d12a62a  libgfortran/io/fbuf.h
  72fedb723a832841438b848e0276dc46  libgfortran/io/file_pos.c
--- 61341,61347 ----
  61bec0e62526e49a59541acc89b80cb0  libgfortran/intrinsics/umask.c
  b30f2596faa8d21830b04696efd1b4b0  libgfortran/intrinsics/unlink.c
  c0483537bb9ba818ee3aa55cc04f0583  libgfortran/intrinsics/unpack_generic.c
! 8615eba1cd81ab370718db92c3091591  libgfortran/io/close.c
  ffdfa716b85d33300947cfb00ac4a60f  libgfortran/io/fbuf.c
  322bb696e6a56c4c313c89de1d12a62a  libgfortran/io/fbuf.h
  72fedb723a832841438b848e0276dc46  libgfortran/io/file_pos.c
*************** aeb36c8b750c3ab57c7d50774a26e33a  libgfo
*** 60942,60954 ****
  b33b5e02e59f46d957995c354c77f4c9  libgfortran/io/open.c
  840308a2421c73db0a7e6ad265f3177e  libgfortran/io/read.c
  622a2a1592ced0d5e333d7d3735be2ee  libgfortran/io/size_from_kind.c
! 7bf113902f35f1e7e886d6638f9c6e6c  libgfortran/io/transfer.c
  e4c9061ab7a41f4935f0b0ad09a288ce  libgfortran/io/transfer128.c
  69d3d919a65ad9154c7967beafdd4fbc  libgfortran/io/unit.c
! 3703118401401376f41ff9bf56e1eba7  libgfortran/io/unix.c
  3aca9110d24b2377aff7692c40f8d4c0  libgfortran/io/unix.h
! 26f7567b4b956b10959a981cd4f003e7  libgfortran/io/write.c
! dab1a1143c48fb478a836dd3f0bb7619  libgfortran/io/write_float.def
  2d7080a94650ac19727c9b138db44765  libgfortran/kinds-override.h
  92ef6b7697422b2ad083fa00fb93d763  libgfortran/libgfortran.h
  2527bb19b82f08b34038b07b172d029d  libgfortran/libgfortran.spec.in
--- 61355,61367 ----
  b33b5e02e59f46d957995c354c77f4c9  libgfortran/io/open.c
  840308a2421c73db0a7e6ad265f3177e  libgfortran/io/read.c
  622a2a1592ced0d5e333d7d3735be2ee  libgfortran/io/size_from_kind.c
! ebd48bae0d2273e7a8220632073ebf99  libgfortran/io/transfer.c
  e4c9061ab7a41f4935f0b0ad09a288ce  libgfortran/io/transfer128.c
  69d3d919a65ad9154c7967beafdd4fbc  libgfortran/io/unit.c
! 3d16c2399a70dc65e4e1fdfcddceeb89  libgfortran/io/unix.c
  3aca9110d24b2377aff7692c40f8d4c0  libgfortran/io/unix.h
! 6778a59a605e3d177e1a8442b5f79aaf  libgfortran/io/write.c
! 4d897f58649cf64a5a1e3ee7f6b5d1b5  libgfortran/io/write_float.def
  2d7080a94650ac19727c9b138db44765  libgfortran/kinds-override.h
  92ef6b7697422b2ad083fa00fb93d763  libgfortran/libgfortran.h
  2527bb19b82f08b34038b07b172d029d  libgfortran/libgfortran.spec.in
*************** ea0f4a1480efcc07a20a821d9436da7e  libgo/
*** 61024,61030 ****
  d46376034c1fd6df47c8ba2cd5de9d0a  libgo/README.gcc
  b373c4f422ac2181d23d1cf35833507c  libgo/VERSION
  4f1e6c347a5a119166bee289ca2e824c  libgo/aclocal.m4
! c9bf0d4d612472a5ca23d60dc326006b  libgo/config.h.in
  ad1ce707d70b18d5d14bdbcfef82a9bb  libgo/config/README
  9a6e33ac95f7d5857d34f53bde4cb610  libgo/config/go.m4
  ee0c1ad26a748f688dcc7bdb83fb9ba1  libgo/config/libtool.m4
--- 61437,61443 ----
  d46376034c1fd6df47c8ba2cd5de9d0a  libgo/README.gcc
  b373c4f422ac2181d23d1cf35833507c  libgo/VERSION
  4f1e6c347a5a119166bee289ca2e824c  libgo/aclocal.m4
! a6d52676864aa5671c555009820d4989  libgo/config.h.in
  ad1ce707d70b18d5d14bdbcfef82a9bb  libgo/config/README
  9a6e33ac95f7d5857d34f53bde4cb610  libgo/config/go.m4
  ee0c1ad26a748f688dcc7bdb83fb9ba1  libgo/config/libtool.m4
*************** dee72a6a60e99528b0d17bf3ff9a1e15  libgo/
*** 61033,61040 ****
  bc2f6032c98896249eadb56177c7d357  libgo/config/ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  libgo/config/ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  libgo/config/lt~obsolete.m4
! 7f82fef95905f7e6f8e823d99ad0bbd7  libgo/configure
! b33eb5ccad030c632490ab4bcebf1005  libgo/configure.ac
  b047120e81fd6aa1ce65e8ac44ed1f02  libgo/go/archive/tar/common.go
  927641dcc41cc2bd851f9cd61570fce0  libgo/go/archive/tar/format.go
  ba12113bc44e06830ee742c17c3d4678  libgo/go/archive/tar/reader.go
--- 61446,61453 ----
  bc2f6032c98896249eadb56177c7d357  libgo/config/ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  libgo/config/ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  libgo/config/lt~obsolete.m4
! ef4cf97f0f2b60879527125ade1adae5  libgo/configure
! d85472c9fd3893904e81026e07a0000d  libgo/configure.ac
  b047120e81fd6aa1ce65e8ac44ed1f02  libgo/go/archive/tar/common.go
  927641dcc41cc2bd851f9cd61570fce0  libgo/go/archive/tar/format.go
  ba12113bc44e06830ee742c17c3d4678  libgo/go/archive/tar/reader.go
*************** bff597465c50fd64e1864bded184d943  libgo/
*** 63088,63094 ****
  3d41bc0343be233f13616a4f59946acb  libgo/go/os/user/user_test.go
  d6b973bc86528bbbeee1ed8d2c016d66  libgo/go/os/wait_unimp.go
  207aee916798561491e33f825c1278e1  libgo/go/os/wait_wait6.go
! 48ef2b9c0e563a8981e21f60bd5935f8  libgo/go/os/wait_waitid.go
  7683c60a82067644f484fde77529cda9  libgo/go/path/example_test.go
  e3adefc7eb7b08fb2cbd38bbe89474ba  libgo/go/path/filepath/example_unix_test.go
  d53439751e8554fd84fa78a0103cf17d  libgo/go/path/filepath/export_test.go
--- 63501,63507 ----
  3d41bc0343be233f13616a4f59946acb  libgo/go/os/user/user_test.go
  d6b973bc86528bbbeee1ed8d2c016d66  libgo/go/os/wait_unimp.go
  207aee916798561491e33f825c1278e1  libgo/go/os/wait_wait6.go
! 6a802efd464a35fe61861692e40b13b4  libgo/go/os/wait_waitid.go
  7683c60a82067644f484fde77529cda9  libgo/go/path/example_test.go
  e3adefc7eb7b08fb2cbd38bbe89474ba  libgo/go/path/filepath/example_unix_test.go
  d53439751e8554fd84fa78a0103cf17d  libgo/go/path/filepath/export_test.go
*************** d0dfa8e45cee5defb536480f056ed447  libgo/
*** 63433,63439 ****
  0f110f6b4b28d847963c11d0307ebbfb  libgo/go/syscall/libcall_linux_amd64.go
  ce162a117004aefe7a22fb9acbb75fb6  libgo/go/syscall/libcall_linux_s390.go
  ce162a117004aefe7a22fb9acbb75fb6  libgo/go/syscall/libcall_linux_s390x.go
- 8c2ee0a99e4cd87dfbabb848454eb4e4  libgo/go/syscall/libcall_linux_ustat.go
  b5f13f78bdec181d93be33d7c9e6e761  libgo/go/syscall/libcall_linux_utimesnano.go
  b45b2fa05ef81d9b535d276b115cc9bd  libgo/go/syscall/libcall_posix.go
  d0dd38e814cc1d369df66d3119fbd64a  libgo/go/syscall/libcall_posix_largefile.go
--- 63846,63851 ----
*************** f18a0c26761d944c3a6fca5006c5a184  libgo/
*** 63588,63594 ****
  85261e3c5824f1bba0ccba605fcdcc2e  libgo/merge.sh
  60cbf2228462f7e6218f7e6af21cde60  libgo/mkrsysinfo.sh
  f2a98cc9e55dfdd055d75e7161cd6808  libgo/mksigtab.sh
! 3ffe0f4d647963802c44acba0fd3d9fe  libgo/mksysinfo.sh
  9c66bb618ec9c46d7e7dcadd04faf52b  libgo/mvifdiff.sh
  5dbb1bf0989af4c697305ed1fea714b6  libgo/runtime/aeshash.c
  06b0ddfbd036dbdfdf8c4c7efb8b746f  libgo/runtime/arch.h
--- 64000,64006 ----
  85261e3c5824f1bba0ccba605fcdcc2e  libgo/merge.sh
  60cbf2228462f7e6218f7e6af21cde60  libgo/mkrsysinfo.sh
  f2a98cc9e55dfdd055d75e7161cd6808  libgo/mksigtab.sh
! 89962ca50d2b580fcec09ed37c5d88d1  libgo/mksysinfo.sh
  9c66bb618ec9c46d7e7dcadd04faf52b  libgo/mvifdiff.sh
  5dbb1bf0989af4c697305ed1fea714b6  libgo/runtime/aeshash.c
  06b0ddfbd036dbdfdf8c4c7efb8b746f  libgo/runtime/arch.h
*************** fc1c7199fb443d3e4b49335b42e25886  libgo/
*** 63659,63672 ****
  f1f99cdfebdcbc8a3f9ddff8373508ef  libgo/runtime/thread-sema.c
  a27782f03d1a06d6c45554841b18cdfd  libgo/runtime/thread.c
  f1f0917f45d626d15a5f129fef3d81e2  libgo/runtime/yield.c
! 7f512861fefb1d61307f65af941bbdb0  libgo/sysinfo.c
  3a8ddeaf36a9f143f9124fe1aada456a  libgo/testsuite/Makefile.am
  6a8af847fffba7b0dcda7a8efae62d7a  libgo/testsuite/Makefile.in
  180c96a619276205ec9fc8e8217b67bd  libgo/testsuite/config/default.exp
  4b7af0d38c597a7b2a6f9cb460b1428c  libgo/testsuite/gotest
  ead4e721beb57b319fcd7da8ddf10705  libgo/testsuite/lib/libgo.exp
  6df485581d2f02246f41b5ca46f5bb5d  libgo/testsuite/libgo.testmain/testmain.exp
! bf80a5a3e954b4657aa353b5a30ab975  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  55534454ed4bb50459c2c58ed02cad59  libgomp/Makefile.am
  ac2f853393abd4fc51886e45bfd8a4c5  libgomp/Makefile.in
--- 64071,64084 ----
  f1f99cdfebdcbc8a3f9ddff8373508ef  libgo/runtime/thread-sema.c
  a27782f03d1a06d6c45554841b18cdfd  libgo/runtime/thread.c
  f1f0917f45d626d15a5f129fef3d81e2  libgo/runtime/yield.c
! 0f311e9f7040085721bc5b9b6920ceff  libgo/sysinfo.c
  3a8ddeaf36a9f143f9124fe1aada456a  libgo/testsuite/Makefile.am
  6a8af847fffba7b0dcda7a8efae62d7a  libgo/testsuite/Makefile.in
  180c96a619276205ec9fc8e8217b67bd  libgo/testsuite/config/default.exp
  4b7af0d38c597a7b2a6f9cb460b1428c  libgo/testsuite/gotest
  ead4e721beb57b319fcd7da8ddf10705  libgo/testsuite/lib/libgo.exp
  6df485581d2f02246f41b5ca46f5bb5d  libgo/testsuite/libgo.testmain/testmain.exp
! a7b9ae5f0a31dd29fb00721b844449a5  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  55534454ed4bb50459c2c58ed02cad59  libgomp/Makefile.am
  ac2f853393abd4fc51886e45bfd8a4c5  libgomp/Makefile.in
*************** d425de9b9e9393ec74a28283ac179bf1  libgom
*** 63762,63768 ****
  374d41c2b6b2039244da2094f57545ea  libgomp/config/rtems/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/sem.c
  04b4db912e08a0f37db2e927bf9d856c  libgomp/config/rtems/sem.h
! 74959d2358e11a72e692bc6ad2271edb  libgomp/configure
  bc264e7536f750032b2f328087c97292  libgomp/configure.ac
  eed593bd598fef922cf359fe9cea6c63  libgomp/configure.tgt
  36d68c63bd82b20202c11a29dda1a7d9  libgomp/critical.c
--- 64174,64180 ----
  374d41c2b6b2039244da2094f57545ea  libgomp/config/rtems/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/sem.c
  04b4db912e08a0f37db2e927bf9d856c  libgomp/config/rtems/sem.h
! 2550a3d118ebf9d79e8cefbf46667301  libgomp/configure
  bc264e7536f750032b2f328087c97292  libgomp/configure.ac
  eed593bd598fef922cf359fe9cea6c63  libgomp/configure.tgt
  36d68c63bd82b20202c11a29dda1a7d9  libgomp/critical.c
*************** fd519093dc23e7e1ba374de5c783a5d3  libgom
*** 63777,63783 ****
  baa1c2b75501adfb0908cb243d1945bf  libgomp/libgomp-plugin.c
  c1cee0b720173c688c10b339a6bb8ff2  libgomp/libgomp-plugin.h
  a6f176f84802a193085fe268e0371f27  libgomp/libgomp.h
! 66665fac335585c52b5f3ecb4a71ba92  libgomp/libgomp.info
  9a1ab09c02391af1c95e6d63cb8eb499  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
  c2311b843993357e9da9e17fa98bc7dd  libgomp/libgomp.texi
--- 64189,64195 ----
  baa1c2b75501adfb0908cb243d1945bf  libgomp/libgomp-plugin.c
  c1cee0b720173c688c10b339a6bb8ff2  libgomp/libgomp-plugin.h
  a6f176f84802a193085fe268e0371f27  libgomp/libgomp.h
! 3e295ee24e52e18f097cc6532c91d035  libgomp/libgomp.info
  9a1ab09c02391af1c95e6d63cb8eb499  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
  c2311b843993357e9da9e17fa98bc7dd  libgomp/libgomp.texi
*************** e866d28412e4eb8408a01327be2efe3f  libgom
*** 63795,63801 ****
  30a8adf4553b5f822dd7a27e5f639249  libgomp/oacc-parallel.c
  6ab2c4dd8a2f4ff6f8d3079bf06490da  libgomp/oacc-plugin.c
  2eb2e6176b7a8a92f94edac2630f5520  libgomp/oacc-plugin.h
! 9ca3d6582b645b778142bd559c360222  libgomp/omp.h.in
  71afd55c7fe0b5149e04e21fd11a2f5d  libgomp/omp_lib.f90.in
  3af7e52a7a3a551cc580736edd65cd8b  libgomp/omp_lib.h.in
  0dfae26d3da5401e7819db2af6297137  libgomp/openacc.f90
--- 64207,64213 ----
  30a8adf4553b5f822dd7a27e5f639249  libgomp/oacc-parallel.c
  6ab2c4dd8a2f4ff6f8d3079bf06490da  libgomp/oacc-plugin.c
  2eb2e6176b7a8a92f94edac2630f5520  libgomp/oacc-plugin.h
! 75c4e726f6f4548554f1aeff926b8c1e  libgomp/omp.h.in
  71afd55c7fe0b5149e04e21fd11a2f5d  libgomp/omp_lib.f90.in
  3af7e52a7a3a551cc580736edd65cd8b  libgomp/omp_lib.h.in
  0dfae26d3da5401e7819db2af6297137  libgomp/openacc.f90
*************** e05799ca0fb925e4de120a002da662ed  libgom
*** 63955,63960 ****
--- 64367,64375 ----
  854c3912b1646c8771d7f3032a72cd1f  libgomp/testsuite/libgomp.c++/pr70376.C
  80258160ea88fc6c77ba4774e507a905  libgomp/testsuite/libgomp.c++/pr81130.C
  6050a57d353f711a4c93e9fc816d1fd8  libgomp/testsuite/libgomp.c++/pr81314.C
+ 3e23fe34ad940217f5fda935e9ec54ec  libgomp/testsuite/libgomp.c++/pr86291.C
+ c757baa8957d858de5a52104298525d5  libgomp/testsuite/libgomp.c++/pr86539.C
+ f530d00102de59913c687e53ef080e8e  libgomp/testsuite/libgomp.c++/pr86542.C
  a594cebdf052900dd0c8792068e14d85  libgomp/testsuite/libgomp.c++/reduction-1.C
  1473f55e3f6f9827b6dd281025b88b85  libgomp/testsuite/libgomp.c++/reduction-10.C
  bd119573b86fb5577edaf97dd86d2a6c  libgomp/testsuite/libgomp.c++/reduction-11.C
*************** e768743d2af95f59780e3418077b7e1e  libgom
*** 64312,64317 ****
--- 64727,64733 ----
  9116b9dc2c0c3c11fdab95ea2ca66a18  libgomp/testsuite/libgomp.c/pr81687-1.c
  5996dc15da52a000b77c153bb70588f6  libgomp/testsuite/libgomp.c/pr81687-2.c
  4066b4a4600721101ac384b659311782  libgomp/testsuite/libgomp.c/pr81875.c
+ ed00c0e197dcbbf46f44ea320b473f78  libgomp/testsuite/libgomp.c/pr86660.c
  2a0a447db3ae892c0c62b0136b00360e  libgomp/testsuite/libgomp.c/priority.c
  ea7c9e74bda402b1663a903b26400fab  libgomp/testsuite/libgomp.c/private-1.c
  a594cebdf052900dd0c8792068e14d85  libgomp/testsuite/libgomp.c/reduction-1.c
*************** eaeadf99271f326c16618e5bfa7fa387  libgom
*** 64605,64610 ****
--- 65021,65028 ----
  2d364f3055004bfd34a5395bfd835c8c  libgomp/testsuite/libgomp.fortran/pr71734-2.f90
  7b247f3eafeb9482ddfb062c5c175cea  libgomp/testsuite/libgomp.fortran/pr81304.f90
  947c6cd3f45fe3e7fdf8f49002b1e6da  libgomp/testsuite/libgomp.fortran/pr81841.f90
+ f8eba018532776d77f3c583c7deca211  libgomp/testsuite/libgomp.fortran/pr84418-1.f90
+ 0b124c3ad32e166f304969086c6d5e4d  libgomp/testsuite/libgomp.fortran/pr84418-2.f90
  ed38be90cae92afacea925b0c0c3c356  libgomp/testsuite/libgomp.fortran/procptr1.f90
  4af6e9394ddc7a6c89dca2968cac162e  libgomp/testsuite/libgomp.fortran/recursion1.f90
  f7a52f7caa9a62d15b0f1270dc461c08  libgomp/testsuite/libgomp.fortran/reduction1.f90
*************** e3624c56baad41a2af157335cb4fd08f  libgom
*** 64706,64711 ****
--- 65124,65130 ----
  bd7a8c53d3879d79861d120ec876f119  libgomp/testsuite/libgomp.hsa.c/memory-operations-1.c
  3dc56468bc91698c50d4295a20abbdd6  libgomp/testsuite/libgomp.hsa.c/pr69568.c
  dfc590b024995313958247342296f179  libgomp/testsuite/libgomp.hsa.c/rotate-1.c
+ 2b5674485ffa980a9acbcac729ad705b  libgomp/testsuite/libgomp.hsa.c/staticvar.c
  bfac6d74739b95deba27861d2be18215  libgomp/testsuite/libgomp.hsa.c/switch-1.c
  e410b9a2ecc042fbefbbbcff667b3510  libgomp/testsuite/libgomp.hsa.c/switch-branch-1.c
  ca9f24c1fc8b56e57a5e25787159b637  libgomp/testsuite/libgomp.hsa.c/switch-sbr-2.c
*************** a5278638b6db8f8330c505f9431f453f  libgom
*** 64923,64928 ****
--- 65342,65348 ----
  94f343a0a3568ebcb08045cd95eaedc0  libgomp/testsuite/libgomp.oacc-c-c++-common/pr70289.c
  b480e00caa0b139129c773a615bdc67e  libgomp/testsuite/libgomp.oacc-c-c++-common/pr70373.c
  42bc44ea6842a7a494e233703814fec8  libgomp/testsuite/libgomp.oacc-c-c++-common/pr70688.c
+ 7bebc40e2fc1dd55a72340d501f63635  libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955.c
  8ccb391ecb020ee72dd4b3c91795a894  libgomp/testsuite/libgomp.oacc-c-c++-common/present-1.c
  b3824216ed6541363eaab687c61bb584  libgomp/testsuite/libgomp.oacc-c-c++-common/present-2.c
  f6a4f95364d4753e1b6bc27116c40f32  libgomp/testsuite/libgomp.oacc-c-c++-common/private-variables.c
*************** f98bec967efcf73c3c88608c574cb350  libgom
*** 65036,65041 ****
--- 65456,65462 ----
  67a7c830c313f8fe4aab170bd515c46d  libgomp/testsuite/libgomp.oacc-fortran/pr68813.f90
  e129117b8d34cba8614977fd91ca41b0  libgomp/testsuite/libgomp.oacc-fortran/pr70289.f90
  84d2a2c2c99b69bf886812ab59d3f5c6  libgomp/testsuite/libgomp.oacc-fortran/pr70643.f90
+ 8175cec1f19b14dba021a884c3d90e52  libgomp/testsuite/libgomp.oacc-fortran/pr84955.f90
  368deed3761a4aee751f17b6f7cd03e5  libgomp/testsuite/libgomp.oacc-fortran/private-variables.f90
  6df276c67cdc6b18d94a3766b52a1e24  libgomp/testsuite/libgomp.oacc-fortran/pset-1.f90
  d26e447acd9002ca3fdfda9cf83ef8a9  libgomp/testsuite/libgomp.oacc-fortran/reduction-1.f90
*************** d2feeae17acfcc522ce8d197f56a5e6c  libgom
*** 65057,65068 ****
  d3f9f8b453576b8a24f3f2db4ad0cbe2  libgomp/testsuite/libgomp.oacc-fortran/subarrays-2.f90
  97895ee7fdb38ab486cfd464bb975de0  libgomp/testsuite/libgomp.oacc-fortran/update-1.f90
  5e70f54ed74527f5e04379413bff932f  libgomp/work.c
! 28282830d066165621f057092aee9644  libhsail-rt/ChangeLog
  9147b482b39962a71e580b4a8265285e  libhsail-rt/Makefile.am
  a38674477ad0a784b375b84f710eb630  libhsail-rt/Makefile.in
  de97a355fadb5753d182cbcf06b1b33a  libhsail-rt/README
  1ec2f03db6be6448c2332bead0fe62f7  libhsail-rt/aclocal.m4
! 95b26891254cc56f1733185f0a530c37  libhsail-rt/configure
  206769d36adc9a98df600c8049e1895b  libhsail-rt/configure.ac
  24aa1cbdb33caed5a16818fd9d2f1e81  libhsail-rt/configure.tgt
  0e42c963335c8233e3fdbf5d6530f92f  libhsail-rt/include/internal/fibers.h
--- 65478,65489 ----
  d3f9f8b453576b8a24f3f2db4ad0cbe2  libgomp/testsuite/libgomp.oacc-fortran/subarrays-2.f90
  97895ee7fdb38ab486cfd464bb975de0  libgomp/testsuite/libgomp.oacc-fortran/update-1.f90
  5e70f54ed74527f5e04379413bff932f  libgomp/work.c
! 6e4d2f59b12b0afc2924796f2114c235  libhsail-rt/ChangeLog
  9147b482b39962a71e580b4a8265285e  libhsail-rt/Makefile.am
  a38674477ad0a784b375b84f710eb630  libhsail-rt/Makefile.in
  de97a355fadb5753d182cbcf06b1b33a  libhsail-rt/README
  1ec2f03db6be6448c2332bead0fe62f7  libhsail-rt/aclocal.m4
! ae23b52ed90b765a4cc216e9383c70be  libhsail-rt/configure
  206769d36adc9a98df600c8049e1895b  libhsail-rt/configure.ac
  24aa1cbdb33caed5a16818fd9d2f1e81  libhsail-rt/configure.tgt
  0e42c963335c8233e3fdbf5d6530f92f  libhsail-rt/include/internal/fibers.h
*************** b8290f5231ea78d8acee7c12d03f21e2  libhsa
*** 65084,65090 ****
  ef9f05873915c22cae79ef5545355353  libhsail-rt/target-config.h.in
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! e295143e04ed9213dbcb992b9b4f0a04  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  989d73ea8d6c7734f2cd7fc2f6a08ee9  libiberty/Makefile.in
  c68dbf7834af4281ebd84caa3fd54680  libiberty/README
--- 65505,65511 ----
  ef9f05873915c22cae79ef5545355353  libhsail-rt/target-config.h.in
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 7e7083fd345acc00708158f3d4b9cf54  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  989d73ea8d6c7734f2cd7fc2f6a08ee9  libiberty/Makefile.in
  c68dbf7834af4281ebd84caa3fd54680  libiberty/README
*************** b2c289eb14e9197dcad172f3acba12b7  libibe
*** 65248,65254 ****
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  1fba1d2c7e578bb603294d1d38b15e6e  libiberty/xstrndup.c
  5b461b93e0d400569656cf150a9458e8  libiberty/xvasprintf.c
! bb27b02e35ce010cf8077d7f3b354eac  libitm/ChangeLog
  f0841cbe677cca223ebc3864c6840fb3  libitm/Makefile.am
  e134b04c0dc26da6f5a6948763a388a8  libitm/Makefile.in
  02cde8e370b6e6440c462cbdb510ad9c  libitm/aatree.cc
--- 65669,65675 ----
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  1fba1d2c7e578bb603294d1d38b15e6e  libiberty/xstrndup.c
  5b461b93e0d400569656cf150a9458e8  libiberty/xvasprintf.c
! ac65bd69b0d397400c79a60ca6cff1c6  libitm/ChangeLog
  f0841cbe677cca223ebc3864c6840fb3  libitm/Makefile.am
  e134b04c0dc26da6f5a6948763a388a8  libitm/Makefile.in
  02cde8e370b6e6440c462cbdb510ad9c  libitm/aatree.cc
*************** efede9a1ebe50031d7f84845f28058b5  libitm
*** 65299,65312 ****
  50ecb5447fe6c1275000cda3b637ee5e  libitm/config/x86/target.h
  a41034fe6f203dabe72055742970309f  libitm/config/x86/x86_avx.cc
  8b0ebf78cab403f6b5c26b32c207c573  libitm/config/x86/x86_sse.cc
! 0d70b37bc93f5ca6d4ba51ac514c66ca  libitm/configure
  0289a6a89bc21802c5656033944d593d  libitm/configure.ac
  a39098851bd0eacbe1812295b185de9b  libitm/configure.tgt
  cdbde62e85c45821e7d0e7542ea9e4b5  libitm/containers.h
  92c8aa2e676e6aad3b45ee3c79ce4f48  libitm/dispatch.h
  ce09bec8584efd1948a6896224aaff53  libitm/eh_cpp.cc
  ced7d40fe3094446e51c1b8cf40d0f0a  libitm/libitm.h
! 80e0c7a784e5896fcdf2a039c2740864  libitm/libitm.info
  0c43820b921ecdbe9d98f068100e716a  libitm/libitm.map
  ea467d7117853d139bb288ab75261139  libitm/libitm.spec.in
  dc401c868192cd583b6851a8f33879d8  libitm/libitm.texi
--- 65720,65733 ----
  50ecb5447fe6c1275000cda3b637ee5e  libitm/config/x86/target.h
  a41034fe6f203dabe72055742970309f  libitm/config/x86/x86_avx.cc
  8b0ebf78cab403f6b5c26b32c207c573  libitm/config/x86/x86_sse.cc
! 8cb1dca0a13f135f3707f341fde9c608  libitm/configure
  0289a6a89bc21802c5656033944d593d  libitm/configure.ac
  a39098851bd0eacbe1812295b185de9b  libitm/configure.tgt
  cdbde62e85c45821e7d0e7542ea9e4b5  libitm/containers.h
  92c8aa2e676e6aad3b45ee3c79ce4f48  libitm/dispatch.h
  ce09bec8584efd1948a6896224aaff53  libitm/eh_cpp.cc
  ced7d40fe3094446e51c1b8cf40d0f0a  libitm/libitm.h
! 12701d0a1ec002ae98c30c688e2ae201  libitm/libitm.info
  0c43820b921ecdbe9d98f068100e716a  libitm/libitm.map
  ea467d7117853d139bb288ab75261139  libitm/libitm.spec.in
  dc401c868192cd583b6851a8f33879d8  libitm/libitm.texi
*************** b4e503ecfdccc9f13da8f73eeb6f23a9  libitm
*** 65351,65363 ****
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
  2fde3d4b9799cb5c947aa18d56b45a58  libitm/useraction.cc
  800898e382995b27db1e8e5415e383d5  libitm/util.cc
! 054f2c87585baf780a57b81a8250c1b8  libmpx/ChangeLog
  08c39b0de69ded1b0ec0d079e8ffa278  libmpx/Makefile.am
  d0a1d026cd869756809cfc7e163653fb  libmpx/Makefile.in
  9883ed42b491d8aea83fdde90561cf2a  libmpx/acinclude.m4
  a5204097d1f5d63aef9d3ecc0b1a3be2  libmpx/aclocal.m4
  b2e47c7aa307406dec78315bfdb36c7b  libmpx/config.h.in
! 22d9f8c5a9b9f86cc5121638902716cf  libmpx/configure
  48c3d9539a5b4a735ae646608572eec1  libmpx/configure.ac
  044a6e8691b62fc372ef1f9e63d55d44  libmpx/configure.tgt
  e7f0343f38d3100338933f8a6382289c  libmpx/libmpx.spec.in
--- 65772,65784 ----
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
  2fde3d4b9799cb5c947aa18d56b45a58  libitm/useraction.cc
  800898e382995b27db1e8e5415e383d5  libitm/util.cc
! deab9acfa7782ee31714ba4273fa4c36  libmpx/ChangeLog
  08c39b0de69ded1b0ec0d079e8ffa278  libmpx/Makefile.am
  d0a1d026cd869756809cfc7e163653fb  libmpx/Makefile.in
  9883ed42b491d8aea83fdde90561cf2a  libmpx/acinclude.m4
  a5204097d1f5d63aef9d3ecc0b1a3be2  libmpx/aclocal.m4
  b2e47c7aa307406dec78315bfdb36c7b  libmpx/config.h.in
! c1870da9f24a8e6fc90b6f5570581552  libmpx/configure
  48c3d9539a5b4a735ae646608572eec1  libmpx/configure.ac
  044a6e8691b62fc372ef1f9e63d55d44  libmpx/configure.tgt
  e7f0343f38d3100338933f8a6382289c  libmpx/libmpx.spec.in
*************** abb9c0882fb921e70c77607151719c9d  libmpx
*** 65374,65380 ****
  e7c62aca341ea472234d7cb0bc4af328  libmpx/mpxwrap/libmpxwrappers.map
  240daa7f37ceeb22e331595ac7363fe8  libmpx/mpxwrap/libtool-version
  84b2ae6cc72d1bc6af32bbf75fdf747b  libmpx/mpxwrap/mpx_wrappers.c
! d144767c8a6c6204d46099102a96b307  libobjc/ChangeLog
  b2cf3adfbdbae80e35d96ff569e9f93a  libobjc/Makefile.in
  ca9308f2e96106ba49c888b75644c31a  libobjc/NXConstStr.m
  8b730dbe3083b0ce8de23dba63e4345d  libobjc/Object.m
--- 65795,65801 ----
  e7c62aca341ea472234d7cb0bc4af328  libmpx/mpxwrap/libmpxwrappers.map
  240daa7f37ceeb22e331595ac7363fe8  libmpx/mpxwrap/libtool-version
  84b2ae6cc72d1bc6af32bbf75fdf747b  libmpx/mpxwrap/mpx_wrappers.c
! a17f0703ce95c504322bc1c6b553c813  libobjc/ChangeLog
  b2cf3adfbdbae80e35d96ff569e9f93a  libobjc/Makefile.in
  ca9308f2e96106ba49c888b75644c31a  libobjc/NXConstStr.m
  8b730dbe3083b0ce8de23dba63e4345d  libobjc/Object.m
*************** ab527294c17d4780b0013ef0a205a2e5  libobj
*** 65386,65392 ****
  0ec1f2a6af09115c60c1318bb6c4a915  libobjc/aclocal.m4
  437c9c67f1758ffe6de5ca7534616fa0  libobjc/class.c
  972b0cb64be0b600253cb529cf6ed8ed  libobjc/config.h.in
! f47b754f73c9b6d3b1c0a5428bba87a8  libobjc/configure
  68a53799fe5900c3ed6ad007e1ad3dd0  libobjc/configure.ac
  a2f88e3a053d61114f441d4ab1b13c54  libobjc/encoding.c
  87f0c11d78279480a9d04c6dd20ca13e  libobjc/error.c
--- 65807,65813 ----
  0ec1f2a6af09115c60c1318bb6c4a915  libobjc/aclocal.m4
  437c9c67f1758ffe6de5ca7534616fa0  libobjc/class.c
  972b0cb64be0b600253cb529cf6ed8ed  libobjc/config.h.in
! 6b4c8747b9fab55b48e06188a1f422b1  libobjc/configure
  68a53799fe5900c3ed6ad007e1ad3dd0  libobjc/configure.ac
  a2f88e3a053d61114f441d4ab1b13c54  libobjc/encoding.c
  87f0c11d78279480a9d04c6dd20ca13e  libobjc/error.c
*************** ed8e260d84d74bdae710d754280f305d  libobj
*** 65431,65441 ****
  b5a7e82ec7b4fc9af8de51779c12430b  libobjc/selector.c
  031774b1d0af62af9c73b941c33256c5  libobjc/sendmsg.c
  471a0873da510e7cdaf8924b3babf10c  libobjc/thr.c
! 012f1c0f03976a791e45188b8ff7ad7e  liboffloadmic/ChangeLog
  04abd6719c66f08c91fbd9f04b69d3f5  liboffloadmic/Makefile.am
  30b43aa8aba9a4769f58028e2f0424f7  liboffloadmic/Makefile.in
  49cb389d7dff64b95e25b4d7e85c7ecf  liboffloadmic/aclocal.m4
! 8314e4a39e104a2352baf9f08fbab23f  liboffloadmic/configure
  b36380a13e192b84e09de2eaaf68fe95  liboffloadmic/configure.ac
  278b4d0003cfa80aa2ea86bca2645fff  liboffloadmic/configure.tgt
  1a7d44cf3f018d8ece62ac06721d8f36  liboffloadmic/doc/doxygen/config
--- 65852,65862 ----
  b5a7e82ec7b4fc9af8de51779c12430b  libobjc/selector.c
  031774b1d0af62af9c73b941c33256c5  libobjc/sendmsg.c
  471a0873da510e7cdaf8924b3babf10c  libobjc/thr.c
! 94f5babdcc766274127622166c72c65c  liboffloadmic/ChangeLog
  04abd6719c66f08c91fbd9f04b69d3f5  liboffloadmic/Makefile.am
  30b43aa8aba9a4769f58028e2f0424f7  liboffloadmic/Makefile.in
  49cb389d7dff64b95e25b4d7e85c7ecf  liboffloadmic/aclocal.m4
! f1854c3a9e17df6dad2393c1199c6374  liboffloadmic/configure
  b36380a13e192b84e09de2eaaf68fe95  liboffloadmic/configure.ac
  278b4d0003cfa80aa2ea86bca2645fff  liboffloadmic/configure.tgt
  1a7d44cf3f018d8ece62ac06721d8f36  liboffloadmic/doc/doxygen/config
*************** e759e3e99ff36a77562aabb91987e4bc  liboff
*** 65460,65466 ****
  018eb15e81b9ae9e03d31d90fdadeda1  liboffloadmic/plugin/Makefile.am
  b0e7cceb8d463974476520e6fa9898c7  liboffloadmic/plugin/Makefile.in
  4f9632585f625e07e0433644f8a700f9  liboffloadmic/plugin/aclocal.m4
! c60e751363882b9f48c0f16b44505be2  liboffloadmic/plugin/configure
  11c6d7bc32431e0e04ff23dc696b0ecd  liboffloadmic/plugin/configure.ac
  0eeb692b98b3a90b6fdb915a78005eae  liboffloadmic/plugin/libgomp-plugin-intelmic.cpp
  6b20eaf07b897ce0ffb3eca79c0783a4  liboffloadmic/plugin/offload_target_main.cpp
--- 65881,65887 ----
  018eb15e81b9ae9e03d31d90fdadeda1  liboffloadmic/plugin/Makefile.am
  b0e7cceb8d463974476520e6fa9898c7  liboffloadmic/plugin/Makefile.in
  4f9632585f625e07e0433644f8a700f9  liboffloadmic/plugin/aclocal.m4
! 31d994946c388a4fcf134b8133ad47e0  liboffloadmic/plugin/configure
  11c6d7bc32431e0e04ff23dc696b0ecd  liboffloadmic/plugin/configure.ac
  0eeb692b98b3a90b6fdb915a78005eae  liboffloadmic/plugin/libgomp-plugin-intelmic.cpp
  6b20eaf07b897ce0ffb3eca79c0783a4  liboffloadmic/plugin/offload_target_main.cpp
*************** b1def68202639bd452fb59aea3371fe4  liboff
*** 65520,65534 ****
  cc603cdf253cc686bfcee192bb7630df  liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c
  dff5c8575c49d6aa71e549b0fa021479  liboffloadmic/runtime/orsl-lite/version.txt
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! eea465709c5af1750542961e7a9dccf4  libquadmath/ChangeLog
  e1106736861aae37a68244254f00f3fd  libquadmath/Makefile.am
  089aca42b8f31c3920925f611462bc81  libquadmath/Makefile.in
  4c8b4478a1031d129e7cc6b341876b99  libquadmath/acinclude.m4
  b575232932aeb139e780664720bc8695  libquadmath/aclocal.m4
  bf09ede5c6d78e3d132bde0f933590d8  libquadmath/config.h.in
! 7f6b0d2eeae18aa85f194f1cbc6a9c29  libquadmath/configure
  84f1e84be7df00cfbeab19204eaf8dd5  libquadmath/configure.ac
! 258ec0a93add4fccca2b716d4b9c8aad  libquadmath/libquadmath.info
  2cb034bf3212dff9fd07056661589189  libquadmath/libquadmath.texi
  77280bb7ee423875e03d9c0d34527df6  libquadmath/libtool-version
  f44065462735b4699d44588271a5f09a  libquadmath/math/acoshq.c
--- 65941,65955 ----
  cc603cdf253cc686bfcee192bb7630df  liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c
  dff5c8575c49d6aa71e549b0fa021479  liboffloadmic/runtime/orsl-lite/version.txt
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! 26f5ac4572b0a31003c8855fa9e897f6  libquadmath/ChangeLog
  e1106736861aae37a68244254f00f3fd  libquadmath/Makefile.am
  089aca42b8f31c3920925f611462bc81  libquadmath/Makefile.in
  4c8b4478a1031d129e7cc6b341876b99  libquadmath/acinclude.m4
  b575232932aeb139e780664720bc8695  libquadmath/aclocal.m4
  bf09ede5c6d78e3d132bde0f933590d8  libquadmath/config.h.in
! a9e3bede07e3cdcf6cfc1898f3da490d  libquadmath/configure
  84f1e84be7df00cfbeab19204eaf8dd5  libquadmath/configure.ac
! 47b4fc073416da02541f6a7ea96820bd  libquadmath/libquadmath.info
  2cb034bf3212dff9fd07056661589189  libquadmath/libquadmath.texi
  77280bb7ee423875e03d9c0d34527df6  libquadmath/libtool-version
  f44065462735b4699d44588271a5f09a  libquadmath/math/acoshq.c
*************** e766022f8615b72cbc38335d262e9d3d  libqua
*** 65652,65658 ****
  a81cc82679e80c86cfbd5575867450d0  libquadmath/strtod/strtod_l.c
  da808e110fc09ebd41ebd405790a70df  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
! ad5dcbee25d98c11d497501fc2f401e3  libsanitizer/ChangeLog
  c5b0b63dd90ad073654139697e69d009  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  f11d8e68ccf5dbd2281333342f0cea86  libsanitizer/LOCAL_PATCHES
--- 66073,66079 ----
  a81cc82679e80c86cfbd5575867450d0  libquadmath/strtod/strtod_l.c
  da808e110fc09ebd41ebd405790a70df  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
! c0619b5cd664726a4af7facbfc639c49  libsanitizer/ChangeLog
  c5b0b63dd90ad073654139697e69d009  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  f11d8e68ccf5dbd2281333342f0cea86  libsanitizer/LOCAL_PATCHES
*************** a549c0c6712ea98c6f1e076bbac68f0d  libsan
*** 65668,65674 ****
  17e04d539a658df3f9030c441a2a2aae  libsanitizer/asan/asan_activation.h
  66a2cc0a2e7b50e14c9f1c7235f59732  libsanitizer/asan/asan_activation_flags.inc
  a06604bd6c467259a84191ae3e482240  libsanitizer/asan/asan_allocator.cc
! 9b9cbb7a497636678cc19e4bd50fb896  libsanitizer/asan/asan_allocator.h
  3c76b9d02b9fb427cf40cabeda299325  libsanitizer/asan/asan_debugging.cc
  83543b04eedf2a49c2b1e8cec4fa33e3  libsanitizer/asan/asan_descriptions.cc
  55b647f7aff48b4619fb2f040fdb7054  libsanitizer/asan/asan_descriptions.h
--- 66089,66095 ----
  17e04d539a658df3f9030c441a2a2aae  libsanitizer/asan/asan_activation.h
  66a2cc0a2e7b50e14c9f1c7235f59732  libsanitizer/asan/asan_activation_flags.inc
  a06604bd6c467259a84191ae3e482240  libsanitizer/asan/asan_allocator.cc
! 24692d1df873db92f364e94c1cc6ea94  libsanitizer/asan/asan_allocator.h
  3c76b9d02b9fb427cf40cabeda299325  libsanitizer/asan/asan_debugging.cc
  83543b04eedf2a49c2b1e8cec4fa33e3  libsanitizer/asan/asan_descriptions.cc
  55b647f7aff48b4619fb2f040fdb7054  libsanitizer/asan/asan_descriptions.h
*************** aa7833ffd0b94a28455dc72a79081c02  libsan
*** 65716,65722 ****
  237604be64c957eff96e5783ea1d5b7a  libsanitizer/asan/libtool-version
  2c1ff961b0c19696314e9dabbe9a783f  libsanitizer/builtins/assembly.h
  f14b75055c11bb9db5ff23c1d981f7b9  libsanitizer/config.h.in
! 711da8a93e9eeb9c43b3390652f3cc00  libsanitizer/configure
  0fc36261b30c3353cdcbe03be57d103b  libsanitizer/configure.ac
  a167c94d13ce772d419d964c6b9d3181  libsanitizer/configure.tgt
  b4a5d598d9c1fddc5a43683c868160bc  libsanitizer/include/sanitizer/allocator_interface.h
--- 66137,66143 ----
  237604be64c957eff96e5783ea1d5b7a  libsanitizer/asan/libtool-version
  2c1ff961b0c19696314e9dabbe9a783f  libsanitizer/builtins/assembly.h
  f14b75055c11bb9db5ff23c1d981f7b9  libsanitizer/config.h.in
! 22935ff9dd083787c1702b333685f029  libsanitizer/configure
  0fc36261b30c3353cdcbe03be57d103b  libsanitizer/configure.ac
  a167c94d13ce772d419d964c6b9d3181  libsanitizer/configure.tgt
  b4a5d598d9c1fddc5a43683c868160bc  libsanitizer/include/sanitizer/allocator_interface.h
*************** aa78361f71ab28877632c17ac963f9d3  libsan
*** 65820,65826 ****
  a1ec768a826d8a1d0851585ba62daf32  libsanitizer/sanitizer_common/sanitizer_libignore.h
  161d062b3f44f784bc8173d6d73d0bdd  libsanitizer/sanitizer_common/sanitizer_linux.cc
  4edb375102ac2cc66fde22bf250371ef  libsanitizer/sanitizer_common/sanitizer_linux.h
! b3ca7084ca0f698fd4d41cc8215edb10  libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc
  3fb07abcc04415d320ed341ebe5bc9c4  libsanitizer/sanitizer_common/sanitizer_linux_mips64.S
  7a4fe4c43a92ec6eb267cb1d2af1467c  libsanitizer/sanitizer_common/sanitizer_linux_s390.cc
  e38f20e9cf2abebb89f5f68d142cc80b  libsanitizer/sanitizer_common/sanitizer_linux_x86_64.S
--- 66241,66247 ----
  a1ec768a826d8a1d0851585ba62daf32  libsanitizer/sanitizer_common/sanitizer_libignore.h
  161d062b3f44f784bc8173d6d73d0bdd  libsanitizer/sanitizer_common/sanitizer_linux.cc
  4edb375102ac2cc66fde22bf250371ef  libsanitizer/sanitizer_common/sanitizer_linux.h
! f28d4485cc770a8e76c0ff84d56acff4  libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc
  3fb07abcc04415d320ed341ebe5bc9c4  libsanitizer/sanitizer_common/sanitizer_linux_mips64.S
  7a4fe4c43a92ec6eb267cb1d2af1467c  libsanitizer/sanitizer_common/sanitizer_linux_s390.cc
  e38f20e9cf2abebb89f5f68d142cc80b  libsanitizer/sanitizer_common/sanitizer_linux_x86_64.S
*************** ef6525972be22077d3b1033c8349f9b5  libsan
*** 65835,65841 ****
  84b880a2c62fe5900d5fa9f902c6b413  libsanitizer/sanitizer_common/sanitizer_platform.h
  b7e92c2b43f6385cd1b55eac79397f8c  libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
  12e351892dc0c5187a76637811e4fe78  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
! 60dcfee0626e524f6f70069e1b6b54ad  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
  24318410ea3d521891db49d9c026e964  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
  438e63d5e87272815e7ad044b00a1f94  libsanitizer/sanitizer_common/sanitizer_posix.cc
  089e8e0a6143cb5b0ceec8c71f628ca6  libsanitizer/sanitizer_common/sanitizer_posix.h
--- 66256,66262 ----
  84b880a2c62fe5900d5fa9f902c6b413  libsanitizer/sanitizer_common/sanitizer_platform.h
  b7e92c2b43f6385cd1b55eac79397f8c  libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
  12e351892dc0c5187a76637811e4fe78  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
! 6af23fd97ec1e19c8ae91c6a60de507a  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
  24318410ea3d521891db49d9c026e964  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
  438e63d5e87272815e7ad044b00a1f94  libsanitizer/sanitizer_common/sanitizer_posix.cc
  089e8e0a6143cb5b0ceec8c71f628ca6  libsanitizer/sanitizer_common/sanitizer_posix.h
*************** f07ab1da60e7fd7f3d27a1960d25e06c  libsan
*** 65971,65982 ****
  0f33fad437a0fa30b1527f8f957011d6  libsanitizer/ubsan/ubsan_type_hash_win.cc
  8b063f15d2aa59cd7d3a2c835729e42d  libsanitizer/ubsan/ubsan_value.cc
  735246869fac0a1e63b5d9c72143e63a  libsanitizer/ubsan/ubsan_value.h
! 7d67e88e5f824df87159ed9eb0d3e4bc  libssp/ChangeLog
  776e0645b365526b37a8934f921f91b6  libssp/Makefile.am
  4ca3c95d4bc6b9edac706fca73c37993  libssp/Makefile.in
  b0548e1d34696c0fb30573ffde20c761  libssp/aclocal.m4
  f4886e6dd0590caba717fd1bc96a6f50  libssp/config.h.in
! 03556c11ca4bec5895c1a69fcecfcd46  libssp/configure
  494e3fe6d79cb561d20fa490359d9059  libssp/configure.ac
  4d562b75cc0024a1534fd36bbb3aa93f  libssp/gets-chk.c
  0ac32b60459d1fdec670990324d7bdc6  libssp/libtool-version
--- 66392,66403 ----
  0f33fad437a0fa30b1527f8f957011d6  libsanitizer/ubsan/ubsan_type_hash_win.cc
  8b063f15d2aa59cd7d3a2c835729e42d  libsanitizer/ubsan/ubsan_value.cc
  735246869fac0a1e63b5d9c72143e63a  libsanitizer/ubsan/ubsan_value.h
! c8d1e6752587c62775e6e19686b63ede  libssp/ChangeLog
  776e0645b365526b37a8934f921f91b6  libssp/Makefile.am
  4ca3c95d4bc6b9edac706fca73c37993  libssp/Makefile.in
  b0548e1d34696c0fb30573ffde20c761  libssp/aclocal.m4
  f4886e6dd0590caba717fd1bc96a6f50  libssp/config.h.in
! 39c5b4d268c65e33ce30fdaafc83d9c8  libssp/configure
  494e3fe6d79cb561d20fa490359d9059  libssp/configure.ac
  4d562b75cc0024a1534fd36bbb3aa93f  libssp/gets-chk.c
  0ac32b60459d1fdec670990324d7bdc6  libssp/libtool-version
*************** b1831173424b3bacbedae40d56213c53  libssp
*** 66000,66006 ****
  4849bcc282291903a5ab2633972a6f59  libssp/strncpy-chk.c
  8f39faa199e6457e41dd4673ab8fa2b5  libssp/vsnprintf-chk.c
  b432716a66578ff7c5e7f9c92bc30e25  libssp/vsprintf-chk.c
! 4d77dfbc533bde0f73941b7390dbbfb0  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 66421,66427 ----
  4849bcc282291903a5ab2633972a6f59  libssp/strncpy-chk.c
  8f39faa199e6457e41dd4673ab8fa2b5  libssp/vsnprintf-chk.c
  b432716a66578ff7c5e7f9c92bc30e25  libssp/vsprintf-chk.c
! 1370feea2f2bd78c85c899607b484a4e  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** b331fae97e334afde1bd5fa125610458  libstd
*** 66023,66031 ****
  d2f55cdfcfc41eedd57e16a617c4775f  libstdc++-v3/Makefile.am
  9a8bbe5f81bba136c3ff5f5aedfb43a4  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 49ba04b0308dd7c5388a318b239182b9  libstdc++-v3/acinclude.m4
  2a88f1fcc47abc6e54fb44954da2919a  libstdc++-v3/aclocal.m4
! 38b6108cf7d896c2522d25b5fb475ed5  libstdc++-v3/config.h.in
  1c93b343ca452ad7c87f5c1352794032  libstdc++-v3/config/abi/compatibility.h
  3dc734cb0c551a9ea0c20be5669edcea  libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
  01b6705d68c4b6dd5d3cd90321d52009  libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
--- 66444,66452 ----
  d2f55cdfcfc41eedd57e16a617c4775f  libstdc++-v3/Makefile.am
  9a8bbe5f81bba136c3ff5f5aedfb43a4  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 38c293579652d3f2db3c58ff6cada591  libstdc++-v3/acinclude.m4
  2a88f1fcc47abc6e54fb44954da2919a  libstdc++-v3/aclocal.m4
! 5274c5690532e1702c242c0788829b35  libstdc++-v3/config.h.in
  1c93b343ca452ad7c87f5c1352794032  libstdc++-v3/config/abi/compatibility.h
  3dc734cb0c551a9ea0c20be5669edcea  libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
  01b6705d68c4b6dd5d3cd90321d52009  libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
*************** cc65678819ec7ff06eaeed8b1a5455eb  libstd
*** 66054,66060 ****
  465224c6303de93a7ad7fc4286042fce  libstdc++-v3/config/abi/post/sparc-solaris2.11/baseline_symbols.txt
  cdd50089e0460c8802edf9f1e3881ca6  libstdc++-v3/config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt
  74064ed8904c807e6fc739cbe69a24ff  libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
! 403dc63ad6d1cd6301f17c7e7a7adb09  libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
  7c9d9f30d0c74c87283c25e3959c4859  libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
  5c4c38aeca254313c616b84337c937c3  libstdc++-v3/config/abi/pre/float128.ver
  d5ca39dd5aeebba4599442e4a6052175  libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
--- 66475,66481 ----
  465224c6303de93a7ad7fc4286042fce  libstdc++-v3/config/abi/post/sparc-solaris2.11/baseline_symbols.txt
  cdd50089e0460c8802edf9f1e3881ca6  libstdc++-v3/config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt
  74064ed8904c807e6fc739cbe69a24ff  libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
! fbcea2f2fb44f27ea490cd4ea0372da4  libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
  7c9d9f30d0c74c87283c25e3959c4859  libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
  5c4c38aeca254313c616b84337c937c3  libstdc++-v3/config/abi/pre/float128.ver
  d5ca39dd5aeebba4599442e4a6052175  libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
*************** c7c82b7fdf11e423ccdc173143db93aa  libstd
*** 66213,66222 ****
  7edc1c806579bdda295225b37ff9482c  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  276389a68a2b7b1262605789e5edfa63  libstdc++-v3/config/os/vxworks/ctype_inline.h
  70166bc357cec0c671f1d0fb63e68735  libstdc++-v3/config/os/vxworks/os_defines.h
! 75101c11422e6bd7cbe2a13f825cb700  libstdc++-v3/configure
! 109e1897c80132d1381057db9429be56  libstdc++-v3/configure.ac
  e711fd9f625040036e12e7ec93b06781  libstdc++-v3/configure.host
! d7f207dcb3d6f80e6d9e4e16caf6b18d  libstdc++-v3/crossconfig.m4
  4cc1da5a760f3aa03a2af01fa56d6d80  libstdc++-v3/doc/Makefile.am
  74b2c2379a63ef007e3b81ca6e5ef284  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
--- 66634,66643 ----
  7edc1c806579bdda295225b37ff9482c  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  276389a68a2b7b1262605789e5edfa63  libstdc++-v3/config/os/vxworks/ctype_inline.h
  70166bc357cec0c671f1d0fb63e68735  libstdc++-v3/config/os/vxworks/os_defines.h
! e10d6b6f24c57de7dd53d5f192f365a0  libstdc++-v3/configure
! 071c824e5b111bdbcec7810c1f50b3e9  libstdc++-v3/configure.ac
  e711fd9f625040036e12e7ec93b06781  libstdc++-v3/configure.host
! 4ec68ff92a9155b87ed9001a405eead5  libstdc++-v3/crossconfig.m4
  4cc1da5a760f3aa03a2af01fa56d6d80  libstdc++-v3/doc/Makefile.am
  74b2c2379a63ef007e3b81ca6e5ef284  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
*************** ee599e042e0ab46c3d78dd8675b8ba7f  libstd
*** 66229,66235 ****
  4466806f318e6153c722faee62d28915  libstdc++-v3/doc/html/api.html
  fd168dc2b2d0c12b1e17b40ffec96390  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! 4cbf99aaaeae90dfebdce302f055ee0d  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
--- 66650,66656 ----
  4466806f318e6153c722faee62d28915  libstdc++-v3/doc/html/api.html
  fd168dc2b2d0c12b1e17b40ffec96390  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! 7b43047e62fdf49995dde2b9ea857afe  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
*************** c7e40c1085e414b3b4d5896db4013205  libstd
*** 66334,66340 ****
  1bd34529d162b6f3a08d5f2ea4943c6a  libstdc++-v3/doc/html/manual/debug_mode.html
  8593a73f3114d29cfaaee91529bb747d  libstdc++-v3/doc/html/manual/debug_mode_design.html
  fc2f4ac9d9c05ca8c4dce6b46e259f97  libstdc++-v3/doc/html/manual/debug_mode_semantics.html
! 9b49d08d3786c91a4cb52fb6b60b76c3  libstdc++-v3/doc/html/manual/debug_mode_using.html
  7bcc35e818f9360d10ecfe70e4dedcc0  libstdc++-v3/doc/html/manual/diagnostics.html
  a9912c2e6de072fc1b2f1794a1b8cd00  libstdc++-v3/doc/html/manual/documentation_hacking.html
  c472d3d333cea10a613a5177af5b053a  libstdc++-v3/doc/html/manual/dynamic_memory.html
--- 66755,66761 ----
  1bd34529d162b6f3a08d5f2ea4943c6a  libstdc++-v3/doc/html/manual/debug_mode.html
  8593a73f3114d29cfaaee91529bb747d  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
  a9912c2e6de072fc1b2f1794a1b8cd00  libstdc++-v3/doc/html/manual/documentation_hacking.html
  c472d3d333cea10a613a5177af5b053a  libstdc++-v3/doc/html/manual/dynamic_memory.html
*************** cf360e652a99b60dfce0e335b47297ed  libstd
*** 66356,66362 ****
  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
! 8e59f4788044868bed89507f46412124  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
--- 66777,66783 ----
  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
! 5880150fccdef41150ee76e084603182  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
*************** dc012f6bbeb24332ca023dc15d6da9cf  libstd
*** 66395,66416 ****
  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
! 0db95b331ee26b77b7333a5264b3938f  libstdc++-v3/doc/html/manual/status.html
  9e6cce6bed38f62648e12eb77363d1fc  libstdc++-v3/doc/html/manual/std_contents.html
  dbb5f81a9e8864374fbb835eaa4e8b0d  libstdc++-v3/doc/html/manual/streambufs.html
  2eddc447009e3c845b6489be7dc2a11a  libstdc++-v3/doc/html/manual/strings.html
  4fceea62121ba1fe214414a7506d385e  libstdc++-v3/doc/html/manual/stringstreams.html
  d8ac0a9de0b3b518111ccdd44d818898  libstdc++-v3/doc/html/manual/support.html
  1438f664082c52484fc99afed190b575  libstdc++-v3/doc/html/manual/termination.html
! 085e19f995d09c7a137b4ee193789029  libstdc++-v3/doc/html/manual/test.html
  c39b927efcec5ac84139c1490c8ef320  libstdc++-v3/doc/html/manual/traits.html
  530b96535baacfe35df2e65f9dfe7efc  libstdc++-v3/doc/html/manual/unordered_associative.html
  b2c30bf7f27ef8bbd85ff82fab01729f  libstdc++-v3/doc/html/manual/using.html
  98f1c252433b417ec9c0489169389895  libstdc++-v3/doc/html/manual/using_concurrency.html
! 09099a6836752a44e855a76e0d3d6aa7  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
! 0c20cb9855947efe5ea416eae339b236  libstdc++-v3/doc/html/manual/using_headers.html
  3dfd3b98f510220a03bdc785f2c0a30a  libstdc++-v3/doc/html/manual/using_macros.html
  ccc3b1a320ccc49a977c80546610195b  libstdc++-v3/doc/html/manual/using_namespaces.html
  0b2b2db689ecf2a5ad885a7e076a4e94  libstdc++-v3/doc/html/manual/utilities.html
--- 66816,66837 ----
  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
! 9d77bbb369aed37360de00b460c173f0  libstdc++-v3/doc/html/manual/status.html
  9e6cce6bed38f62648e12eb77363d1fc  libstdc++-v3/doc/html/manual/std_contents.html
  dbb5f81a9e8864374fbb835eaa4e8b0d  libstdc++-v3/doc/html/manual/streambufs.html
  2eddc447009e3c845b6489be7dc2a11a  libstdc++-v3/doc/html/manual/strings.html
  4fceea62121ba1fe214414a7506d385e  libstdc++-v3/doc/html/manual/stringstreams.html
  d8ac0a9de0b3b518111ccdd44d818898  libstdc++-v3/doc/html/manual/support.html
  1438f664082c52484fc99afed190b575  libstdc++-v3/doc/html/manual/termination.html
! 12dd735d3b8367002b9d814a9eef50ef  libstdc++-v3/doc/html/manual/test.html
  c39b927efcec5ac84139c1490c8ef320  libstdc++-v3/doc/html/manual/traits.html
  530b96535baacfe35df2e65f9dfe7efc  libstdc++-v3/doc/html/manual/unordered_associative.html
  b2c30bf7f27ef8bbd85ff82fab01729f  libstdc++-v3/doc/html/manual/using.html
  98f1c252433b417ec9c0489169389895  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
! 5b1bbfeebca8d294cbbdc14319757329  libstdc++-v3/doc/html/manual/using_headers.html
  3dfd3b98f510220a03bdc785f2c0a30a  libstdc++-v3/doc/html/manual/using_macros.html
  ccc3b1a320ccc49a977c80546610195b  libstdc++-v3/doc/html/manual/using_namespaces.html
  0b2b2db689ecf2a5ad885a7e076a4e94  libstdc++-v3/doc/html/manual/utilities.html
*************** ccc3b1a320ccc49a977c80546610195b  libstd
*** 66419,66425 ****
  f5a41d4f7585b850b3182fc5f4888f93  libstdc++-v3/doc/xml/book.txml
  95d1335e76860d53246f3e400231ec38  libstdc++-v3/doc/xml/chapter.txml
  7f8c520dc83013026c671c5c342f73e2  libstdc++-v3/doc/xml/class.txml
! 25782642272c68924eb3850541cbb813  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
--- 66840,66846 ----
  f5a41d4f7585b850b3182fc5f4888f93  libstdc++-v3/doc/xml/book.txml
  95d1335e76860d53246f3e400231ec38  libstdc++-v3/doc/xml/chapter.txml
  7f8c520dc83013026c671c5c342f73e2  libstdc++-v3/doc/xml/class.txml
! 895edf802609b07321dd4f92b59c500c  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
*************** f13297d479322bdb5fffc34f5fb1c5c8  libstd
*** 66617,66623 ****
  289d5c67b03a147624e55792fca3916f  libstdc++-v3/doc/xml/manual/containers.xml
  35d8bc77747044001636800a86dbac24  libstdc++-v3/doc/xml/manual/ctype.xml
  e7a9590bfa29f2842a602c7d9281e8df  libstdc++-v3/doc/xml/manual/debug.xml
! 4555f61b57b44e77be733d10aaa979c5  libstdc++-v3/doc/xml/manual/debug_mode.xml
  f0323e43ff8fc1ca28dcdfae61b6cb19  libstdc++-v3/doc/xml/manual/diagnostics.xml
  099bda8905d39fc07d87152927c32492  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
  beaf7f0a49ee4f9a868913839fb3e8b4  libstdc++-v3/doc/xml/manual/evolution.xml
--- 67038,67044 ----
  289d5c67b03a147624e55792fca3916f  libstdc++-v3/doc/xml/manual/containers.xml
  35d8bc77747044001636800a86dbac24  libstdc++-v3/doc/xml/manual/ctype.xml
  e7a9590bfa29f2842a602c7d9281e8df  libstdc++-v3/doc/xml/manual/debug.xml
! 4ed2cb587373d3029a0d949ce37ae1f2  libstdc++-v3/doc/xml/manual/debug_mode.xml
  f0323e43ff8fc1ca28dcdfae61b6cb19  libstdc++-v3/doc/xml/manual/diagnostics.xml
  099bda8905d39fc07d87152927c32492  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
  beaf7f0a49ee4f9a868913839fb3e8b4  libstdc++-v3/doc/xml/manual/evolution.xml
*************** e2b6426957c60c385c84e7b5143089ce  libstd
*** 66638,66644 ****
  5cca2fce9e94a0243e546e0c59792f87  libstdc++-v3/doc/xml/manual/profile_mode.xml
  d86ab4ddaebc9752d3a71f23cc8879cb  libstdc++-v3/doc/xml/manual/shared_ptr.xml
  8b2ba528aeefb3571a63fba077b46ee1  libstdc++-v3/doc/xml/manual/spine.xml
! 2282bf36adee03f3823a6fdaa7fdd128  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
  a9d987cf0583e51ad9eb6ac589ca5e8e  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
  72b9bc0f2799920c3d2caf7a550686f5  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
  7e9469d9ecdca33ba1c50fd701a52a19  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
--- 67059,67065 ----
  5cca2fce9e94a0243e546e0c59792f87  libstdc++-v3/doc/xml/manual/profile_mode.xml
  d86ab4ddaebc9752d3a71f23cc8879cb  libstdc++-v3/doc/xml/manual/shared_ptr.xml
  8b2ba528aeefb3571a63fba077b46ee1  libstdc++-v3/doc/xml/manual/spine.xml
! c6484730208a3a65702e6f804f7d9e61  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
  a9d987cf0583e51ad9eb6ac589ca5e8e  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
  72b9bc0f2799920c3d2caf7a550686f5  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
  7e9469d9ecdca33ba1c50fd701a52a19  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
*************** a9d987cf0583e51ad9eb6ac589ca5e8e  libstd
*** 66647,66662 ****
  0acb29d13accb1b483e4f108b5a96714  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
  4bde3160d9ccaca3edfee800f93973f1  libstdc++-v3/doc/xml/manual/strings.xml
  c564c4399f854273d5814b3c57d3d591  libstdc++-v3/doc/xml/manual/support.xml
! a8cf09674b5c2dc9ddb332d1a8461eba  libstdc++-v3/doc/xml/manual/test.xml
  b3e6db24172a20bdef96a05a3ea26101  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
! c4e137ddb7ea4f7340a7618637560f4c  libstdc++-v3/doc/xml/manual/using.xml
  cc84d1c1a7a9491f46a3e463fcd8aa26  libstdc++-v3/doc/xml/manual/using_exceptions.xml
  d42dacf57cbf8644fc8b7217c7e8893a  libstdc++-v3/doc/xml/manual/utilities.xml
  a209e7576dd578adf52c10796b53c14d  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  fa0fbb589f8e3959f474ba45b0758902  libstdc++-v3/fragment.am
! 03a2793945d946165c4958d6b6d27417  libstdc++-v3/include/Makefile.am
! 1a041ac3e4e88543cd569529e8d44792  libstdc++-v3/include/Makefile.in
  fe6c4f9e05006cf7f39ed3b88343c143  libstdc++-v3/include/backward/auto_ptr.h
  fe61c64d9cd7f5c6403522bb61a6cd7e  libstdc++-v3/include/backward/backward_warning.h
  b6eebaca0721deccbcade8b6a7b3ab28  libstdc++-v3/include/backward/binders.h
--- 67068,67083 ----
  0acb29d13accb1b483e4f108b5a96714  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
  4bde3160d9ccaca3edfee800f93973f1  libstdc++-v3/doc/xml/manual/strings.xml
  c564c4399f854273d5814b3c57d3d591  libstdc++-v3/doc/xml/manual/support.xml
! d0c03fe53ae009d9628058b86495e271  libstdc++-v3/doc/xml/manual/test.xml
  b3e6db24172a20bdef96a05a3ea26101  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
! b97fd071d085218fdff73de589b9f625  libstdc++-v3/doc/xml/manual/using.xml
  cc84d1c1a7a9491f46a3e463fcd8aa26  libstdc++-v3/doc/xml/manual/using_exceptions.xml
  d42dacf57cbf8644fc8b7217c7e8893a  libstdc++-v3/doc/xml/manual/utilities.xml
  a209e7576dd578adf52c10796b53c14d  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  fa0fbb589f8e3959f474ba45b0758902  libstdc++-v3/fragment.am
! dbe4925d500ce2e2b22b91ff47f2bc26  libstdc++-v3/include/Makefile.am
! eff13182e73257d5f1f1e2c2aa9f9143  libstdc++-v3/include/Makefile.in
  fe6c4f9e05006cf7f39ed3b88343c143  libstdc++-v3/include/backward/auto_ptr.h
  fe61c64d9cd7f5c6403522bb61a6cd7e  libstdc++-v3/include/backward/backward_warning.h
  b6eebaca0721deccbcade8b6a7b3ab28  libstdc++-v3/include/backward/binders.h
*************** c0ad9c1c2e4c5c9d8d0fc56d18d002e5  libstd
*** 66673,66698 ****
  6556bef5120f2b8175df86997fa17d28  libstdc++-v3/include/bits/atomic_futex.h
  4002da87b9f86297830504829e93ee8e  libstdc++-v3/include/bits/basic_ios.h
  355c760b2ddb77866d3be111d2216406  libstdc++-v3/include/bits/basic_ios.tcc
! fe71ae6ae877214daa1c25a92beac19a  libstdc++-v3/include/bits/basic_string.h
! f483e43bab9dd5c16fafeab7ec6a45f9  libstdc++-v3/include/bits/basic_string.tcc
  2f06e59656664c29ba7c61ca91cf1c80  libstdc++-v3/include/bits/boost_concept_check.h
  658da65d0ca3addc0639468aa85028e3  libstdc++-v3/include/bits/c++0x_warning.h
! eb778382c5272131670bfb6e6e18bf21  libstdc++-v3/include/bits/c++14_warning.h
! 9ff1b28f7787ea7d17b4beae9cb3e8e1  libstdc++-v3/include/bits/c++config
! c41408e5b91201d323514903be72be17  libstdc++-v3/include/bits/char_traits.h
  4c0d0e0c253cebe08e42643de57ee529  libstdc++-v3/include/bits/codecvt.h
  fa1dc211040365ce32fb8072dc02a0a6  libstdc++-v3/include/bits/concept_check.h
  fa188d4b243b1dfce32f81944d80d51d  libstdc++-v3/include/bits/cpp_type_traits.h
  f4addcde213357ae315222fa5aa91686  libstdc++-v3/include/bits/deque.tcc
  dafd3fc465c26d7ac6cd93a13cb74d4b  libstdc++-v3/include/bits/enable_special_members.h
! ac1baa37f90c763685b00ef16a77a1fc  libstdc++-v3/include/bits/forward_list.h
! e823a1af92759a9316af067d3a63cc0d  libstdc++-v3/include/bits/forward_list.tcc
  b47d9c26945986d4fbda1e63c96e7145  libstdc++-v3/include/bits/fstream.tcc
  f7737ba0b208be376f9d35eb9a375ba5  libstdc++-v3/include/bits/functexcept.h
  d43a4b92ed291afa6650c89ad083189d  libstdc++-v3/include/bits/functional_hash.h
  5315b31b83c8bf2a07680fb65e536406  libstdc++-v3/include/bits/gslice.h
  7b1224ecb8e69dbfaf36e8c69e8736a5  libstdc++-v3/include/bits/gslice_array.h
! daadaa0e7853bf8a97a3d80fca40fa85  libstdc++-v3/include/bits/hashtable.h
  13ab915e77c1c9fd44144693f653db2a  libstdc++-v3/include/bits/hashtable_policy.h
  0c03777d38834243a3556593e55575ea  libstdc++-v3/include/bits/indirect_array.h
  2a82b5fa1f42e1cb7eb96d7bf1ec3178  libstdc++-v3/include/bits/invoke.h
--- 67094,67118 ----
  6556bef5120f2b8175df86997fa17d28  libstdc++-v3/include/bits/atomic_futex.h
  4002da87b9f86297830504829e93ee8e  libstdc++-v3/include/bits/basic_ios.h
  355c760b2ddb77866d3be111d2216406  libstdc++-v3/include/bits/basic_ios.tcc
! 0c01fb05cb39afcf8f92a93d27e87ebd  libstdc++-v3/include/bits/basic_string.h
! 59cc3b2ea707dc103ac2ae5c700d2fc3  libstdc++-v3/include/bits/basic_string.tcc
  2f06e59656664c29ba7c61ca91cf1c80  libstdc++-v3/include/bits/boost_concept_check.h
  658da65d0ca3addc0639468aa85028e3  libstdc++-v3/include/bits/c++0x_warning.h
! e5bc0cbeb00714bda8828155b581d299  libstdc++-v3/include/bits/c++config
! b72dad47f655b92d27958e38d076337e  libstdc++-v3/include/bits/char_traits.h
  4c0d0e0c253cebe08e42643de57ee529  libstdc++-v3/include/bits/codecvt.h
  fa1dc211040365ce32fb8072dc02a0a6  libstdc++-v3/include/bits/concept_check.h
  fa188d4b243b1dfce32f81944d80d51d  libstdc++-v3/include/bits/cpp_type_traits.h
  f4addcde213357ae315222fa5aa91686  libstdc++-v3/include/bits/deque.tcc
  dafd3fc465c26d7ac6cd93a13cb74d4b  libstdc++-v3/include/bits/enable_special_members.h
! bb35bb9eec11f014bff80cd9f4892179  libstdc++-v3/include/bits/forward_list.h
! 7ac7985a1cd1f3d550e52ca1152c1c94  libstdc++-v3/include/bits/forward_list.tcc
  b47d9c26945986d4fbda1e63c96e7145  libstdc++-v3/include/bits/fstream.tcc
  f7737ba0b208be376f9d35eb9a375ba5  libstdc++-v3/include/bits/functexcept.h
  d43a4b92ed291afa6650c89ad083189d  libstdc++-v3/include/bits/functional_hash.h
  5315b31b83c8bf2a07680fb65e536406  libstdc++-v3/include/bits/gslice.h
  7b1224ecb8e69dbfaf36e8c69e8736a5  libstdc++-v3/include/bits/gslice_array.h
! 47ee0ffedcaafc1209f0008752f88a66  libstdc++-v3/include/bits/hashtable.h
  13ab915e77c1c9fd44144693f653db2a  libstdc++-v3/include/bits/hashtable_policy.h
  0c03777d38834243a3556593e55575ea  libstdc++-v3/include/bits/indirect_array.h
  2a82b5fa1f42e1cb7eb96d7bf1ec3178  libstdc++-v3/include/bits/invoke.h
*************** b5362775bf2d2bc3740af7842c1a52b0  libstd
*** 66710,66730 ****
  35ee5b1481681635e84e3d8a49999452  libstdc++-v3/include/bits/mask_array.h
  6384dd4fee2ac565d2d38178aab160fb  libstdc++-v3/include/bits/memoryfwd.h
  57592b40351b785329169cc8b8e59760  libstdc++-v3/include/bits/move.h
! 2348a5dc81c3f50651423035e01f6726  libstdc++-v3/include/bits/node_handle.h
  acbf67f70070c595cc00146e36a0470b  libstdc++-v3/include/bits/ostream.tcc
  2bda0a1f5ee65ffb4682712c4b5df486  libstdc++-v3/include/bits/ostream_insert.h
! b7d9f46a6c1d3a64458605eb310f5d09  libstdc++-v3/include/bits/parse_numbers.h
  7a2bae66f0694d4f581e77e6dac1a766  libstdc++-v3/include/bits/postypes.h
  5f05adbf6e5443fe09c49513ee53b002  libstdc++-v3/include/bits/predefined_ops.h
  7630ce3c939921f65df86d1f0ec8821b  libstdc++-v3/include/bits/ptr_traits.h
  60e94258f562f81fd5c6853c88584ca3  libstdc++-v3/include/bits/quoted_string.h
! 2a9d52c65bba86df46860265064ff31d  libstdc++-v3/include/bits/random.h
! d4e960a7e9fe0f0626fa3af88849aeb7  libstdc++-v3/include/bits/random.tcc
  f9d10b7496885a8dc97c4235f55aa1fb  libstdc++-v3/include/bits/range_access.h
  5cce56c9f8def1ffeef357b636554760  libstdc++-v3/include/bits/refwrap.h
! 23cee91e6b62eb8b315503127f1de054  libstdc++-v3/include/bits/regex.h
  235fc423dd7a3c1197fe4814c9863513  libstdc++-v3/include/bits/regex.tcc
! 15fecde24c6c0ef19b9337489b5c2132  libstdc++-v3/include/bits/regex_automaton.h
  14d80b826dcc1327456a6d92023be82b  libstdc++-v3/include/bits/regex_automaton.tcc
  867f18559c6e67b02ea8dfac9db3acb5  libstdc++-v3/include/bits/regex_compiler.h
  b3d52372466603020f0fa3e91247f888  libstdc++-v3/include/bits/regex_compiler.tcc
--- 67130,67150 ----
  35ee5b1481681635e84e3d8a49999452  libstdc++-v3/include/bits/mask_array.h
  6384dd4fee2ac565d2d38178aab160fb  libstdc++-v3/include/bits/memoryfwd.h
  57592b40351b785329169cc8b8e59760  libstdc++-v3/include/bits/move.h
! e0e46172f0c828829743bbeb46d0ca79  libstdc++-v3/include/bits/node_handle.h
  acbf67f70070c595cc00146e36a0470b  libstdc++-v3/include/bits/ostream.tcc
  2bda0a1f5ee65ffb4682712c4b5df486  libstdc++-v3/include/bits/ostream_insert.h
! 85d4ecaa6f827442197fc030d05f9cf6  libstdc++-v3/include/bits/parse_numbers.h
  7a2bae66f0694d4f581e77e6dac1a766  libstdc++-v3/include/bits/postypes.h
  5f05adbf6e5443fe09c49513ee53b002  libstdc++-v3/include/bits/predefined_ops.h
  7630ce3c939921f65df86d1f0ec8821b  libstdc++-v3/include/bits/ptr_traits.h
  60e94258f562f81fd5c6853c88584ca3  libstdc++-v3/include/bits/quoted_string.h
! 757d3f223222860e22a69ef508412767  libstdc++-v3/include/bits/random.h
! 7084b1b66ae4da40a8a444143f7e34bc  libstdc++-v3/include/bits/random.tcc
  f9d10b7496885a8dc97c4235f55aa1fb  libstdc++-v3/include/bits/range_access.h
  5cce56c9f8def1ffeef357b636554760  libstdc++-v3/include/bits/refwrap.h
! 6d4dc4cf8b854d7f49d01b333f8e6697  libstdc++-v3/include/bits/regex.h
  235fc423dd7a3c1197fe4814c9863513  libstdc++-v3/include/bits/regex.tcc
! 9cd474fcf97452f02719cd55f2ee641f  libstdc++-v3/include/bits/regex_automaton.h
  14d80b826dcc1327456a6d92023be82b  libstdc++-v3/include/bits/regex_automaton.tcc
  867f18559c6e67b02ea8dfac9db3acb5  libstdc++-v3/include/bits/regex_compiler.h
  b3d52372466603020f0fa3e91247f888  libstdc++-v3/include/bits/regex_compiler.tcc
*************** ea83e995fd19f5d2df15f8e4ad6ef425  libstd
*** 66745,66764 ****
  528362b2853ccf1a19ee9814ae6da905  libstdc++-v3/include/bits/std_mutex.h
  57c82f70235b397967a5f35102812904  libstdc++-v3/include/bits/stl_algo.h
  0110a2c765aaf979549030f030be6b31  libstdc++-v3/include/bits/stl_algobase.h
! d864d8ca92f36413241bdaeae10cb3a7  libstdc++-v3/include/bits/stl_bvector.h
  b8431df63253bf9fd518385226e12ce0  libstdc++-v3/include/bits/stl_construct.h
  e9adec6d3afd21a4eeba89e9cce45405  libstdc++-v3/include/bits/stl_deque.h
  2f5d96347e4dc9ea2015e87ab4b28d14  libstdc++-v3/include/bits/stl_function.h
  26d4812cfe0cfea680661ebf40f577f5  libstdc++-v3/include/bits/stl_heap.h
! b357e0743ab7cbd68a42017791b6a550  libstdc++-v3/include/bits/stl_iterator.h
  f5f163e4386d5cb103975b3d40ae923e  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
  95e0b4ab859fe465240c91f2cd18d9a9  libstdc++-v3/include/bits/stl_iterator_base_types.h
  1beb38923d216c8cabdc7425f268b055  libstdc++-v3/include/bits/stl_list.h
! 8bb427a8a1c65af8a6b447802b25dd69  libstdc++-v3/include/bits/stl_map.h
! 3f805d6d72cd87a5748e1c5a0d273c0d  libstdc++-v3/include/bits/stl_multimap.h
  fc8e510c975c16838ca738577c3d8ada  libstdc++-v3/include/bits/stl_multiset.h
  faf617c8c8e3df42fab49503e5548987  libstdc++-v3/include/bits/stl_numeric.h
! 05eae9cce53df642db541dfaffb21c17  libstdc++-v3/include/bits/stl_pair.h
  0038e7d8b023098a729d93ba0852db69  libstdc++-v3/include/bits/stl_queue.h
  2ae67a27ca811d924c92610e4abad033  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  a2281962b74d61def007f879af3c8f69  libstdc++-v3/include/bits/stl_relops.h
--- 67165,67184 ----
  528362b2853ccf1a19ee9814ae6da905  libstdc++-v3/include/bits/std_mutex.h
  57c82f70235b397967a5f35102812904  libstdc++-v3/include/bits/stl_algo.h
  0110a2c765aaf979549030f030be6b31  libstdc++-v3/include/bits/stl_algobase.h
! a38a2330fe5045c554a161bd54cf4850  libstdc++-v3/include/bits/stl_bvector.h
  b8431df63253bf9fd518385226e12ce0  libstdc++-v3/include/bits/stl_construct.h
  e9adec6d3afd21a4eeba89e9cce45405  libstdc++-v3/include/bits/stl_deque.h
  2f5d96347e4dc9ea2015e87ab4b28d14  libstdc++-v3/include/bits/stl_function.h
  26d4812cfe0cfea680661ebf40f577f5  libstdc++-v3/include/bits/stl_heap.h
! 07370f21f7de314f73712873ea5079c2  libstdc++-v3/include/bits/stl_iterator.h
  f5f163e4386d5cb103975b3d40ae923e  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
  95e0b4ab859fe465240c91f2cd18d9a9  libstdc++-v3/include/bits/stl_iterator_base_types.h
  1beb38923d216c8cabdc7425f268b055  libstdc++-v3/include/bits/stl_list.h
! 5bc393c435044e4c567183dc7aca30c6  libstdc++-v3/include/bits/stl_map.h
! da1ec6310b5dd24aedb4acfb4a325f6c  libstdc++-v3/include/bits/stl_multimap.h
  fc8e510c975c16838ca738577c3d8ada  libstdc++-v3/include/bits/stl_multiset.h
  faf617c8c8e3df42fab49503e5548987  libstdc++-v3/include/bits/stl_numeric.h
! 9c920bd506d36f1833b55d295ed8ae7d  libstdc++-v3/include/bits/stl_pair.h
  0038e7d8b023098a729d93ba0852db69  libstdc++-v3/include/bits/stl_queue.h
  2ae67a27ca811d924c92610e4abad033  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  a2281962b74d61def007f879af3c8f69  libstdc++-v3/include/bits/stl_relops.h
*************** a2281962b74d61def007f879af3c8f69  libstd
*** 66767,66788 ****
  06de465b8a7d35370f41ae1af74fc23e  libstdc++-v3/include/bits/stl_tempbuf.h
  42ec8a81a6cb63b1c0901a86eb7aa05e  libstdc++-v3/include/bits/stl_tree.h
  94fea59d2dd4a97df7c9e729cee69336  libstdc++-v3/include/bits/stl_uninitialized.h
! ec6c6b1bfc3b843d1bce994cac54b962  libstdc++-v3/include/bits/stl_vector.h
  5c8d4f347b1ad81182650cafa36c86a3  libstdc++-v3/include/bits/stream_iterator.h
  713b1e5bdcb6ef6d464c3ea068dd957a  libstdc++-v3/include/bits/streambuf.tcc
  9540b21070a173268535881c5517754f  libstdc++-v3/include/bits/streambuf_iterator.h
  cb8a83c5ea9472d09da0e5010086c772  libstdc++-v3/include/bits/string_view.tcc
  5c0c6b845b6e38ab5e22e418aeaee1b0  libstdc++-v3/include/bits/stringfwd.h
  a9fa84f93a12d008d690fb6c49d037ba  libstdc++-v3/include/bits/uniform_int_dist.h
! f84d19afb4f0df41a643d8131e90e604  libstdc++-v3/include/bits/unique_ptr.h
! 59364bf238d153ce660c42ffc6c9b24e  libstdc++-v3/include/bits/unordered_map.h
  251035abb110ee7968c8eb6fcef6c57a  libstdc++-v3/include/bits/unordered_set.h
  06758d4fd4602a6706aecc3087b34290  libstdc++-v3/include/bits/uses_allocator.h
  fc762c06dba512874f00456666187078  libstdc++-v3/include/bits/valarray_after.h
! c23c70c1a86148a02e0423c8f16480fc  libstdc++-v3/include/bits/valarray_array.h
  54b32319ee720fc9d87e4457515d4f6a  libstdc++-v3/include/bits/valarray_array.tcc
  7854ed66359b2824e1483befa0cacc83  libstdc++-v3/include/bits/valarray_before.h
! 4e3071e55fb1e4dc694f646197b61ed8  libstdc++-v3/include/bits/vector.tcc
  f88cefd46ea21a310190bed92141d4dd  libstdc++-v3/include/c/cassert
  13d44cd24e1139ce654bf8edbcc4b266  libstdc++-v3/include/c/cctype
  407b97b339afb27fb14ffafd1b398008  libstdc++-v3/include/c/cerrno
--- 67187,67208 ----
  06de465b8a7d35370f41ae1af74fc23e  libstdc++-v3/include/bits/stl_tempbuf.h
  42ec8a81a6cb63b1c0901a86eb7aa05e  libstdc++-v3/include/bits/stl_tree.h
  94fea59d2dd4a97df7c9e729cee69336  libstdc++-v3/include/bits/stl_uninitialized.h
! 6d0eb254a15a019bb9b09fb2184aae47  libstdc++-v3/include/bits/stl_vector.h
  5c8d4f347b1ad81182650cafa36c86a3  libstdc++-v3/include/bits/stream_iterator.h
  713b1e5bdcb6ef6d464c3ea068dd957a  libstdc++-v3/include/bits/streambuf.tcc
  9540b21070a173268535881c5517754f  libstdc++-v3/include/bits/streambuf_iterator.h
  cb8a83c5ea9472d09da0e5010086c772  libstdc++-v3/include/bits/string_view.tcc
  5c0c6b845b6e38ab5e22e418aeaee1b0  libstdc++-v3/include/bits/stringfwd.h
  a9fa84f93a12d008d690fb6c49d037ba  libstdc++-v3/include/bits/uniform_int_dist.h
! adba5f5607ae7280594446d19d343436  libstdc++-v3/include/bits/unique_ptr.h
! 9fdeefdfb754cee8ddf9f72938e83619  libstdc++-v3/include/bits/unordered_map.h
  251035abb110ee7968c8eb6fcef6c57a  libstdc++-v3/include/bits/unordered_set.h
  06758d4fd4602a6706aecc3087b34290  libstdc++-v3/include/bits/uses_allocator.h
  fc762c06dba512874f00456666187078  libstdc++-v3/include/bits/valarray_after.h
! 0388c4c7dcef880cd27d9159700c14e3  libstdc++-v3/include/bits/valarray_array.h
  54b32319ee720fc9d87e4457515d4f6a  libstdc++-v3/include/bits/valarray_array.tcc
  7854ed66359b2824e1483befa0cacc83  libstdc++-v3/include/bits/valarray_before.h
! c0fadf88200cf250dd37809089603d32  libstdc++-v3/include/bits/vector.tcc
  f88cefd46ea21a310190bed92141d4dd  libstdc++-v3/include/c/cassert
  13d44cd24e1139ce654bf8edbcc4b266  libstdc++-v3/include/c/cctype
  407b97b339afb27fb14ffafd1b398008  libstdc++-v3/include/c/cerrno
*************** f270c894f29619fc64b7bfcee1cdde87  libstd
*** 66843,66852 ****
  f609f9956342754a688b405e9129c7ab  libstdc++-v3/include/c_global/cstdalign
  6ed2b2d912b7224c29f22f773a7d512f  libstdc++-v3/include/c_global/cstdarg
  97be7ca9ac03bbc43af611b152a95f05  libstdc++-v3/include/c_global/cstdbool
! 717eb0da33b0c578d520954902c0922c  libstdc++-v3/include/c_global/cstddef
  2a8dd144c2a543524b93da73b68329ee  libstdc++-v3/include/c_global/cstdint
  ce8506f689e00bf5ba045858c1f7c387  libstdc++-v3/include/c_global/cstdio
! 9f108090c3611d9af787714e608922bd  libstdc++-v3/include/c_global/cstdlib
  26985c8f13f0c33d0121e195537517db  libstdc++-v3/include/c_global/cstring
  8dd009cfc924f6cbed0320a21ec2d16f  libstdc++-v3/include/c_global/ctgmath
  2dbdb1d3e561241c2d713a337104abe2  libstdc++-v3/include/c_global/ctime
--- 67263,67272 ----
  f609f9956342754a688b405e9129c7ab  libstdc++-v3/include/c_global/cstdalign
  6ed2b2d912b7224c29f22f773a7d512f  libstdc++-v3/include/c_global/cstdarg
  97be7ca9ac03bbc43af611b152a95f05  libstdc++-v3/include/c_global/cstdbool
! c97ef53ec6c1b4d54b81b665ca1a565e  libstdc++-v3/include/c_global/cstddef
  2a8dd144c2a543524b93da73b68329ee  libstdc++-v3/include/c_global/cstdint
  ce8506f689e00bf5ba045858c1f7c387  libstdc++-v3/include/c_global/cstdio
! e0ec75284d99776591b11ffd9e5651ea  libstdc++-v3/include/c_global/cstdlib
  26985c8f13f0c33d0121e195537517db  libstdc++-v3/include/c_global/cstring
  8dd009cfc924f6cbed0320a21ec2d16f  libstdc++-v3/include/c_global/ctgmath
  2dbdb1d3e561241c2d713a337104abe2  libstdc++-v3/include/c_global/ctime
*************** a0566c7a3c404abd750a5ee0eae97003  libstd
*** 66901,66950 ****
  3b537c027d484485acdb5828a9b4b8c8  libstdc++-v3/include/debug/set
  860bfd488c72f27812823dcb7d0cc31a  libstdc++-v3/include/debug/set.h
  7d9677b5a894607641446f036023d751  libstdc++-v3/include/debug/stl_iterator.h
! 1362fb4e80bf412791441fe403b27daf  libstdc++-v3/include/debug/string
  853bb89ae9077497a1a19c1d91bcab47  libstdc++-v3/include/debug/unordered_map
  ba36c45972020046e49921dfbecb5fcf  libstdc++-v3/include/debug/unordered_set
  3458e047194652a475262b5c2457866b  libstdc++-v3/include/debug/vector
  a0c64ece84833a489daf0599b8c12bde  libstdc++-v3/include/decimal/decimal
  5fee6bc050dadf0c18b268666cda2299  libstdc++-v3/include/decimal/decimal.h
! 55f38e5295d9487f28539e1ded20355f  libstdc++-v3/include/experimental/algorithm
! 07187a9bcc5437eafd7dcf828415ff00  libstdc++-v3/include/experimental/any
! a68ff040c2a115e3a70ed639bdaea883  libstdc++-v3/include/experimental/array
! f0008dd760a8e4c1a7c679a90e39ae6d  libstdc++-v3/include/experimental/bits/erase_if.h
  e490c2aee0f90a78bec2ef2aecb879e8  libstdc++-v3/include/experimental/bits/fs_dir.h
  7642f1f8c8f75a4735190cddb44dfd35  libstdc++-v3/include/experimental/bits/fs_fwd.h
  be0ce778892c4b03eb34d95a395c9372  libstdc++-v3/include/experimental/bits/fs_ops.h
! 3b6b9c9585a7a24e0407f9df642dc46c  libstdc++-v3/include/experimental/bits/fs_path.h
! 3acad18578c5c05888371f2212ce9a5e  libstdc++-v3/include/experimental/bits/lfts_config.h
! ba5e3a8eb76e4454d8ebf720b35b3bd6  libstdc++-v3/include/experimental/bits/shared_ptr.h
! 587a0f1d40cccc79022b61f76124625f  libstdc++-v3/include/experimental/bits/string_view.tcc
! ab6c32e30f8e4ee6b8db62d84ac707c4  libstdc++-v3/include/experimental/chrono
! 4cd2c47b701c6830066cfd8eadf973d3  libstdc++-v3/include/experimental/deque
! d1e08b9e6e142475882f6a2c3cc99fab  libstdc++-v3/include/experimental/filesystem
! 4493ed527ebc12bce01d50bff39a7f25  libstdc++-v3/include/experimental/forward_list
! e5b7136a5509fb17191a60d760a7f512  libstdc++-v3/include/experimental/functional
! 25167708c8cb98bd4009b76f48266754  libstdc++-v3/include/experimental/iterator
! bea6cef78c5b5524f9e5a3e38771415a  libstdc++-v3/include/experimental/list
! 91439382d185d65e940eddc24e1c8bd1  libstdc++-v3/include/experimental/map
! 0c453cc9985c044ea33d68d7364ec283  libstdc++-v3/include/experimental/memory
! 11219fea11474c3bd23885064814a337  libstdc++-v3/include/experimental/memory_resource
! 0f8d0501e8c127673519583a68ccba43  libstdc++-v3/include/experimental/numeric
! b32e1a4141e71039149d1d9c767a62d1  libstdc++-v3/include/experimental/optional
! b272d4e7b4035a0fbb3051bec82df593  libstdc++-v3/include/experimental/propagate_const
  e302f55517a41e1a24f6e0f2aa0430fd  libstdc++-v3/include/experimental/random
! 7db36f105d0da4bc87d9c28c6ba50eb3  libstdc++-v3/include/experimental/ratio
! 18ac31152a6719f4312ba8f1a6c966a5  libstdc++-v3/include/experimental/regex
! b9f0463229149fa9a8def38a1113a098  libstdc++-v3/include/experimental/set
  7eb2cd439e7414825858d8ea6ebe5c9e  libstdc++-v3/include/experimental/source_location
! 6568909ef2ab083b6c817574e94d3b8d  libstdc++-v3/include/experimental/string
! e0e1da7f05c010e92123f5fb8ab63944  libstdc++-v3/include/experimental/string_view
! 092311155b5d80283998d0f2a4b1098f  libstdc++-v3/include/experimental/system_error
! a84eb611b921245ab7898c368dbf1347  libstdc++-v3/include/experimental/tuple
! 1929d9ca8ef74251254900b831b0cc3f  libstdc++-v3/include/experimental/type_traits
! 2908b1fd3aaa78d6d5aa6aadbe87209a  libstdc++-v3/include/experimental/unordered_map
! e4ae7ff0243ed2f451d7400be2affd15  libstdc++-v3/include/experimental/unordered_set
  6a5eca317f55b6e477f8f5b0db337890  libstdc++-v3/include/experimental/utility
! 179ac4c43306baa2dbca12f4cf6a5971  libstdc++-v3/include/experimental/vector
  258af7a792e427ce23d5c08616c3d0ec  libstdc++-v3/include/ext/algorithm
  83dc44a1b8d1e6ed90437c82cf690fb2  libstdc++-v3/include/ext/aligned_buffer.h
  23892e9f301f0560fa5a65524d6ccce8  libstdc++-v3/include/ext/alloc_traits.h
--- 67321,67370 ----
  3b537c027d484485acdb5828a9b4b8c8  libstdc++-v3/include/debug/set
  860bfd488c72f27812823dcb7d0cc31a  libstdc++-v3/include/debug/set.h
  7d9677b5a894607641446f036023d751  libstdc++-v3/include/debug/stl_iterator.h
! bbe109fcf36fa705abf4f90b7086cfd6  libstdc++-v3/include/debug/string
  853bb89ae9077497a1a19c1d91bcab47  libstdc++-v3/include/debug/unordered_map
  ba36c45972020046e49921dfbecb5fcf  libstdc++-v3/include/debug/unordered_set
  3458e047194652a475262b5c2457866b  libstdc++-v3/include/debug/vector
  a0c64ece84833a489daf0599b8c12bde  libstdc++-v3/include/decimal/decimal
  5fee6bc050dadf0c18b268666cda2299  libstdc++-v3/include/decimal/decimal.h
! c6af188ac637ee68342206a20b2ecade  libstdc++-v3/include/experimental/algorithm
! 3e86743b0fd5b23ec322be057ca1977d  libstdc++-v3/include/experimental/any
! 97ef87034a82d57ce1e041bda1af44f2  libstdc++-v3/include/experimental/array
! 8b92264b24185ec530677d54d3582fef  libstdc++-v3/include/experimental/bits/erase_if.h
  e490c2aee0f90a78bec2ef2aecb879e8  libstdc++-v3/include/experimental/bits/fs_dir.h
  7642f1f8c8f75a4735190cddb44dfd35  libstdc++-v3/include/experimental/bits/fs_fwd.h
  be0ce778892c4b03eb34d95a395c9372  libstdc++-v3/include/experimental/bits/fs_ops.h
! 6d9d6185c37190bf0772ef6d6bbf6fcb  libstdc++-v3/include/experimental/bits/fs_path.h
! 1070337cfcaf12abe63b00de20da0953  libstdc++-v3/include/experimental/bits/lfts_config.h
! e56a52fe8ef5573cf7a80cf57c16704e  libstdc++-v3/include/experimental/bits/shared_ptr.h
! e1ced563ee42440edddd51bc80d2c982  libstdc++-v3/include/experimental/bits/string_view.tcc
! f1b30f0ea1f3dd959cd0ff129d561b4b  libstdc++-v3/include/experimental/chrono
! c2e63b9c543c53f14b655bc9c3e77570  libstdc++-v3/include/experimental/deque
! 71b2120c73e5a4821085b1d2e681c189  libstdc++-v3/include/experimental/filesystem
! 48cd98fbd310e9c16b7d7207f37449b3  libstdc++-v3/include/experimental/forward_list
! 639e5ae4322d386bc1db2af0a35db137  libstdc++-v3/include/experimental/functional
! 8269ded9ad453f76d2cd4be8ed2b8a8a  libstdc++-v3/include/experimental/iterator
! baa5779d3186527c22a374fd938e8dd9  libstdc++-v3/include/experimental/list
! 8b333daf3cdb454a75faf9d783ba8c0e  libstdc++-v3/include/experimental/map
! 192636e4562b9b7168120ed9f3e23d47  libstdc++-v3/include/experimental/memory
! ee564103482050dce47bc3f6a0617e4f  libstdc++-v3/include/experimental/memory_resource
! ececa321c2379066b6e904d41a127e82  libstdc++-v3/include/experimental/numeric
! 9e78c00a3410a2e0d589b5ce579e5d1b  libstdc++-v3/include/experimental/optional
! 88fdf7b6a74d3f6e8f840cdebad918ec  libstdc++-v3/include/experimental/propagate_const
  e302f55517a41e1a24f6e0f2aa0430fd  libstdc++-v3/include/experimental/random
! 581b3925d3926869f87f900e6eb88422  libstdc++-v3/include/experimental/ratio
! e19cb99beb9bf3cc16b6f7cd3ae8462b  libstdc++-v3/include/experimental/regex
! e16db8de38cec244e86c98697b486c67  libstdc++-v3/include/experimental/set
  7eb2cd439e7414825858d8ea6ebe5c9e  libstdc++-v3/include/experimental/source_location
! 7351eadf87821c745bf827c8d7d3af38  libstdc++-v3/include/experimental/string
! c47b8aab2dedf84e028483489a15bf3f  libstdc++-v3/include/experimental/string_view
! b58431501fd742d4746f706f1f216690  libstdc++-v3/include/experimental/system_error
! 2fcf247a9917631383ce599abc9e54c2  libstdc++-v3/include/experimental/tuple
! 4047f7383537106a63265c931c1a9e8f  libstdc++-v3/include/experimental/type_traits
! 8fe8262ce24af317300b0a0b7f7eeb19  libstdc++-v3/include/experimental/unordered_map
! a989f67f3e125816d1d1c6c383f7c7eb  libstdc++-v3/include/experimental/unordered_set
  6a5eca317f55b6e477f8f5b0db337890  libstdc++-v3/include/experimental/utility
! 56b671f64a525907a8422c57c72971a9  libstdc++-v3/include/experimental/vector
  258af7a792e427ce23d5c08616c3d0ec  libstdc++-v3/include/ext/algorithm
  83dc44a1b8d1e6ed90437c82cf690fb2  libstdc++-v3/include/ext/aligned_buffer.h
  23892e9f301f0560fa5a65524d6ccce8  libstdc++-v3/include/ext/alloc_traits.h
*************** b90fbbe6e940cea4a731cd275fb70569  libstd
*** 67210,67216 ****
  dfac97b5e147bf50c08bed8978d461ac  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
  1ecb49dcd7c25be4e9be4fd5a9c2120f  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
  ee9075343deffe870db9bd287f865a78  libstdc++-v3/include/ext/pod_char_traits.h
! 6e322a7669dc88b1856b3f4a498bdce6  libstdc++-v3/include/ext/pointer.h
  4b0c229b17c5024a79d34a227f92eb17  libstdc++-v3/include/ext/pool_allocator.h
  9b9288fead35c66104b43f737baeb18f  libstdc++-v3/include/ext/random
  fd71d3354afc6498bebd608f9dc0743f  libstdc++-v3/include/ext/random.tcc
--- 67630,67636 ----
  dfac97b5e147bf50c08bed8978d461ac  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
  1ecb49dcd7c25be4e9be4fd5a9c2120f  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
  ee9075343deffe870db9bd287f865a78  libstdc++-v3/include/ext/pod_char_traits.h
! 7114f5c0d695dcafa2b21960cf79408f  libstdc++-v3/include/ext/pointer.h
  4b0c229b17c5024a79d34a227f92eb17  libstdc++-v3/include/ext/pool_allocator.h
  9b9288fead35c66104b43f737baeb18f  libstdc++-v3/include/ext/random
  fd71d3354afc6498bebd608f9dc0743f  libstdc++-v3/include/ext/random.tcc
*************** a4dbaed45302898059965a2536fa70f6  libstd
*** 67309,67326 ****
  da95e16cd816137a117a75edcdfa7edb  libstdc++-v3/include/profile/unordered_set
  77784a11757398ad33c59f0b97deb272  libstdc++-v3/include/profile/vector
  6888850646b32f4cf5d7acbcdf814e62  libstdc++-v3/include/std/algorithm
! 925a427ddfc7a02e56ea97c611bb220a  libstdc++-v3/include/std/any
  2fd954e55939b25cd70cd8e2ba3bcb61  libstdc++-v3/include/std/array
  3b19e6f709a310e8cb3fb34a67cb2564  libstdc++-v3/include/std/atomic
  6b7c7fb7392b2a53b55c6c59aea6e9a1  libstdc++-v3/include/std/bitset
! cc4a69d45540fb00fc8a9c33993eb163  libstdc++-v3/include/std/chrono
  2079367f26eb6ecbf88c729bae106bab  libstdc++-v3/include/std/codecvt
  e004f290d6fad2e43cdc9d1478eb83e9  libstdc++-v3/include/std/complex
! 96dbebb6aa26138358e8a54b47c1fa22  libstdc++-v3/include/std/condition_variable
  b0cd6fcf5dc0fded5a263b5865e4e932  libstdc++-v3/include/std/deque
  8668416873a553aa57dcecd62a2487e7  libstdc++-v3/include/std/forward_list
  a7aee3f016d82cb2f6be6e5b3e3696c2  libstdc++-v3/include/std/fstream
! 9a02ef3f94dbc384243a013e494eaf18  libstdc++-v3/include/std/functional
  4f7515c35db442bcbb61ff2532ed0250  libstdc++-v3/include/std/future
  4f1e1d55ed5c7afb6862631176f4d2da  libstdc++-v3/include/std/iomanip
  725e92945a7552b69a75a4290b375f2f  libstdc++-v3/include/std/ios
--- 67729,67746 ----
  da95e16cd816137a117a75edcdfa7edb  libstdc++-v3/include/profile/unordered_set
  77784a11757398ad33c59f0b97deb272  libstdc++-v3/include/profile/vector
  6888850646b32f4cf5d7acbcdf814e62  libstdc++-v3/include/std/algorithm
! 29899d90d2ab2ab031ca73de4f61f1a9  libstdc++-v3/include/std/any
  2fd954e55939b25cd70cd8e2ba3bcb61  libstdc++-v3/include/std/array
  3b19e6f709a310e8cb3fb34a67cb2564  libstdc++-v3/include/std/atomic
  6b7c7fb7392b2a53b55c6c59aea6e9a1  libstdc++-v3/include/std/bitset
! a32cc391f2707982c886e9dd58f13469  libstdc++-v3/include/std/chrono
  2079367f26eb6ecbf88c729bae106bab  libstdc++-v3/include/std/codecvt
  e004f290d6fad2e43cdc9d1478eb83e9  libstdc++-v3/include/std/complex
! 9cd762069738f28f609467c1644e40ad  libstdc++-v3/include/std/condition_variable
  b0cd6fcf5dc0fded5a263b5865e4e932  libstdc++-v3/include/std/deque
  8668416873a553aa57dcecd62a2487e7  libstdc++-v3/include/std/forward_list
  a7aee3f016d82cb2f6be6e5b3e3696c2  libstdc++-v3/include/std/fstream
! 9595fd61b4e4f6eea6ac93a2b3511a1f  libstdc++-v3/include/std/functional
  4f7515c35db442bcbb61ff2532ed0250  libstdc++-v3/include/std/future
  4f1e1d55ed5c7afb6862631176f4d2da  libstdc++-v3/include/std/iomanip
  725e92945a7552b69a75a4290b375f2f  libstdc++-v3/include/std/ios
*************** e0a4548de9093e17fdf9856c2fdc7b79  libstd
*** 67351,67365 ****
  20e8a1fc62a35b5cc7340e0e12ecba4e  libstdc++-v3/include/std/string
  bf5ded1efef787ab2440841905194bab  libstdc++-v3/include/std/string_view
  a569fc432fea0bae0eaadadd533bab4d  libstdc++-v3/include/std/system_error
! 64b99affdc53c9426f0e2950ece2c508  libstdc++-v3/include/std/thread
  c8e93fdd89a112f0c50b9ff87fb63e33  libstdc++-v3/include/std/tuple
! 78d2d49327da08807070e9cde6f0583e  libstdc++-v3/include/std/type_traits
  f6db2f6c313ce30896ebd0ef7fdcd816  libstdc++-v3/include/std/typeindex
  5c1f0d70746c520f9a2aa5aa363b6851  libstdc++-v3/include/std/unordered_map
  40af560d2f7d91fbc5ddfe9099e959ec  libstdc++-v3/include/std/unordered_set
! 8ce5bbe44709366d0eee3f841a0da019  libstdc++-v3/include/std/utility
  9dc6c211c3503697170d85aec9d3ef37  libstdc++-v3/include/std/valarray
! 3464d609eb4c5efa826e1ad1920616dd  libstdc++-v3/include/std/variant
  524416117d96559514029824ea8182fc  libstdc++-v3/include/std/vector
  98a03c40ae073a2c2bdc2b7b42c65bc4  libstdc++-v3/include/tr1/array
  ac8f2f0647f302709bfae97d9408d6fe  libstdc++-v3/include/tr1/bessel_function.tcc
--- 67771,67785 ----
  20e8a1fc62a35b5cc7340e0e12ecba4e  libstdc++-v3/include/std/string
  bf5ded1efef787ab2440841905194bab  libstdc++-v3/include/std/string_view
  a569fc432fea0bae0eaadadd533bab4d  libstdc++-v3/include/std/system_error
! f69fceef5a737abcb3947846de770a4b  libstdc++-v3/include/std/thread
  c8e93fdd89a112f0c50b9ff87fb63e33  libstdc++-v3/include/std/tuple
! 4b2266c9d97c10d039bec4d74d51994f  libstdc++-v3/include/std/type_traits
  f6db2f6c313ce30896ebd0ef7fdcd816  libstdc++-v3/include/std/typeindex
  5c1f0d70746c520f9a2aa5aa363b6851  libstdc++-v3/include/std/unordered_map
  40af560d2f7d91fbc5ddfe9099e959ec  libstdc++-v3/include/std/unordered_set
! f6e088d93d066b0d8fdee3e9b7fa8850  libstdc++-v3/include/std/utility
  9dc6c211c3503697170d85aec9d3ef37  libstdc++-v3/include/std/valarray
! 46bb1595e23d34bd14d4e22e6fe39c00  libstdc++-v3/include/std/variant
  524416117d96559514029824ea8182fc  libstdc++-v3/include/std/vector
  98a03c40ae073a2c2bdc2b7b42c65bc4  libstdc++-v3/include/tr1/array
  ac8f2f0647f302709bfae97d9408d6fe  libstdc++-v3/include/tr1/bessel_function.tcc
*************** d8e494e0091ed2bead495fdb09991397  libstd
*** 67383,67390 ****
  10195bba4fde5b2946619930717b0ba0  libstdc++-v3/include/tr1/ctype.h
  4fc9fad18df871b3954b2fff43c7c690  libstdc++-v3/include/tr1/cwchar
  b9099dfdf0a86d9a71b0ce5b4a2bd368  libstdc++-v3/include/tr1/cwctype
! d0734e50bbf893ccb83da46e2334cac6  libstdc++-v3/include/tr1/ell_integral.tcc
! 4d9e621971efaaaeda5cb5efd756485a  libstdc++-v3/include/tr1/exp_integral.tcc
  c7dc0c3bd7f9d1b4c1379bcc6bd12c32  libstdc++-v3/include/tr1/fenv.h
  7f2e242479913f124c54902afec75f56  libstdc++-v3/include/tr1/float.h
  dbe72e4155db1933751b68c910e9ddc0  libstdc++-v3/include/tr1/functional
--- 67803,67810 ----
  10195bba4fde5b2946619930717b0ba0  libstdc++-v3/include/tr1/ctype.h
  4fc9fad18df871b3954b2fff43c7c690  libstdc++-v3/include/tr1/cwchar
  b9099dfdf0a86d9a71b0ce5b4a2bd368  libstdc++-v3/include/tr1/cwctype
! 275256fe88fb2f7d8afd69cf5c791183  libstdc++-v3/include/tr1/ell_integral.tcc
! ce92851c213162cd94347fad0eec43a2  libstdc++-v3/include/tr1/exp_integral.tcc
  c7dc0c3bd7f9d1b4c1379bcc6bd12c32  libstdc++-v3/include/tr1/fenv.h
  7f2e242479913f124c54902afec75f56  libstdc++-v3/include/tr1/float.h
  dbe72e4155db1933751b68c910e9ddc0  libstdc++-v3/include/tr1/functional
*************** cf6842fa4dcad6fe5f6ae75491a85408  libstd
*** 67443,67449 ****
  41dcf2edb2b119ee834ae1e65ce5277a  libstdc++-v3/libsupc++/class_type_info.cc
  ef8f8200f041873163ec35e6e49757af  libstdc++-v3/libsupc++/cxxabi.h
  014e0058e7fc59771a9024655b0f7c2e  libstdc++-v3/libsupc++/cxxabi_forced.h
! 6c8386edc68eadd138db5128a69e11e3  libstdc++-v3/libsupc++/cxxabi_init_exception.h
  157788849745463dfb2ae186c33de61f  libstdc++-v3/libsupc++/del_op.cc
  d29c844a49ee2b98ccd4d3a734677e9f  libstdc++-v3/libsupc++/del_opa.cc
  75db5a46bc9e6d8fb76895a4033aa07c  libstdc++-v3/libsupc++/del_opant.cc
--- 67863,67869 ----
  41dcf2edb2b119ee834ae1e65ce5277a  libstdc++-v3/libsupc++/class_type_info.cc
  ef8f8200f041873163ec35e6e49757af  libstdc++-v3/libsupc++/cxxabi.h
  014e0058e7fc59771a9024655b0f7c2e  libstdc++-v3/libsupc++/cxxabi_forced.h
! 48db33ce6880f2e94bfb19f6968005ea  libstdc++-v3/libsupc++/cxxabi_init_exception.h
  157788849745463dfb2ae186c33de61f  libstdc++-v3/libsupc++/del_op.cc
  d29c844a49ee2b98ccd4d3a734677e9f  libstdc++-v3/libsupc++/del_opa.cc
  75db5a46bc9e6d8fb76895a4033aa07c  libstdc++-v3/libsupc++/del_opant.cc
*************** bde4f68c170f4beff56dc31f7decb918  libstd
*** 67477,67483 ****
  85a431763c225803407355407e15f4c0  libstdc++-v3/libsupc++/exception
  95f35b3fd84aeed75f6b3ba38fdbb828  libstdc++-v3/libsupc++/exception.h
  6ebaaaee1c66859a6ce6f69bb7bdbc1b  libstdc++-v3/libsupc++/exception_defines.h
! b6143b858d727119be8880cb82f340e6  libstdc++-v3/libsupc++/exception_ptr.h
  58090c5d9b0e17a29e8fa979d4541c9e  libstdc++-v3/libsupc++/function_type_info.cc
  8c3bfbd6c3190f6837dfd1deda603ca5  libstdc++-v3/libsupc++/fundamental_type_info.cc
  83d3dba8df558bf22d43525906846ec3  libstdc++-v3/libsupc++/guard.cc
--- 67897,67903 ----
  85a431763c225803407355407e15f4c0  libstdc++-v3/libsupc++/exception
  95f35b3fd84aeed75f6b3ba38fdbb828  libstdc++-v3/libsupc++/exception.h
  6ebaaaee1c66859a6ce6f69bb7bdbc1b  libstdc++-v3/libsupc++/exception_defines.h
! 9e41367bcfd5e139d4f75fadca0cd5fe  libstdc++-v3/libsupc++/exception_ptr.h
  58090c5d9b0e17a29e8fa979d4541c9e  libstdc++-v3/libsupc++/function_type_info.cc
  8c3bfbd6c3190f6837dfd1deda603ca5  libstdc++-v3/libsupc++/fundamental_type_info.cc
  83d3dba8df558bf22d43525906846ec3  libstdc++-v3/libsupc++/guard.cc
*************** d81ddfb1e28692d8ef2c2135dae7fa78  libstd
*** 67490,67496 ****
  bd99c0d8a06d268e563134d529a2c45e  libstdc++-v3/libsupc++/new
  283037887fc60ebb7ddfa5e91d9a7d87  libstdc++-v3/libsupc++/new_handler.cc
  1a4b29528e2f169a99c67aaf0f88270d  libstdc++-v3/libsupc++/new_op.cc
! 69132674b1b7165065412296b6aab947  libstdc++-v3/libsupc++/new_opa.cc
  fc2a500a9e1465fc1cf3f4f9a12ac866  libstdc++-v3/libsupc++/new_opant.cc
  364346ae155d03bc02a25397b28c37f2  libstdc++-v3/libsupc++/new_opnt.cc
  eaa47a7a65f377d212527d243afa4bab  libstdc++-v3/libsupc++/new_opv.cc
--- 67910,67916 ----
  bd99c0d8a06d268e563134d529a2c45e  libstdc++-v3/libsupc++/new
  283037887fc60ebb7ddfa5e91d9a7d87  libstdc++-v3/libsupc++/new_handler.cc
  1a4b29528e2f169a99c67aaf0f88270d  libstdc++-v3/libsupc++/new_op.cc
! 4a8d35bd946bd8492b475709ba25a0ca  libstdc++-v3/libsupc++/new_opa.cc
  fc2a500a9e1465fc1cf3f4f9a12ac866  libstdc++-v3/libsupc++/new_opant.cc
  364346ae155d03bc02a25397b28c37f2  libstdc++-v3/libsupc++/new_opnt.cc
  eaa47a7a65f377d212527d243afa4bab  libstdc++-v3/libsupc++/new_opv.cc
*************** e74a6fa1d9d5837ff23ea763eeed7bee  libstd
*** 67524,67530 ****
  f539df133567379ad0f1f9c3cb9a7981  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  42eba6becf26fb9be17456c725ee075c  libstdc++-v3/python/libstdcxx/v6/__init__.py
! e117d447dca4678394865369d094d9a2  libstdc++-v3/python/libstdcxx/v6/printers.py
  b890a88bda6bbf1918279d8fa2e0dc31  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  b1441422cec6381d9285b7681b666124  libstdc++-v3/scripts/check_compile
  533e594add6e79910b0e557ba690fac6  libstdc++-v3/scripts/check_performance
--- 67944,67950 ----
  f539df133567379ad0f1f9c3cb9a7981  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  42eba6becf26fb9be17456c725ee075c  libstdc++-v3/python/libstdcxx/v6/__init__.py
! badb8b9f16784b299ed63c3a595877c1  libstdc++-v3/python/libstdcxx/v6/printers.py
  b890a88bda6bbf1918279d8fa2e0dc31  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  b1441422cec6381d9285b7681b666124  libstdc++-v3/scripts/check_compile
  533e594add6e79910b0e557ba690fac6  libstdc++-v3/scripts/check_performance
*************** f1a84a17158780aaa37927191db4463a  libstd
*** 67540,67549 ****
  7579350b0ac0412cb42e9c354485ebd9  libstdc++-v3/scripts/testsuite_flags.in
  9e9f0243554b1721cc068bb43de27f4d  libstdc++-v3/src/Makefile.am
  17ee027fa28e0fbb74e9d7a61c9f8c79  libstdc++-v3/src/Makefile.in
! 14e63fa4b6f6c81e26d1d58208b827ab  libstdc++-v3/src/c++11/Makefile.am
! 18a15c6c59321ec82a3fa1f13fb8503c  libstdc++-v3/src/c++11/Makefile.in
  be1262939a9149c8d5b9884c8d64150f  libstdc++-v3/src/c++11/chrono.cc
! a6ad6bfb7cce19b9cdf432a0e30251b9  libstdc++-v3/src/c++11/codecvt.cc
  5d79a0dca046349bb089967f46eaa4de  libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc
  6d01231a6032635413a3a7d93dafa8d9  libstdc++-v3/src/c++11/compatibility-c++0x.cc
  c8bc837ba3d7cbd8094fc79b392e07b3  libstdc++-v3/src/c++11/compatibility-chrono.cc
--- 67960,67969 ----
  7579350b0ac0412cb42e9c354485ebd9  libstdc++-v3/scripts/testsuite_flags.in
  9e9f0243554b1721cc068bb43de27f4d  libstdc++-v3/src/Makefile.am
  17ee027fa28e0fbb74e9d7a61c9f8c79  libstdc++-v3/src/Makefile.in
! 7ce761e22fdebc3f0a63df3233308d6a  libstdc++-v3/src/c++11/Makefile.am
! 5042f0104c422e5fd31dadc37530fa72  libstdc++-v3/src/c++11/Makefile.in
  be1262939a9149c8d5b9884c8d64150f  libstdc++-v3/src/c++11/chrono.cc
! ddb91a0a0bd166376ac31a87bca529b6  libstdc++-v3/src/c++11/codecvt.cc
  5d79a0dca046349bb089967f46eaa4de  libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc
  6d01231a6032635413a3a7d93dafa8d9  libstdc++-v3/src/c++11/compatibility-c++0x.cc
  c8bc837ba3d7cbd8094fc79b392e07b3  libstdc++-v3/src/c++11/compatibility-chrono.cc
*************** d8952354976233ae7082081f9f010633  libstd
*** 67561,67567 ****
  5b9eae29f8aa4542af3707538957c782  libstdc++-v3/src/c++11/cow-wstring-io-inst.cc
  af7ddfb26650e65bc47ddd4e3146bfd4  libstdc++-v3/src/c++11/ctype.cc
  0ea31fbbd9e57715a881a4b0d0c8c3f6  libstdc++-v3/src/c++11/cxx11-hash_tr1.cc
! 1e6e86468d9d32d17028236b69d4b75b  libstdc++-v3/src/c++11/cxx11-ios_failure.cc
  89bda8c6a7932555f6510c6210d60ca2  libstdc++-v3/src/c++11/cxx11-locale-inst.cc
  26f160c8f85ad04f94bae8c7bafc9555  libstdc++-v3/src/c++11/cxx11-shim_facets.cc
  342274be0351e7c3faa7979bf856ca6d  libstdc++-v3/src/c++11/cxx11-stdexcept.cc
--- 67981,67987 ----
  5b9eae29f8aa4542af3707538957c782  libstdc++-v3/src/c++11/cow-wstring-io-inst.cc
  af7ddfb26650e65bc47ddd4e3146bfd4  libstdc++-v3/src/c++11/ctype.cc
  0ea31fbbd9e57715a881a4b0d0c8c3f6  libstdc++-v3/src/c++11/cxx11-hash_tr1.cc
! 8a66228dd0b8bf3fd5e797843643bd61  libstdc++-v3/src/c++11/cxx11-ios_failure.cc
  89bda8c6a7932555f6510c6210d60ca2  libstdc++-v3/src/c++11/cxx11-locale-inst.cc
  26f160c8f85ad04f94bae8c7bafc9555  libstdc++-v3/src/c++11/cxx11-shim_facets.cc
  342274be0351e7c3faa7979bf856ca6d  libstdc++-v3/src/c++11/cxx11-stdexcept.cc
*************** b4aba310092f1f08693ed07bc3fe9bc3  libstd
*** 67576,67582 ****
  7adba376349ded3382cedd437a15c2e8  libstdc++-v3/src/c++11/hash_c++0x.cc
  68e9ee4db41b5ee31e29e5cdbf88d812  libstdc++-v3/src/c++11/hashtable_c++0x.cc
  1e079ffbf9e351fede4e7213b012e962  libstdc++-v3/src/c++11/ios-inst.cc
! 2583e208a06879e8eb91ce6313fe4231  libstdc++-v3/src/c++11/ios.cc
  7b325d0f26fb4a55f821b787ae82ea5d  libstdc++-v3/src/c++11/iostream-inst.cc
  641ed463ddd69d352565c263d90920a3  libstdc++-v3/src/c++11/istream-inst.cc
  44f4effc20ee20c73762240f995055ad  libstdc++-v3/src/c++11/limits.cc
--- 67996,68002 ----
  7adba376349ded3382cedd437a15c2e8  libstdc++-v3/src/c++11/hash_c++0x.cc
  68e9ee4db41b5ee31e29e5cdbf88d812  libstdc++-v3/src/c++11/hashtable_c++0x.cc
  1e079ffbf9e351fede4e7213b012e962  libstdc++-v3/src/c++11/ios-inst.cc
! 3a92ce5f0d89b1baa5d2a3296c790056  libstdc++-v3/src/c++11/ios.cc
  7b325d0f26fb4a55f821b787ae82ea5d  libstdc++-v3/src/c++11/iostream-inst.cc
  641ed463ddd69d352565c263d90920a3  libstdc++-v3/src/c++11/istream-inst.cc
  44f4effc20ee20c73762240f995055ad  libstdc++-v3/src/c++11/limits.cc
*************** a4dc164db96e5ece091f218f4ce79d7f  libstd
*** 67594,67600 ****
  0e6bf4db4555292c3d4dbe5d9490874a  libstdc++-v3/src/c++11/streambuf-inst.cc
  cfd0b49101e78c596056b1adbfee200f  libstdc++-v3/src/c++11/string-inst.cc
  d1284956f5f69e2661ff4eee4d67fb51  libstdc++-v3/src/c++11/string-io-inst.cc
! 7d7b678dfcc05cee9bccbe04d1b4c6de  libstdc++-v3/src/c++11/system_error.cc
  d416f4f2c3cbb648bcb5ce3002f009fe  libstdc++-v3/src/c++11/thread.cc
  30ae62296480af830508a84e779c9d1a  libstdc++-v3/src/c++11/wlocale-inst.cc
  d769f7cbde4ecb0c32864dab96056b93  libstdc++-v3/src/c++11/wstring-inst.cc
--- 68014,68020 ----
  0e6bf4db4555292c3d4dbe5d9490874a  libstdc++-v3/src/c++11/streambuf-inst.cc
  cfd0b49101e78c596056b1adbfee200f  libstdc++-v3/src/c++11/string-inst.cc
  d1284956f5f69e2661ff4eee4d67fb51  libstdc++-v3/src/c++11/string-io-inst.cc
! a9c2b91096cc2c6c4d4502aaeeb4e070  libstdc++-v3/src/c++11/system_error.cc
  d416f4f2c3cbb648bcb5ce3002f009fe  libstdc++-v3/src/c++11/thread.cc
  30ae62296480af830508a84e779c9d1a  libstdc++-v3/src/c++11/wlocale-inst.cc
  d769f7cbde4ecb0c32864dab96056b93  libstdc++-v3/src/c++11/wstring-inst.cc
*************** b7292e7e7f434c380e2524198c4dbda5  libstd
*** 67616,67622 ****
  53f719df14fef3cd01a08ab04e5a4799  libstdc++-v3/src/c++98/hash-long-double-tr1-aux.cc
  18a868b150a5c289cc67173fbd8c4fb7  libstdc++-v3/src/c++98/hash_tr1.cc
  aca283ad357646766763d67f9c6d5b49  libstdc++-v3/src/c++98/hashtable_tr1.cc
! 8fa2415bbc21a3be6fdf8b343193f5c2  libstdc++-v3/src/c++98/ios_failure.cc
  6d87f5f1c00d96cfd3726324f982c4f9  libstdc++-v3/src/c++98/ios_init.cc
  1f4ea5e92f74ada450cc5fd775828b9f  libstdc++-v3/src/c++98/ios_locale.cc
  0e62bd5c9cc44ef94c1ca98fac0bafa8  libstdc++-v3/src/c++98/istream-string.cc
--- 68036,68042 ----
  53f719df14fef3cd01a08ab04e5a4799  libstdc++-v3/src/c++98/hash-long-double-tr1-aux.cc
  18a868b150a5c289cc67173fbd8c4fb7  libstdc++-v3/src/c++98/hash_tr1.cc
  aca283ad357646766763d67f9c6d5b49  libstdc++-v3/src/c++98/hashtable_tr1.cc
! 53704e13214bd020b022728a07eea4ac  libstdc++-v3/src/c++98/ios_failure.cc
  6d87f5f1c00d96cfd3726324f982c4f9  libstdc++-v3/src/c++98/ios_init.cc
  1f4ea5e92f74ada450cc5fd775828b9f  libstdc++-v3/src/c++98/ios_locale.cc
  0e62bd5c9cc44ef94c1ca98fac0bafa8  libstdc++-v3/src/c++98/istream-string.cc
*************** f73fdf94a017dc421c3bdb1ca09ef1a1  libstd
*** 67647,67653 ****
  5aecc6c41de6a04ff2cd492babba1f04  libstdc++-v3/src/filesystem/cow-ops.cc
  ce1d40dd59bfb48cea6af1fdc01e7ab6  libstdc++-v3/src/filesystem/cow-path.cc
  1933a4a539101653c6295fd6d8161483  libstdc++-v3/src/filesystem/dir.cc
! ed5a3a8ce9cdba423010d9d1356af71d  libstdc++-v3/src/filesystem/ops.cc
  1ea70560cb4013b899fb1b527be35030  libstdc++-v3/src/filesystem/path.cc
  3ab250976eb86f0ac1edc8b3f35b3449  libstdc++-v3/src/shared/hashtable-aux.cc
  eff68d13ec5ad1d4a63320b78a36a8b2  libstdc++-v3/testsuite/17_intro/freestanding.cc
--- 68067,68073 ----
  5aecc6c41de6a04ff2cd492babba1f04  libstdc++-v3/src/filesystem/cow-ops.cc
  ce1d40dd59bfb48cea6af1fdc01e7ab6  libstdc++-v3/src/filesystem/cow-path.cc
  1933a4a539101653c6295fd6d8161483  libstdc++-v3/src/filesystem/dir.cc
! 22ee86ac2744265d7b3b466c85a3d348  libstdc++-v3/src/filesystem/ops.cc
  1ea70560cb4013b899fb1b527be35030  libstdc++-v3/src/filesystem/path.cc
  3ab250976eb86f0ac1edc8b3f35b3449  libstdc++-v3/src/shared/hashtable-aux.cc
  eff68d13ec5ad1d4a63320b78a36a8b2  libstdc++-v3/testsuite/17_intro/freestanding.cc
*************** a05741b50f736591adc069c7244a103e  libstd
*** 67688,67693 ****
--- 68108,68114 ----
  8f2b580803b18ee679e34ee888753f21  libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc
  d68387ff0847a1819d716f6f13e011cf  libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc
  81ae9cc366ec1e08e14922ae6ed58093  libstdc++-v3/testsuite/18_support/50594.cc
+ e7b627512e533ba71656029c1be3f386  libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc
  a0aa80ca698f9e46814ff0429ec44921  libstdc++-v3/testsuite/18_support/bad_alloc/cons_virtual_derivation.cc
  4bbd46b813c0fc3fb2b370345304c9ac  libstdc++-v3/testsuite/18_support/bad_alloc/what.cc
  ac51907d867040adaf6117cf0b1a91bf  libstdc++-v3/testsuite/18_support/bad_cast/cons_virtual_derivation.cc
*************** d0e02b19cff96eede238cf5904dece07  libstd
*** 67698,67703 ****
--- 68119,68125 ----
  164ad05119abb492f5815dad9c226ff5  libstdc++-v3/testsuite/18_support/bad_exception/what.cc
  7b2ffa76c329f92294739c67c5a0c0f4  libstdc++-v3/testsuite/18_support/bad_typeid/cons_virtual_derivation.cc
  b8ab6128cbeb65189af7d5be270fc1cf  libstdc++-v3/testsuite/18_support/bad_typeid/what.cc
+ ce3aadc3e926c6bd327bf2d015a1f454  libstdc++-v3/testsuite/18_support/byte/81076.cc
  bec6dfcb09de858a29505df0f2f0aeb9  libstdc++-v3/testsuite/18_support/byte/global_neg.cc
  2aca3fd527f405b840b750d4d5d9b3fa  libstdc++-v3/testsuite/18_support/byte/ops.cc
  be76209c41ca34dea22ac462cb535682  libstdc++-v3/testsuite/18_support/byte/requirements.cc
*************** f7fb258c6b6c2063fcc6f060380fa5b5  libstd
*** 67767,67772 ****
--- 68189,68195 ----
  55d2e2c3a147ef4a5b8999c3f738c87c  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_if_nested.cc
  57dbba25b25cfb3ce897f27c42d6ee93  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_nested.cc
  d4197031f960113b36e123cfbe916859  libstdc++-v3/testsuite/18_support/nested_exception/throw_with_nested.cc
+ 15adcac45cc43ac7f4fcdde5d1f06302  libstdc++-v3/testsuite/18_support/new_aligned.cc
  011a53da2ba4870a619b8011a5bd1d80  libstdc++-v3/testsuite/18_support/new_delete_placement.cc
  06465a5707379b854eb1fa39610b03b3  libstdc++-v3/testsuite/18_support/new_handler.cc
  e839d6cb70a509b3e3d00e16b0045572  libstdc++-v3/testsuite/18_support/numeric_limits/29989.cc
*************** eec14789d50026c21cb0826bfbd5e37b  libstd
*** 67802,67809 ****
--- 68225,68234 ----
  f5d7e2c21bfbaf2cfd1b5ca66f842156  libstdc++-v3/testsuite/18_support/unexpected_handler.cc
  edb8e845450df8ffa6584977d4992fb3  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/copy_neg.cc
  6df3b6943cfa637673a22dcffe840501  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/default.cc
+ 287241f43ac73617879271520c2580d9  libstdc++-v3/testsuite/19_diagnostics/error_category/generic_category.cc
  0e407c7a1d97bf2dbb00154c188c7016  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/equal.cc
  9b676d39a082967ed8877f62cd19c22d  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/not_equal.cc
+ 47a1d673d341a1c01b1a51db19a60679  libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc
  06854341751708019589802ceee46e88  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc
  9d33671b8b43d660e652b0e82222fd7d  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc
  d9547b252ddb00cf10efb3dcc5c12846  libstdc++-v3/testsuite/19_diagnostics/error_code/is_error_code_v.cc
*************** df4fa8ef010d4fca972064a6e83e4db8  libstd
*** 67911,67920 ****
  6eb14dec3ecc152f576979da6c084904  libstdc++-v3/testsuite/20_util/any/cons/nontrivial.cc
  136c33cb00218360857886d5e07f386f  libstdc++-v3/testsuite/20_util/any/make_any.cc
  8d87e9a40ff5af1f9bde5a93888f33f1  libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc
! 2ea424453880a946b7d24f86868fe82d  libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc
  f47538cfe0f5fe3ca0c9b220558925d3  libstdc++-v3/testsuite/20_util/any/misc/any_cast_no_rtti.cc
  7ad55da7bbd6a46d3c6202b3051bba6c  libstdc++-v3/testsuite/20_util/any/misc/swap.cc
  4987af6733ce394d7e669122d5938718  libstdc++-v3/testsuite/20_util/any/modifiers/1.cc
  64606a652fb3bc7ffce712c4cdfa89f8  libstdc++-v3/testsuite/20_util/any/observers/type.cc
  682f81bf6b448b2613b83c048f5b41b1  libstdc++-v3/testsuite/20_util/any/requirements.cc
  b0015efa78667cd8262d36c385493d66  libstdc++-v3/testsuite/20_util/any/typedefs.cc
--- 68336,68346 ----
  6eb14dec3ecc152f576979da6c084904  libstdc++-v3/testsuite/20_util/any/cons/nontrivial.cc
  136c33cb00218360857886d5e07f386f  libstdc++-v3/testsuite/20_util/any/make_any.cc
  8d87e9a40ff5af1f9bde5a93888f33f1  libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc
! 767380f2ed0fed356e05bd83627f2451  libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc
  f47538cfe0f5fe3ca0c9b220558925d3  libstdc++-v3/testsuite/20_util/any/misc/any_cast_no_rtti.cc
  7ad55da7bbd6a46d3c6202b3051bba6c  libstdc++-v3/testsuite/20_util/any/misc/swap.cc
  4987af6733ce394d7e669122d5938718  libstdc++-v3/testsuite/20_util/any/modifiers/1.cc
+ 80a3eb7e136adbdc85856a81cde810d6  libstdc++-v3/testsuite/20_util/any/modifiers/83658.cc
  64606a652fb3bc7ffce712c4cdfa89f8  libstdc++-v3/testsuite/20_util/any/observers/type.cc
  682f81bf6b448b2613b83c048f5b41b1  libstdc++-v3/testsuite/20_util/any/requirements.cc
  b0015efa78667cd8262d36c385493d66  libstdc++-v3/testsuite/20_util/any/typedefs.cc
*************** ec8b4d75eb29de191b3f594a613c9dcb  libstd
*** 67992,68002 ****
  ea1cdeb76e38c810fb37864aa2c33aeb  libstdc++-v3/testsuite/20_util/duration/cons/54025.cc
  507a0568ae5e560981e716bba98e98f2  libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc
  fbaa937edc0105b6ee5eaf81bf887591  libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc
  be33cee2a34fe60ba253646b46743032  libstdc++-v3/testsuite/20_util/duration/cons/dr974_neg.cc
  12ed01ca34e25e6c15b05ab5e74dfef2  libstdc++-v3/testsuite/20_util/duration/literals/61166.cc
  e2a3457e5da5470658140011c8ffb7ee  libstdc++-v3/testsuite/20_util/duration/literals/65499.cc
  f11b5a7d64db419bf2305c0f433c638b  libstdc++-v3/testsuite/20_util/duration/literals/ns_detail.cc
! e44db0477aa210ca528f818e8dad32d7  libstdc++-v3/testsuite/20_util/duration/literals/range.cc
  4df193519da56bb3b9abe12b08236281  libstdc++-v3/testsuite/20_util/duration/literals/types.cc
  2e440747233ff3c0d09a865a6f48958d  libstdc++-v3/testsuite/20_util/duration/literals/values.cc
  8b9ebb830e3f48a3baf33c09de7b0906  libstdc++-v3/testsuite/20_util/duration/requirements/constexpr_functions.cc
--- 68418,68430 ----
  ea1cdeb76e38c810fb37864aa2c33aeb  libstdc++-v3/testsuite/20_util/duration/cons/54025.cc
  507a0568ae5e560981e716bba98e98f2  libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc
  fbaa937edc0105b6ee5eaf81bf887591  libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc
+ 61e43b1df702ebfb4f2a1470fa9edfe1  libstdc++-v3/testsuite/20_util/duration/cons/dr3050.cc
  be33cee2a34fe60ba253646b46743032  libstdc++-v3/testsuite/20_util/duration/cons/dr974_neg.cc
  12ed01ca34e25e6c15b05ab5e74dfef2  libstdc++-v3/testsuite/20_util/duration/literals/61166.cc
  e2a3457e5da5470658140011c8ffb7ee  libstdc++-v3/testsuite/20_util/duration/literals/65499.cc
+ c67d16d858b1ab66464b080d5c6d7691  libstdc++-v3/testsuite/20_util/duration/literals/84671.cc
  f11b5a7d64db419bf2305c0f433c638b  libstdc++-v3/testsuite/20_util/duration/literals/ns_detail.cc
! 5d3afe0612c9dbb77db1b75379788444  libstdc++-v3/testsuite/20_util/duration/literals/range_neg.cc
  4df193519da56bb3b9abe12b08236281  libstdc++-v3/testsuite/20_util/duration/literals/types.cc
  2e440747233ff3c0d09a865a6f48958d  libstdc++-v3/testsuite/20_util/duration/literals/values.cc
  8b9ebb830e3f48a3baf33c09de7b0906  libstdc++-v3/testsuite/20_util/duration/requirements/constexpr_functions.cc
*************** fda970289a618f86c009af0a7bd6fbda  libstd
*** 68085,68094 ****
  48340418d3167779e8b6284882765b49  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/forward.cc
  4662c5d1a8bd3df864321ccc3f0da527  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/refqual.cc
  f7f330564f815c31693ad0b18b33f67b  libstdc++-v3/testsuite/20_util/function_objects/not_fn/1.cc
  5e3c3ef1b2223f89f0cbacbdff9d203d  libstdc++-v3/testsuite/20_util/function_objects/searchers.cc
  ea6714838190e446cb75d29de67ad44d  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc
  a2bd8dff1afc22fe095906f947a4c52e  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc
! 9e6f0782abee0f4e7f914ce070f2c52a  libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc
  97702c6fa7c16b976c67b9619713d235  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/explicit_instantiation.cc
  6e5d7727f92af70d16ef6f9b6c56720a  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/typedefs.cc
  40e88b2214cb93945c3eb42786f3803c  libstdc++-v3/testsuite/20_util/has_virtual_destructor/value.cc
--- 68513,68523 ----
  48340418d3167779e8b6284882765b49  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/forward.cc
  4662c5d1a8bd3df864321ccc3f0da527  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/refqual.cc
  f7f330564f815c31693ad0b18b33f67b  libstdc++-v3/testsuite/20_util/function_objects/not_fn/1.cc
+ 3e550f832c9e1375fe02db2ca8f824e5  libstdc++-v3/testsuite/20_util/function_objects/not_fn/87538.cc
  5e3c3ef1b2223f89f0cbacbdff9d203d  libstdc++-v3/testsuite/20_util/function_objects/searchers.cc
  ea6714838190e446cb75d29de67ad44d  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc
  a2bd8dff1afc22fe095906f947a4c52e  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc
! c4c0928af94c8d4861358027300ed38c  libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc
  97702c6fa7c16b976c67b9619713d235  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/explicit_instantiation.cc
  6e5d7727f92af70d16ef6f9b6c56720a  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/typedefs.cc
  40e88b2214cb93945c3eb42786f3803c  libstdc++-v3/testsuite/20_util/has_virtual_destructor/value.cc
*************** aa89efb9f0f50c8ebadc0b74e842cd08  libstd
*** 68444,68449 ****
--- 68873,68880 ----
  f154bd215b7e5954daabfa426bafd04a  libstdc++-v3/testsuite/20_util/pair/44487.cc
  a69ca0844fbbd9bb16355ccceee5b325  libstdc++-v3/testsuite/20_util/pair/70437.cc
  2d4c79c749099bb0f784eb806c4db85d  libstdc++-v3/testsuite/20_util/pair/79141.cc
+ 2afac7486d8cd971ddfb494ffff9ebd4  libstdc++-v3/testsuite/20_util/pair/86751.cc
+ d6e6fc4ac0124122fbe6197386d82613  libstdc++-v3/testsuite/20_util/pair/87822.cc
  b65a48308960f16dfb5196003731a955  libstdc++-v3/testsuite/20_util/pair/astuple/astuple.cc
  237a0d3ecef674c5634547382f356eb7  libstdc++-v3/testsuite/20_util/pair/astuple/astuple_cpp14.cc
  be4ca7e99dc61c087515d597e9d46285  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get.cc
*************** cc74927d1a2af31a776543f932ca5daa  libstd
*** 68465,68470 ****
--- 68896,68902 ----
  17fac059fedc750d833a14ea8e429c5e  libstdc++-v3/testsuite/20_util/pair/noncopyable.cc
  9bf25252e4abce0a395f6c1dc7037eff  libstdc++-v3/testsuite/20_util/pair/piecewise.cc
  109267258de1c65e31e1ea2b84bc6a96  libstdc++-v3/testsuite/20_util/pair/piecewise2.cc
+ 01067985a76b33ca2500440d169dd32b  libstdc++-v3/testsuite/20_util/pair/ref_assign.cc
  c95b7a214d939a3ffe6ab56a5e8915ff  libstdc++-v3/testsuite/20_util/pair/requirements/dr2367.cc
  cb4debdbb58eb399bb1c4decc16e7154  libstdc++-v3/testsuite/20_util/pair/requirements/dr801.cc
  b4cc246589bc350b5b89dd28f1b120fc  libstdc++-v3/testsuite/20_util/pair/requirements/explicit_instantiation/1.cc
*************** bbeb0262e8fc3021525962c586df84ba  libstd
*** 68760,68765 ****
--- 69192,69198 ----
  82633c3d74050bc4fb78de5159e0aae6  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc
  80c4859db1f103d32ee165bcf3efd68d  libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc
  625a84ce4b90079054b81c60886122df  libstdc++-v3/testsuite/20_util/unique_ptr/cons/default.cc
+ bee7be33cdf693573fffc08c157838b9  libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc
  93b1dd6830ef574470a5e9163484bd38  libstdc++-v3/testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc
  ebcbd0c12b03cde91df4fc58238af77e  libstdc++-v3/testsuite/20_util/unique_ptr/cons/nullptr.cc
  2b249dfe04a96bc65688477648d08f1c  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer.cc
*************** f5186295e269c819d05125030bebe0a3  libstd
*** 68847,68852 ****
--- 69280,69286 ----
  94bc91f0bcdb9fe9203e9946426297fb  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/7.cc
  d505a67e8a6d0e0ad9175eb672bb5f6f  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/79162.cc
  451d74335d2894a26a2b31ca7aa3be25  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc
+ ef4a199f82d30bb56c6c6a3ada1fc4fe  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/86138.cc
  f5da1e716eebc9cc85fca0e9c0a7258b  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc
  8ef3d6460e56560496e282c49ae76b11  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable.cc
  b51c1c92d7b3dc4ed705d0ef4ad3d6e5  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc
*************** bd613ce9080fd03b2e1ea1c43e9d8cf5  libstd
*** 68862,68872 ****
--- 69296,69308 ----
  7b808703eb82f1ae31f5c4a203d59d30  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/7.cc
  d505a67e8a6d0e0ad9175eb672bb5f6f  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/79162.cc
  cbbbabedcecccd44510ef377da5c3293  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc
+ 6286431a907526ccfe1e1699f2d01cc2  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/86138.cc
  7d22b0658735373d4bc76198dd8b24f7  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc
  313b21d61eaae2be3a7124aa8acdc7bc  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc
  a85694590fb56e0858e1067f23532abb  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc
  9dae37675bb2f8d447e7adbcf4a1e945  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc
  eb421929dadc0eed331bd9d6775ca3b8  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/noexcept_move_construct.cc
+ efc7075246d3a5ea24a31f4bca5e43f1  libstdc++-v3/testsuite/21_strings/basic_string/dr2268.cc
  805be3df93b281abb4e40ac3291f4fe2  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/1.cc
  326d734ce143b7c14533a2c495e8523f  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/2.cc
  43d77fdcb68454a95ce4e5844f671b7d  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/21674.cc
*************** e505758a44247eec916ac82a872721fc  libstd
*** 68883,68889 ****
  bb30ad30196b2dbf3526bdee52bb7fcf  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/58163.cc
  82ad1877b285c7d96f537bb828d5c9c2  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/empty.cc
  3cbfd3f349e0d95950a184560d687ecc  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/front_back.cc
! 277022b4bca82078aa66266083e4ce89  libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc
  e169a2b7d76e542a9af0f177da579211  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/1.cc
  f1122bd668294364b401ea4538b69b93  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/10.cc
  e67e906176a51982f70a8cbc1facac18  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/11.cc
--- 69319,69325 ----
  bb30ad30196b2dbf3526bdee52bb7fcf  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/58163.cc
  82ad1877b285c7d96f537bb828d5c9c2  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/empty.cc
  3cbfd3f349e0d95950a184560d687ecc  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/front_back.cc
! d2d7cdc0f44d35cb46f2e250b2450c9b  libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc
  e169a2b7d76e542a9af0f177da579211  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/1.cc
  f1122bd668294364b401ea4538b69b93  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/10.cc
  e67e906176a51982f70a8cbc1facac18  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/11.cc
*************** ead4d38555a56ac529ca512a092f3fb3  libstd
*** 68926,68937 ****
--- 69362,69377 ----
  c3e9d4457bf60a4d0d22241c5c381791  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/3.cc
  6c7f2f256874b40871c8a0ad14c054c1  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/4.cc
  ff79816f7440b16e1fa6e03fd856800c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/64657.cc
+ e2b9e5e53ba989281c8cd000699a1e99  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc
  0140e87d866153406e378b570002f9e0  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign.cc
+ dc19f01cfa471597e2bb1669333d57e0  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc
  474d3e409784ded1351b253052a2de5b  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/1.cc
  9ab70df11296fc0e0f2a617af4dfa9d7  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/2.cc
  e4007c16c7bb2e902f8c85ed33b6c67f  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/3.cc
  bb51e606898112d11abd68dd40cf793e  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc
+ bb668611b5d884bbce2f1c64592d2852  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc
  ce362d31c38a7de0cc9cdb3cdcf24666  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign.cc
+ b81360767448c4aa6140f19bdd3b0a31  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc
  887918cfb7a0ab27efec6d7e66ef6a78  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/1.cc
  367a2d3e296b8b1f797b0ef91a550d53  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/2.cc
  6d4c3cdfb5840700322f7db5ecbb4225  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/3.cc
*************** e7fe26986ca87986cd693cb7186a31ea  libstd
*** 68983,68988 ****
--- 69423,69429 ----
  58f8131efef73c3284108657ab31ced9  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc
  da3f700a53d22cd029a604673e059e11  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/1.cc
  9c862000398e6a89b8c4cc17fe666c2c  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/2.cc
+ cd4be1e70ba77f729f7e4b87f5cc815b  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/86169.cc
  ca74682c72cb547cf309e380caad822d  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/1.cc
  896589bdc779441eea34071f745eaa6f  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc
  d692a2fe1964e799ff615e00151d1157  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/1.cc
*************** b59930931ab0756e3a99b900cbadf303  libstd
*** 69170,69179 ****
  b401b5f49d27dcc14cb2f8fc5518ad0a  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
  0232727b4ef5f9d7a55164d70075af2c  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
  628c9c274f07e7d0786e137d7b120f6d  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc
! e83af2cbebdce1cc9de5eb30d07bdb89  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc
  6d036cd16e2b152bc495f87d19ba75b6  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
  48a19c06bd558fc0cc79f04b6eba976d  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
  500466916bb7a5a259c23b63a48eebe7  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc
  3d51239abfc192aa54efb3f697b04b80  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/66855.cc
  bc8366ae0b770af4ad2295e1b00ae27b  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
  9fa291011214705ff29b9c858d91395f  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
--- 69611,69621 ----
  b401b5f49d27dcc14cb2f8fc5518ad0a  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
  0232727b4ef5f9d7a55164d70075af2c  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
  628c9c274f07e7d0786e137d7b120f6d  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc
! cac79d7f58bbcb9f7d78f17d687e9cab  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc
  6d036cd16e2b152bc495f87d19ba75b6  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
  48a19c06bd558fc0cc79f04b6eba976d  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
  500466916bb7a5a259c23b63a48eebe7  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc
+ 5a0ffd51408333daf5df0ac984db795d  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc
  3d51239abfc192aa54efb3f697b04b80  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/66855.cc
  bc8366ae0b770af4ad2295e1b00ae27b  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
  9fa291011214705ff29b9c858d91395f  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
*************** ac9fb9d428efc6382719d0f36ba26a60  libstd
*** 69604,69610 ****
  8b614c86f4e1c8ce921dc732654902fe  libstdc++-v3/testsuite/22_locale/num_put/requirements/typedefs.cc
  ce2128bd06a699b535efd78ef10635d6  libstdc++-v3/testsuite/22_locale/numpunct/members/char/1.cc
  c7cba287350a625f351b2badec5f7d33  libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc
! d065f8a62a8d6e0eab9a720a88f1069c  libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc
  c5b7adee6941e4cfd5d6cb694a15da98  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_1.cc
  63191b774c3a103c8b8f2b2a6e4acb4f  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_2.cc
  4274c168b34aecbf8091e327af5ac27f  libstdc++-v3/testsuite/22_locale/numpunct/members/char/wrapped_env.cc
--- 70046,70052 ----
  8b614c86f4e1c8ce921dc732654902fe  libstdc++-v3/testsuite/22_locale/num_put/requirements/typedefs.cc
  ce2128bd06a699b535efd78ef10635d6  libstdc++-v3/testsuite/22_locale/numpunct/members/char/1.cc
  c7cba287350a625f351b2badec5f7d33  libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc
! aff5bfe53bafb085acbe5789969e1cd4  libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc
  c5b7adee6941e4cfd5d6cb694a15da98  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_1.cc
  63191b774c3a103c8b8f2b2a6e4acb4f  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_2.cc
  4274c168b34aecbf8091e327af5ac27f  libstdc++-v3/testsuite/22_locale/numpunct/members/char/wrapped_env.cc
*************** dde3e6419372e0b9e1ab3ae9482425e4  libstd
*** 70201,70206 ****
--- 70643,70649 ----
  5ca5c0126b98755e2e32a441778a99fd  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/3.cc
  90557eb2bc6d0f0c1c82d048d3efe698  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/4.cc
  07668e6a1eee40e497786c72d14389c4  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/5.cc
+ 9568f0c5c8db814e1d0aaef7179f02c4  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/78595.cc
  5be4db28776168365a3f01530ebc5db8  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/83226.cc
  6c2c90c92edba30ad61881de7d942860  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/dr2354.cc
  d6d6d82e9873bee150a9ed98743149e0  libstdc++-v3/testsuite/23_containers/map/modifiers/insert_or_assign/1.cc
*************** adc9e7d5774fee9801c4b539fdbd14bc  libstd
*** 70275,70280 ****
--- 70718,70724 ----
  9afa4b5a796b4bf4b13cad08ce5c4ef4  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/22102.cc
  012a217f1c58e47207c7ad9c9fa99084  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/3.cc
  ebedf1934ae724c839bc938f16253add  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/4.cc
+ 1e49e8c89b8a7ee3f8525ef20149ad2b  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/78595.cc
  b17e02944400b5d2ebc916c1f616fcad  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/dr2354.cc
  8f854b79c6dd407a07eb18155add225b  libstdc++-v3/testsuite/23_containers/multimap/modifiers/merge.cc
  148675a742dcbe1163d9c8b2055e0174  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/1.cc
*************** b6f4581868c73819b031dc622deb92c0  libstd
*** 70428,70433 ****
--- 70872,70878 ----
  25aff770d38dbc27e598fcb7b69c4663  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/2.cc
  3d85637c097c32d88eddc787677e7415  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/3.cc
  8c6c597ed77aaa2774a7cbd66b7b5e34  libstdc++-v3/testsuite/23_containers/set/modifiers/merge.cc
+ af4905cc0038e25662ae26c1080fcfc5  libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc
  3647a470fe579bfc39ae88cfce2e86a3  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/1.cc
  d1e292bb1b4183b4abb31cf454a8ba6e  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/2.cc
  24450d8bfd4d0845c788c465b76fa2ed  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/3.cc
*************** d01f7b62e141c25c6e0c45fa2c9fb6b7  libstd
*** 70516,70521 ****
--- 70961,70967 ----
  e55764f0d9e6fd8c3324fd5229552392  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single_move-1.cc
  4e989101ea7c114e637862fb8789ea78  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single_move-2.cc
  b1fa65fa677a05fdb88f73f986a59a3f  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/61667.cc
+ 9dcfb9762f09be183b960c82c64a4ad4  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/78595.cc
  ff5a1259cd9c9f1577882ed1c825b3a5  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/emplace.cc
  7cd8667cf8bfe9c5035472829bd910d7  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/extract.cc
  1c48a58b349317f1e2153ca2ecbb5a1f  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc
*************** fb964737b362daea2fc3a11da7e3f8fc  libstd
*** 70603,70608 ****
--- 71049,71055 ----
  919a94919683fa7e28150db7b14f3ad7  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single.cc
  c2eb645323c50c1e64b27c10fb5e04df  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single_move-1.cc
  ac4d1ec01e6b05f1156a4a60938f2a8f  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single_move-2.cc
+ 97f34181465dd2a7ce28eb7c6f68299e  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/78595.cc
  b88584b513094874096913e57c10c3a8  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/emplace.cc
  3cbb8550716f2df28ca24d6fa5e22b63  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/extract.cc
  90b1112e5d5702e14a7d547b8d353ec6  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/merge.cc
*************** f340c3a6e2cd6e498b325f7e714bc3ef  libstd
*** 70709,70715 ****
  8b870764d9ddf5dd287fb44bebed57e4  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc
  f0523dd014a0de5fba9989508ec5a1cd  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/minimal.cc
  711a7ea46ae555e5eefe8a6b26445996  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move.cc
! 805bb61ccbc830de3fb419febea1d63f  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc
  ffeb5c515f7df57000cd0bf3419e43b5  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/noexcept.cc
  b62894c4f03284e25f9ea4ddbbfa6aa2  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/swap.cc
  f1afbc84a4009d117425f9e09cc61df5  libstdc++-v3/testsuite/23_containers/unordered_set/buckets/swap.cc
--- 71156,71162 ----
  8b870764d9ddf5dd287fb44bebed57e4  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc
  f0523dd014a0de5fba9989508ec5a1cd  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/minimal.cc
  711a7ea46ae555e5eefe8a6b26445996  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move.cc
! 67df3b45d5a9f55c352875a838710a61  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc
  ffeb5c515f7df57000cd0bf3419e43b5  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/noexcept.cc
  b62894c4f03284e25f9ea4ddbbfa6aa2  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/swap.cc
  f1afbc84a4009d117425f9e09cc61df5  libstdc++-v3/testsuite/23_containers/unordered_set/buckets/swap.cc
*************** aa62b06275a03423f2b536c364b9a38b  libstd
*** 70812,70817 ****
--- 71259,71265 ----
  5ab5bebd698126090156af350dd4bc32  libstdc++-v3/testsuite/23_containers/vector/bool/23632.cc
  5d549272dad88e955961d4f345255353  libstdc++-v3/testsuite/23_containers/vector/bool/6886.cc
  7b1affb04a9348622f2ac5f67130a233  libstdc++-v3/testsuite/23_containers/vector/bool/72847.cc
+ a1adbcfdf97c4f0e12db71ea6e4edd82  libstdc++-v3/testsuite/23_containers/vector/bool/80893.cc
  7cbb62e431dd25a455ca69698543863b  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/copy.cc
  92e4edca91210860c384e17b6a62eefb  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/copy_assign.cc
  3f61e5f2f4f84376344e09f2730412bb  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/ext_ptr.cc
*************** b8e47def7519098105bab276b3cabeb7  libstd
*** 70852,70857 ****
--- 71300,71306 ----
  7b685ccd59e8186e79f00f665aba8c4c  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/moveable.cc
  3caa2fe6830351f310ef92240d53dce4  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/moveable2.cc
  c0eb2ee9f3b0c304ed38a5841b236247  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/resize_size.cc
+ ee403fdcb93ecb4b122c34a4726c9eec  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc
  bbbc809383d96148c65c0a0906ce314c  libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc
  351b24be057edfd7c87284aa866e5f8b  libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit2.cc
  e222966616ccc5bb596d9c84cd2b8e20  libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc
*************** ff01ea2886a376dc7e73fffa0239a6ea  libstd
*** 70861,70866 ****
--- 71310,71316 ----
  0ff71d3b72826c808f6fffc721512ec1  libstdc++-v3/testsuite/23_containers/vector/cons/4.cc
  7a02016796167135c1969906fec17ef4  libstdc++-v3/testsuite/23_containers/vector/cons/55977.cc
  485c7597d8ccbfd3813357997aae9ddb  libstdc++-v3/testsuite/23_containers/vector/cons/6513.cc
+ 14d00e2a078c432ad11f61c1428c7694  libstdc++-v3/testsuite/23_containers/vector/cons/86292.cc
  7b7d7932a48427137dc07de2891b0f55  libstdc++-v3/testsuite/23_containers/vector/cons/clear_allocator.cc
  6cee276333e0ed87b4a1239ebc23bd63  libstdc++-v3/testsuite/23_containers/vector/cons/cons_size.cc
  1149f68be2cb7fade6ecca63a6167d1b  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
*************** ce2fd005f113b32f8eec3f6e9dd5b456  libstd
*** 71026,71031 ****
--- 71476,71482 ----
  fe95b4473b24cb3ac6eb9418d798b954  libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc
  0c3308060c757b4abef673568222944c  libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc
  2ad38c6926c4f5a9ece89717f3671820  libstdc++-v3/testsuite/24_iterators/reverse_iterator/71771.cc
+ 99c0d1364fa0dbea99e7ce16b4b3ed8b  libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr2188.cc
  0757b66183bb119a255e1f51e63ff0d6  libstdc++-v3/testsuite/24_iterators/reverse_iterator/greedy_ops.cc
  96f15c17b2bec668819a81c4fecff621  libstdc++-v3/testsuite/24_iterators/reverse_iterator/make.cc
  43520a65d969a091a68dd251e9d1a50b  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc
*************** dcf9e3aabbec16de1ac81f4079306eb8  libstd
*** 71630,71635 ****
--- 72081,72087 ----
  8886219e646ff670781d00cdebbb0db9  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/serialize.cc
  9cf2c8231e7837d1ab94d84e2ddec85f  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/requirements/explicit_instantiation/1.cc
  6ff62a03fcabfc668d8893c710421dad  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/requirements/typedefs.cc
+ 51401a37b01f5786eebfdeac5c29bde7  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/83833.cc
  6ae14552cba16e66f41e7f869b0c163e  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc
  831880fe630899fb74729457db8c4425  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/cons/parms.cc
  d5b2d1f6488f78c249f47c34ebad9494  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/equal.cc
*************** bf75222667f564d36e99a4a3fde11496  libstd
*** 71877,71882 ****
--- 72329,72335 ----
  f09ef3d1220061ace2536f1a44222e2a  libstdc++-v3/testsuite/26_numerics/valarray/33084.cc
  4ac4ba97e0919544681923e5c9c34797  libstdc++-v3/testsuite/26_numerics/valarray/40691.cc
  5cca4a3f9f688b2140c4baa6f61681a6  libstdc++-v3/testsuite/26_numerics/valarray/69116.cc
+ 76bc077d2525a3a48afe28e977dccdf2  libstdc++-v3/testsuite/26_numerics/valarray/87641.cc
  7486e25a099ee303399e0751f6e95409  libstdc++-v3/testsuite/26_numerics/valarray/algo.cc
  3e191d68e11822f58de5e4bd15365ca5  libstdc++-v3/testsuite/26_numerics/valarray/binary_closure.cc
  2fc5eb2a7638cb00cb207b8ad5cdff82  libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc
*************** a1cc8a09ea76999f08ff136019620a6f  libstd
*** 72143,72151 ****
  9cf6d42fcd74a1665a7f562963c9d1ee  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool.cc
  e2c7984be9d78e8b06cd5357f27507f7  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool_neg.cc
  1fdeca20c77b392350b4b6546a5b94f4  libstdc++-v3/testsuite/27_io/basic_ios/conv/voidptr.cc
! b004b6823e2973548a7dc6739683c822  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc
  a95d85e3144f9b1f3b000ec613e1f18b  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/2.cc
! 616118496b0625a6e1d76999b82b7c89  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc
  ba104177be92d2a0f4d294141e6d4fd9  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/2.cc
  438f0eb2d554a99445792dafd362506f  libstdc++-v3/testsuite/27_io/basic_ios/imbue/14072.cc
  6b6dc36b079dde2cdb115aac96cb3e21  libstdc++-v3/testsuite/27_io/basic_ios/locales/char/1.cc
--- 72596,72604 ----
  9cf6d42fcd74a1665a7f562963c9d1ee  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool.cc
  e2c7984be9d78e8b06cd5357f27507f7  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool_neg.cc
  1fdeca20c77b392350b4b6546a5b94f4  libstdc++-v3/testsuite/27_io/basic_ios/conv/voidptr.cc
! 4410d8d00aea4c979b9289feb530cc53  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc
  a95d85e3144f9b1f3b000ec613e1f18b  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/2.cc
! 654c28f799df9f8d4d25ca82beb4e752  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc
  ba104177be92d2a0f4d294141e6d4fd9  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/2.cc
  438f0eb2d554a99445792dafd362506f  libstdc++-v3/testsuite/27_io/basic_ios/imbue/14072.cc
  6b6dc36b079dde2cdb115aac96cb3e21  libstdc++-v3/testsuite/27_io/basic_ios/locales/char/1.cc
*************** b70b5488385833734b744f91efb3868f  libstd
*** 72174,72180 ****
  d2b6734aeb14cb9a97d5ad6e11c92d66  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/9555-ia.cc
  d026ba65fa8a50f71e3f55404fa3093e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/dr696.cc
  81974c983d69c97e576ea38f673066a3  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_badbit_throw.cc
! 33c15742b2de738970c3fcada4b0d03b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc
  67c798b2ee414f868e0260ad74d18d9e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit_throw.cc
  c10cbb39ae5b61c7905aea23b0b3e63f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/pod/3983-1.cc
  ccf8fb66aa03606ba6a826504fb5e76f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/01.cc
--- 72627,72633 ----
  d2b6734aeb14cb9a97d5ad6e11c92d66  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/9555-ia.cc
  d026ba65fa8a50f71e3f55404fa3093e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/dr696.cc
  81974c983d69c97e576ea38f673066a3  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_badbit_throw.cc
! 5446021b5708808724132b815eeed657  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc
  67c798b2ee414f868e0260ad74d18d9e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit_throw.cc
  c10cbb39ae5b61c7905aea23b0b3e63f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/pod/3983-1.cc
  ccf8fb66aa03606ba6a826504fb5e76f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/01.cc
*************** f3f39f34218d8043e160c90d0c027ea9  libstd
*** 72191,72197 ****
  345c9b083d734f4973c3c3a6be0ff299  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/9555-ia.cc
  099701248c50741261daccc1efeaf90d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/dr696.cc
  73295bab76b59277cb9851d3838345dd  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_badbit_throw.cc
! e1d2ad9049a78d75ef076d217b287d85  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc
  6847ae54dca4b4584d02d0bed3f37a83  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit_throw.cc
  13dc474b89be9d3cb2253bbe1d2e88db  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/1.cc
  63837a36ff85aa73ffc415e69c1cde93  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/11095-i.cc
--- 72644,72650 ----
  345c9b083d734f4973c3c3a6be0ff299  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/9555-ia.cc
  099701248c50741261daccc1efeaf90d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/dr696.cc
  73295bab76b59277cb9851d3838345dd  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_badbit_throw.cc
! 3fa4525a6973d66f39c513927b1aa103  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc
  6847ae54dca4b4584d02d0bed3f37a83  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit_throw.cc
  13dc474b89be9d3cb2253bbe1d2e88db  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/1.cc
  63837a36ff85aa73ffc415e69c1cde93  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/11095-i.cc
*************** f5d7db3328af2a762f613515325094de  libstd
*** 72218,72224 ****
  cf7dd3bfe4f8d0bed6bc1f3a3df7aafa  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/error_failbit.cc
  2a97d0d83e95c6c97172345447e3d72a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_badbit_throw.cc
  9db8c4b62ebfc6b32f48c0d3c2da6914  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_failbit_throw.cc
! 8998790044ef744ef9dc1e86447ce0d5  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc
  a1e912a6abc538be6ed95139200f4e78  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/pod/3983-3.cc
  af7cc40c23417586fdef443dd4a520a0  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/1.cc
  447ed7d54b5e3f6165d767ee9e8a3a8b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc
--- 72671,72677 ----
  cf7dd3bfe4f8d0bed6bc1f3a3df7aafa  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/error_failbit.cc
  2a97d0d83e95c6c97172345447e3d72a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_badbit_throw.cc
  9db8c4b62ebfc6b32f48c0d3c2da6914  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_failbit_throw.cc
! 87eef55d034d220ee5f166703d093982  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc
  a1e912a6abc538be6ed95139200f4e78  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/pod/3983-3.cc
  af7cc40c23417586fdef443dd4a520a0  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/1.cc
  447ed7d54b5e3f6165d767ee9e8a3a8b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc
*************** def5c95e15606880584181943db2094a  libstd
*** 72231,72237 ****
  ca0a73e9e47a6b52977de20aa928b816  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/error_failbit.cc
  c2e9a1c1409ccd3fe4e0615a2512b69d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_badbit_throw.cc
  e50336ae6b201fcf8fe463bc120e32aa  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_failbit_throw.cc
! bf40a04d9c256bfdd4b6579141e37893  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc
  d3196a2f01476ff40c8b4252e562f420  libstdc++-v3/testsuite/27_io/basic_istream/get/char/1.cc
  c710e4017794d6697cc57e92ecae519e  libstdc++-v3/testsuite/27_io/basic_istream/get/char/2.cc
  28214808aa4a650e0bac65b678cfe8fb  libstdc++-v3/testsuite/27_io/basic_istream/get/char/3.cc
--- 72684,72690 ----
  ca0a73e9e47a6b52977de20aa928b816  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/error_failbit.cc
  c2e9a1c1409ccd3fe4e0615a2512b69d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_badbit_throw.cc
  e50336ae6b201fcf8fe463bc120e32aa  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_failbit_throw.cc
! 1c41e1adc017da033cbcb3e2dea98558  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc
  d3196a2f01476ff40c8b4252e562f420  libstdc++-v3/testsuite/27_io/basic_istream/get/char/1.cc
  c710e4017794d6697cc57e92ecae519e  libstdc++-v3/testsuite/27_io/basic_istream/get/char/2.cc
  28214808aa4a650e0bac65b678cfe8fb  libstdc++-v3/testsuite/27_io/basic_istream/get/char/3.cc
*************** c67b6ac58e16a9040d78955ebd2a9e45  libstd
*** 72298,72310 ****
  9ba07bdc84308795a7ed8752e098f900  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc
  cbbb96f8f6f3bb4d97fb06a0ef1b4e61  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc
  33e57e8d8c8e79678723e2f4568a0929  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/1.cc
! fec4755b74fe2d740656fc564bd51222  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc
  ce11198fe6ac3b266b1a35e24672cd94  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/2.cc
  df75e99d93c7848f521f5cff3127c2cc  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/3.cc
  f2fcdbb63f9588d1f62cd3c82414f648  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/53984.cc
  ea9fb8a42395013926e3648a05e86af6  libstdc++-v3/testsuite/27_io/basic_istream/sentry/pod/1.cc
  744ae04a06db1139a9653e6de2b4b4f4  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/1.cc
! 99a436f05d02b3d0c13878354352f666  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc
  40e164ecc760d433ebd29932f0b01d2c  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/2.cc
  c2e523bec7effb0cc7aa6e80c978b855  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/3.cc
  3f86d71590eadb758d5e4fd030905491  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/1.cc
--- 72751,72763 ----
  9ba07bdc84308795a7ed8752e098f900  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc
  cbbb96f8f6f3bb4d97fb06a0ef1b4e61  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc
  33e57e8d8c8e79678723e2f4568a0929  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/1.cc
! 1f2e8ff23ef136d12d81952b7c6b6732  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc
  ce11198fe6ac3b266b1a35e24672cd94  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/2.cc
  df75e99d93c7848f521f5cff3127c2cc  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/3.cc
  f2fcdbb63f9588d1f62cd3c82414f648  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/53984.cc
  ea9fb8a42395013926e3648a05e86af6  libstdc++-v3/testsuite/27_io/basic_istream/sentry/pod/1.cc
  744ae04a06db1139a9653e6de2b4b4f4  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/1.cc
! 7b00759aa2bd6152393d17c4082f7b97  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc
  40e164ecc760d433ebd29932f0b01d2c  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/2.cc
  c2e523bec7effb0cc7aa6e80c978b855  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/3.cc
  3f86d71590eadb758d5e4fd030905491  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/1.cc
*************** d4d42629649beb2605d13c56b442173d  libstd
*** 72432,72438 ****
  9a7551fa45bca64c8a1211195454ea3c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_failbit.cc
  89322e07fea6d663f2662d5c13239170  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_badbit_throw.cc
  713daedb1f91ab6968477c4c00163ca4  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_failbit_throw.cc
! 249ec6ec95a6053b6748d10d155ba046  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc
  d48be7cb40cbb7e1fea882d16d403a6f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc
  0a1233d41a3fa1440a97ffd262a00d8e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc
  138772424b09f06a1674463f99ea53aa  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/3.cc
--- 72885,72891 ----
  9a7551fa45bca64c8a1211195454ea3c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_failbit.cc
  89322e07fea6d663f2662d5c13239170  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_badbit_throw.cc
  713daedb1f91ab6968477c4c00163ca4  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_failbit_throw.cc
! 64865336b4949956fb2edacf89738311  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc
  d48be7cb40cbb7e1fea882d16d403a6f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc
  0a1233d41a3fa1440a97ffd262a00d8e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc
  138772424b09f06a1674463f99ea53aa  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/3.cc
*************** e043b36ba67421f3031efad869e29afe  libstd
*** 72446,72452 ****
  10fb6a77d8be8f69cbf3b1715b4ce24f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_failbit.cc
  f40027137571aec3b015d0b5371b48a9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_badbit_throw.cc
  a63545ec825e05cb7153b6dc7b6c8d3e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_failbit_throw.cc
! edec0bf78c31cbfd8c18e23876791b11  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc
  faa02dd655e05d72456fffb66966455e  libstdc++-v3/testsuite/27_io/basic_ostream/put/char/1.cc
  aa37f65270b8cc3df6289e6f17e76c03  libstdc++-v3/testsuite/27_io/basic_ostream/put/wchar_t/1.cc
  471c7a1289aa40875909c581a45bcf6b  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/base_classes.cc
--- 72899,72905 ----
  10fb6a77d8be8f69cbf3b1715b4ce24f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_failbit.cc
  f40027137571aec3b015d0b5371b48a9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_badbit_throw.cc
  a63545ec825e05cb7153b6dc7b6c8d3e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_failbit_throw.cc
! f0d47931892549f9bca3d2d60602e0d4  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc
  faa02dd655e05d72456fffb66966455e  libstdc++-v3/testsuite/27_io/basic_ostream/put/char/1.cc
  aa37f65270b8cc3df6289e6f17e76c03  libstdc++-v3/testsuite/27_io/basic_ostream/put/wchar_t/1.cc
  471c7a1289aa40875909c581a45bcf6b  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/base_classes.cc
*************** aac0b10f753645a0fd7ded2e94d10cd2  libstd
*** 72671,72676 ****
--- 73124,73130 ----
  f3b0f50b41267d10e6a5752172491482  libstdc++-v3/testsuite/27_io/ios_base/cons/copy_neg.cc
  ef6aef8a015852c2392c3b57dc3b7b42  libstdc++-v3/testsuite/27_io/ios_base/failure/cons_virtual_derivation.cc
  b6350439d59cd1e2b11b103ca093f7c9  libstdc++-v3/testsuite/27_io/ios_base/failure/cxx11.cc
+ 8cbb8959c6e521b24f215c42627c12cb  libstdc++-v3/testsuite/27_io/ios_base/failure/dual_abi.cc
  b271df431c96363d6ffd4985c54553a1  libstdc++-v3/testsuite/27_io/ios_base/failure/what-1.cc
  32c741d42a9ae1747b98aabd3a3bb011  libstdc++-v3/testsuite/27_io/ios_base/failure/what-2.cc
  c336289ddccab920a856e96810ae4d25  libstdc++-v3/testsuite/27_io/ios_base/failure/what-3.cc
*************** c336289ddccab920a856e96810ae4d25  libstd
*** 72678,72684 ****
  d379c99bed74b43ad7259f461e4538ac  libstdc++-v3/testsuite/27_io/ios_base/state/1.cc
  1690c6deb7e477136318c897f60bd9b2  libstdc++-v3/testsuite/27_io/ios_base/storage/1.cc
  875cbe67aa01d2cf265d719efaac5c99  libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
! fb891e57b47ab7878c3597d82f288810  libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc
  d58d7fe3808289362417a9dbaf18b33c  libstdc++-v3/testsuite/27_io/ios_base/storage/3.cc
  d7cc020076b0c67a379aeae4db14a13f  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/1.cc
  4544a13542b43c8e1651d7b983374663  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/16959.cc
--- 73132,73138 ----
  d379c99bed74b43ad7259f461e4538ac  libstdc++-v3/testsuite/27_io/ios_base/state/1.cc
  1690c6deb7e477136318c897f60bd9b2  libstdc++-v3/testsuite/27_io/ios_base/storage/1.cc
  875cbe67aa01d2cf265d719efaac5c99  libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
! cefa62e7ce8403b733de7a665f5b88e9  libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc
  d58d7fe3808289362417a9dbaf18b33c  libstdc++-v3/testsuite/27_io/ios_base/storage/3.cc
  d7cc020076b0c67a379aeae4db14a13f  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/1.cc
  4544a13542b43c8e1651d7b983374663  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/16959.cc
*************** a2611078a879223f6e909af630779f22  libstd
*** 72860,72865 ****
--- 73314,73320 ----
  eb6d7bdecc6f45ed67680323612f827e  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/flags.cc
  716acf020114b0061ce977ae998a2525  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/greedy.cc
  7f3eb9e8bb9790b3038bd637dadda05c  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc
+ ae7cc96a479268e856050fc8f30ab5fc  libstdc++-v3/testsuite/28_regex/basic_regex/85098.cc
  532fa6af17ce68e0f476f526935f85ff  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc
  8b053351e50b33b91421a0b84fa408c7  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring_op.cc
  cbe9df31ac56788b2b32c5455bf051d5  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/moveable.cc
*************** a490c3ce273d0995b7bb75b7b417f52d  libstd
*** 73029,73034 ****
--- 73484,73490 ----
  42f3ff24ba51b833e7daebdeaa727ddf  libstdc++-v3/testsuite/30_threads/async/42819.cc
  f185d119a70c51e2aff9198034f7e44b  libstdc++-v3/testsuite/30_threads/async/49668.cc
  cdccf8ed188a525a5f19c6841d51c2d8  libstdc++-v3/testsuite/30_threads/async/54297.cc
+ 438e93fc38ee0e403bb6c4927845922b  libstdc++-v3/testsuite/30_threads/async/84532.cc
  166501e7c7e71fdc1d01b278ef48166c  libstdc++-v3/testsuite/30_threads/async/any.cc
  efd9db236bf558f1ddfa806720f3c5c0  libstdc++-v3/testsuite/30_threads/async/async.cc
  b067789036ec4dcc560b59a2b071d405  libstdc++-v3/testsuite/30_threads/async/except.cc
*************** f867691eb52f67ce120b5bcb7a656bbe  libstd
*** 73051,73056 ****
--- 73507,73513 ----
  22e1d59af9f74ab4f6647a2959f2ba27  libstdc++-v3/testsuite/30_threads/condition_variable/members/2.cc
  4161f77db53fff7e360835bb30237233  libstdc++-v3/testsuite/30_threads/condition_variable/members/3.cc
  4aa24b3dbe99295ce2cd5341d272cd0a  libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc
+ e41d4c945b968438b8145284a8fc5b9a  libstdc++-v3/testsuite/30_threads/condition_variable/members/68519.cc
  9a8b186eaa4cff8cab1025382b2a7062  libstdc++-v3/testsuite/30_threads/condition_variable/native_handle/typesizes.cc
  5a2d8558c12ce10507331775f68026f4  libstdc++-v3/testsuite/30_threads/condition_variable/requirements/standard_layout.cc
  6c250eaf81078dfb4c4ec76fd92197aa  libstdc++-v3/testsuite/30_threads/condition_variable/requirements/typedefs.cc
*************** f52c2413a69d019b6445840858905133  libstd
*** 73244,73249 ****
--- 73701,73707 ----
  649e56148a840a909fe66d3aec72945b  libstdc++-v3/testsuite/30_threads/this_thread/58038.cc
  81c182185bd0c44e1005f1e4b8165d62  libstdc++-v3/testsuite/30_threads/this_thread/60421.cc
  8e9956406028554d634cbccb90bd3f0f  libstdc++-v3/testsuite/30_threads/thread/70503.cc
+ 93bd53539434e365957f83ef2b818d58  libstdc++-v3/testsuite/30_threads/thread/84532.cc
  a9eeaff2224f939adf8aa3a450b0790c  libstdc++-v3/testsuite/30_threads/thread/adl.cc
  ca28d952965a45797c55f613dc13b80d  libstdc++-v3/testsuite/30_threads/thread/cons/1.cc
  d36ac8d18fe2a752db48731b9a8e92eb  libstdc++-v3/testsuite/30_threads/thread/cons/2.cc
*************** aebeef13fe0ded6e91305cc09ad8d48a  libstd
*** 73486,73499 ****
  25b556ebfd34357f964ab02de11f8fc3  libstdc++-v3/testsuite/experimental/any/cons/aligned.cc
  bc2267c79c7db5cae0d9450e338e714a  libstdc++-v3/testsuite/experimental/any/cons/nontrivial.cc
  f07604fccc570f95ea130f8889734d92  libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc
! 047fe6582fc2c51ca61ac4ce781c0d54  libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
  7581ece498e2323f89f69a9ebf7b7b6b  libstdc++-v3/testsuite/experimental/any/misc/any_cast_no_rtti.cc
  fb7d818e3689f68fbc8be4dbd38e3b25  libstdc++-v3/testsuite/experimental/any/misc/swap.cc
  e5cac4e9683d2796e2423d7c962c52d0  libstdc++-v3/testsuite/experimental/any/modifiers/1.cc
  17a5fe7b0e6bd1e48f28e8343a8e0873  libstdc++-v3/testsuite/experimental/any/observers/type.cc
  878d9b4d82fffb8127b5ba52bd8c0eaf  libstdc++-v3/testsuite/experimental/any/typedefs.cc
  9fb3c90fb0538227094ef617e4537121  libstdc++-v3/testsuite/experimental/array/make_array.cc
! 0556aa2e76d74a6835a676a3491151f5  libstdc++-v3/testsuite/experimental/array/neg.cc
  41ebba83e0788f156aa9b1fa6415393d  libstdc++-v3/testsuite/experimental/chrono/value.cc
  c5f9129674182bd3a977a3061e17c5c5  libstdc++-v3/testsuite/experimental/deque/erasure.cc
  02455db47de7f16c8e2d1f2af4839fc7  libstdc++-v3/testsuite/experimental/feat-cxx14.cc
--- 73944,73957 ----
  25b556ebfd34357f964ab02de11f8fc3  libstdc++-v3/testsuite/experimental/any/cons/aligned.cc
  bc2267c79c7db5cae0d9450e338e714a  libstdc++-v3/testsuite/experimental/any/cons/nontrivial.cc
  f07604fccc570f95ea130f8889734d92  libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc
! d1ce452221433cce9f78ad729189beb9  libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
  7581ece498e2323f89f69a9ebf7b7b6b  libstdc++-v3/testsuite/experimental/any/misc/any_cast_no_rtti.cc
  fb7d818e3689f68fbc8be4dbd38e3b25  libstdc++-v3/testsuite/experimental/any/misc/swap.cc
  e5cac4e9683d2796e2423d7c962c52d0  libstdc++-v3/testsuite/experimental/any/modifiers/1.cc
  17a5fe7b0e6bd1e48f28e8343a8e0873  libstdc++-v3/testsuite/experimental/any/observers/type.cc
  878d9b4d82fffb8127b5ba52bd8c0eaf  libstdc++-v3/testsuite/experimental/any/typedefs.cc
  9fb3c90fb0538227094ef617e4537121  libstdc++-v3/testsuite/experimental/array/make_array.cc
! 76b377675df662e011c37b3f6f209ab3  libstdc++-v3/testsuite/experimental/array/neg.cc
  41ebba83e0788f156aa9b1fa6415393d  libstdc++-v3/testsuite/experimental/chrono/value.cc
  c5f9129674182bd3a977a3061e17c5c5  libstdc++-v3/testsuite/experimental/deque/erasure.cc
  02455db47de7f16c8e2d1f2af4839fc7  libstdc++-v3/testsuite/experimental/feat-cxx14.cc
*************** c8c3c10cfe4a4ec19105972449773ac5  libstd
*** 73518,73523 ****
--- 73976,73982 ----
  925d6f5727aa7e2b7176ac0362a32123  libstdc++-v3/testsuite/experimental/filesystem/operations/read_symlink.cc
  df350a2f65d9bbc779786eda2f6c877e  libstdc++-v3/testsuite/experimental/filesystem/operations/remove.cc
  3840d9d54ad2b3fd864459e22e9dbcfe  libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc
+ 1ecb7facd18a43c15be322da8c64e658  libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc
  670d520a087c857c6a69ed7c030610c6  libstdc++-v3/testsuite/experimental/filesystem/operations/status.cc
  011b195de292dfdeabba072fd5d00062  libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc
  3aa154dac714027477a6a8e51b297eb9  libstdc++-v3/testsuite/experimental/filesystem/path/append/path.cc
*************** d0f1fe3673436c926d017920c9c49b09  libstd
*** 73562,73567 ****
--- 74021,74027 ----
  9923b1e1685e16519c8986a7b4a561b6  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_stem.cc
  61435a1a6a298cc8741f295b51b8e0b7  libstdc++-v3/testsuite/experimental/filesystem/path/query/is_relative.cc
  87adc12cfc6e9a0ab5ef5025e90346e5  libstdc++-v3/testsuite/experimental/forward_list/erasure.cc
+ 38a3ec11692d8bc54b9b80675210fda7  libstdc++-v3/testsuite/experimental/functional/87538.cc
  2a51b747763a52edad58e8ec51e39a7e  libstdc++-v3/testsuite/experimental/functional/not_fn.cc
  dc01b1a82902cc8ccd0aa80bfd15b65d  libstdc++-v3/testsuite/experimental/functional/searchers.cc
  372f7a53ea0bc66429353e8bdcfee837  libstdc++-v3/testsuite/experimental/functional/value.cc
*************** a7c01bd9f6c330a5b4ff65540b1aa5c5  libstd
*** 73602,73609 ****
  d29cd708aa7a3631c5609769981ea24c  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/owner_before.cc
  53a4b61c6182c56640c02815665becbc  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/use_count.cc
  945505c1daa3651f75aac3abb82836ee  libstdc++-v3/testsuite/experimental/memory_resource/1.cc
  6411e7e2eb5d28ea505b455ec075c5db  libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
! 3d6e7f6395a9ea35eff04dc0a469940c  libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc
  6ffb7a2ced2a3c8b93406e76ab761edc  libstdc++-v3/testsuite/experimental/numeric/77801.cc
  b10dadd0aaf21af8fc2424241f710e00  libstdc++-v3/testsuite/experimental/numeric/gcd.cc
  af50993803ab949c47cea2c641c55919  libstdc++-v3/testsuite/experimental/numeric/lcm.cc
--- 74062,74070 ----
  d29cd708aa7a3631c5609769981ea24c  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/owner_before.cc
  53a4b61c6182c56640c02815665becbc  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/use_count.cc
  945505c1daa3651f75aac3abb82836ee  libstdc++-v3/testsuite/experimental/memory_resource/1.cc
+ 53d343d6ffb01123f090bc970ed1488c  libstdc++-v3/testsuite/experimental/memory_resource/70966.cc
  6411e7e2eb5d28ea505b455ec075c5db  libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
! e5c68086b3dfcc81fd40b2fd47087b85  libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc
  6ffb7a2ced2a3c8b93406e76ab761edc  libstdc++-v3/testsuite/experimental/numeric/77801.cc
  b10dadd0aaf21af8fc2424241f710e00  libstdc++-v3/testsuite/experimental/numeric/gcd.cc
  af50993803ab949c47cea2c641c55919  libstdc++-v3/testsuite/experimental/numeric/lcm.cc
*************** f264dc05717a448433f2f422bbf8082d  libstd
*** 73653,73673 ****
  5c9abcb00677efecf8a1d9cc8092b422  libstdc++-v3/testsuite/experimental/optional/requirements.cc
  f2e7784ab7e64f88e437fb6a087eca91  libstdc++-v3/testsuite/experimental/optional/swap/1.cc
  4a98bf23ea84c7db808c446d826d1c0d  libstdc++-v3/testsuite/experimental/optional/typedefs.cc
  4670441a07cd9c1e989ba6235cccc865  libstdc++-v3/testsuite/experimental/propagate_const/assignment/copy.cc
  a85c25426715cb0baac8111289b5dfda  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move.cc
! 3aa7b8e7b29c6a16f35fcacda21087f3  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc
  9c52605006fa3242b5388f8cfba52ad3  libstdc++-v3/testsuite/experimental/propagate_const/cons/copy.cc
  ba896e131c9d8a7942d6e69b6f3d055e  libstdc++-v3/testsuite/experimental/propagate_const/cons/default.cc
  17e3f72354c56e95ffe3803557b596a6  libstdc++-v3/testsuite/experimental/propagate_const/cons/move.cc
! 8c29bb492643d546ce72e3e616b6b46a  libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc
  9b12f06ec98483246f718d88e75c23e1  libstdc++-v3/testsuite/experimental/propagate_const/hash/1.cc
  fac3e7e4a96239f36935547ad7b717ef  libstdc++-v3/testsuite/experimental/propagate_const/observers/1.cc
  cdc2f6c8a0ad816a58a9fa5c12a6762e  libstdc++-v3/testsuite/experimental/propagate_const/relops/1.cc
  c7b0d997537d574f0b8ce96ac59f6e32  libstdc++-v3/testsuite/experimental/propagate_const/requirements1.cc
! 9c35d605021058ba45e9b415743194f8  libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc
! a260d11193efb01b645381becab951da  libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc
! 45bdd743e851ebd98f33dffbfd6a803a  libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc
! d53b74f70145293cc113bd8fa0ea1282  libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc
  011b913dccbaea519feca7a6f33bd51c  libstdc++-v3/testsuite/experimental/propagate_const/swap/1.cc
  e690022b354c37e2f122939b9575a0ba  libstdc++-v3/testsuite/experimental/propagate_const/typedefs.cc
  01acf130ad1e40287bd337fd77389589  libstdc++-v3/testsuite/experimental/random/randint.cc
--- 74114,74148 ----
  5c9abcb00677efecf8a1d9cc8092b422  libstdc++-v3/testsuite/experimental/optional/requirements.cc
  f2e7784ab7e64f88e437fb6a087eca91  libstdc++-v3/testsuite/experimental/optional/swap/1.cc
  4a98bf23ea84c7db808c446d826d1c0d  libstdc++-v3/testsuite/experimental/optional/typedefs.cc
+ c3f80752f52320876c9a0b11ff35c6e4  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc
+ d3ebecbaef5cd9c0d76022d2d3df886e  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_forward_list.cc
+ b35a82ac96d8d15c6addb38defbde427  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc
+ fbbf3e19ec56bfe247c1b72798c37be4  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc
+ 645d4bb24a232aa6eee174ac45d7e049  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc
+ 53070d7ca65a052b2d89b36ef3b5a0c0  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multimap.cc
+ a30c748b6a97d2c4892aa24a0fbc0880  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multiset.cc
+ c5abd4aafc3fec483cd95ebc344e712f  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc
+ 1454881d80946c5c551526a77ac7e7f1  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc
+ 3459b28c035970ee3708ac36f2ecd5f3  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_map.cc
+ b277f0762660cd139d817dfb988449ea  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multimap.cc
+ 6be113499615d2d17456cee5d87c54c1  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multiset.cc
+ 00b813fb6b7912a85bb70f5767ee23b9  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_set.cc
+ ea972918fe28408335e8d107add7ced2  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc
  4670441a07cd9c1e989ba6235cccc865  libstdc++-v3/testsuite/experimental/propagate_const/assignment/copy.cc
  a85c25426715cb0baac8111289b5dfda  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move.cc
! 5cc5d8b0facb6acb3b02fde6a1ddd236  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc
  9c52605006fa3242b5388f8cfba52ad3  libstdc++-v3/testsuite/experimental/propagate_const/cons/copy.cc
  ba896e131c9d8a7942d6e69b6f3d055e  libstdc++-v3/testsuite/experimental/propagate_const/cons/default.cc
  17e3f72354c56e95ffe3803557b596a6  libstdc++-v3/testsuite/experimental/propagate_const/cons/move.cc
! bec0ca31b8bdd69b5e5d7f11a88050f8  libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc
  9b12f06ec98483246f718d88e75c23e1  libstdc++-v3/testsuite/experimental/propagate_const/hash/1.cc
  fac3e7e4a96239f36935547ad7b717ef  libstdc++-v3/testsuite/experimental/propagate_const/observers/1.cc
  cdc2f6c8a0ad816a58a9fa5c12a6762e  libstdc++-v3/testsuite/experimental/propagate_const/relops/1.cc
  c7b0d997537d574f0b8ce96ac59f6e32  libstdc++-v3/testsuite/experimental/propagate_const/requirements1.cc
! 48f5dbf64074bf03ce7e5dadf205bb78  libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc
! ef0d78706023831baaa23ac7b8d1bfea  libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc
! 94fc388e80d5be554ab8f0749f7e690c  libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc
! dedbdd267e6fadc77959f3f3a80a199e  libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc
  011b913dccbaea519feca7a6f33bd51c  libstdc++-v3/testsuite/experimental/propagate_const/swap/1.cc
  e690022b354c37e2f122939b9575a0ba  libstdc++-v3/testsuite/experimental/propagate_const/typedefs.cc
  01acf130ad1e40287bd337fd77389589  libstdc++-v3/testsuite/experimental/random/randint.cc
*************** c86f25898c6e16cd4c2d52abe25cb304  libstd
*** 73782,73788 ****
  53bfbe76cb685fb52e9fb96a063091ea  libstdc++-v3/testsuite/ext/enc_filebuf/char/13189.cc
  d117bb2f62153d549219bd45906aff72  libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc
  7ebca8ce82e6b4861533d02053e10ccc  libstdc++-v3/testsuite/ext/enc_filebuf/wchar_t/13189.cc
! c33f550de3f7e0389f0a52d2e663b49d  libstdc++-v3/testsuite/ext/ext_pointer/1.cc
  708f5699ca06dd0a5e5de61de679e9c3  libstdc++-v3/testsuite/ext/ext_pointer/1_neg.cc
  17c2e916147ce6b58a59c4760f52ec1c  libstdc++-v3/testsuite/ext/forced_error/cons_virtual_derivation.cc
  6d1e9281af044308c1946fd872c6a6ae  libstdc++-v3/testsuite/ext/headers.cc
--- 74257,74263 ----
  53bfbe76cb685fb52e9fb96a063091ea  libstdc++-v3/testsuite/ext/enc_filebuf/char/13189.cc
  d117bb2f62153d549219bd45906aff72  libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc
  7ebca8ce82e6b4861533d02053e10ccc  libstdc++-v3/testsuite/ext/enc_filebuf/wchar_t/13189.cc
! 6845d9efc39ff71475e4452ae40aa949  libstdc++-v3/testsuite/ext/ext_pointer/1.cc
  708f5699ca06dd0a5e5de61de679e9c3  libstdc++-v3/testsuite/ext/ext_pointer/1_neg.cc
  17c2e916147ce6b58a59c4760f52ec1c  libstdc++-v3/testsuite/ext/forced_error/cons_virtual_derivation.cc
  6d1e9281af044308c1946fd872c6a6ae  libstdc++-v3/testsuite/ext/headers.cc
*************** abf940c8346c8152084cb741ff3c12a9  libstd
*** 74106,74112 ****
  c561aaafba68a412c0fcbb188ceb6720  libstdc++-v3/testsuite/ext/vstring/types/23767.cc
  97fa1835f363a0549d80ed378055af4b  libstdc++-v3/testsuite/lib/dg-options.exp
  67e00ef6f60d9db0c9d46c8e1322d7b5  libstdc++-v3/testsuite/lib/gdb-test.exp
! df0180ee87f7d9098f38e04164315966  libstdc++-v3/testsuite/lib/libstdc++.exp
  133d901bbdb0a071bd6535c8a3bf97f9  libstdc++-v3/testsuite/lib/prune.exp
  63f08bbcafa61ca275efe01883befc5b  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
  7392f6ac15c4a86fb8363784f1c1a34b  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
--- 74581,74587 ----
  c561aaafba68a412c0fcbb188ceb6720  libstdc++-v3/testsuite/ext/vstring/types/23767.cc
  97fa1835f363a0549d80ed378055af4b  libstdc++-v3/testsuite/lib/dg-options.exp
  67e00ef6f60d9db0c9d46c8e1322d7b5  libstdc++-v3/testsuite/lib/gdb-test.exp
! bb9fcaffdfbac8f68cfce7db45efdcf0  libstdc++-v3/testsuite/lib/libstdc++.exp
  133d901bbdb0a071bd6535c8a3bf97f9  libstdc++-v3/testsuite/lib/prune.exp
  63f08bbcafa61ca275efe01883befc5b  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
  7392f6ac15c4a86fb8363784f1c1a34b  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
*************** fc27bf1ab1d500fb32d2347b4f487c8f  libstd
*** 74249,74257 ****
  8b8b70f4faaf7a30355caa5ae6369f1b  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
  7aa907f3517ee9708a324e3aabed9e30  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
  2d9f5af28c8ff4b3ce67ee729a8772ff  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
! e618f6a5761d42733bc5466d2d975fbe  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
  1d308757ac069f98fb83d7a36e30adc3  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
  d43910005dccbb614be70a06bfff3d78  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
  123fd1016fb36246f73097ee9537aa69  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
  7ebbd654d0d20207938b63de82e23605  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
  b2d9627ce18a97d65ae25291630c2d32  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
--- 74724,74733 ----
  8b8b70f4faaf7a30355caa5ae6369f1b  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
  7aa907f3517ee9708a324e3aabed9e30  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
  2d9f5af28c8ff4b3ce67ee729a8772ff  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
! 8469eca74f2b1b3214c938e8d5daf679  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
  1d308757ac069f98fb83d7a36e30adc3  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
  d43910005dccbb614be70a06bfff3d78  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
+ d40969d8e7a8973cde9b227f9ce95961  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc
  123fd1016fb36246f73097ee9537aa69  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
  7ebbd654d0d20207938b63de82e23605  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
  b2d9627ce18a97d65ae25291630c2d32  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
*************** dfcdf8b0cc443c0547eecdb392c51ea1  libstd
*** 74278,74290 ****
  aaafbd501b34d007368584a7126a8e8c  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
  65cf1a11c787eea662ff5ae46614b98e  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
  ef289e1718b6e3153ef1ac0b5c64e4ff  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
! aa17ea610c4099ba57da5c4dd4c97455  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
  8a824c4dd0fd7bbf0c58601eaa17b7d1  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
  7c4d158a7760866b797c6ea2ed26fe2e  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
  fb7a0f2dc314e1cd301d96ce885580e8  libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
  5bc1e4e7d885bf4f8a3f0331fab7d21f  libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
  e1bf1110037c12d4b5fe3080a12b7934  libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
  1953e06c5522bdeb166c0652379849d9  libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
  438ce3269a06e0e7ab0461967fd50fc6  libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
  3fc1882d5fb1a0bc4ad769bbf047ba7e  libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
  bbcc9eba153d28a35ffab4c39d62d3ad  libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
--- 74754,74768 ----
  aaafbd501b34d007368584a7126a8e8c  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
  65cf1a11c787eea662ff5ae46614b98e  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
  ef289e1718b6e3153ef1ac0b5c64e4ff  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
! 7f43bae6a2434ec384a43ce0ce94e67c  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
  8a824c4dd0fd7bbf0c58601eaa17b7d1  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
  7c4d158a7760866b797c6ea2ed26fe2e  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
+ 51586062b3eeaebd7af37c198695dc60  libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc
  fb7a0f2dc314e1cd301d96ce885580e8  libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
  5bc1e4e7d885bf4f8a3f0331fab7d21f  libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
  e1bf1110037c12d4b5fe3080a12b7934  libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
  1953e06c5522bdeb166c0652379849d9  libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
+ b4e931d661a1d7b20ef0cf0550bb06c4  libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc
  438ce3269a06e0e7ab0461967fd50fc6  libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
  3fc1882d5fb1a0bc4ad769bbf047ba7e  libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
  bbcc9eba153d28a35ffab4c39d62d3ad  libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
*************** edc572ab47c08f6e3591c787126305a3  libstd
*** 74639,74647 ****
  ec0c59205937179b1b0608bd91be7706  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile.cc
  5c52c096634dc71c719889eda148dd60  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile_2.cc
  17832074b315f20428b54e6f7e9120a5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_nan.cc
! 9d56e7b7791b80b61a4c28e712ec31f0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc
  eef11b5621abca98821634c1d7326867  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile.cc
  b8b7e1eea58377a8effa610f2777a296  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile_2.cc
  47a6520dda9800debf950660fe941d02  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_nan.cc
  ee02f8a68a566485fc2a8e2bece31933  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc
  656b40a2b311fd49c1163b67f17dfb3a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile.cc
--- 75117,75126 ----
  ec0c59205937179b1b0608bd91be7706  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile.cc
  5c52c096634dc71c719889eda148dd60  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile_2.cc
  17832074b315f20428b54e6f7e9120a5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_nan.cc
! 994b69dfb9ab833036ef9878e880a875  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc
  eef11b5621abca98821634c1d7326867  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile.cc
  b8b7e1eea58377a8effa610f2777a296  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile_2.cc
+ 4618aff82312f2efbcdba760637d68b5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc
  47a6520dda9800debf950660fe941d02  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_nan.cc
  ee02f8a68a566485fc2a8e2bece31933  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc
  656b40a2b311fd49c1163b67f17dfb3a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile.cc
*************** e949b90453e91e5fbb3300fcb4f617bb  libstd
*** 74673,74686 ****
  9b440cdb74d7d8d3588a16818a6d67f3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile.cc
  64e87260c392f04b4e4858293473488f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile_2.cc
  2176220d1c04be8d9b12a8a5bdf5b36f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_nan.cc
! d598571ffff40e19058cdc78bb9af195  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc
  79654ee60a7cfb3526483ef855ce1fe8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile.cc
  ab6ea5638fb6c18cd2b4f30d55a2b050  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile_2.cc
  ef7bac17a7c76ab26013beec51198a01  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_nan.cc
  3042d082b6c3688231dedaf49e3d3098  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc
  56e526e739c5f7405b36c8b4ba968be6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_pos.cc
  5ba691d03eeea6e197986d9b745aaa05  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile.cc
  7b4c49dff96915f20767fef246051462  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile_2.cc
  fd464b771aeb41492c3fe08d27ee6989  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_nan.cc
  9cabe02a05288352222b9fddd08a4c64  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
  f2e09f58c7277fc370c608cd5541c423  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile.cc
--- 75152,75167 ----
  9b440cdb74d7d8d3588a16818a6d67f3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile.cc
  64e87260c392f04b4e4858293473488f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile_2.cc
  2176220d1c04be8d9b12a8a5bdf5b36f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_nan.cc
! b7441bd0ec8f5c96accbe09e35b6b3e3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc
  79654ee60a7cfb3526483ef855ce1fe8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile.cc
  ab6ea5638fb6c18cd2b4f30d55a2b050  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile_2.cc
+ b780a349356e83ff98346ea066a7c8c7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc
  ef7bac17a7c76ab26013beec51198a01  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_nan.cc
  3042d082b6c3688231dedaf49e3d3098  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc
  56e526e739c5f7405b36c8b4ba968be6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_pos.cc
  5ba691d03eeea6e197986d9b745aaa05  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile.cc
  7b4c49dff96915f20767fef246051462  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile_2.cc
+ 2d47837ef4c158d68ae64e4afeca0f61  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc
  fd464b771aeb41492c3fe08d27ee6989  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_nan.cc
  9cabe02a05288352222b9fddd08a4c64  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
  f2e09f58c7277fc370c608cd5541c423  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile.cc
*************** a005d02b8faa9e9f9e6bbb1a53b7d7e1  libstd
*** 74990,74996 ****
  12470e0d507e8abfc400268c2e173f81  libstdc++-v3/testsuite/util/testsuite_abi.h
  a38ea2309fe0c5158bad55b606d9bc1b  libstdc++-v3/testsuite/util/testsuite_abi_check.cc
  df5a311503fcd9da8201f171385cf9e1  libstdc++-v3/testsuite/util/testsuite_allocator.cc
! d7d27238eb4f876b14ffe95b6098fa61  libstdc++-v3/testsuite/util/testsuite_allocator.h
  8f7405d82a72aef4cedb8164995f8dc2  libstdc++-v3/testsuite/util/testsuite_api.h
  162e895b7ed295bf77bebd8c30ebb8ea  libstdc++-v3/testsuite/util/testsuite_character.cc
  8c3165664d2e9891a22b091b06ac1c01  libstdc++-v3/testsuite/util/testsuite_character.h
--- 75471,75477 ----
  12470e0d507e8abfc400268c2e173f81  libstdc++-v3/testsuite/util/testsuite_abi.h
  a38ea2309fe0c5158bad55b606d9bc1b  libstdc++-v3/testsuite/util/testsuite_abi_check.cc
  df5a311503fcd9da8201f171385cf9e1  libstdc++-v3/testsuite/util/testsuite_allocator.cc
! 3278348f4ea4186481e2cc40a631c7f2  libstdc++-v3/testsuite/util/testsuite_allocator.h
  8f7405d82a72aef4cedb8164995f8dc2  libstdc++-v3/testsuite/util/testsuite_api.h
  162e895b7ed295bf77bebd8c30ebb8ea  libstdc++-v3/testsuite/util/testsuite_character.cc
  8c3165664d2e9891a22b091b06ac1c01  libstdc++-v3/testsuite/util/testsuite_character.h
*************** ead7378c068848783ee20a8f22dfa62b  libstd
*** 75017,75028 ****
  534d202f4467aac0499eab3ddb5a842a  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  7a2b83d2d625a4022b9213ceb75f5897  libtool.m4
! 38266060135fc948746fe375a1694b92  libvtv/ChangeLog
  2e04be12600367e07451f404a7fc1fa3  libvtv/Makefile.am
  b025f16ebe06ec16aa2957e5003533a0  libvtv/Makefile.in
  4ce86f8604e6c86211a4cb2025ffc53e  libvtv/acinclude.m4
  1fadd2a7f8c12da8f434cd33e68d271e  libvtv/aclocal.m4
! ffc4cdfc7ce525009f1ea858b4ff6168  libvtv/configure
  2aea7477b332bb49b0bdb0be0c619c95  libvtv/configure.ac
  319e4840915cc447fe6c231fdcdb8a87  libvtv/configure.tgt
  2caccd848c579fcddd2a8c8106cfaff9  libvtv/scripts/run-testsuite.sh
--- 75498,75509 ----
  534d202f4467aac0499eab3ddb5a842a  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  7a2b83d2d625a4022b9213ceb75f5897  libtool.m4
! 54812e37c1a7dc1c3d11c80cc562052e  libvtv/ChangeLog
  2e04be12600367e07451f404a7fc1fa3  libvtv/Makefile.am
  b025f16ebe06ec16aa2957e5003533a0  libvtv/Makefile.in
  4ce86f8604e6c86211a4cb2025ffc53e  libvtv/acinclude.m4
  1fadd2a7f8c12da8f434cd33e68d271e  libvtv/aclocal.m4
! 6e8b32fb44d21c9f99b557771932f3be  libvtv/configure
  2aea7477b332bb49b0bdb0be0c619c95  libvtv/configure.ac
  319e4840915cc447fe6c231fdcdb8a87  libvtv/configure.tgt
  2caccd848c579fcddd2a8c8106cfaff9  libvtv/scripts/run-testsuite.sh
*************** cd997674ad70ed883d545f2687b35af2  libvtv
*** 75100,75106 ****
  8f1b5ecc552ea50355dedd9334c68ffb  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  4e65f2f6a05f5eca82ba79c6363aa3db  ltmain.sh
! e847bdf01e4df948cd33c7f4af35e6d5  lto-plugin/ChangeLog
  1d51b0f01f4db0f88d302ab0d691514e  lto-plugin/Makefile.am
  3bd8be597a6d5934a69399816aec878a  lto-plugin/Makefile.in
  b8a21afb1f79664ea28d8892b4907746  lto-plugin/aclocal.m4
--- 75581,75587 ----
  8f1b5ecc552ea50355dedd9334c68ffb  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  4e65f2f6a05f5eca82ba79c6363aa3db  ltmain.sh
! 66d7cc36273b19c0436f528560659379  lto-plugin/ChangeLog
  1d51b0f01f4db0f88d302ab0d691514e  lto-plugin/Makefile.am
  3bd8be597a6d5934a69399816aec878a  lto-plugin/Makefile.in
  b8a21afb1f79664ea28d8892b4907746  lto-plugin/aclocal.m4
*************** dee72a6a60e99528b0d17bf3ff9a1e15  ltopti
*** 75113,75119 ****
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! 0043f2b78dbc28d75762534df7293271  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
  e70ffb6559f8817db41ee1e69bc60287  maintainer-scripts/branch_changer.py
  36a1c429023c0a0c2f90889e6cf87125  maintainer-scripts/crontab
--- 75594,75600 ----
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! 7a98102cec1c886ca1316585d17457ce  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
  e70ffb6559f8817db41ee1e69bc60287  maintainer-scripts/branch_changer.py
  36a1c429023c0a0c2f90889e6cf87125  maintainer-scripts/crontab
*************** fbe2467afef81c41c166173adeb0ee20  mkdep
*** 75130,75136 ****
  cf2baa0854f564a7785307e79f155efc  symlink-tree
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! e7d180c40ff69055fd507a71877d0ea2  zlib/ChangeLog
  2effeeacadeab8edd2c3c4ae856f019d  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
--- 75611,75617 ----
  cf2baa0854f564a7785307e79f155efc  symlink-tree
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! 4bce06b51c5b0b5d0974a04869e2a515  zlib/ChangeLog
  2effeeacadeab8edd2c3c4ae856f019d  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
diff -Nrcpad gcc-7.3.0/NEWS gcc-7.4.0/NEWS
*** gcc-7.3.0/NEWS	Thu Jan 25 08:19:14 2018
--- gcc-7.4.0/NEWS	Thu Dec  6 09:59:16 2018
*************** http://gcc.gnu.org/gcc-7/index.html
*** 9,32 ****
  
                                GCC 7 Release Series
  
!    Jan 25, 2018
  
     The [1]GNU project and the GCC developers are pleased to announce the
!    release of GCC 7.3.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 7.2 relative to previous releases of GCC.
  
  Release History
  
     GCC 7.3
!           Jan 25, 2018 ([2]changes, [3]documentation)
  
     GCC 7.2
!           Aug 14, 2017 ([4]changes, [5]documentation)
  
     GCC 7.1
!           May 2, 2017 ([6]changes, [7]documentation)
  
  References and Acknowledgements
  
--- 9,35 ----
  
                                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
  
*************** References and Acknowledgements
*** 34,89 ****
     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
!    2018-01-25[20].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-7/changes.html
!    3. http://gcc.gnu.org/onlinedocs/7.3.0/
     4. http://gcc.gnu.org/gcc-7/changes.html
!    5. http://gcc.gnu.org/onlinedocs/7.2.0/
     6. http://gcc.gnu.org/gcc-7/changes.html
!    7. http://gcc.gnu.org/onlinedocs/7.1.0/
!    8. http://gcc.gnu.org/gcc-7/buildstat.html
!    9. http://gcc.gnu.org/onlinedocs/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. http://www.fsf.org/
!   19. https://gcc.gnu.org/about.html
!   20. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-7/changes.html
  
--- 37,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 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
  
*************** New Languages and Language specific impr
*** 223,231 ****
  
     Support for processing BRIG 1.0 files was added in this release. BRIG
     is a binary format for HSAIL (Heterogeneous System Architecture
!    Intermediate Language). The BRIG frontend can be used for implementing
     HSAIL "finalizers" (compilation of HSAIL to a native ISA) for
!    gcc-supported targets. An implementation of an HSAIL runtime library,
     libhsail-rt is also included.
  
    C family
--- 228,236 ----
  
     Support for processing BRIG 1.0 files was added in this release. BRIG
     is a binary format for HSAIL (Heterogeneous System Architecture
!    Intermediate Language). The BRIG front end can be used for implementing
     HSAIL "finalizers" (compilation of HSAIL to a native ISA) for
!    GCC-supported targets. An implementation of an HSAIL runtime library,
     libhsail-rt is also included.
  
    C family
*************** New Languages and Language specific impr
*** 271,277 ****
            + -Wduplicate-decl-specifier warns when a declaration has
              duplicate const, volatile, restrict or _Atomic specifier. This
              warning is enabled by -Wall.
!      * GCC 6's C and C++ frontends were able to offer suggestions for
         misspelled field names:
  
  spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did
--- 276,282 ----
            + -Wduplicate-decl-specifier warns when a declaration has
              duplicate const, volatile, restrict or _Atomic specifier. This
              warning is enabled by -Wall.
!      * GCC 6's C and C++ front ends were able to offer suggestions for
         misspelled field names:
  
  spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did
*************** gned'?
*** 314,320 ****
              ^~~~~~
              signed
  
!        and, in the C frontend, named initializers:
  
  test.c:7:20: error: 'struct s' has no member named 'colour'; did you mean 'color
  '?
--- 319,325 ----
              ^~~~~~
              signed
  
!        and, in the C front end, named initializers:
  
  test.c:7:20: error: 'struct s' has no member named 'colour'; did you mean 'color
  '?
*************** Fortran runtime error: Loop iterates inf
*** 743,755 ****
  
    Java (GCJ)
  
!    The GCC Java frontend and associated libjava runtime library have been
     removed from GCC.
  
  libgccjit
  
     The libgccjit API gained support for marking calls as requiring
!    tail-call optimization via a new entrypoint:
     [14]gcc_jit_rvalue_set_bool_require_tail_call.
  
     libgccjit performs numerous checks at the API boundary, but if these
--- 748,760 ----
  
    Java (GCJ)
  
!    The GCC Java front end and associated libjava runtime library have been
     removed from GCC.
  
  libgccjit
  
     The libgccjit API gained support for marking calls as requiring
!    tail-call optimization via a new entry point:
     [14]gcc_jit_rvalue_set_bool_require_tail_call.
  
     libgccjit performs numerous checks at the API boundary, but if these
*************** x-early-inliner-iterations'?
*** 1064,1070 ****
         to further improve the reliability of the compiler:
            + GCC now has an internal unit-testing API and a suite of tests
              for programmatic self-testing of subsystems.
!           + GCC's C frontend has been extended so that it can parse dumps
              of GCC's internal representations, allowing for DejaGnu tests
              that more directly exercise specific optimization passes. This
              covers both the [21]GIMPLE representation (for testing
--- 1069,1075 ----
         to further improve the reliability of the compiler:
            + GCC now has an internal unit-testing API and a suite of tests
              for programmatic self-testing of subsystems.
!           + GCC's C front end has been extended so that it can parse dumps
              of GCC's internal representations, allowing for DejaGnu tests
              that more directly exercise specific optimization passes. This
              covers both the [21]GIMPLE representation (for testing
*************** GCC 7.3
*** 1113,1138 ****
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
    Operating Systems
  
      RTEMS
  
       * Support has been added for Epiphany target.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [26]GCC manuals. If that fails, the
!     [27]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 [28]gcc@gcc.gnu.org. All of [29]our lists have public
      archives.
  
!    Copyright (C) [30]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 [31]maintained by the GCC team. Last modified
!    2018-01-23[32].
  
  References
  
--- 1118,1158 ----
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
+   Target Specific Changes
+ 
+     SPARC
+ 
+      * Workarounds for the four [26]LEON3FT errata GRLIB-TN-0010..0013
+        have been added. Relevant errata are activated by the target
+        specific -mfix-ut699, -mfix-ut700 and -mfix-gr712rc switches.
+ 
    Operating Systems
  
      RTEMS
  
       * Support has been added for Epiphany target.
  
+ GCC 7.4
+ 
+    This is the [27]list of problem reports (PRs) from GCC's bug tracking
+    system that are known to be fixed in the 7.4 release. This list might
+    not be complete (that is, it is possible that some PRs that have been
+    fixed are not listed here).
+ 
  
      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
  
*************** References
*** 1148,1154 ****
    10. https://gcc.gnu.org/projects/cxx-status.html#cxx1z
    11. http://wg21.link/p0136
    12. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/libstdc++/manual/using_dual_abi.html
!   13. http://www.openmp.org/specifications/
    14. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/jit/topics/expressions.html#gcc_jit_rvalue_set_bool_require_tail_call
    15. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/AArch64-Options.html#AArch64-Options
    16. https://gcc.gnu.org/install/configure.html
--- 1168,1174 ----
    10. https://gcc.gnu.org/projects/cxx-status.html#cxx1z
    11. http://wg21.link/p0136
    12. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/libstdc++/manual/using_dual_abi.html
!   13. https://www.openmp.org/specifications/
    14. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/jit/topics/expressions.html#gcc_jit_rvalue_set_bool_require_tail_call
    15. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/AArch64-Options.html#AArch64-Options
    16. https://gcc.gnu.org/install/configure.html
*************** References
*** 1161,1199 ****
    23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.0
    24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.2
    25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.3
!   26. https://gcc.gnu.org/onlinedocs/
!   27. mailto:gcc-help@gcc.gnu.org
!   28. mailto:gcc@gcc.gnu.org
!   29. https://gcc.gnu.org/lists.html
!   30. http://www.fsf.org/
!   31. https://gcc.gnu.org/about.html
!   32. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-6/index.html
  
                                GCC 6 Release Series
  
!    July 4, 2017
  
     The [1]GNU project and the GCC developers are pleased to announce the
!    release of GCC 6.4.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 6.3 relative to previous releases of GCC.
  
  Release History
  
     GCC 6.4
!           July 4, 2017 ([2]changes, [3]documentation)
  
     GCC 6.3
!           December 21, 2016 ([4]changes, [5]documentation)
  
     GCC 6.2
!           August 22, 2016 ([6]changes, [7]documentation)
  
     GCC 6.1
!           April 27, 2016 ([8]changes, [9]documentation)
  
  References and Acknowledgements
  
--- 1181,1224 ----
    23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.0
    24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.2
    25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.3
!   26. https://www.gaisler.com/index.php/information/app-tech-notes
!   27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.4
!   28. https://gcc.gnu.org/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
!    release of GCC 6.5.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 6.4 relative to previous releases of GCC.
  
  Release History
  
+    GCC 6.5
+           October 26, 2018 ([2]changes, [3]documentation)
+ 
     GCC 6.4
!           July 4, 2017 ([4]changes, [5]documentation)
  
     GCC 6.3
!           December 21, 2016 ([6]changes, [7]documentation)
  
     GCC 6.2
!           August 22, 2016 ([8]changes, [9]documentation)
  
     GCC 6.1
!           April 27, 2016 ([10]changes, [11]documentation)
  
  References and Acknowledgements
  
*************** References and Acknowledgements
*** 1201,1258 ****
     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
!    2017-07-04[22].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-6/changes.html
!    3. http://gcc.gnu.org/onlinedocs/6.4.0/
     4. http://gcc.gnu.org/gcc-6/changes.html
!    5. http://gcc.gnu.org/onlinedocs/6.3.0/
     6. http://gcc.gnu.org/gcc-6/changes.html
!    7. http://gcc.gnu.org/onlinedocs/6.2.0/
     8. http://gcc.gnu.org/gcc-6/changes.html
!    9. http://gcc.gnu.org/onlinedocs/6.1.0/
!   10. http://gcc.gnu.org/gcc-6/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. http://www.fsf.org/
!   21. https://gcc.gnu.org/about.html
!   22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-6/changes.html
  
--- 1226,1285 ----
     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 SVN server.
  
  
      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
!    2018-10-26[24].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-6/changes.html
!    3. http://gcc.gnu.org/onlinedocs/6.5.0/
     4. http://gcc.gnu.org/gcc-6/changes.html
!    5. http://gcc.gnu.org/onlinedocs/6.4.0/
     6. http://gcc.gnu.org/gcc-6/changes.html
!    7. http://gcc.gnu.org/onlinedocs/6.3.0/
     8. http://gcc.gnu.org/gcc-6/changes.html
!    9. http://gcc.gnu.org/onlinedocs/6.2.0/
!   10. http://gcc.gnu.org/gcc-6/changes.html
!   11. http://gcc.gnu.org/onlinedocs/6.1.0/
!   12. http://gcc.gnu.org/gcc-6/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/svn.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-6/changes.html
  
*************** Caveats
*** 1276,1281 ****
--- 1303,1315 ----
            + SH5 / SH64 (sh64-*-*) as announced [3]here.
       * The AVR port requires binutils version 2.26.1 or later for the fix
         for [4]PR71151 to work.
+      * The GCC 6.5 release has an accidental ABI incompatibility for
+        nested std::pair objects, for more details see [5]PR 87822. The bug
+        causes a layout change for pairs where the first member is also a
+        pair, e.g. std::pair<std::pair<X, Y>, Z>. The GCC 6 release series
+        is closed so the bug in GCC 6.5 will not be fixed upstream, but
+        there is a patch in the bug report to allow it to be fixed by
+        anybody packaging GCC 6.5 or installing it themselves.
  
  General Optimizer Improvements
  
*************** General Optimizer Improvements
*** 1351,1357 ****
  New Languages and Language specific improvements
  
     Compared to GCC 5, the GCC 6 release series includes a much improved
!    implementation of the [5]OpenACC 2.0a specification. Highlights are:
       * In addition to single-threaded host-fallback execution, offloading
         is supported for nvptx (Nvidia GPUs) on x86_64 and PowerPC 64-bit
         little-endian GNU/Linux host systems. For nvptx offloading, with
--- 1385,1391 ----
  New Languages and Language specific improvements
  
     Compared to GCC 5, the GCC 6 release series includes a much improved
!    implementation of the [6]OpenACC 2.0a specification. Highlights are:
       * In addition to single-threaded host-fallback execution, offloading
         is supported for nvptx (Nvidia GPUs) on x86_64 and PowerPC 64-bit
         little-endian GNU/Linux host systems. For nvptx offloading, with
*************** New Languages and Language specific impr
*** 1381,1392 ****
         argument, the function call evaluates to a compile-time constant
         value only for C and C++ but not for Fortran.
  
!    See the [6]OpenACC and [7]Offloading wiki pages for further
     information.
  
    C family
  
!      * Version 4.5 of the [8]OpenMP specification is now supported in the
         C and C++ compilers.
       * The C and C++ compilers now support attributes on enumerators. For
         instance, it is now possible to mark enumerators as deprecated:
--- 1415,1426 ----
         argument, the function call evaluates to a compile-time constant
         value only for C and C++ but not for Fortran.
  
!    See the [7]OpenACC and [8]Offloading wiki pages for further
     information.
  
    C family
  
!      * Version 4.5 of the [9]OpenMP specification is now supported in the
         C and C++ compilers.
       * The C and C++ compilers now support attributes on enumerators. For
         instance, it is now possible to mark enumerators as deprecated:
*************** you mean 'color'?
*** 1452,1458 ****
            + -Wmisleading-indentation warns about places where the
              indentation of the code gives a misleading idea of the block
              structure of the code to a human reader. For example, given
!             [9]CVE-2014-1266:
  
  sslKeyExchange.c: In function 'SSLVerifySignedServerKeyExchange':
  sslKeyExchange.c:629:3: warning: this 'if' clause does not guard... [-Wmisleadin
--- 1486,1492 ----
            + -Wmisleading-indentation warns about places where the
              indentation of the code gives a misleading idea of the block
              structure of the code to a human reader. For example, given
!             [10]CVE-2014-1266:
  
  sslKeyExchange.c: In function 'SSLVerifySignedServerKeyExchange':
  sslKeyExchange.c:629:3: warning: this 'if' clause does not guard... [-Wmisleadin
*************** test.c:3:1: error: version control confl
*** 1485,1495 ****
    C++
  
       * The default mode has been changed to -std=gnu++14.
!      * [10]C++ Concepts are now supported when compiling with -fconcepts.
       * -flifetime-dse is more aggressive in dead-store elimination in
         situations where a memory store to a location precedes a
         constructor to that memory location.
!      * G++ now supports [11]C++17 fold expressions, u8 character literals,
         extended static_assert, and nested namespace definitions.
       * G++ now allows constant evaluation for all non-type template
         arguments.
--- 1519,1529 ----
    C++
  
       * The default mode has been changed to -std=gnu++14.
!      * [11]C++ Concepts are now supported when compiling with -fconcepts.
       * -flifetime-dse is more aggressive in dead-store elimination in
         situations where a memory store to a location precedes a
         constructor to that memory location.
!      * G++ now supports [12]C++17 fold expressions, u8 character literals,
         extended static_assert, and nested namespace definitions.
       * G++ now allows constant evaluation for all non-type template
         arguments.
*************** libgccjit
*** 1549,1558 ****
       * The driver code is now run in-process within libgccjit, providing a
         small speed-up of the compilation process.
       * The API has gained entrypoints for
!           + [12]timing how long was spent in different parts of code,
!           + [13]creating switch statements,
!           + [14]allowing unreachable basic blocks in a function, and
!           + [15]adding arbitrary command-line options to a compilation.
  
  New Targets and Target Specific Improvements
  
--- 1583,1592 ----
       * The driver code is now run in-process within libgccjit, providing a
         small speed-up of the compilation process.
       * The API has gained entrypoints for
!           + [13]timing how long was spent in different parts of code,
!           + [14]creating switch statements,
!           + [15]allowing unreachable basic blocks in a function, and
!           + [16]adding arbitrary command-line options to a compilation.
  
  New Targets and Target Specific Improvements
  
*************** New Targets and Target Specific Improvem
*** 1570,1576 ****
         is limited to 28KiB under the LP64 SysV ABI, and 15KiB under the
         ILP32 SysV ABI.
       * The AArch64 port now supports target attributes and pragmas. Please
!        refer to the [16]documentation for details of available attributes
         and pragmas as well as usage instructions.
       * Link-time optimization across translation units with different
         target-specific options is now supported.
--- 1604,1610 ----
         is limited to 28KiB under the LP64 SysV ABI, and 15KiB under the
         ILP32 SysV ABI.
       * The AArch64 port now supports target attributes and pragmas. Please
!        refer to the [17]documentation for details of available attributes
         and pragmas as well as usage instructions.
       * Link-time optimization across translation units with different
         target-specific options is now supported.
*************** New Targets and Target Specific Improvem
*** 1628,1634 ****
         arm7tdmi is still supported. The values of -march that are
         deprecated are: armv2,armv2a,armv3,armv3m,armv4.
       * The ARM port now supports target attributes and pragmas. Please
!        refer to the [17]documentation for details of available attributes
         and pragmas as well as usage instructions.
       * Support has been added for the following processors (GCC
         identifiers in parentheses): ARM Cortex-A32 (cortex-a32), ARM
--- 1662,1668 ----
         arm7tdmi is still supported. The values of -march that are
         deprecated are: armv2,armv2a,armv3,armv3m,armv4.
       * The ARM port now supports target attributes and pragmas. Please
!        refer to the [18]documentation for details of available attributes
         and pragmas as well as usage instructions.
       * Support has been added for the following processors (GCC
         identifiers in parentheses): ARM Cortex-A32 (cortex-a32), ARM
*************** New Targets and Target Specific Improvem
*** 1678,1684 ****
       * Support for address spaces __seg_fs, __seg_gs, and __seg_tls. These
         can be used to access data via the %fs and %gs segments without
         having to resort to inline assembly. Please refer to the
!        [18]documentation for usage instructions.
       * Support for AMD Zen (family 17h) processors is now available
         through the -march=znver1 and -mtune=znver1 options.
  
--- 1712,1718 ----
       * Support for address spaces __seg_fs, __seg_gs, and __seg_tls. These
         can be used to access data via the %fs and %gs segments without
         having to resort to inline assembly. Please refer to the
!        [19]documentation for usage instructions.
       * Support for AMD Zen (family 17h) processors is now available
         through the -march=znver1 and -mtune=znver1 options.
  
*************** New Targets and Target Specific Improvem
*** 1806,1812 ****
         setting for that system. If GCC is unable to detect the host CPU
         these options have no effect.
       * The IBM z Systems port now supports target attributes and pragmas.
!        Please refer to the [19]documentation for details of available
         attributes and pragmas as well as usage instructions.
       * -fsplit-stack is now supported as part of the IBM z Systems port.
         This feature requires a recent gold linker to be used.
--- 1840,1846 ----
         setting for that system. If GCC is unable to detect the host CPU
         these options have no effect.
       * The IBM z Systems port now supports target attributes and pragmas.
!        Please refer to the [20]documentation for details of available
         attributes and pragmas as well as usage instructions.
       * -fsplit-stack is now supported as part of the IBM z Systems port.
         This feature requires a recent gold linker to be used.
*************** Operating Systems
*** 1845,1851 ****
  
    Linux
  
!      * Support for the [20]musl C library was added for the AArch64, ARM,
         MicroBlaze, MIPS, MIPS64, PowerPC, PowerPC64, SH, i386, x32 and
         x86_64 targets. It can be selected using the new -mmusl option in
         case musl is not the default libc. GCC defaults to musl libc if it
--- 1879,1885 ----
  
    Linux
  
!      * Support for the [21]musl C library was added for the AArch64, ARM,
         MicroBlaze, MIPS, MIPS64, PowerPC, PowerPC64, SH, i386, x32 and
         x86_64 targets. It can be selected using the new -mmusl option in
         case musl is not the default libc. GCC defaults to musl libc if it
*************** gcc: error: unrecognized command line op
*** 1896,1902 ****
  
                                      GCC 6.2
  
!    This is the [21]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 6.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 1930,1936 ----
  
                                      GCC 6.2
  
!    This is the [22]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 6.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** Target Specific Changes
*** 1912,1918 ****
  
                                      GCC 6.3
  
!    This is the [22]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 6.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 1946,1952 ----
  
                                      GCC 6.3
  
!    This is the [23]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 6.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** Target Specific Changes
*** 1921,1932 ****
  
    IA-32/x86-64
  
!      * Support for the [23]deprecated pcommit instruction has been
         removed.
  
                                      GCC 6.4
  
!    This is the [24]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 6.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 1955,1966 ----
  
    IA-32/x86-64
  
!      * Support for the [24]deprecated pcommit instruction has been
         removed.
  
                                      GCC 6.4
  
!    This is the [25]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 6.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** Operating Systems
*** 1937,1956 ****
  
       * The ABI changes on ARM so that no short enums are used by default.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [25]GCC manuals. If that fails, the
!     [26]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 [27]gcc@gcc.gnu.org. All of [28]our lists have public
      archives.
  
!    Copyright (C) [29]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 [30]maintained by the GCC team. Last modified
!    2017-07-04[31].
  
  References
  
--- 1971,1997 ----
  
       * The ABI changes on ARM so that no short enums are used by default.
  
+                                     GCC 6.5
+ 
+    This is the [26]list of problem reports (PRs) from GCC's bug tracking
+    system that are known to be fixed in the 6.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 [27]GCC manuals. If that fails, the
!     [28]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 [29]gcc@gcc.gnu.org. All of [30]our lists have public
      archives.
  
!    Copyright (C) [31]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 [32]maintained by the GCC team. Last modified
!    2018-10-31[33].
  
  References
  
*************** References
*** 1958,1990 ****
     2. http://gcc.gnu.org/onlinedocs/index.html#current
     3. https://gcc.gnu.org/ml/gcc/2015-08/msg00101.html
     4. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71151
!    5. https://www.openacc.org/
!    6. https://gcc.gnu.org/wiki/OpenACC
!    7. https://gcc.gnu.org/wiki/Offloading
!    8. http://www.openmp.org/specifications/
!    9. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-1266
!   10. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4377.pdf
!   11. https://gcc.gnu.org/projects/cxx-status.html#cxx1z
!   12. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/performance.html
!   13. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/functions.html#gcc_jit_block_end_with_switch
!   14. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/contexts.html#gcc_jit_context_set_bool_allow_unreachable_blocks
!   15. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/contexts.html#gcc_jit_context_add_command_line_option
!   16. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/AArch64-Function-Attributes.html#AArch64-Function-Attributes
!   17. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/ARM-Function-Attributes.html#ARM-Function-Attributes
!   18. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/Named-Address-Spaces.html#Named-Address-Spaces
!   19. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/S_002f390-Function-Attributes.html#S_002f390-Function-Attributes
!   20. http://www.musl-libc.org/
!   21. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.2
!   22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.3
!   23. https://software.intel.com/en-us/blogs/2016/09/12/deprecate-pcommit-instruction
!   24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.4
!   25. https://gcc.gnu.org/onlinedocs/
!   26. mailto:gcc-help@gcc.gnu.org
!   27. mailto:gcc@gcc.gnu.org
!   28. https://gcc.gnu.org/lists.html
!   29. http://www.fsf.org/
!   30. https://gcc.gnu.org/about.html
!   31. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-5/index.html
  
--- 1999,2033 ----
     2. http://gcc.gnu.org/onlinedocs/index.html#current
     3. https://gcc.gnu.org/ml/gcc/2015-08/msg00101.html
     4. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71151
!    5. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87822
!    6. https://www.openacc.org/
!    7. https://gcc.gnu.org/wiki/OpenACC
!    8. https://gcc.gnu.org/wiki/Offloading
!    9. https://www.openmp.org/specifications/
!   10. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-1266
!   11. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4377.pdf
!   12. https://gcc.gnu.org/projects/cxx-status.html#cxx1z
!   13. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/performance.html
!   14. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/functions.html#gcc_jit_block_end_with_switch
!   15. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/contexts.html#gcc_jit_context_set_bool_allow_unreachable_blocks
!   16. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/contexts.html#gcc_jit_context_add_command_line_option
!   17. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/AArch64-Function-Attributes.html#AArch64-Function-Attributes
!   18. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/ARM-Function-Attributes.html#ARM-Function-Attributes
!   19. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/Named-Address-Spaces.html#Named-Address-Spaces
!   20. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/S_002f390-Function-Attributes.html#S_002f390-Function-Attributes
!   21. http://www.musl-libc.org/
!   22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.2
!   23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.3
!   24. https://software.intel.com/en-us/blogs/2016/09/12/deprecate-pcommit-instruction
!   25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.4
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.5
!   27. https://gcc.gnu.org/onlinedocs/
!   28. mailto:gcc-help@gcc.gnu.org
!   29. mailto:gcc@gcc.gnu.org
!   30. https://gcc.gnu.org/lists.html
!   31. https://www.fsf.org/
!   32. https://gcc.gnu.org/about.html
!   33. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-5/index.html
  
*************** References and Acknowledgements
*** 2047,2053 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2017-10-10[24].
  
  References
  
--- 2090,2096 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-09-30[24].
  
  References
  
*************** References
*** 2072,2078 ****
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    21. https://gcc.gnu.org/lists.html
!   22. http://www.fsf.org/
    23. https://gcc.gnu.org/about.html
    24. http://validator.w3.org/check/referer
  ======================================================================
--- 2115,2121 ----
    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
  ======================================================================
*************** libgccjit
*** 2570,2576 ****
     functions from bytecode to machine code.
  
     The library can also be used for ahead-of-time compilation, enabling
!    GCC to be plugged into a pre-existing frontend. An example of using
     this to build a compiler for an esoteric language we'll refer to as
     "brainf" can be seen [37]here.
  
--- 2613,2619 ----
     functions from bytecode to machine code.
  
     The library can also be used for ahead-of-time compilation, enabling
!    GCC to be plugged into a pre-existing front end. An example of using
     this to build a compiler for an esoteric language we'll refer to as
     "brainf" can be seen [37]here.
  
*************** Target Specific Changes
*** 2958,2964 ****
     provided this notice is preserved.
  
     These pages are [51]maintained by the GCC team. Last modified
!    2017-10-10[52].
  
  References
  
--- 3001,3007 ----
     provided this notice is preserved.
  
     These pages are [51]maintained by the GCC team. Last modified
!    2018-09-30[52].
  
  References
  
*************** References
*** 2966,2973 ****
     2. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
     3. https://savannah.nongnu.org/bugs/?44574
     4. https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler
!    5. http://www.openmp.org/wp-content/uploads/OpenMP4.0.0.pdf
!    6. http://www.openmp.org/wp-content/uploads/OpenMP4.0.0.Examples.pdf
     7. https://gcc.gnu.org/wiki/OpenACC
     8. https://gcc.gnu.org/install/configure.html
     9. https://www.cilkplus.org/
--- 3009,3016 ----
     2. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
     3. https://savannah.nongnu.org/bugs/?44574
     4. https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler
!    5. https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.pdf
!    6. https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.Examples.pdf
     7. https://gcc.gnu.org/wiki/OpenACC
     8. https://gcc.gnu.org/install/configure.html
     9. https://www.cilkplus.org/
*************** References
*** 3011,3017 ****
    47. mailto:gcc-help@gcc.gnu.org
    48. mailto:gcc@gcc.gnu.org
    49. https://gcc.gnu.org/lists.html
!   50. http://www.fsf.org/
    51. https://gcc.gnu.org/about.html
    52. http://validator.w3.org/check/referer
  ======================================================================
--- 3054,3060 ----
    47. mailto:gcc-help@gcc.gnu.org
    48. mailto:gcc@gcc.gnu.org
    49. https://gcc.gnu.org/lists.html
!   50. https://www.fsf.org/
    51. https://gcc.gnu.org/about.html
    52. http://validator.w3.org/check/referer
  ======================================================================
*************** References and Acknowledgements
*** 3078,3084 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2016-09-30[24].
  
  References
  
--- 3121,3127 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-09-30[24].
  
  References
  
*************** References
*** 3103,3109 ****
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    21. https://gcc.gnu.org/lists.html
!   22. http://www.fsf.org/
    23. https://gcc.gnu.org/about.html
    24. http://validator.w3.org/check/referer
  ======================================================================
--- 3146,3152 ----
    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
  ======================================================================
*************** GCC 4.9.4
*** 3718,3731 ****
     provided this notice is preserved.
  
     These pages are [34]maintained by the GCC team. Last modified
!    2016-12-28[35].
  
  References
  
     1. https://gcc.gnu.org/ml/gcc-patches/2013-05/msg00728.html
     2. https://gcc.gnu.org/PR60825
     3. https://gcc.gnu.org/gcc-4.9/porting_to.html
!    4. http://www.openmp.org/specifications/
     5. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Optimize-Options.html#index-fsimd-cost-model-908
     6. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Language-Independent-Options.html#index-fdiagnostics-color-252
     7. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Loop-Specific-Pragmas.html
--- 3761,3774 ----
     provided this notice is preserved.
  
     These pages are [34]maintained by the GCC team. Last modified
!    2018-12-01[35].
  
  References
  
     1. https://gcc.gnu.org/ml/gcc-patches/2013-05/msg00728.html
     2. https://gcc.gnu.org/PR60825
     3. https://gcc.gnu.org/gcc-4.9/porting_to.html
!    4. https://www.openmp.org/specifications/
     5. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Optimize-Options.html#index-fsimd-cost-model-908
     6. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Language-Independent-Options.html#index-fdiagnostics-color-252
     7. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Loop-Specific-Pragmas.html
*************** References
*** 3754,3760 ****
    30. mailto:gcc-help@gcc.gnu.org
    31. mailto:gcc@gcc.gnu.org
    32. https://gcc.gnu.org/lists.html
!   33. http://www.fsf.org/
    34. https://gcc.gnu.org/about.html
    35. http://validator.w3.org/check/referer
  ======================================================================
--- 3797,3803 ----
    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
  ======================================================================
*************** References and Acknowledgements
*** 3824,3830 ****
     provided this notice is preserved.
  
     These pages are [25]maintained by the GCC team. Last modified
!    2016-09-30[26].
  
  References
  
--- 3867,3873 ----
     provided this notice is preserved.
  
     These pages are [25]maintained by the GCC team. Last modified
!    2018-09-30[26].
  
  References
  
*************** References
*** 3851,3857 ****
    21. mailto:gcc-help@gcc.gnu.org
    22. mailto:gcc@gcc.gnu.org
    23. https://gcc.gnu.org/lists.html
!   24. http://www.fsf.org/
    25. https://gcc.gnu.org/about.html
    26. http://validator.w3.org/check/referer
  ======================================================================
--- 3894,3900 ----
    21. mailto:gcc-help@gcc.gnu.org
    22. mailto:gcc@gcc.gnu.org
    23. https://gcc.gnu.org/lists.html
!   24. https://www.fsf.org/
    25. https://gcc.gnu.org/about.html
    26. http://validator.w3.org/check/referer
  ======================================================================
*************** GCC 4.8.5
*** 4580,4586 ****
     provided this notice is preserved.
  
     These pages are [43]maintained by the GCC team. Last modified
!    2017-02-27[44].
  
  References
  
--- 4623,4629 ----
     provided this notice is preserved.
  
     These pages are [43]maintained by the GCC team. Last modified
!    2018-09-30[44].
  
  References
  
*************** References
*** 4625,4631 ****
    39. mailto:gcc-help@gcc.gnu.org
    40. mailto:gcc@gcc.gnu.org
    41. https://gcc.gnu.org/lists.html
!   42. http://www.fsf.org/
    43. https://gcc.gnu.org/about.html
    44. http://validator.w3.org/check/referer
  ======================================================================
--- 4668,4674 ----
    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
  ======================================================================
*************** References and Acknowledgements
*** 4692,4698 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2016-09-30[24].
  
  References
  
--- 4735,4741 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-09-30[24].
  
  References
  
*************** References
*** 4717,4723 ****
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    21. https://gcc.gnu.org/lists.html
!   22. http://www.fsf.org/
    23. https://gcc.gnu.org/about.html
    24. http://validator.w3.org/check/referer
  ======================================================================
--- 4760,4766 ----
    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
  ======================================================================
*************** GCC 4.7.1
*** 5477,5483 ****
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
!    The Go frontend in the 4.7.1 release fully supports the [46]Go 1
     language standard.
  
  GCC 4.7.2
--- 5520,5526 ----
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
!    The Go front end in the 4.7.1 release fully supports the [46]Go 1
     language standard.
  
  GCC 4.7.2
*************** GCC 4.7.4
*** 5514,5520 ****
     provided this notice is preserved.
  
     These pages are [55]maintained by the GCC team. Last modified
!    2017-03-03[56].
  
  References
  
--- 5557,5563 ----
     provided this notice is preserved.
  
     These pages are [55]maintained by the GCC team. Last modified
!    2018-09-30[56].
  
  References
  
*************** References
*** 5543,5549 ****
    23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
    24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
    25. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
!   26. https://msdn.microsoft.com/en-us/library/bb787181%28v=vs.85%29.aspx
    27. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
    28. https://gcc.gnu.org/wiki/Fortran2003Status
    29. https://gcc.gnu.org/wiki/OOP
--- 5586,5592 ----
    23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
    24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
    25. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
!   26. https://docs.microsoft.com/en-us/windows/desktop/wer/collecting-user-mode-dumps
    27. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
    28. https://gcc.gnu.org/wiki/Fortran2003Status
    29. https://gcc.gnu.org/wiki/OOP
*************** References
*** 5571,5577 ****
    51. mailto:gcc-help@gcc.gnu.org
    52. mailto:gcc@gcc.gnu.org
    53. https://gcc.gnu.org/lists.html
!   54. http://www.fsf.org/
    55. https://gcc.gnu.org/about.html
    56. http://validator.w3.org/check/referer
  ======================================================================
--- 5614,5620 ----
    51. mailto:gcc-help@gcc.gnu.org
    52. mailto:gcc@gcc.gnu.org
    53. https://gcc.gnu.org/lists.html
!   54. https://www.fsf.org/
    55. https://gcc.gnu.org/about.html
    56. http://validator.w3.org/check/referer
  ======================================================================
*************** References and Acknowledgements
*** 5638,5644 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2016-09-30[24].
  
  References
  
--- 5681,5687 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-09-30[24].
  
  References
  
*************** References
*** 5663,5669 ****
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    21. https://gcc.gnu.org/lists.html
!   22. http://www.fsf.org/
    23. https://gcc.gnu.org/about.html
    24. http://validator.w3.org/check/referer
  ======================================================================
--- 5706,5712 ----
    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
  ======================================================================
*************** GCC 4.6.4
*** 6563,6569 ****
     provided this notice is preserved.
  
     These pages are [29]maintained by the GCC team. Last modified
!    2016-11-27[30].
  
  References
  
--- 6606,6612 ----
     provided this notice is preserved.
  
     These pages are [29]maintained by the GCC team. Last modified
!    2018-09-30[30].
  
  References
  
*************** References
*** 6594,6600 ****
    25. mailto:gcc-help@gcc.gnu.org
    26. mailto:gcc@gcc.gnu.org
    27. https://gcc.gnu.org/lists.html
!   28. http://www.fsf.org/
    29. https://gcc.gnu.org/about.html
    30. http://validator.w3.org/check/referer
  ======================================================================
--- 6637,6643 ----
    25. mailto:gcc-help@gcc.gnu.org
    26. mailto:gcc@gcc.gnu.org
    27. https://gcc.gnu.org/lists.html
!   28. https://www.fsf.org/
    29. https://gcc.gnu.org/about.html
    30. http://validator.w3.org/check/referer
  ======================================================================
*************** References and Acknowledgements
*** 6661,6667 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2016-09-30[19].
  
  References
  
--- 6704,6710 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2018-09-30[19].
  
  References
  
*************** References
*** 6681,6687 ****
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    16. https://gcc.gnu.org/lists.html
!   17. http://www.fsf.org/
    18. https://gcc.gnu.org/about.html
    19. http://validator.w3.org/check/referer
  ======================================================================
--- 6724,6730 ----
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    16. https://gcc.gnu.org/lists.html
!   17. https://www.fsf.org/
    18. https://gcc.gnu.org/about.html
    19. http://validator.w3.org/check/referer
  ======================================================================
*************** General Optimizer Improvements
*** 6754,6761 ****
         file rather than in the current working directory. This allows the
         user to get debugging dumps when doing parallel builds without two
         builds of the same filename interfering with each other.
!      * GCC has been integrated with the [6]MPC library. This allows GCC to
!        evaluate complex arithmetic at compile time [7]more accurately. It
         also allows GCC to evaluate calls to complex built-in math
         functions having constant arguments and replace them at compile
         time with their mathematically equivalent results. In doing so, GCC
--- 6797,6804 ----
         file rather than in the current working directory. This allows the
         user to get debugging dumps when doing parallel builds without two
         builds of the same filename interfering with each other.
!      * GCC has been integrated with the MPC library. This allows GCC to
!        evaluate complex arithmetic at compile time [6]more accurately. It
         also allows GCC to evaluate calls to complex built-in math
         functions having constant arguments and replace them at compile
         time with their mathematically equivalent results. In doing so, GCC
*************** General Optimizer Improvements
*** 6768,6774 ****
         catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan,
         and ctanh. The float and long double variants of these functions
         (e.g. csinf and csinl) are also handled.
!      * A new link-time optimizer has been added ([8]-flto). When this
         option is used, GCC generates a bytecode representation of each
         input file and writes it to specially-named sections in each object
         file. When the object files are linked together, all the function
--- 6811,6817 ----
         catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan,
         and ctanh. The float and long double variants of these functions
         (e.g. csinf and csinl) are also handled.
!      * A new link-time optimizer has been added ([7]-flto). When this
         option is used, GCC generates a bytecode representation of each
         input file and writes it to specially-named sections in each object
         file. When the object files are linked together, all the function
*************** General Optimizer Improvements
*** 6779,6793 ****
         the generated code. To use the link-timer optimizer, -flto needs to
         be specified at compile time and during the final link. If the
         program does not require any symbols to be exported, it is possible
!        to combine -flto and the experimental [9]-fwhopr with
!        [10]-fwhole-program to allow the interprocedural optimizers to use
         more aggressive assumptions.
       * The automatic parallelization pass was enhanced to support
         parallelization of outer loops.
       * Automatic parallelization can be enabled as part of Graphite. In
         addition to -ftree-parallelize-loops=, specify
         -floop-parallelize-all to enable the Graphite-based optimization.
!      * The infrastructure for optimizing based on [11]restrict qualified
         pointers has been rewritten and should result in code generation
         improvements. Optimizations based on restrict qualified pointers
         are now also available when using -fno-strict-aliasing.
--- 6822,6836 ----
         the generated code. To use the link-timer optimizer, -flto needs to
         be specified at compile time and during the final link. If the
         program does not require any symbols to be exported, it is possible
!        to combine -flto and the experimental [8]-fwhopr with
!        [9]-fwhole-program to allow the interprocedural optimizers to use
         more aggressive assumptions.
       * The automatic parallelization pass was enhanced to support
         parallelization of outer loops.
       * Automatic parallelization can be enabled as part of Graphite. In
         addition to -ftree-parallelize-loops=, specify
         -floop-parallelize-all to enable the Graphite-based optimization.
!      * The infrastructure for optimizing based on [10]restrict qualified
         pointers has been rewritten and should result in code generation
         improvements. Optimizations based on restrict qualified pointers
         are now also available when using -fno-strict-aliasing.
*************** New Languages and Language specific impr
*** 6892,6898 ****
  
    C++
  
!      * Improved [12]experimental support for the upcoming C++0x ISO C++
         standard, including support for raw strings, lambda expressions and
         explicit type conversion operators.
       * When printing the name of a class template specialization, G++ will
--- 6935,6941 ----
  
    C++
  
!      * Improved [11]experimental support for the upcoming C++0x ISO C++
         standard, including support for raw strings, lambda expressions and
         explicit type conversion operators.
       * When printing the name of a class template specialization, G++ will
*************** New Languages and Language specific impr
*** 6920,6932 ****
       * In C++0x mode local and anonymous classes are now allowed as
         template arguments, and in declarations of variables and functions
         with linkage, so long as any such declaration that is used is also
!        defined ([13]DR 757).
       * Labels may now have attributes, as has been permitted for a while
         in C. This is only permitted when the label definition and the
         attribute specifier is followed by a semicolon--i.e., the label
         applies to an empty statement. The only useful attribute for a
         label is unused.
!      * G++ now implements [14]DR 176. Previously G++ did not support using
         the injected-class-name of a template base class as a type name,
         and lookup of the name found the declaration of the template in the
         enclosing scope. Now lookup of the name finds the
--- 6963,6975 ----
       * In C++0x mode local and anonymous classes are now allowed as
         template arguments, and in declarations of variables and functions
         with linkage, so long as any such declaration that is used is also
!        defined ([12]DR 757).
       * Labels may now have attributes, as has been permitted for a while
         in C. This is only permitted when the label definition and the
         attribute specifier is followed by a semicolon--i.e., the label
         applies to an empty statement. The only useful attribute for a
         label is unused.
!      * G++ now implements [13]DR 176. Previously G++ did not support using
         the injected-class-name of a template base class as a type name,
         and lookup of the name found the declaration of the template in the
         enclosing scope. Now lookup of the name finds the
*************** New Languages and Language specific impr
*** 6964,6970 ****
            + Existing facilities now exploit explicit operators and the
              newly implemented core C++0x features.
            + The header <cstdatomic> has been renamed to <atomic>.
!      * An experimental [15]profile mode has been added. This is an
         implementation of many C++ standard library constructs with an
         additional analysis layer that gives performance improvement advice
         based on recognition of suboptimal usage patterns. For example,
--- 7007,7013 ----
            + Existing facilities now exploit explicit operators and the
              newly implemented core C++0x features.
            + The header <cstdatomic> has been renamed to <atomic>.
!      * An experimental [14]profile mode has been added. This is an
         implementation of many C++ standard library constructs with an
         additional analysis layer that gives performance improvement advice
         based on recognition of suboptimal usage patterns. For example,
*************** vector-size: improvement = 3: call stack
*** 6986,6992 ****
         These constructs can be substituted for the normal libstdc++
         constructs on a piecemeal basis, or all existing components can be
         transformed via the -D_GLIBCXX_PROFILE macro.
!      * [16]Support for decimal floating-point arithmetic (aka ISO C++ TR
         24733) has been added. This support is in header file
         <decimal/decimal>, uses namespace std::decimal, and includes
         classes decimal32, decimal64, and decimal128.
--- 7029,7035 ----
         These constructs can be substituted for the normal libstdc++
         constructs on a piecemeal basis, or all existing components can be
         transformed via the -D_GLIBCXX_PROFILE macro.
!      * [15]Support for decimal floating-point arithmetic (aka ISO C++ TR
         24733) has been added. This support is in header file
         <decimal/decimal>, uses namespace std::decimal, and includes
         classes decimal32, decimal64, and decimal128.
*************** vector-size: improvement = 3: call stack
*** 6996,7002 ****
         components that simplify the internal representation and present a
         more intuitive view of components when used with
         appropriately-advanced versions of GDB. For more information,
!        please consult the more [17]detailed description.
       * The default behavior for comparing typeinfo names has changed, so
         in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
       * The new -static-libstdc++ option directs g++ to link the C++
--- 7039,7045 ----
         components that simplify the internal representation and present a
         more intuitive view of components when used with
         appropriately-advanced versions of GDB. For more information,
!        please consult the more [16]detailed description.
       * The default behavior for comparing typeinfo names has changed, so
         in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
       * The new -static-libstdc++ option directs g++ to link the C++
*************** vector-size: improvement = 3: call stack
*** 7009,7015 ****
         padding before a variable it is now added afterwards, which
         increases the compatibility with other vendors and helps to obtain
         the correct output in some cases. Cf. also the -falign-commons
!        option ([18]added in 4.4).
       * The -finit-real= option now also supports the value snan for
         signaling not-a-number; to be effective, one additionally needs to
         enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
--- 7052,7058 ----
         padding before a variable it is now added afterwards, which
         increases the compatibility with other vendors and helps to obtain
         the correct output in some cases. Cf. also the -falign-commons
!        option ([17]added in 4.4).
       * The -finit-real= option now also supports the value snan for
         signaling not-a-number; to be effective, one additionally needs to
         enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
*************** vector-size: improvement = 3: call stack
*** 7027,7033 ****
       * The run-time checking -fcheck=bounds now warns about invalid string
         lengths of character dummy arguments. Additionally, more
         compile-time checks have been added.
!      * The new option [19]-fno-protect-parens has been added; if set, the
         compiler may reorder REAL and COMPLEX expressions without regard to
         parentheses.
       * GNU Fortran no longer links against libgfortranbegin. As before,
--- 7070,7076 ----
       * The run-time checking -fcheck=bounds now warns about invalid string
         lengths of character dummy arguments. Additionally, more
         compile-time checks have been added.
!      * The new option [18]-fno-protect-parens has been added; if set, the
         compiler may reorder REAL and COMPLEX expressions without regard to
         parentheses.
       * GNU Fortran no longer links against libgfortranbegin. As before,
*************** vector-size: improvement = 3: call stack
*** 7035,7041 ****
         which is invoked by the main function. However, main is now
         generated and put in the same object file as MAIN__. For the time
         being, libgfortranbegin still exists for backward compatibility.
!        For details see the new [20]Mixed-Language Programming chapter in
         the manual.
       * The I/O library was restructured for performance and cleaner code.
       * Array assignments and WHERE are now run in parallel when OpenMP's
--- 7078,7084 ----
         which is invoked by the main function. However, main is now
         generated and put in the same object file as MAIN__. For the time
         being, libgfortranbegin still exists for backward compatibility.
!        For details see the new [19]Mixed-Language Programming chapter in
         the manual.
       * The I/O library was restructured for performance and cleaner code.
       * Array assignments and WHERE are now run in parallel when OpenMP's
*************** vector-size: improvement = 3: call stack
*** 7047,7053 ****
       * More Fortran 2003 and Fortran 2008 mathematical functions can now
         be used as initialization expressions.
       * Some extended attributes such as STDCALL are now supported via the
!        [21]GCC$ compiler directive.
       * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
         intrinsic behaves now as if zero were always positive.
       * For legacy compatibiliy: On Cygwin and MinGW, the special files
--- 7090,7096 ----
       * More Fortran 2003 and Fortran 2008 mathematical functions can now
         be used as initialization expressions.
       * Some extended attributes such as STDCALL are now supported via the
!        [20]GCC$ compiler directive.
       * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
         intrinsic behaves now as if zero were always positive.
       * For legacy compatibiliy: On Cygwin and MinGW, the special files
*************** vector-size: improvement = 3: call stack
*** 7073,7079 ****
              procedure pointer with PASS attribute now have to use CLASS in
              line with the Fortran 2003 standard; the workaround to use
              TYPE is no longer supported.
!           + [22]Experimental, incomplete support for polymorphism,
              including CLASS, SELECT TYPE and dynamic dispatch of
              type-bound procedure calls. Some features do not work yet such
              as unlimited polymorphism (CLASS(*)).
--- 7116,7122 ----
              procedure pointer with PASS attribute now have to use CLASS in
              line with the Fortran 2003 standard; the workaround to use
              TYPE is no longer supported.
!           + [21]Experimental, incomplete support for polymorphism,
              including CLASS, SELECT TYPE and dynamic dispatch of
              type-bound procedure calls. Some features do not work yet such
              as unlimited polymorphism (CLASS(*)).
*************** Other significant improvements
*** 7275,7288 ****
  
  GCC 4.5.1
  
!    This is the [23]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
    All languages
  
!      * GCC's new link-time optimizer ([24]-flto) now also works on a few
         non-ELF targets:
            + Cygwin (*-cygwin*)
            + MinGW (*-mingw*)
--- 7318,7331 ----
  
  GCC 4.5.1
  
!    This is the [22]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
    All languages
  
!      * GCC's new link-time optimizer ([23]-flto) now also works on a few
         non-ELF targets:
            + Cygwin (*-cygwin*)
            + MinGW (*-mingw*)
*************** GCC 4.5.1
*** 7292,7305 ****
  
  GCC 4.5.2
  
!    This is the [25]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.5.3
  
!    This is the [26]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 7335,7348 ----
  
  GCC 4.5.2
  
!    This is the [24]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.5.3
  
!    This is the [25]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** GCC 4.5.3
*** 7316,7377 ****
  
  GCC 4.5.4
  
!    This is the [27]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  
      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
!    2017-02-28[34].
  
  References
  
!    1. http://www.multiprecision.org/
     2. https://gcc.gnu.org/install/prerequisites.html
     3. https://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
     4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
     5. http://gcc.gnu.org/gcc-4.5/changes.html#x86
!    6. http://www.multiprecision.org/
!    7. https://gcc.gnu.org/PR30789
!    8. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
!    9. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802
!   10. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
!   11. https://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
!   12. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
!   13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
!   14. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
!   15. https://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
!   16. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
!   17. https://sourceware.org/gdb/wiki/STLSupport
!   18. http://gcc.gnu.org/gcc-4.4/changes.html
!   19. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
!   20. https://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
!   21. https://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
!   22. https://gcc.gnu.org/wiki/OOP
!   23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
!   24. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
!   25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3
!   27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.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. http://www.fsf.org/
!   33. https://gcc.gnu.org/about.html
!   34. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.4/index.html
  
--- 7359,7419 ----
  
  GCC 4.5.4
  
!    This is the [26]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.5.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [27]GCC manuals. If that fails, the
!     [28]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 [29]gcc@gcc.gnu.org. All of [30]our lists have public
      archives.
  
!    Copyright (C) [31]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 [32]maintained by the GCC team. Last modified
!    2018-09-30[33].
  
  References
  
!    1. http://www.multiprecision.org/mpc/
     2. https://gcc.gnu.org/install/prerequisites.html
     3. https://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
     4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
     5. http://gcc.gnu.org/gcc-4.5/changes.html#x86
!    6. https://gcc.gnu.org/PR30789
!    7. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
!    8. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802
!    9. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
!   10. https://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
!   11. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
!   12. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
!   13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
!   14. https://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
!   15. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
!   16. https://sourceware.org/gdb/wiki/STLSupport
!   17. http://gcc.gnu.org/gcc-4.4/changes.html
!   18. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
!   19. https://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
!   20. https://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
!   21. https://gcc.gnu.org/wiki/OOP
!   22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
!   23. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
!   24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
!   25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4
!   27. https://gcc.gnu.org/onlinedocs/
!   28. mailto:gcc-help@gcc.gnu.org
!   29. mailto:gcc@gcc.gnu.org
!   30. https://gcc.gnu.org/lists.html
!   31. https://www.fsf.org/
!   32. https://gcc.gnu.org/about.html
!   33. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.4/index.html
  
*************** References and Acknowledgements
*** 7445,7451 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2016-09-30[22].
  
  References
  
--- 7487,7493 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2018-09-30[22].
  
  References
  
*************** References
*** 7468,7474 ****
    17. mailto:gcc-help@gcc.gnu.org
    18. mailto:gcc@gcc.gnu.org
    19. https://gcc.gnu.org/lists.html
!   20. http://www.fsf.org/
    21. https://gcc.gnu.org/about.html
    22. http://validator.w3.org/check/referer
  ======================================================================
--- 7510,7516 ----
    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
  ======================================================================
*************** GCC 4.4.7
*** 8076,8082 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2016-12-28[24].
  
  References
  
--- 8118,8124 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2018-09-30[24].
  
  References
  
*************** References
*** 8101,8107 ****
    19. mailto:gcc-help@gcc.gnu.org
    20. mailto:gcc@gcc.gnu.org
    21. https://gcc.gnu.org/lists.html
!   22. http://www.fsf.org/
    23. https://gcc.gnu.org/about.html
    24. http://validator.w3.org/check/referer
  ======================================================================
--- 8143,8149 ----
    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
  ======================================================================
*************** References and Acknowledgements
*** 8174,8180 ****
     provided this notice is preserved.
  
     These pages are [20]maintained by the GCC team. Last modified
!    2016-09-30[21].
  
  References
  
--- 8216,8222 ----
     provided this notice is preserved.
  
     These pages are [20]maintained by the GCC team. Last modified
!    2018-09-30[21].
  
  References
  
*************** References
*** 8196,8202 ****
    16. mailto:gcc-help@gcc.gnu.org
    17. mailto:gcc@gcc.gnu.org
    18. https://gcc.gnu.org/lists.html
!   19. http://www.fsf.org/
    20. https://gcc.gnu.org/about.html
    21. http://validator.w3.org/check/referer
  ======================================================================
--- 8238,8244 ----
    16. mailto:gcc-help@gcc.gnu.org
    17. mailto:gcc@gcc.gnu.org
    18. https://gcc.gnu.org/lists.html
!   19. https://www.fsf.org/
    20. https://gcc.gnu.org/about.html
    21. http://validator.w3.org/check/referer
  ======================================================================
*************** Caveats
*** 8302,8312 ****
  
  General Optimizer Improvements
  
!      * The GCC middle-end has been integrated with the [8]MPFR library.
!        This allows GCC to evaluate and replace at compile-time calls to
         built-in math functions having constant arguments with their
!        mathematically equivalent results. In making use of [9]MPFR, GCC
!        can generate correct results regardless of the math library
         implementation or floating point precision of the host platform.
         This also allows GCC to generate identical results regardless of
         whether one compiles in native or cross-compile configurations to a
--- 8344,8354 ----
  
  General Optimizer Improvements
  
!      * The GCC middle-end has been integrated with the MPFR library. This
!        allows GCC to evaluate and replace at compile-time calls to
         built-in math functions having constant arguments with their
!        mathematically equivalent results. In making use of MPFR, GCC can
!        generate correct results regardless of the math library
         implementation or floating point precision of the host platform.
         This also allows GCC to generate identical results regardless of
         whether one compiles in native or cross-compile configurations to a
*************** General Optimizer Improvements
*** 8318,8324 ****
         tan, tanh, tgamma, y0, y1 and yn. The float and long double
         variants of these functions (e.g. sinf and sinl) are also handled.
         The sqrt and cabs functions with constant arguments were already
!        optimized in prior GCC releases. Now they also use [10]MPFR.
       * A new forward propagation pass on RTL was added. The new pass
         replaces several slower transformations, resulting in compile-time
         improvements as well as better code generation in some cases.
--- 8360,8366 ----
         tan, tanh, tgamma, y0, y1 and yn. The float and long double
         variants of these functions (e.g. sinf and sinl) are also handled.
         The sqrt and cabs functions with constant arguments were already
!        optimized in prior GCC releases. Now they also use MPFR.
       * A new forward propagation pass on RTL was added. The new pass
         replaces several slower transformations, resulting in compile-time
         improvements as well as better code generation in some cases.
*************** New Languages and Language specific impr
*** 8396,8405 ****
       * The constructor and destructor function attributes now accept
         optional priority arguments which control the order in which the
         constructor and destructor functions are run.
!      * New [11]command-line options -Wtype-limits,
!        -Wold-style-declaration, -Wmissing-parameter-type, -Wempty-body,
!        -Wclobbered and -Wignored-qualifiers have been added for finer
!        control of the diverse warnings enabled by -Wextra.
       * A new function attribute alloc_size has been added to mark up
         malloc style functions. For constant sized allocations this can be
         used to find out the size of the returned pointer using the
--- 8438,8447 ----
       * The constructor and destructor function attributes now accept
         optional priority arguments which control the order in which the
         constructor and destructor functions are run.
!      * New [8]command-line options -Wtype-limits, -Wold-style-declaration,
!        -Wmissing-parameter-type, -Wempty-body, -Wclobbered and
!        -Wignored-qualifiers have been added for finer control of the
!        diverse warnings enabled by -Wextra.
       * A new function attribute alloc_size has been added to mark up
         malloc style functions. For constant sized allocations this can be
         used to find out the size of the returned pointer using the
*************** New Languages and Language specific impr
*** 8428,8434 ****
  
    C++
  
!      * [12]Experimental support for the upcoming ISO C++ standard, C++0x.
       * -Wc++0x-compat has been added and is now enabled by default for
         -Wall. It produces warnings for constructs whose meaning differs
         between ISO C++ 1998 and C++0x.
--- 8470,8476 ----
  
    C++
  
!      * [9]Experimental support for the upcoming ISO C++ standard, C++0x.
       * -Wc++0x-compat has been added and is now enabled by default for
         -Wall. It produces warnings for constructs whose meaning differs
         between ISO C++ 1998 and C++0x.
*************** New Languages and Language specific impr
*** 8448,8454 ****
  
      Runtime Library (libstdc++)
  
!      * [13]Experimental support for the upcoming ISO C++ standard, C++0x.
       * Support for TR1 mathematical special functions and regular
         expressions.
       * Default what implementations give more elaborate exception strings
--- 8490,8496 ----
  
      Runtime Library (libstdc++)
  
!      * [10]Experimental support for the upcoming ISO C++ standard, C++0x.
       * Support for TR1 mathematical special functions and regular
         expressions.
       * Default what implementations give more elaborate exception strings
*************** New Languages and Language specific impr
*** 8457,8463 ****
         includes and pre-processed bloat.
       * Variadic template implementations of items in <tuple> and
         <functional>.
!      * An experimental [14]parallel mode has been added. This is a
         parallel implementation of many C++ Standard library algorithms,
         like std::accumulate, std::for_each, std::transform, or std::sort,
         to give but four examples. These algorithms can be substituted for
--- 8499,8505 ----
         includes and pre-processed bloat.
       * Variadic template implementations of items in <tuple> and
         <functional>.
!      * An experimental [11]parallel mode has been added. This is a
         parallel implementation of many C++ Standard library algorithms,
         like std::accumulate, std::for_each, std::transform, or std::sort,
         to give but four examples. These algorithms can be substituted for
*************** New Languages and Language specific impr
*** 8488,8494 ****
       * Due to the fact that the GMP and MPFR libraries are required for
         all languages, Fortran is no longer special in this regard and is
         available by default.
!      * The [15]-fexternal-blas option has been added, which generates
         calls to BLAS routines for intrinsic matrix operations such as
         matmul rather than using the built-in algorithms.
       * Support to give a backtrace (compiler flag -fbacktrace or
--- 8530,8536 ----
       * Due to the fact that the GMP and MPFR libraries are required for
         all languages, Fortran is no longer special in this regard and is
         available by default.
!      * The [12]-fexternal-blas option has been added, which generates
         calls to BLAS routines for intrinsic matrix operations such as
         matmul rather than using the built-in algorithms.
       * Support to give a backtrace (compiler flag -fbacktrace or
*************** New Languages and Language specific impr
*** 8497,8512 ****
         run-time error occured.
       * GNU Fortran now defines __GFORTRAN__ when it runs the C
         preprocessor (CPP).
!      * The [16]-finit-local-zero, -finit-real, -finit-integer,
         -finit-character, and -finit-logical options have been added, which
         can be used to initialize local variables.
!      * The intrinsic procedures [17]GAMMA and [18]LGAMMA have been added,
         which calculate the Gamma function and its logarithm. Use EXTERNAL
         gamma if you want to use your own gamma function.
       * GNU Fortran now regards the backslash character as literal (as
!        required by the Fortran 2003 standard); using [19]-fbackslash GNU
         Fortran interprets backslashes as C-style escape characters.
!      * The [20]interpretation of binary, octal and hexadecimal (BOZ)
         literal constants has been changed. Before they were always
         interpreted as integer; now they are bit-wise transferred as
         argument of INT, REAL, DBLE and CMPLX as required by the Fortran
--- 8539,8554 ----
         run-time error occured.
       * GNU Fortran now defines __GFORTRAN__ when it runs the C
         preprocessor (CPP).
!      * The [13]-finit-local-zero, -finit-real, -finit-integer,
         -finit-character, and -finit-logical options have been added, which
         can be used to initialize local variables.
!      * The intrinsic procedures [14]GAMMA and [15]LGAMMA have been added,
         which calculate the Gamma function and its logarithm. Use EXTERNAL
         gamma if you want to use your own gamma function.
       * GNU Fortran now regards the backslash character as literal (as
!        required by the Fortran 2003 standard); using [16]-fbackslash GNU
         Fortran interprets backslashes as C-style escape characters.
!      * The [17]interpretation of binary, octal and hexadecimal (BOZ)
         literal constants has been changed. Before they were always
         interpreted as integer; now they are bit-wise transferred as
         argument of INT, REAL, DBLE and CMPLX as required by the Fortran
*************** Documentation improvements
*** 8876,8882 ****
  
       * Existing libstdc++ documentation has been edited and restructured
         into a single DocBook XML manual. The results can be viewed online
!        [21]here.
  
  Other significant improvements
  
--- 8918,8924 ----
  
       * Existing libstdc++ documentation has been edited and restructured
         into a single DocBook XML manual. The results can be viewed online
!        [18]here.
  
  Other significant improvements
  
*************** Other significant improvements
*** 8908,8914 ****
  
  GCC 4.3.1
  
!    This is the [22]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 8950,8956 ----
  
  GCC 4.3.1
  
!    This is the [19]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** Target Specific Changes
*** 8934,9023 ****
  
  GCC 4.3.2
  
!    This is the [23]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.3
  
!    This is the [24]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.4
  
!    This is the [25]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.5
  
!    This is the [26]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.6
  
!    This is the [27]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.6 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [28]GCC manuals. If that fails, the
!     [29]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [30]gcc@gcc.gnu.org. All of [31]our lists have public
      archives.
  
!    Copyright (C) [32]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [33]maintained by the GCC team. Last modified
!    2017-02-07[34].
  
  References
  
     1. http://gcc.gnu.org/gcc-4.3/changes.html#4.3.5
     2. https://gmplib.org/
!    3. http://www.mpfr.org/
     4. https://gcc.gnu.org/install/prerequisites.html
     5. https://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html
     6. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
     7. http://gcc.gnu.org/gcc-4.3/porting_to.html
!    8. http://www.mpfr.org/
!    9. http://www.mpfr.org/
!   10. http://www.mpfr.org/
!   11. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
!   12. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
!   13. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
!   14. https://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
!   15. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options
!   16. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167
!   17. https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/GAMMA.html
!   18. https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/LGAMMA.html
!   19. https://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html
!   20. https://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
!   21. https://gcc.gnu.org/onlinedocs/libstdc++/
!   22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.1
!   23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.2
!   24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3
!   25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5
!   27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6
!   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. http://www.fsf.org/
!   33. https://gcc.gnu.org/about.html
!   34. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.2/index.html
  
--- 8976,9062 ----
  
  GCC 4.3.2
  
!    This is the [20]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.3
  
!    This is the [21]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.4
  
!    This is the [22]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.5
  
!    This is the [23]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.3.6
  
!    This is the [24]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.3.6 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 [25]GCC manuals. If that fails, the
!     [26]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 [27]gcc@gcc.gnu.org. All of [28]our lists have public
      archives.
  
!    Copyright (C) [29]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 [30]maintained by the GCC team. Last modified
!    2018-09-30[31].
  
  References
  
     1. http://gcc.gnu.org/gcc-4.3/changes.html#4.3.5
     2. https://gmplib.org/
!    3. https://www.mpfr.org/
     4. https://gcc.gnu.org/install/prerequisites.html
     5. https://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html
     6. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
     7. http://gcc.gnu.org/gcc-4.3/porting_to.html
!    8. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
!    9. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
!   10. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
!   11. https://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
!   12. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options
!   13. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167
!   14. https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/GAMMA.html
!   15. https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/LGAMMA.html
!   16. https://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html
!   17. https://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
!   18. https://gcc.gnu.org/onlinedocs/libstdc++/
!   19. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.1
!   20. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.2
!   21. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3
!   22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4
!   23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5
!   24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6
!   25. https://gcc.gnu.org/onlinedocs/
!   26. mailto:gcc-help@gcc.gnu.org
!   27. mailto:gcc@gcc.gnu.org
!   28. https://gcc.gnu.org/lists.html
!   29. https://www.fsf.org/
!   30. https://gcc.gnu.org/about.html
!   31. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.2/index.html
  
*************** References and Acknowledgements
*** 9082,9088 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2016-09-30[19].
  
  References
  
--- 9121,9127 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2018-09-30[19].
  
  References
  
*************** References
*** 9102,9108 ****
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    16. https://gcc.gnu.org/lists.html
!   17. http://www.fsf.org/
    18. https://gcc.gnu.org/about.html
    19. http://validator.w3.org/check/referer
  ======================================================================
--- 9141,9147 ----
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    16. https://gcc.gnu.org/lists.html
!   17. https://www.fsf.org/
    18. https://gcc.gnu.org/about.html
    19. http://validator.w3.org/check/referer
  ======================================================================
*************** New Languages and Language specific impr
*** 9225,9231 ****
           return 0;
  
         To suppress the warning in valid cases, use { } instead.
!      * The C++ frontend now also produces strict aliasing warnings when
         -fstrict-aliasing -Wstrict-aliasing is in effect.
  
      Runtime Library (libstdc++)
--- 9264,9270 ----
           return 0;
  
         To suppress the warning in valid cases, use { } instead.
!      * The C++ front end now also produces strict aliasing warnings when
         -fstrict-aliasing -Wstrict-aliasing is in effect.
  
      Runtime Library (libstdc++)
*************** Other significant improvements
*** 9411,9417 ****
     provided this notice is preserved.
  
     These pages are [11]maintained by the GCC team. Last modified
!    2017-02-07[12].
  
  References
  
--- 9450,9456 ----
     provided this notice is preserved.
  
     These pages are [11]maintained by the GCC team. Last modified
!    2018-09-30[12].
  
  References
  
*************** References
*** 9424,9430 ****
     7. mailto:gcc-help@gcc.gnu.org
     8. mailto:gcc@gcc.gnu.org
     9. https://gcc.gnu.org/lists.html
!   10. http://www.fsf.org/
    11. https://gcc.gnu.org/about.html
    12. http://validator.w3.org/check/referer
  ======================================================================
--- 9463,9469 ----
     7. mailto:gcc-help@gcc.gnu.org
     8. mailto:gcc@gcc.gnu.org
     9. https://gcc.gnu.org/lists.html
!   10. https://www.fsf.org/
    11. https://gcc.gnu.org/about.html
    12. http://validator.w3.org/check/referer
  ======================================================================
*************** References and Acknowledgements
*** 9485,9491 ****
     provided this notice is preserved.
  
     These pages are [16]maintained by the GCC team. Last modified
!    2016-09-30[17].
  
  References
  
--- 9524,9530 ----
     provided this notice is preserved.
  
     These pages are [16]maintained by the GCC team. Last modified
!    2018-09-30[17].
  
  References
  
*************** References
*** 9503,9509 ****
    12. mailto:gcc-help@gcc.gnu.org
    13. mailto:gcc@gcc.gnu.org
    14. https://gcc.gnu.org/lists.html
!   15. http://www.fsf.org/
    16. https://gcc.gnu.org/about.html
    17. http://validator.w3.org/check/referer
  ======================================================================
--- 9542,9548 ----
    12. mailto:gcc-help@gcc.gnu.org
    13. mailto:gcc@gcc.gnu.org
    14. https://gcc.gnu.org/lists.html
!   15. https://www.fsf.org/
    16. https://gcc.gnu.org/about.html
    17. http://validator.w3.org/check/referer
  ======================================================================
*************** GCC 4.1.2
*** 10049,10055 ****
     provided this notice is preserved.
  
     These pages are [12]maintained by the GCC team. Last modified
!    2016-01-30[13].
  
  References
  
--- 10088,10094 ----
     provided this notice is preserved.
  
     These pages are [12]maintained by the GCC team. Last modified
!    2018-09-30[13].
  
  References
  
*************** References
*** 10063,10069 ****
     8. mailto:gcc-help@gcc.gnu.org
     9. mailto:gcc@gcc.gnu.org
    10. https://gcc.gnu.org/lists.html
!   11. http://www.fsf.org/
    12. https://gcc.gnu.org/about.html
    13. http://validator.w3.org/check/referer
  ======================================================================
--- 10102,10108 ----
     8. mailto:gcc-help@gcc.gnu.org
     9. mailto:gcc@gcc.gnu.org
    10. https://gcc.gnu.org/lists.html
!   11. https://www.fsf.org/
    12. https://gcc.gnu.org/about.html
    13. http://validator.w3.org/check/referer
  ======================================================================
*************** References and Acknowledgements
*** 10130,10136 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2016-09-30[19].
  
  References
  
--- 10169,10175 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2018-09-30[19].
  
  References
  
*************** References
*** 10150,10156 ****
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    16. https://gcc.gnu.org/lists.html
!   17. http://www.fsf.org/
    18. https://gcc.gnu.org/about.html
    19. http://validator.w3.org/check/referer
  ======================================================================
--- 10189,10195 ----
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    16. https://gcc.gnu.org/lists.html
!   17. https://www.fsf.org/
    18. https://gcc.gnu.org/about.html
    19. http://validator.w3.org/check/referer
  ======================================================================
*************** New Languages and Language specific impr
*** 10265,10271 ****
  
    C++
  
!      * When compiling without optimizations (-O0), the C++ frontend is
         much faster than in any previous versions of GCC. Independent
         testers have measured speed-ups up to 25% in real-world production
         code, compared to the 3.4 family (which was already the fastest
--- 10304,10310 ----
  
    C++
  
!      * When compiling without optimizations (-O0), the C++ front end is
         much faster than in any previous versions of GCC. Independent
         testers have measured speed-ups up to 25% in real-world production
         code, compared to the 3.4 family (which was already the fastest
*************** class N::A {
*** 10424,10430 ****
       * Many bugs have been fixed, tools and documentation improved.
       * To compile Ada from the sources, install an older working Ada
         compiler and then use --enable-languages=ada at configuration time,
!        since the Ada frontend is not currently activated by default. See
         the [10]Installing GCC for details.
  
  New Targets and Target Specific Improvements
--- 10463,10469 ----
       * Many bugs have been fixed, tools and documentation improved.
       * To compile Ada from the sources, install an older working Ada
         compiler and then use --enable-languages=ada at configuration time,
!        since the Ada front end is not currently activated by default. See
         the [10]Installing GCC for details.
  
  New Targets and Target Specific Improvements
*************** GCC 4.0.4
*** 10657,10668 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2017-03-29[22].
  
  References
  
     1. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4
!    2. http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
     3. http://gcc.gnu.org/projects/tree-ssa/
     4. http://gcc.gnu.org/projects/tree-ssa/vectorization.html
     5. http://gcc.gnu.org/news/sms.html
--- 10696,10707 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2018-09-30[22].
  
  References
  
     1. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4
!    2. https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
     3. http://gcc.gnu.org/projects/tree-ssa/
     4. http://gcc.gnu.org/projects/tree-ssa/vectorization.html
     5. http://gcc.gnu.org/news/sms.html
*************** References
*** 10680,10686 ****
    17. mailto:gcc-help@gcc.gnu.org
    18. mailto:gcc@gcc.gnu.org
    19. https://gcc.gnu.org/lists.html
!   20. http://www.fsf.org/
    21. https://gcc.gnu.org/about.html
    22. http://validator.w3.org/check/referer
  ======================================================================
--- 10719,10725 ----
    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
  ======================================================================
*************** References and Acknowledgements
*** 10758,10764 ****
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2016-09-30[23].
  
  References
  
--- 10797,10803 ----
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2018-09-30[23].
  
  References
  
*************** References
*** 10782,10788 ****
    18. mailto:gcc-help@gcc.gnu.org
    19. mailto:gcc@gcc.gnu.org
    20. https://gcc.gnu.org/lists.html
!   21. http://www.fsf.org/
    22. https://gcc.gnu.org/about.html
    23. http://validator.w3.org/check/referer
  ======================================================================
--- 10821,10827 ----
    18. mailto:gcc-help@gcc.gnu.org
    19. mailto:gcc@gcc.gnu.org
    20. https://gcc.gnu.org/lists.html
!   21. https://www.fsf.org/
    22. https://gcc.gnu.org/about.html
    23. http://validator.w3.org/check/referer
  ======================================================================
*************** http://gcc.gnu.org/gcc-3.4/changes.html
*** 10794,10800 ****
     The final release in the 3.4 release series is [1]GCC 3.4.6. The series
     is now closed.
  
!    GCC 3.4 has [2]many improvements in the C++ frontend. Before reporting
     a bug, please make sure it's really GCC, and not your code, that is
     broken.
  
--- 10833,10839 ----
     The final release in the 3.4 release series is [1]GCC 3.4.6. The series
     is now closed.
  
!    GCC 3.4 has [2]many improvements in the C++ front end. Before reporting
     a bug, please make sure it's really GCC, and not your code, that is
     broken.
  
*************** GCC 3.4.6
*** 12547,12553 ****
     provided this notice is preserved.
  
     These pages are [416]maintained by the GCC team. Last modified
!    2016-12-30[417].
  
  References
  
--- 12586,12592 ----
     provided this notice is preserved.
  
     These pages are [416]maintained by the GCC team. Last modified
!    2018-09-30[417].
  
  References
  
*************** References
*** 12557,12563 ****
     4. http://gcc.gnu.org/gcc-3.4/changes.html#obsolete_systems
     5. http://gcc.gnu.org/gcc-3.4/mips-abi.html
     6. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
!    7. http://www.boost.org/
     8. https://gcc.gnu.org/PR11953
     9. https://gcc.gnu.org/PR8361
    10. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other%20Builtins
--- 12596,12602 ----
     4. http://gcc.gnu.org/gcc-3.4/changes.html#obsolete_systems
     5. http://gcc.gnu.org/gcc-3.4/mips-abi.html
     6. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
!    7. https://www.boost.org/
     8. https://gcc.gnu.org/PR11953
     9. https://gcc.gnu.org/PR8361
    10. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other%20Builtins
*************** References
*** 12965,12971 ****
   412. mailto:gcc-help@gcc.gnu.org
   413. mailto:gcc@gcc.gnu.org
   414. https://gcc.gnu.org/lists.html
!  415. http://www.fsf.org/
   416. https://gcc.gnu.org/about.html
   417. http://validator.w3.org/check/referer
  ======================================================================
--- 13004,13010 ----
   412. mailto:gcc-help@gcc.gnu.org
   413. mailto:gcc@gcc.gnu.org
   414. https://gcc.gnu.org/lists.html
!  415. https://www.fsf.org/
   416. https://gcc.gnu.org/about.html
   417. http://validator.w3.org/check/referer
  ======================================================================
*************** References and Acknowledgements
*** 13044,13050 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2016-09-30[22].
  
  References
  
--- 13083,13089 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2018-09-30[22].
  
  References
  
*************** References
*** 13067,13073 ****
    17. mailto:gcc-help@gcc.gnu.org
    18. mailto:gcc@gcc.gnu.org
    19. https://gcc.gnu.org/lists.html
!   20. http://www.fsf.org/
    21. https://gcc.gnu.org/about.html
    22. http://validator.w3.org/check/referer
  ======================================================================
--- 13106,13112 ----
    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
  ======================================================================
*************** GCC 3.3.6
*** 14420,14426 ****
     provided this notice is preserved.
  
     These pages are [556]maintained by the GCC team. Last modified
!    2016-01-30[557].
  
  References
  
--- 14459,14465 ----
     provided this notice is preserved.
  
     These pages are [556]maintained by the GCC team. Last modified
!    2018-09-30[557].
  
  References
  
*************** References
*** 14978,14984 ****
   552. mailto:gcc-help@gcc.gnu.org
   553. mailto:gcc@gcc.gnu.org
   554. https://gcc.gnu.org/lists.html
!  555. http://www.fsf.org/
   556. https://gcc.gnu.org/about.html
   557. http://validator.w3.org/check/referer
  ======================================================================
--- 15017,15023 ----
   552. mailto:gcc-help@gcc.gnu.org
   553. mailto:gcc@gcc.gnu.org
   554. https://gcc.gnu.org/lists.html
!  555. https://www.fsf.org/
   556. https://gcc.gnu.org/about.html
   557. http://validator.w3.org/check/referer
  ======================================================================
*************** References and Acknowledgements
*** 15051,15057 ****
     provided this notice is preserved.
  
     These pages are [17]maintained by the GCC team. Last modified
!    2016-09-30[18].
  
  References
  
--- 15090,15096 ----
     provided this notice is preserved.
  
     These pages are [17]maintained by the GCC team. Last modified
!    2018-09-30[18].
  
  References
  
*************** References
*** 15070,15076 ****
    13. mailto:gcc-help@gcc.gnu.org
    14. mailto:gcc@gcc.gnu.org
    15. https://gcc.gnu.org/lists.html
!   16. http://www.fsf.org/
    17. https://gcc.gnu.org/about.html
    18. http://validator.w3.org/check/referer
  ======================================================================
--- 15109,15115 ----
    13. mailto:gcc-help@gcc.gnu.org
    14. mailto:gcc@gcc.gnu.org
    15. https://gcc.gnu.org/lists.html
!   16. https://www.fsf.org/
    17. https://gcc.gnu.org/about.html
    18. http://validator.w3.org/check/referer
  ======================================================================
*************** GCC 3.2
*** 15675,15681 ****
     provided this notice is preserved.
  
     These pages are [251]maintained by the GCC team. Last modified
!    2016-01-30[252].
  
  References
  
--- 15714,15720 ----
     provided this notice is preserved.
  
     These pages are [251]maintained by the GCC team. Last modified
!    2018-09-30[252].
  
  References
  
*************** References
*** 15928,15934 ****
   247. mailto:gcc-help@gcc.gnu.org
   248. mailto:gcc@gcc.gnu.org
   249. https://gcc.gnu.org/lists.html
!  250. http://www.fsf.org/
   251. https://gcc.gnu.org/about.html
   252. http://validator.w3.org/check/referer
  ======================================================================
--- 15967,15973 ----
   247. mailto:gcc-help@gcc.gnu.org
   248. mailto:gcc@gcc.gnu.org
   249. https://gcc.gnu.org/lists.html
!  250. https://www.fsf.org/
   251. https://gcc.gnu.org/about.html
   252. http://validator.w3.org/check/referer
  ======================================================================
*************** http://gcc.gnu.org/gcc-3.1/index.html
*** 15981,15987 ****
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2016-09-30[15].
  
  References
  
--- 16020,16026 ----
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2018-09-30[15].
  
  References
  
*************** References
*** 15997,16003 ****
    10. mailto:gcc-help@gcc.gnu.org
    11. mailto:gcc@gcc.gnu.org
    12. https://gcc.gnu.org/lists.html
!   13. http://www.fsf.org/
    14. https://gcc.gnu.org/about.html
    15. http://validator.w3.org/check/referer
  ======================================================================
--- 16036,16042 ----
    10. mailto:gcc-help@gcc.gnu.org
    11. mailto:gcc@gcc.gnu.org
    12. https://gcc.gnu.org/lists.html
!   13. https://www.fsf.org/
    14. https://gcc.gnu.org/about.html
    15. http://validator.w3.org/check/referer
  ======================================================================
*************** Documentation improvements
*** 16336,16342 ****
     provided this notice is preserved.
  
     These pages are [13]maintained by the GCC team. Last modified
!    2017-12-10[14].
  
  References
  
--- 16375,16381 ----
     provided this notice is preserved.
  
     These pages are [13]maintained by the GCC team. Last modified
!    2018-09-30[14].
  
  References
  
*************** References
*** 16351,16357 ****
     9. mailto:gcc-help@gcc.gnu.org
    10. mailto:gcc@gcc.gnu.org
    11. https://gcc.gnu.org/lists.html
!   12. http://www.fsf.org/
    13. https://gcc.gnu.org/about.html
    14. http://validator.w3.org/check/referer
  ======================================================================
--- 16390,16396 ----
     9. mailto:gcc-help@gcc.gnu.org
    10. mailto:gcc@gcc.gnu.org
    11. https://gcc.gnu.org/lists.html
!   12. https://www.fsf.org/
    13. https://gcc.gnu.org/about.html
    14. http://validator.w3.org/check/referer
  ======================================================================
*************** Previous 3.0.x Releases
*** 16411,16417 ****
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2016-09-30[15].
  
  References
  
--- 16450,16456 ----
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2018-09-30[15].
  
  References
  
*************** References
*** 16427,16433 ****
    10. mailto:gcc-help@gcc.gnu.org
    11. mailto:gcc@gcc.gnu.org
    12. https://gcc.gnu.org/lists.html
!   13. http://www.fsf.org/
    14. https://gcc.gnu.org/about.html
    15. http://validator.w3.org/check/referer
  ======================================================================
--- 16466,16472 ----
    10. mailto:gcc-help@gcc.gnu.org
    11. mailto:gcc@gcc.gnu.org
    12. https://gcc.gnu.org/lists.html
!   13. https://www.fsf.org/
    14. https://gcc.gnu.org/about.html
    15. http://validator.w3.org/check/referer
  ======================================================================
*************** Other significant improvements
*** 16603,16609 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2016-08-23[19].
  
  References
  
--- 16642,16648 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2018-09-30[19].
  
  References
  
*************** References
*** 16623,16629 ****
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    16. https://gcc.gnu.org/lists.html
!   17. http://www.fsf.org/
    18. https://gcc.gnu.org/about.html
    19. http://validator.w3.org/check/referer
  ======================================================================
--- 16662,16668 ----
    14. mailto:gcc-help@gcc.gnu.org
    15. mailto:gcc@gcc.gnu.org
    16. https://gcc.gnu.org/lists.html
!   17. https://www.fsf.org/
    18. https://gcc.gnu.org/about.html
    19. http://validator.w3.org/check/referer
  ======================================================================
*************** http://gcc.gnu.org/gcc-3.0/caveats.html
*** 16675,16681 ****
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2016-01-30[8].
  
  References
  
--- 16714,16720 ----
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2018-09-30[8].
  
  References
  
*************** References
*** 16684,16690 ****
     3. mailto:gcc-help@gcc.gnu.org
     4. mailto:gcc@gcc.gnu.org
     5. https://gcc.gnu.org/lists.html
!    6. http://www.fsf.org/
     7. https://gcc.gnu.org/about.html
     8. http://validator.w3.org/check/referer
  ======================================================================
--- 16723,16729 ----
     3. mailto:gcc-help@gcc.gnu.org
     4. mailto:gcc@gcc.gnu.org
     5. https://gcc.gnu.org/lists.html
!    6. https://www.fsf.org/
     7. https://gcc.gnu.org/about.html
     8. http://validator.w3.org/check/referer
  ======================================================================
*************** References and Acknowledgements
*** 16758,16764 ****
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2016-09-30[16].
  
  References
  
--- 16797,16803 ----
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2018-09-30[16].
  
  References
  
*************** References
*** 16775,16781 ****
    11. mailto:gcc-help@gcc.gnu.org
    12. mailto:gcc@gcc.gnu.org
    13. https://gcc.gnu.org/lists.html
!   14. http://www.fsf.org/
    15. https://gcc.gnu.org/about.html
    16. http://validator.w3.org/check/referer
  ======================================================================
--- 16814,16820 ----
    11. mailto:gcc-help@gcc.gnu.org
    12. mailto:gcc@gcc.gnu.org
    13. https://gcc.gnu.org/lists.html
!   14. https://www.fsf.org/
    15. https://gcc.gnu.org/about.html
    16. http://validator.w3.org/check/referer
  ======================================================================
*************** Additional Changes in GCC 2.95.3
*** 17024,17030 ****
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2016-12-29[23].
  
  References
  
--- 17063,17069 ----
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2018-09-30[23].
  
  References
  
*************** References
*** 17048,17054 ****
    18. mailto:gcc-help@gcc.gnu.org
    19. mailto:gcc@gcc.gnu.org
    20. https://gcc.gnu.org/lists.html
!   21. http://www.fsf.org/
    22. https://gcc.gnu.org/about.html
    23. http://validator.w3.org/check/referer
  ======================================================================
--- 17087,17093 ----
    18. mailto:gcc-help@gcc.gnu.org
    19. mailto:gcc@gcc.gnu.org
    20. https://gcc.gnu.org/lists.html
!   21. https://www.fsf.org/
    22. https://gcc.gnu.org/about.html
    23. http://validator.w3.org/check/referer
  ======================================================================
*************** http://gcc.gnu.org/gcc-2.95/caveats.html
*** 17108,17114 ****
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2016-01-30[8].
  
  References
  
--- 17147,17153 ----
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2018-09-30[8].
  
  References
  
*************** References
*** 17117,17123 ****
     3. mailto:gcc-help@gcc.gnu.org
     4. mailto:gcc@gcc.gnu.org
     5. https://gcc.gnu.org/lists.html
!    6. http://www.fsf.org/
     7. https://gcc.gnu.org/about.html
     8. http://validator.w3.org/check/referer
  ======================================================================
--- 17156,17162 ----
     3. mailto:gcc-help@gcc.gnu.org
     4. mailto:gcc@gcc.gnu.org
     5. https://gcc.gnu.org/lists.html
!    6. https://www.fsf.org/
     7. https://gcc.gnu.org/about.html
     8. http://validator.w3.org/check/referer
  ======================================================================
*************** http://gcc.gnu.org/egcs-1.1/index.html
*** 17330,17336 ****
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2016-01-30[16].
  
  References
  
--- 17369,17375 ----
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2018-09-30[16].
  
  References
  
*************** References
*** 17347,17353 ****
    11. mailto:gcc-help@gcc.gnu.org
    12. mailto:gcc@gcc.gnu.org
    13. https://gcc.gnu.org/lists.html
!   14. http://www.fsf.org/
    15. https://gcc.gnu.org/about.html
    16. http://validator.w3.org/check/referer
  ======================================================================
--- 17386,17392 ----
    11. mailto:gcc-help@gcc.gnu.org
    12. mailto:gcc@gcc.gnu.org
    13. https://gcc.gnu.org/lists.html
!   14. https://www.fsf.org/
    15. https://gcc.gnu.org/about.html
    16. http://validator.w3.org/check/referer
  ======================================================================
*************** http://gcc.gnu.org/egcs-1.1/features.htm
*** 17430,17436 ****
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2016-01-30[11].
  
  References
  
--- 17469,17475 ----
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2018-09-30[11].
  
  References
  
*************** References
*** 17442,17448 ****
     6. mailto:gcc-help@gcc.gnu.org
     7. mailto:gcc@gcc.gnu.org
     8. https://gcc.gnu.org/lists.html
!    9. http://www.fsf.org/
    10. https://gcc.gnu.org/about.html
    11. http://validator.w3.org/check/referer
  ======================================================================
--- 17481,17487 ----
     6. mailto:gcc-help@gcc.gnu.org
     7. mailto:gcc@gcc.gnu.org
     8. https://gcc.gnu.org/lists.html
!    9. https://www.fsf.org/
    10. https://gcc.gnu.org/about.html
    11. http://validator.w3.org/check/referer
  ======================================================================
*************** http://gcc.gnu.org/egcs-1.1/caveats.html
*** 17485,17491 ****
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2016-01-30[7].
  
  References
  
--- 17524,17530 ----
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2018-09-30[7].
  
  References
  
*************** References
*** 17493,17499 ****
     2. mailto:gcc-help@gcc.gnu.org
     3. mailto:gcc@gcc.gnu.org
     4. https://gcc.gnu.org/lists.html
!    5. http://www.fsf.org/
     6. https://gcc.gnu.org/about.html
     7. http://validator.w3.org/check/referer
  ======================================================================
--- 17532,17538 ----
     2. mailto:gcc-help@gcc.gnu.org
     3. mailto:gcc@gcc.gnu.org
     4. https://gcc.gnu.org/lists.html
!    5. https://www.fsf.org/
     6. https://gcc.gnu.org/about.html
     7. http://validator.w3.org/check/referer
  ======================================================================
*************** http://gcc.gnu.org/egcs-1.0/index.html
*** 17682,17688 ****
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2016-01-30[11].
  
  References
  
--- 17721,17727 ----
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2018-09-30[11].
  
  References
  
*************** References
*** 17694,17700 ****
     6. mailto:gcc-help@gcc.gnu.org
     7. mailto:gcc@gcc.gnu.org
     8. https://gcc.gnu.org/lists.html
!    9. http://www.fsf.org/
    10. https://gcc.gnu.org/about.html
    11. http://validator.w3.org/check/referer
  ======================================================================
--- 17733,17739 ----
     6. mailto:gcc-help@gcc.gnu.org
     7. mailto:gcc@gcc.gnu.org
     8. https://gcc.gnu.org/lists.html
!    9. https://www.fsf.org/
    10. https://gcc.gnu.org/about.html
    11. http://validator.w3.org/check/referer
  ======================================================================
*************** http://gcc.gnu.org/egcs-1.0/features.htm
*** 17749,17755 ****
     provided this notice is preserved.
  
     These pages are [8]maintained by the GCC team. Last modified
!    2016-01-30[9].
  
  References
  
--- 17788,17794 ----
     provided this notice is preserved.
  
     These pages are [8]maintained by the GCC team. Last modified
!    2018-09-30[9].
  
  References
  
*************** References
*** 17759,17765 ****
     4. mailto:gcc-help@gcc.gnu.org
     5. mailto:gcc@gcc.gnu.org
     6. https://gcc.gnu.org/lists.html
!    7. http://www.fsf.org/
     8. https://gcc.gnu.org/about.html
     9. http://validator.w3.org/check/referer
  ======================================================================
--- 17798,17804 ----
     4. mailto:gcc-help@gcc.gnu.org
     5. mailto:gcc@gcc.gnu.org
     6. https://gcc.gnu.org/lists.html
!    7. https://www.fsf.org/
     8. https://gcc.gnu.org/about.html
     9. http://validator.w3.org/check/referer
  ======================================================================
*************** http://gcc.gnu.org/egcs-1.0/caveats.html
*** 17803,17809 ****
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2016-01-30[7].
  
  References
  
--- 17842,17848 ----
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2018-09-30[7].
  
  References
  
*************** References
*** 17811,17817 ****
     2. mailto:gcc-help@gcc.gnu.org
     3. mailto:gcc@gcc.gnu.org
     4. https://gcc.gnu.org/lists.html
!    5. http://www.fsf.org/
     6. https://gcc.gnu.org/about.html
     7. http://validator.w3.org/check/referer
  ======================================================================
--- 17850,17856 ----
     2. mailto:gcc-help@gcc.gnu.org
     3. mailto:gcc@gcc.gnu.org
     4. https://gcc.gnu.org/lists.html
!    5. https://www.fsf.org/
     6. https://gcc.gnu.org/about.html
     7. http://validator.w3.org/check/referer
  ======================================================================
diff -Nrcpad gcc-7.3.0/config/ChangeLog gcc-7.4.0/config/ChangeLog
*** gcc-7.3.0/config/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/config/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,15 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* acx.m4 (GCC_BASE_VER): Remove \$\$ from sed expression.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/config/acx.m4 gcc-7.4.0/config/acx.m4
*** gcc-7.3.0/config/acx.m4	Tue Jan 17 09:38:48 2017
--- gcc-7.4.0/config/acx.m4	Fri Jun 22 21:16:41 2018
*************** AC_DEFUN([GCC_BASE_VER],
*** 246,252 ****
    [AS_HELP_STRING([--with-gcc-major-version-only], [use only GCC major number in filesystem paths])],
    [if test x$with_gcc_major_version_only = xyes ; then
      changequote(,)dnl
!     get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
      changequote([,])dnl
    fi
    ])
--- 246,252 ----
    [AS_HELP_STRING([--with-gcc-major-version-only], [use only GCC major number in filesystem paths])],
    [if test x$with_gcc_major_version_only = xyes ; then
      changequote(,)dnl
!     get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
      changequote([,])dnl
    fi
    ])
diff -Nrcpad gcc-7.3.0/configure gcc-7.4.0/configure
*** gcc-7.3.0/configure	Wed Mar 22 17:51:18 2017
--- gcc-7.4.0/configure	Fri Jun 22 21:16:41 2018
*************** fi
*** 6620,6626 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 6620,6626 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/contrib/ChangeLog gcc-7.4.0/contrib/ChangeLog
*** gcc-7.3.0/contrib/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/contrib/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/contrib/header-tools/ChangeLog gcc-7.4.0/contrib/header-tools/ChangeLog
*** gcc-7.3.0/contrib/header-tools/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/contrib/header-tools/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/contrib/reghunt/ChangeLog gcc-7.4.0/contrib/reghunt/ChangeLog
*** gcc-7.3.0/contrib/reghunt/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/contrib/reghunt/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/contrib/regression/ChangeLog gcc-7.4.0/contrib/regression/ChangeLog
*** gcc-7.3.0/contrib/regression/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/contrib/regression/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/fixincludes/ChangeLog gcc-7.4.0/fixincludes/ChangeLog
*** gcc-7.3.0/fixincludes/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/fixincludes/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,15 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/fixincludes/configure gcc-7.4.0/fixincludes/configure
*** gcc-7.3.0/fixincludes/configure	Tue Jan 17 09:38:48 2017
--- gcc-7.4.0/fixincludes/configure	Fri Jun 22 21:16:41 2018
*************** _ACEOF
*** 5401,5407 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 5401,5407 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/gcc/BASE-VER gcc-7.4.0/gcc/BASE-VER
*** gcc-7.3.0/gcc/BASE-VER	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/BASE-VER	Thu Dec  6 10:00:03 2018
***************
*** 1 ****
! 7.3.0
--- 1 ----
! 7.4.0
diff -Nrcpad gcc-7.3.0/gcc/ChangeLog gcc-7.4.0/gcc/ChangeLog
*** gcc-7.3.0/gcc/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,2248 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-11-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79351
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): For assignments from
+ 	empty CONSTRUCTORs ensure the store is at a constant position.
+ 
+ 2018-11-26  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backport from mainline
+ 	2018-08-22  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR bootstrap/81033
+ 	PR target/81733
+ 	PR target/52795
+ 	* gcc/dwarf2out.c (FUNC_SECOND_SECT_LABEL): New.
+ 	(dwarf2out_switch_text_section): Generate a local label for the second
+ 	function sub-section and apply it as the second FDE start label.
+ 	* gcc/final.c (final_scan_insn_1): Emit second FDE label after the second
+ 	sub-section start.
+ 
+ 2018-11-26  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	2018-08-15  Iain Sandoe  <iain@sandoe.co.uk>
+  
+ 	* config/darwin.c
+ 	(darwin_function_switched_text_sections): Delete.
+ 	* gcc/config/darwin.h
+ 	(TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS): Likewise.
+ 
+ 2018-11-26  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-11-20  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390.md ("clztidi2"): Swap the RTX's written to the
+ 	DImode parts of the target operand.
+ 
+ 2018-11-26  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-11-26  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* doc/invoke.texi: Document z14/arch12 -march option.
+ 
+ 2018-10-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/87645
+ 	Backport from mainline
+ 	2018-07-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-match-head.c (gimple_resimplify1): Apply recursion
+ 	limit.
+ 	(gimple_resimplify2): Likewise.
+ 	(gimple_resimplify3): Likewise.
+ 	(gimple_resimplify4): Likewise.
+ 
+ 2018-11-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-10-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/87610
+ 	* tree-ssa-structalias.c (struct vls_data): Add escaped_p member.
+ 	(visit_loadstore): When a used restrict tag escaped verify that
+ 	the points-to solution of "other" pointers do not include
+ 	escaped.
+ 	(compute_dependence_clique): If a used restrict tag escaped
+ 	communicated that down to visit_loadstore.
+ 
+ 	2018-10-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/87665
+ 	PR tree-optimization/87745
+ 	* tree-vectorizer.h (get_earlier_stmt): Remove.
+ 	(get_later_stmt): Pick up UID from the original non-pattern stmt.
+ 
+ 	2018-10-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/87665
+ 	* tree-vect-data-refs.c (vect_preserves_scalar_order_p): Adjust
+ 	to reflect reality.
+ 
+ 2018-11-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-06-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/86139
+ 	* tree-vect-generic.c (build_word_mode_vector_type): Remove
+ 	duplicate and harmful type_hash_canon.
+ 
+ 	2018-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/86076
+ 	* tree-cfg.c (move_stmt_op): unshare invariant addresses
+ 	before adjusting their block.
+ 
+ 2018-11-22  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-11-16  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/88051
+ 	* config/i386/sse.md (UNSPEC_MOVDI_TO_SSE): New UNSPEC.
+ 	(movdi_to_sse): Rewrite using UNSPEC_MOVDI_TO_SSE unspec.
+ 
+ 2018-11-22  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	backport from trunk:
+ 	2017-11-19  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR target/82961
+ 	* vmsdbgout.c (vmsdbgout_early_finish): New function.
+ 	(vmsdbg_debug_hooks): Set early_finish field to vmsdbgout_early_finish.
+ 
+ 2018-11-21  Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	PR target/87867
+ 	Backport from mainiline
+ 	2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/arm/arm.c (arm_reorg): Skip Thumb reorg pass for thunks.
+ 	(arm32_output_mi_thunk): Deal with long calls.
+ 
+ 2018-11-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-03-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/84777
+ 	* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
+ 	force-vectorize loops ignore whether we are optimizing for size.
+ 
+ 	2018-01-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/84003
+ 	* dse.c (record_store): Only record redundant stores when
+ 	the earlier store aliases at least all accesses the later one does.
+ 
+ 2018-11-20  Xuepeng Guo  <xuepeng.guo@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-11-05  Xuepeng Guo  <xuepeng.guo@intel.com>
+ 
+ 	PR target/87853
+ 	* config/i386/emmintrin.h (__v16qs): New to cope with option
+ 	-funsigned-char.
+ 	(_mm_cmpeq_epi8): Replace __v16qi with __v16qs.
+ 	(_mm_cmplt_epi8): Likewise.
+ 	(_mm_cmpgt_epi8): Likewise.
+ 
+ 2018-11-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/85925
+ 	* rtl.h (word_register_operation_p): New predicate.
+ 	* combine.c (record_dead_and_set_regs_1): Only apply specific handling
+ 	for WORD_REGISTER_OPERATIONS targets to word_register_operation_p RTX.
+ 	* rtlanal.c (nonzero_bits1): Likewise.  Adjust couple of comments.
+ 	(num_sign_bit_copies1): Likewise.
+ 
+ 2018-11-18  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-11-11  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/87928
+ 	* config/i386/i386.h (STACK_BOUNDARY): Use TARGET_64BIT_MS_ABI
+ 	instead of (TARGET_64BIT && ix86_abi == MS_ABI).
+ 	* config/i386/darwin.h (STACK_BOUNDARY): Ditto.
+ 	* config/i386/cygming.h (STACK_BOUNDARY): Remove.
+ 
+ 2018-11-15  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR debug/88006
+ 	PR debug/87462
+ 	* dwarf2out.c (dwarf2out_finish): Apply resolve_addr to comdat
+ 	type list.
+ 
+ 2018-11-11  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-11-04  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR middle-end/58372
+ 	* cfgexpand.c (pass_expand::execute): Move the call to
+ 	finish_eh_generation in front of the call to expand_stack_alignment.
+ 
+ 2018-11-07  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-11-05  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/uclinux.h (XTENSA_ALWAYS_PIC): Change to 0.
+ 
+ 2018-10-26  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-10-19  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR tree-optimization/87473
+ 	* gimple-ssa-strength-reduction.c (record_phi_increments): For
+ 	phi arguments identical to the base expression of the phi
+ 	candidate, record a phi-adjust increment of zero minus the index
+ 	expression of the hidden basis.
+ 	(phi_incr_cost): For phi arguments identical to the base
+ 	expression of the phi candidate, the difference to compare against
+ 	the increment is zero minus the index expression of the hidden
+ 	basis, and there is no potential savings from replacing the (phi)
+ 	statement.
+ 	(ncd_with_phi): For phi arguments identical to the base expression
+ 	of the phi candidate, the difference to compare against the
+ 	increment is zero minus the index expression of the hidden basis.
+ 	(all_phi_incrs_profitable): For phi arguments identical to the
+ 	base expression of the phi candidate, the increment to be checked
+ 	for profitability is zero minus the index expression of the hidden
+ 	basis.
+ 
+ 2018-10-19  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-10-15  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_expand_vec_init): Force vector element
+ 	into reg if it isn't a general operand.
+ 
+ 2018-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/87623
+ 	* fold-const.c (fold_truth_andor_1): If the right side is not constant,
+ 	bail out if both sides do not have the same storage order.
+ 
+ 2018-10-16  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	Backported from mainline
+ 	PR target/87511
+ 	* config/aarch64/aarch64.c (aarch64_mask_and_shift_for_ubfiz_p):
+ 	Use HOST_WIDE_INT_1U for shift.
+ 
+ 2018-10-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-10-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/87550
+ 	* config/i386/i386-builtin.def (IX86_BUILTIN_RDPMC): Move from args set
+ 	to special_args set.
+ 
+ 	2018-09-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/87248
+ 	* fold-const.c (fold_ternary_loc) <case COND_EXPR>: Verify also that
+ 	BIT_AND_EXPR's second operand is a power of two.  Formatting fix.
+ 
+ 	2018-08-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/87065
+ 	* combine.c (simplify_if_then_else): Formatting fix.
+ 	(if_then_else_cond): Guard MULT optimization with SCALAR_INT_MODE_P
+ 	check.
+ 	(known_cond): Don't return const_true_rtx for vector modes.  Use
+ 	CONST0_RTX instead of const0_rtx.  Formatting fixes.
+ 
+ 	2018-07-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/86627
+ 	* expmed.c (expand_divmod): Punt if d == HOST_WIDE_INT_MIN
+ 	and size > HOST_BITS_PER_WIDE_INT.  For size > HOST_BITS_PER_WIDE_INT
+ 	and abs_d == d, do the power of two handling if profitable.
+ 
+ 	2018-07-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/86542
+ 	* omp-low.c (create_task_copyfn): Copy over also fields corresponding
+ 	to _looptemp_ clauses, other than the first two.
+ 
+ 	PR middle-end/86539
+ 	* gimplify.c (gimplify_omp_for): Ensure taskloop firstprivatized init
+ 	and cond temporaries don't have reference type if iterator has
+ 	pointer type.  For init use &for_pre_body instead of pre_p if
+ 	for_pre_body is non-empty.
+ 
+ 	2018-07-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/86660
+ 	* omp-low.c (scan_sharing_clauses): Don't ignore map clauses for
+ 	declare target to variables if they have always,{to,from,tofrom} map
+ 	kinds.
+ 
+ 2018-10-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-08-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/87024
+ 	* tree-inline.c (copy_bb): Drop unused __builtin_va_arg_pack_len
+ 	calls.
+ 
+ 	2018-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/86505
+ 	* tree-inline.c (copy_bb): When inlining __builtin_va_arg_pack_len ()
+ 	across a va-arg-pack using call adjust its return value accordingly.
+ 
+ 2018-10-09  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-09-29  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/87370
+ 	* config/i386/i386.c (construct_container): Use TImode for
+ 	BLKmode values in 2 integer registers.
+ 
+ 2018-10-08  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-10-08  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/87517
+ 	* config/i386/avx512fintrin.h (_mm512_mask_fmaddsub_round_pd):
+ 	Defined with __builtin_ia32_vfmaddsubpd512_mask.
+ 
+ 2018-10-05  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-10-05  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/87522
+ 	* config/i386/gnu-user.h (ASM_SPEC): Don't pass -msse2avx to
+ 	assembler for -mavx.
+ 	* config/i386/gnu-user64.h (ASM_SPEC): Likewise.
+ 
+ 2018-10-03  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-09-28  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.h (SSE_REGNO): Fix check for FIRST_REX_SSE_REG.
+ 	(GET_SSE_REGNO): Rename from SSE_REGNO.  Update all uses for rename.
+ 
+ 2018-10-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR other/87353
+ 	* doc/invoke.texi (Link Options): Fix formatting and grammar.
+ 
+ 2018-10-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-06-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/arm/arm.c (output_move_double): Don't allow STRD instructions
+ 	if starting source register is not even.
+ 
+ 2018-09-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/87467
+ 	* config/i386/avx512fintrin.h (_mm512_abs_pd, _mm512_mask_abs_pd): Use
+ 	__m512d type for __A argument rather than __m512.
+ 
+ 2018-09-27  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-08-20  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/87033
+ 	* config/rs6000/rs6000.md (extendsi<mode>2): Change constraints
+ 	from 'Y' to 'YZ' to enable the LWAX instruction to be generated
+ 	for indexed loads.
+ 
+ 2018-09-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Return false
+ 	if the call takes a static chain.
+ 
+ 2018-09-19  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.md (atomic_storeqi): Restore deleted expander.
+ 	(atomic_storehi): Likewise.
+ 	(atomic_storesi): Likewise.
+ 	(atomic_loaddi): Restore compare and swap exchange loop code.
+ 
+ 2018-09-12  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from trunk
+ 	2018-08-24  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/86989
+ 	* config/rs6000/rs6000.c (toc_relative_expr_p): Check that the base is
+ 	the TOC register.
+ 
+ 2018-09-12  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-09-12  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390.md (PFPO_RND_MODE_DFP, PFPO_RND_MODE_BFP): New
+ 	constants.
+ 	("trunc<BFP:mode><DFP_ALL:mode>2")
+ 	("trunc<DFP_ALL:mode><BFP:mode>2")
+ 	("extend<BFP:mode><DFP_ALL:mode>2")
+ 	("extend<DFP_ALL:mode><BFP:mode>2"): Set proper rounding mode
+ 	according to the target operand type.
+ 
+ 2018-09-04  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-09-04  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and
+ 	XOR operations in NAND case.
+ 
+ 2018-09-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/invoke.texi (Option Summary): Add -Waligned-new.
+ 
+ 2018-09-03  Tom de Vries  <tdevries@suse.de>
+ 
+ 	backport from trunk:
+ 	2018-06-21  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR tree-optimization/85859
+ 	* tree-ssa-tail-merge.c (stmt_local_def): Copy gimple_is_call
+ 	test with comment from bb_no_side_effects_p.
+ 
+ 2018-08-25  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	Backport from mainline
+ 	PR target/86662
+ 	* gcc/tree.c (build_common_tree_nodes): Initialize integer_types array
+ 	with all enabled __intN types.
+ 
+ 	* gcc/testsuite/gcc.target/msp430/pr86662.c: New test.
+ 
+ 2018-08-21  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-08-20  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/87014
+ 	* config/i386/i386.md (eh_return): Always update EH return
+ 	address in word_mode.
+ 
+ 2018-08-17  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2018-08-11  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.md (UNSPEC_MEMORY_BARRIER): New unspec enum.
+ 	Update comment for atomic instructions.
+ 	(atomic_storeqi, atomic_storehi, atomic_storesi, atomic_storesf,
+ 	atomic_loaddf, atomic_loaddf_1, atomic_storedf, atomic_storedf_1):
+ 	Remove.
+ 	(atomic_loaddi): Revise fence expansion to only emit fence prior to
+ 	load for __ATOMIC_SEQ_CST model.
+ 	(atomic_loaddi_1): Remove float register target.
+ 	(atomic_storedi): Handle CONST_INT values.
+ 	(atomic_storedi_1): Remove float register source.  Add special case
+ 	for zero value.
+ 	(memory_barrier): New expander and insn.
+ 
+ 2018-08-13  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from mainline
+ 	2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR rtl-optimization/85645
+ 	* regrename.c (build_def_use): Also kill the chains that include the
+ 	destination of a REG_CFA_REGISTER note.
+ 
+ 	PR rtl-optimization/85645
+ 	*  regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
+ 	insn that has a REG_CFA_REGISTER note.
+ 
+ 2018-08-10  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from mainline
+ 	2018-06-19  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/86197
+ 	* config/rs6000/rs6000.md (rs6000_discover_homogeneous_aggregate): An
+ 	ieee128 argument takes up only one (vector) register, not two (floating
+ 	point) registers.
+ 
+ 2018-08-02  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	Backport from mainline
+ 	2018-07-31  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+ 
+ 	PR middle-end/86705
+ 	* gcc/cfgexpand.c (set_parm_rtl): Use the alignment of Pmode when
+ 	MAX_SUPPORTED_STACK_ALIGNMENT would otherwise be exceeded by the
+ 	requested variable alignment.
+ 	(expand_one_ssa_partition): Likewise.
+ 	(expand_one_var): Likewise.
+ 
+ 2018-08-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR bootstrap/86724
+ 	* graphite.h: Include isl/id.h and isl/space.h to allow build
+ 	with ISL 0.20.
+ 
+ 2018-07-29  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.c (pa_output_addr_vec): Align address table.
+ 	* config/pa/pa.h (JUMP_TABLES_IN_TEXT_SECTION): Revise comment.
+ 	* config/pa/pa32-linux.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
+ 
+ 2018-07-17  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	PR target/84168
+ 	2017-09-28  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_elf_asm_constructor)
+ 	(aarch64_elf_asm_destructor): Pass SECTION_NOTYPE to get_section
+ 	when creating .init_array and .fini_array sections with priority
+ 	specified.
+ 
+ 2018-07-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/84829
+ 	* config/gnu-user.h (GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC):
+ 	Remove -mieee-fp handling.
+ 
+ 2018-07-10  Carl Love  <cel@us.ibm.com>
+ 
+ 	Backport from mainline
+ 	2017-09-07  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/vsx.md (define_insn "*stxvl"): Add missing argument to
+ 	the sldi instruction.
+ 
+ 2018-06-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* lex.c (search_line_fast): Remove illegal coercion of an
+ 	unaligned pointer value to vector pointer type and replace with
+ 	use of __builtin_vec_vsx_ld () built-in function, which operates
+ 	on unaligned pointer values.
+ 
+ 2018-06-27  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	2018-06-19  Tony Reix  <tony.reix@atos.com>
+ 	    Damien Bergamini  <damien.bergamini@atos.com>
+ 	    David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* collect2.c (static_obj): New variable.
+ 	(static_libs): New variable.
+ 	(is_in_list): Uncomment declaration.
+ 	(main): Track AIX libraries linked statically.
+ 	(is_in_list): Uncomment definition.
+ 	(scan_prog_file): Don't add AIX shared libraries initializer
+ 	to constructor list if linking statically.
+ 
+ 2018-06-26  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	Backported from mainline
+ 	2018-06-20  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
+ 	behavior of vec_packsu (vector unsigned long long, vector unsigned
+ 	long long) to match behavior of vec_packs with same signature.
+ 
+ 2018-06-26  Robin Dapp  <rdapp@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.h (enum processor_flags): Do not use
+ 	default tune parameter when -march was specified.
+ 
+ 2018-06-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/86314
+ 	* config/i386/i386.md (setcc + movzbl to xor + setcc peephole2s):
+ 	Check reg_overlap_mentioned_p in addition to reg_set_p with the same
+ 	operands.
+ 
+ 2018-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	Back port from trunk
+ 	2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/85424
+ 	* config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
+ 	where the inputs overlap with the output.
+ 
+ 2018-06-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/84786
+ 	* config/i386/sse.md (vshift_count): New mode attr.
+ 	(<shift_insn><mode>3<mask_name>): Use <vshift_count>N instead of vN
+ 	as last operand's constraint for VI2_AVX2_AVX512BW shifts.  Use YvN
+ 	instead of vN as last operand's constraint for VI48_AVX2 shifts.
+ 
+ 2018-06-23  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR tree-optimization/85989
+ 	* gimple-ssa-backprop.c (backprop::m_visited_phis): New member
+ 	variable.
+ 	(backprop::intersect_uses): Check it when deciding whether this
+ 	is a backedge reference.
+ 	(backprop::process_block): Add each phi to m_visited_phis
+ 	after visiting it, then clear it at the end.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-06-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/86231
+ 	* tree-vrp.c (union_ranges): For (  [  )  ] or (   )[   ] range and
+ 	anti-range don't overwrite *vr0min before using it to compute *vr0max.
+ 
+ 	2018-06-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/85878
+ 	* expr.c (expand_assignment): Only call store_expr for halves if the
+ 	mode is the same.
+ 
+ 	2018-06-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/85945
+ 	* lower-subreg.c (find_decomposable_subregs): Don't decompose float
+ 	subregs of multi-word pseudos unless the float mode has word size.
+ 
+ 	2018-06-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/86025
+ 	* tree.c (inchash::add_expr): Handle IDENTIFIER_NODE.
+ 
+ 	2018-05-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85659
+ 	* cfgexpand.c (expand_asm_stmt): Don't create a temporary if
+ 	the type is addressable.  Don't force op into register if it has
+ 	BLKmode.
+ 
+ 	2018-05-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR web/85578
+ 	* doc/install.texi2html: Replace _002d with - and _002a with * in
+ 	generated html files using sed.
+ 
+ 	2018-04-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/85529
+ 	* tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
+ 	argument.  Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
+ 	rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
+ 	zero extension or masking of the MSB bit.
+ 	(optimize_range_tests): Add FIRST_BB argument, pass it through
+ 	to optimize_range_tests_var_bound.
+ 	(maybe_optimize_range_tests, reassociate_bb): Adjust
+ 	optimize_range_tests callers.
+ 
+ 	2018-04-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/85446
+ 	* match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
+ 	the integral and pointer types to have the same precision.
+ 
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
+ 	by using gcc_base_ver to generate a gcc_driver_version, and use
+ 	it when generating GCC_DRIVER_NAME.
+ 	* configure: Regenerate.
+ 
+ 	2018-04-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/85431
+ 	* dse.c (record_store): Ignore zero width stores.
+ 
+ 	PR target/85430
+ 	* config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
+ 
+ 	2018-04-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/85300
+ 	* combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
+ 	into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
+ 	simplify_unary_operation fails.
+ 
+ 	2018-04-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/85257
+ 	* fold-const.c (native_encode_vector): If not all elts could fit
+ 	and off is -1, return 0 rather than offset.
+ 	* tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
+ 	(offset - offset2) / BITS_PER_UNIT as 4th argument to
+ 	native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
+ 	adjust buffer in native_interpret_expr call.
+ 
+ 	2018-04-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/85252
+ 	* dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
+ 	build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
+ 
+ 	2018-04-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/85167
+ 	* shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
+ 	bb_defs if *split_p, instead preinitialize it to NULL.
+ 
+ 	2018-03-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/85095
+ 	* config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
+ 	*sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
+ 
+ 	2018-03-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/85022
+ 	* emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
+ 	known size by default.
+ 
+ 	PR inline-asm/85034
+ 	* function.c (match_asm_constraints_1): Don't optimize if input
+ 	doesn't satisfy general_operand predicate for output's mode.
+ 
+ 	PR inline-asm/85022
+ 	* alias.c (write_dependence_p): Don't require for x_canonicalized
+ 	non-VOIDmode if x has VOIDmode.
+ 
+ 	2018-03-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/84941
+ 	* function.c (match_asm_constraints_1): Don't do the optimization
+ 	if input isn't a REG, SUBREG, MEM or constant.
+ 
+ 	PR sanitizer/85018
+ 	* dwarf2asm.c (dw2_output_indirect_constant_1): Set
+ 	DECL_INITIAL (decl) to decl at the end.
+ 	* varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
+ 	adjust the comment.
+ 
+ 	2018-03-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/84875
+ 	* dce.c (delete_unmarked_insns): Don't remove frame related noop moves
+ 	holding REG_CFA_RESTORE notes, instead turn them into a USE.
+ 
+ 	PR c/84953
+ 	* builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
+ 	instead of TREE_TYPE (s1) for the return value.
+ 
+ 	PR target/84990
+ 	* dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
+ 	flag_section_anchors.
+ 	* varasm.c (use_blocks_for_decl_p): Remove hack for
+ 	dw2_force_const_mem.
+ 
+ 	2018-03-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/78651
+ 	* dwarf2asm.c: Include fold-const.c.
+ 	(dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
+ 	of decl rather than decl itself.
+ 
+ 	2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	PR sanitizer/78651
+ 	* dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
+ 	calling assemble_variable.
+ 
+ 	2018-03-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/84899
+ 	* postreload.c (reload_combine_recognize_pattern): Perform
+ 	INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
+ 	truncate_int_for_mode the result for the destination's mode.
+ 
+ 	PR tree-optimization/84841
+ 	* tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
+ 	1 << 3.
+ 	(FLOAT_ONE_CONST_TYPE): Define.
+ 	(constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
+ 	(sort_by_operand_rank): Put entries with higher constant_type last
+ 	rather than first to match comments.
+ 
+ 	2018-03-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/79085
+ 	* calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
+ 	check and use address of target always.
+ 
+ 	PR target/84860
+ 	* optabs.c (emit_conditional_move): Pass address of cmode's copy
+ 	rather than address of cmode as last argument to prepare_cmp_insn.
+ 
+ 	2018-03-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/84834
+ 	* match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
+ 	integer_pow2p@2 and test integer_pow2p in condition.
+ 	(A < 0 ? C : 0): Similarly for @1.
+ 
+ 	PR target/84827
+ 	* config/i386/i386.md (round<mode>2): For 387 fancy math, disable
+ 	pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
+ 
+ 	PR target/84786
+ 	* config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
+ 	on the last operand.
+ 
+ 	2018-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/84772
+ 	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
+ 	temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
+ 
+ 	PR c++/84767
+ 	* tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
+ 	decl, use remap_type if we want to use the type.
+ 
+ 	2018-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/84739
+ 	* tree-tailcall.c (find_tail_calls): Check call arguments against
+ 	DECL_ARGUMENTS (current_function_decl) rather than
+ 	DECL_ARGUMENTS (func) when checking for tail recursion.
+ 
+ 	2018-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/84700
+ 	* combine.c (combine_simplify_rtx): Don't try to simplify if
+ 	if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
+ 	are equal to x.
+ 
+ 2018-06-22  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/arm/arm_cmse.h (cmse_nsfptr_create): Change typeof to
+ 	__typeof__.
+ 	(cmse_check_pointed_object): Likewise.
+ 
+ 2018-06-22  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-05-17  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
+ 	#include <stdint.h>.  Replace intptr_t with __INTPTR_TYPE__.
+ 
+ 2018-06-21  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	Backport from mainline
+ 	2018-06-15  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom
+ 	multilibs for *-*-rtems*.
+ 	* config/riscv/t-rtems: New file.
+ 
+ 2018-06-19  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-06-19  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec
+ 	constant.
+ 	(allocate_stack, frame_blockage, *frame_blockage): New patterns.
+ 
+ 2018-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gimplify.c (gimplify_init_constructor): Really never clear for an
+ 	incomplete constructor if CONSTRUCTOR_NO_CLEARING is set.
+ 
+ 2018-06-18  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/82063
+ 	* calls.c (alloc_max_size): Correct a logic error/typo.
+ 	Treat excessive arguments as infinite.  Warn for invalid arguments.
+ 	* doc/invoke.texi (-Walloc-size-larger-than): Update.
+ 
+ 2018-06-14  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	Backport from mainline
+ 	2018-06-14  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config/rtems.h (STDINT_LONG32): Define.
+ 
+ 2018-06-11  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-06-08  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/85755
+ 	* config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC
+ 	addresses.
+ 
+ 2018-06-07  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-06-06  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/63177
+ 	* /config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mpower9.
+ 	Don't handle -mcpu=power8 if -mpower9-vector is also used.
+ 
+ 2018-06-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-05-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/85588
+ 	* fold-const.c (negate_expr_p): Restrict negation of operand
+ 	zero of a division to when we know that can happen without
+ 	overflow.
+ 	(fold_negate_expr_1): Likewise.
+ 
+ 	2018-05-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/85567
+ 	* gimplify.c (gimplify_save_expr): When in SSA form allow
+ 	SAVE_EXPRs to compute to SSA vars.
+ 
+ 	2018-05-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/85597
+ 	* tree-vect-stmts.c (vectorizable_operation): For ternary SLP
+ 	do not use split vect_get_vec_defs call but call vect_get_slp_defs
+ 	directly.
+ 
+ 2018-06-05  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-06-05  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* config/s390/s390-builtin-types.def: Add void function type.
+ 	* config/s390/s390-builtins.def: Use the function type for the
+ 	tbeginc builtin.
+ 
+ 2018-06-01  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR tree-optimization/85712
+ 	Backport from mainline:
+ 	2018-05-23  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR tree-optimization/85712
+ 	* gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
+ 	first_interp field.
+ 	(alloc_cand_and_find_basis): Initialize first_interp field.
+ 	(slsr_process_mul): Modify first_interp field.
+ 	(slsr_process_add): Likewise.
+ 	(slsr_process_cast): Modify first_interp field for each new
+ 	interpretation.
+ 	(slsr_process_copy): Likewise.
+ 	(dump_candidate): Dump first_interp field.
+ 	(replace_mult_candidate): Process all interpretations, not just
+ 	subsequent ones.
+ 	(replace_rhs_if_not_dup): Likewise.
+ 	(replace_one_candidate): Likewise.
+ 
+ 	Backport from mainline:
+ 	2018-05-25  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR tree-optimization/85712
+ 	* gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
+ 	this candidate has already been replaced in-situ by a copy.
+ 
+ 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/sse.md (cvtusi2<ssescalarmodesuffix>64<round_name>):
+ 	Add {q} suffix to insn mnemonic.
+ 
+ 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/85903
+ 	* config/i386/sse.md (movdi_to_sse): Do not generate pseudo
+ 	when memory input operand is handled.
+ 
+ 2018-05-21  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-05-17  Pat Haugen  <pthaugen@us.ibm.com>
+ 		    Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/85698
+ 	* config/rs6000/rs6000.c (rs6000_output_move_128bit): Check
+ 	dest operand.
+ 
+ 2018-05-17  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-05-11  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/85655
+ 	* ipa-cp.c (intersect_with_plats): Check that the lattice contains
+ 	single const.
+ 
+ 2018-05-01  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	backport from trunk:
+ 	2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
+ 		    Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR middle-end/84955
+ 	* omp-expand.c (expand_oacc_for): Add dummy false branch for
+ 	tiled basic blocks without omp continue statements.
+ 
+ 2018-04-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-04-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/85284
+ 	* tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
+ 	Only use the niter constraining form of simple_iv when the exit
+ 	is always executed.
+ 
+ 	2018-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/85244
+ 	* tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
+ 	after seeing a component reference with an adjacent field.  Treat
+ 	refs to arrays at struct end of external decls similar to
+ 	refs to unconstrained commons.
+ 
+ 	2018-04-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/85168
+ 	* tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
+ 	propagating abnormals.
+ 
+ 2018-04-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-04-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/85405
+ 	* ipa-devirt.c (odr_types_equivalent_p): Remove trailing
+ 	in message, remote space in between '_G' and '('.
+ 
+ 2018-04-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-04-17  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR lto/85405
+ 	* ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
+ 
+ 2018-04-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-03-28  Jakub Jelinek  <jakub@redhat.com>
+ 		    Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/85081
+ 	* gimplify.c (asan_poison_variable): Don't do the check for
+ 	gimplify_omp_ctxp here.
+ 	(gimplify_decl_expr): Do it here.
+ 	(gimplify_target_expr): Likewise.
+ 
+ 2018-04-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-03-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/84963
+ 	* ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
+ 	not intended return statement.
+ 
+ 2018-04-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-03-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/84658.
+ 	* (sem_item_optimizer::sem_item_optimizer): Initialize new
+ 	vector.
+ 	(sem_item_optimizer::~sem_item_optimizer): Release it.
+ 	(sem_item_optimizer::merge_classes): Register variable aliases.
+ 	(sem_item_optimizer::fixup_pt_set): New function.
+ 	(sem_item_optimizer::fixup_points_to_sets): Likewise.
+ 	* ipa-icf.h: Declare new variables and functions.
+ 
+ 2018-04-23  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	PR target/83660
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
+ 	vec_extract expression as having side effects to make sure it gets
+ 	a cleanup point.
+ 
+ 2018-04-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/85496
+ 	* expr.c (store_field): In the bitfield case, if the value comes from
+ 	a function call and is returned in registers by means of a PARALLEL,
+ 	do not change the mode of the temporary unless BLKmode and VOIDmode.
+ 
+ 2018-04-20  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/83969
+ 	* config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
+ 	Add strict argument and use it.
+ 	(rs6000_split_multireg_move): Update for new strict argument.
+ 	(mem_operand_gpr): Disallow all non-offsettable addresses.
+ 	* config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
+ 
+ 2018-04-18  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	PR target/85261
+ 	* config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
+ 	into register.
+ 
+ 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390.c (s390_output_indirect_thunk_function): Check
+ 	also for flag_dwarf2_cfi_asm.
+ 
+ 2018-04-11  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/alpha/alpha.md (stack_probe_internal): Rename
+ 	from "probe_stack".  Update all callers.
+ 
+ 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	PR target/85203
+ 	* config/arm/arm-builtins.c (arm_expand_builtin): Change
+ 	expansion to perform a bitwise AND of the argument followed by a
+ 	boolean negation of the result.
+ 
+ 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/84748
+ 	* config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
+ 	as clobbering CC_REGNUM.
+ 
+ 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/85196
+ 	* config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
+ 	based on LABEL_REF.  Remove useless assertion.
+ 	(pic_address_needs_scratch): Fix formatting.
+ 	(sparc_legitimize_pic_address): Minor tweaks.
+ 	(sparc_delegitimize_address): Adjust assertion accordingly.
+ 	* config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
+ 	into symbolic_operand.
+ 	(movsi_high_pic_label_ref): Likewise.
+ 	(movsi_lo_sum_pic_label_ref): Likewise.
+ 	(movdi_pic_label_ref): Likewise.
+ 	(movdi_high_pic_label_ref): Likewise.
+ 	(movdi_lo_sum_pic_label_ref): Likewise.
+ 
+ 2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>
+ 
+ 	* config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
+ 	custom LIB_SPEC setup.
+ 
+ 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/85193
+ 	* config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
+ 
+ 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR rtl-optimization/84878
+ 	* ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
+ 	the basic block.  Assert the use reference is not artificial and that
+ 	it has an associated insn.
+ 
+ 2018-04-03  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (emit_i387_cw_initialization): Always use logic
+ 	instructions when changing rounding bits to preserve precision bits
+ 	in the x87 control word.
+ 
+ 2018-04-03  Cesar Philippidis  <cesar@codesourcery.com>
+ 
+ 	Backport from mainline
+ 	2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
+ 
+ 	PR target/85056
+ 	* config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
+ 	extern array declarations.
+ 
+ 2018-04-02  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/84912
+ 	* config/rs6000/rs6000.h: Update copyright date.
+ 	(RS6000_BTM_POWERPC64): New define.
+ 	(RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
+ 	* config/rs6000/rs6000.c: Update copyright date.
+ 	(rs6000_builtin_mask_calculate): Add support for RS6000_BTM_POWERPC64.
+ 	(rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
+ 	(rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
+ 	* config/rs6000/rs6000-builtin.def: Update copyright date.
+ 	(BU_P7_POWERPC64_MISC_2): New macro definition.
+ 	(DIVDE): Use it.
+ 	(DIVDEU): Likewise.
+ 
+ 	Backport from mainline
+ 	2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/84912
+ 	* config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
+ 	(DIVWEUO): Likewise.
+ 	(DIVDEO): Likewise.
+ 	(DIVDEUO): Likewise.
+ 	* config/rs6000/rs6000.c (builtin_function_type): Remove support for
+ 	DIVWEUO and DIVDEUO.
+ 	* config/rs6000/rs6000.md: Update copyright date.
+ 	(UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
+ 	(UNSPEC_DIV_EXTEND): Remove deleted unspecs.
+ 	(div_extend): Likewise.
+ 	* doc/extend.texi: Update copyright date.
+ 	(__builtin_divweo): Remove documentation for deleted builtin function.
+ 	(__builtin_divweuo): Likewise.
+ 	(__builtin_divdeo): Likewise.
+ 	(__builtin_divdeuo): Likewise.
+ 
+ 2018-04-02  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-03-30  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/80546
+ 	* config/rs6000/vsx.md (??r): New mode attribute.
+ 	(*vsx_mov<mode>_64bit): Use it.
+ 	(*vsx_mov<mode>_32bit): Likewise.
+ 
+ 2018-03-29  Sebastian Peryt  <sebastian.peryt@intel.com>
+ 
+ 	PR c++/84783
+ 	* config/i386/avx512vlintrin.h (_mm256_permutexvar_epi64)
+ 	(_mm256_permutexvar_epi32, _mm256_permutex_epi64): New intrinsics.
+ 
+ 2018-03-29  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-03-22  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	PR target/84826
+ 	* config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
+ 	* config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
+ 	re-computing once computed.
+ 	(arm_expand_prologue): Compute machine->static_chain_stack_bytes.
+ 	(arm_init_machine_status): Initialize
+ 	machine->static_chain_stack_bytes.
+ 
+ 2018-03-28  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	2018-03-19  Sudakshina Das  <sudi.das@arm.com>
+ 	PR target/81647
+ 
+ 	* config/aarch64/aarch64-simd.md (vec_cmp<mode><v_cmp_result>): Modify
+ 	instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
+ 
+ 2018-03-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/85026
+ 	* config/arm/arm.md (unaligned_loadhis): Remove first alternative.
+ 	Clean up attributes.
+ 
+ 2018-03-28  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from mainline
+ 	2018-03-08  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/82411
+ 	* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
+ 	readonly data in sdata, if that is disabled.
+ 	* config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
+ 	* doc/invoke.texi (RS/6000 and PowerPC Options): Document
+ 	-mreadonly-in-sdata option.
+ 
+ 2018-03-27  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	Backport from mainline:
+ 	2018-03-20  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	PR target/82989
+ 	* config/arm/neon.md (ashldi3_neon): Update ?s for constraints
+ 	to favor GPR over NEON registers.
+ 	(<shift>di3_neon): Likewise.
+ 
+ 2018-03-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/82518
+ 	* config/arm/arm.c (arm_array_mode_supported_p): Return false for
+ 	BYTES_BIG_ENDIAN.
+ 
+ 2018-03-23  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/83789
+ 	* config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
+ 	(altivec_lvx_<mode>_1op): Likewise.
+ 	(altivec_stvx_<mode>_2op): Likewise.
+ 	(altivec_stvx_<mode>_1op): Likewise.
+ 	(altivec_lvx_<VM2:mode>): New define_expand.
+ 	(altivec_stvx_<VM2:mode>): Likewise.
+ 	(altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
+ 	(altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
+ 	(altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
+ 	(altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
+ 	* config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
+ 	(altivec_expand_stv_builtin): Likewise.
+ 	(altivec_expand_builtin): Likewise.
+ 	* config/rs6000/vector.md: Likewise.
+ 
+ 2018-03-23  Carl Love  <cel@us.ibm.com>
+ 
+ 	Backport from mainline:
+ 	2018-03-14  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/r6000.c (rtx_is_swappable_p): Add case UNSPEC_VPERMXOR.
+ 
+ 2018-03-22  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	backport from trunk:
+ 	2018-03-22  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR tree-optimization/84956
+ 	* tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
+ 	bb_has_abnormal_pred.
+ 
+ 2018-03-19  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/84574
+ 	* config/i386/i386.c (indirect_thunk_needed): Update comments.
+ 	(indirect_thunk_bnd_needed): Likewise.
+ 	(indirect_thunks_used): Likewise.
+ 	(indirect_thunks_bnd_used): Likewise.
+ 	(indirect_return_needed): New.
+ 	(indirect_return_bnd_needed): Likewise.
+ 	(output_indirect_thunk_function): Add a bool argument for
+ 	function return.
+ 	(output_indirect_thunk_function): Don't generate alias for
+ 	function return thunk.
+ 	(ix86_code_end): Call output_indirect_thunk_function to generate
+ 	function return thunks.
+ 	(ix86_output_function_return): Set indirect_return_bnd_needed
+ 	and indirect_return_needed instead of indirect_thunk_bnd_needed
+ 	and indirect_thunk_needed.
+ 
+ 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR target/83451
+ 	* config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
+ 	insn for floating-point loads and stores.
+ 
+ 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/invoke.texi (-mclflushopt): Fix spelling of option.
+ 
+ 2018-03-12  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR tree-optimization/84485
+ 	* tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Return
+ 	true for zero dependence distances if the step might be zero,
+ 	and if there is no metadata that guarantees correctness.
+ 	(vect_analyze_data_ref_access): Check safelen as well as
+ 	force_vectorize.
+ 
+ 2018-03-11  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	PR target/83984
+ 	* config/pa/pa.md: Load address of PIC label using the linkage table
+ 	if the label is nonlocal.
+ 
+ 	Backport from mainline
+ 	2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
+ 	sprint_ul.
+ 	(ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
+ 	(ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
+ 	* config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
+ 
+ 2018-03-09  Kugan Vivekanandarajah  <kuganv@linaro.org>
+ 
+ 	Backport from mainline
+ 	2017-09-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_override_options_after_change_1):
+ 	Disable pc relative literal load irrespective of
+ 	TARGET_FIX_ERR_A53_84341 for default.
+ 
+ 2018-03-06  Denis Chertykov  <chertykov@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/84209
+ 	* config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
+ 	* config/avr/avr.md: Only post-reload split REG-REG moves if
+ 	either register is GENERAL_REG_P.
+ 
+ 2018-03-06  Carl Love  <cel@us.ibm.com>
+ 
+ 	Backport from mainline
+ 	2/16/18  commit 257748  Carl Love  <cel@us.ibm.com>
+ 
+ 	* config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
+ 	* config/rs6000/rs6000-builtin.def: Remove macro expansion for
+ 	VINSERT4B_DI and VINSERT4B.
+ 	* config/rs6000/rs6000.c: Remove case statements for
+ 	P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
+ 	and P9V_BUILTIN_VEC_VINSERT4B.
+ 	* config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
+ 	P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
+ 	* config/rs6000/vsx.md:  Remove define_expand vinsert4b,
+ 	define_insn *vinsert4b_internal, define_insn "*vinsert4b_di_internal.
+ 	* doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
+ 	vec_insert4b.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-02-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c/84310
+ 	PR target/79747
+ 	* final.c (shorten_branches): Build align_tab array with one
+ 	more element.
+ 	* opts.c (finish_options): Add alignment option limit check.
+ 	(MAX_CODE_ALIGN): Likewise.
+ 	(MAX_CODE_ALIGN_VALUE): Likewise.
+ 	* doc/invoke.texi: Document maximum allowed option value for
+ 	all -falign-* options.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-02-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/80589
+ 	* doc/invoke.texi: Fix typo.
+ 	* params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-02-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/84137
+ 	* doc/gcov.texi: Fix typo in documentation.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-02-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/83879
+ 	* doc/gcov.texi: Document necessity of --dynamic-list-data when
+ 	using dlopen functionality.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-12-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR rtl-optimization/82675
+ 	* loop-unroll.c (unroll_loop_constant_iterations): Allocate one
+ 	more element in sbitmap.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-03-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	* ipa-utils.c (ipa_merge_profiles): Do not merge alias or
+ 	a function without profile.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR c/84229
+ 	* ipa-cp.c (determine_versionability): Do not version functions caling
+ 	va_arg_pack.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/81360
+ 	* cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
+ 	* symtab.c: Include builtins.h
+ 	(symtab_node::output_to_lto_symbol_table_p): Move here
+ 	from lto-streamer-out.c:output_symbol_p.
+ 	* lto-streamer-out.c (write_symbol): Turn early exit to assert.
+ 	(output_symbol_p): Move all logic to symtab.c
+ 	(produce_symtab): Update.
+ 
+ 2018-03-06  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/81572
+ 	* lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
+ 	* lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
+ 	LRA_UNKNOWN_ALT.
+ 	* lra-constraints.c (curr_insn_transform): Set up
+ 	LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
+ 	LRA_UNKNOWN_ALT.
+ 	(remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
+ 	* lra-eliminations.c (spill_pseudos): Ditto.
+ 	(process_insn_for_elimination): Ditto.
+ 	* lra-lives.c (reg_early_clobber_p): Use the new macros.
+ 	* lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
+ 	LRA_NON_CLOBBERED_ALT.
+ 
+ 2018-03-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-03-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/84486
+ 	* tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
+ 	When inserting a __builtin_assume_aligned call set the LHS
+ 	SSA name alignment info accordingly.
+ 
+ 	2018-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/84607
+ 	* genmatch.c (capture_info::walk_match): Do not mark
+ 	captured expressions without operands as expr_p given
+ 	they act more like predicates and should be subject to
+ 	"lost tail" side-effect preserving.
+ 
+ 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/84524
+ 	* config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
+ 	orig,vex.
+ 	(*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
+ 
+ 2018-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 		    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/84628
+ 	* expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
+ 	for error or warning attributes if CALL_FROM_THUNK_P is set.
+ 	Formatting fixes.
+ 
+ 	2018-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/84625
+ 	* config/i386/i386.c (ix86_print_operand): Use conditional
+ 	output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
+ 	zero vector.
+ 
+ 	2018-02-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
+ 	p->max as pointers rather than using iterative_hash_expr.
+ 
+ 	2017-11-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/82916
+ 	* gimple-ssa-store-merging.c
+ 	(pass_store_merging::terminate_all_aliasing_chains): For
+ 	gimple_store_p stmts also call refs_output_dependent_p.
+ 
+ 	2018-02-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84444
+ 	* builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
+ 	is ADDR_EXPR.
+ 
+ 	2018-02-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/84425
+ 	* ipa-inline.c (inline_small_functions): Fix a typo.
+ 
+ 	2018-02-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/82210
+ 	* stor-layout.c (place_field): For variable length fields, adjust
+ 	offset_align afterwards not just based on the field's alignment,
+ 	but also on the size.
+ 
+ 	2018-02-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/83987
+ 	* omp-low.c (maybe_remove_omp_member_access_dummy_vars,
+ 	remove_member_access_dummy_vars): New functions.
+ 	(lower_omp_for, lower_omp_taskreg, lower_omp_target,
+ 	lower_omp_1, execute_lower_omp): Use them.
+ 
+ 	PR rtl-optimization/84308
+ 	* shrink-wrap.c (spread_components): Release todo vector.
+ 
+ 	2018-02-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/84285
+ 	* gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
+ 	STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
+ 	-static-lib*san.
+ 
+ 	2018-02-09  Marek Polacek  <polacek@redhat.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/83659
+ 	* fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
+ 	Formatting fixes.  Verify first that tree_fits_shwi_p (op01).
+ 	Sync some changes from cxx_fold_indirect_ref.
+ 
+ 	2018-02-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
+ 	*DIV_EXPR and *MOD_EXPR.
+ 
+ 	2018-02-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/81661
+ 	PR tree-optimization/84117
+ 	* tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
+ 	* tree-eh.c: Include gimplify.h.
+ 	(find_trapping_overflow, replace_trapping_overflow,
+ 	rewrite_to_non_trapping_overflow): New functions.
+ 	* tree-vect-loop.c: Include tree-eh.h.
+ 	(vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
+ 
+ 	2018-01-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/83986
+ 	* sched-deps.c (sched_analyze_insn): For frame related insns, add anti
+ 	dependence against last_pending_memory_flush in addition to
+ 	pending_jump_insns.
+ 
+ 	2018-01-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/84040
+ 	* sched-deps.c (sched_macro_fuse_insns): Return immediately if
+ 	!insn_set.
+ 
+ 	2018-01-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/83977
+ 	* tree-inline.c (tree_function_versioning): Remove "omp declare simd"
+ 	attributes from DECL_ATTRIBUTES (new_decl) without affecting
+ 	DECL_ATTRIBUTES (old_decl).
+ 
+ 	2018-01-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/83945
+ 	* tree-emutls.c: Include gimplify.h.
+ 	(lower_emutls_2): New function.
+ 	(lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
+ 	with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
+ 	it before further processing.
+ 
+ 	PR target/83930
+ 	* simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
+ 	UINTVAL (trueop1) instead of INTVAL (op1).
+ 
+ 	2018-01-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR preprocessor/83722
+ 	* gcc.c (try_generate_repro): Pass
+ 	&temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
+ 	&temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
+ 	do_report_bug.
+ 
+ 	2018-01-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/83605
+ 	* gimple-ssa-strength-reduction.c: Include tree-eh.h.
+ 	(find_candidates_dom_walker::before_dom_children): Ignore stmts that
+ 	can throw.
+ 
+ 2018-03-01  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/84039
+ 	* config/i386/constraints.md (Bs): Replace
+ 	ix86_indirect_branch_register with
+ 	TARGET_INDIRECT_BRANCH_REGISTER.
+ 	(Bw): Likewise.
+ 	* config/i386/i386.md (indirect_jump): Likewise.
+ 	(tablejump): Likewise.
+ 	(*sibcall_memory): Likewise.
+ 	(*sibcall_value_memory): Likewise.
+ 	Peepholes of indirect call and jump via memory: Likewise.
+ 	(*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
+ 	(*sibcall_value_GOT_32): Likewise.
+ 	* config/i386/predicates.md (indirect_branch_operand): Likewise.
+ 	(GOT_memory_operand): Likewise.
+ 	(call_insn_operand): Likewise.
+ 	(sibcall_insn_operand): Likewise.
+ 	(GOT32_symbol_operand): Likewise.
+ 	* config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
+ 
+ 2018-03-01  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	* config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
+ 
+ 	2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/84530
+ 	* config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
+ 	the bool argument.
+ 	(ix86_output_indirect_function_return): New prototype.
+ 	(ix86_split_simple_return_pop_internal): Likewise.
+ 	* config/i386/i386.c (indirect_return_via_cx): New.
+ 	(indirect_return_via_cx_bnd): Likewise.
+ 	(indirect_thunk_name): Handle return va CX_REG.
+ 	(output_indirect_thunk_function): Create alias for
+ 	__x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
+ 	(ix86_output_indirect_jmp): Remove the bool argument.
+ 	(ix86_output_indirect_function_return): New function.
+ 	(ix86_split_simple_return_pop_internal): Likewise.
+ 	* config/i386/i386.md (*indirect_jump): Don't pass false
+ 	to ix86_output_indirect_jmp.
+ 	(*tablejump_1): Likewise.
+ 	(simple_return_pop_internal): Change it to define_insn_and_split.
+ 	Call ix86_split_simple_return_pop_internal to split it for
+ 	-mfunction-return=.
+ 	(simple_return_indirect_internal): Call
+ 	ix86_output_indirect_function_return instead of
+ 	ix86_output_indirect_jmp.
+ 
+ 2017-03-02  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	Backport from trunk r256891:
+ 	2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
+ 
+ 	PR target/83790
+ 	* config/nvptx/nvptx.c (output_init_frag): Don't use generic address
+ 	spaces for function labels.
+ 
+ 2018-02-26  Carl Love  <cel@us.ibm.com>
+ 
+ 	Backport from mainline: commit 257747 on 2018-02-16.
+ 
+ 	* config/rs6000/altivec.h: Add builtin names vec_extract4b
+ 	vec_insert4b.
+ 	* config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
+ 	definitions.
+ 	* config/rs6000/rs6000-c.c: Add the definitions for
+ 	P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
+ 	* config/rs6000/rs6000.c (altivec_expand_builtin): Add
+ 	P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
+ 	* config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
+ 	definition for insert4b and define insn *insert3b_internal.
+ 	* doc/extend.texi: Add documentation for vec_extract4b.
+ 
+ 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/83496
+ 	* reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
+ 	booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
+ 	(steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
+ 	redundant insn, if any.
+ 	(relax_delay_slots): Likewise.
+ 	(update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
+ 
+ 2018-02-22  Sudakshina Das  <sudi.das@arm.com>
+ 	    Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	Backport from mainline:
+ 	2017-12-14  Sudakshina Das  <sudi.das@arm.com>
+ 		    Bin Cheng  <bin.cheng@arm.com>
+ 
+ 	PR target/81228
+ 	* config/aarch64/aarch64.c (aarch64_select_cc_mode): Move LTGT to
+ 	CCFPEmode.
+ 	* config/aarch64/aarch64-simd.md (vec_cmp<mode><v_cmp_result>): Add
+ 	LTGT.
+ 
+ 2018-02-16  Jozef Lawrynowicz <jozefl.gcc@gmail.com>
+ 
+ 	PR target/79242
+ 	* machmode.def: Define a complex mode for PARTIAL_INT.
+ 	* genmodes.c (complex_class): Return MODE_COMPLEX_INT for
+ 	MODE_PARTIAL_INT.
+ 	* doc/rtl.texi: Document CSPImode.
+ 	* config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
+ 	handling.
+ 	(msp430_hard_regno_nregs_with_padding): Likewise.
+ 
+ 2018-02-16  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	Backport from trunk
+ 	2018-01-10  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	PR target/82096
+ 	* expmed.c (emit_store_flag_force): Swap if const op0
+ 	and change VOIDmode to mode of op0.
+ 
+ 2018-02-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/84190
+ 	* tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
+ 	volatile accesses if the decl isn't volatile.
+ 
+ 2018-02-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	Back port from trunk
+ 	2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/84154
+ 	* config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
+ 	Convert from define_expand to be define_insn_and_split.  Rework
+ 	float/double/_Float128 conversions to QI/HI/SImode to work with
+ 	both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
+ 	conversions to QI/HImode types did a store and then a load to
+ 	truncate the value.  For conversions to VSX registers, don't split
+ 	the insn, instead emit the code directly.  Use the code iterator
+ 	any_fix to combine signed and unsigned conversions.
+ 	(fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
+ 	(fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
+ 	(fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
+ 	(fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
+ 	(fix_<mode>di2_hw): Likewise.
+ 	(fixuns_<mode>di2_hw): Likewise.
+ 	(fix_<mode>si2_hw): Likewise.
+ 	(fixuns_<mode>si2_hw): Likewise.
+ 	(fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
+ 	(fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
+ 	(fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
+ 	fix<uns>_trunc<SFDF:mode>si2_p8.
+ 	(fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
+ 	used.
+ 	(fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
+ 	(fix<uns>_<mode>_mem): Likewise.
+ 	(fctiw<u>z_<mode>_mem): Likewise.
+ 	(fix<uns>_<mode>_mem): Likewise.
+ 	(fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
+ 	the register allocator from doing a direct move to the GPRs to do
+ 	a store, and instead use the ISA 3.0 store byte/half-word from
+ 	vector register instruction.  For IEEE 128-bit floating point,
+ 	also optimize stores of 32-bit ints.
+ 	(fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
+ 
+ 2018-02-15  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+ 
+ 	Back port from mainline
+ 	2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
+ 
+ 	PR target/83758
+ 	* config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
+ 	a reg rtx.
+ 
+ 2018-02-14  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Back port from mainline
+ 	2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/84279
+ 	* config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
+ 
+ 2018-02-14  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR c++/83990
+ 	* ipa-prop.c (ipa_modify_call_arguments): Use location of call
+ 	statements, also set location of a load to a temporary.
+ 
+ 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
+ 	function label.
+ 
+ 	Backport from mainline
+ 	2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR target/84089
+ 	* config/pa/predicates.md (base14_operand): Handle VOIDmode.
+ 
+ 2018-02-09  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-02-08  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* hsa-gen.c (get_symbol_for_decl): Set program allocation for
+ 	static local variables.
+ 
+ 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/PR84295
+ 	* config/s390/s390.c (s390_set_current_function): Invoke
+ 	s390_indirect_branch_settings also if fndecl didn't change.
+ 
+ 2018-02-08  Iain Sandoe  <iain@codesourcery.com>
+ 
+ 	PR target/84113
+ 	* config/rs6000/altivec.md (*restore_world): Remove LR use.
+ 	* config/rs6000/predicates.md (restore_world_operation): Adjust op
+ 	count, remove one USE.
+ 
+ 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/s390-opts.h (enum indirect_branch): Define.
+ 	* config/s390/s390-protos.h (s390_return_addr_from_memory)
+ 	(s390_indirect_branch_via_thunk)
+ 	(s390_indirect_branch_via_inline_thunk): Add function prototypes.
+ 	(enum s390_indirect_branch_type): Define.
+ 	* config/s390/s390.c (struct s390_frame_layout, struct
+ 	machine_function): Remove.
+ 	(indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
+ 	(indirect_branch_table_label_no, indirect_branch_table_name):
+ 	Define variables.
+ 	(INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
+ 	(enum s390_indirect_branch_option): Define.
+ 	(s390_return_addr_from_memory): New function.
+ 	(s390_handle_string_attribute): New function.
+ 	(s390_attribute_table): Add new attribute handler.
+ 	(s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
+ 	(s390_indirect_branch_via_thunk): New function.
+ 	(s390_indirect_branch_via_inline_thunk): New function.
+ 	(s390_function_ok_for_sibcall): When jumping via thunk disallow
+ 	sibling call optimization for non z10 compiles.
+ 	(s390_emit_call): Force indirect branch target to be a single
+ 	register.  Add r1 clobber for non-z10 compiles.
+ 	(s390_emit_epilogue): Emit return jump via return_use expander.
+ 	(s390_reorg): Handle JUMP_INSNs as execute targets.
+ 	(s390_option_override_internal): Perform validity checks for the
+ 	new command line options.
+ 	(s390_indirect_branch_attrvalue): New function.
+ 	(s390_indirect_branch_settings): New function.
+ 	(s390_set_current_function): Invoke s390_indirect_branch_settings.
+ 	(s390_output_indirect_thunk_function):  New function.
+ 	(s390_code_end): Implement target hook.
+ 	(s390_case_values_threshold): Implement target hook.
+ 	(TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
+ 	macros.
+ 	* config/s390/s390.h (struct s390_frame_layout)
+ 	(struct	machine_function): Move here from s390.c.
+ 	(TARGET_INDIRECT_BRANCH_NOBP_RET)
+ 	(TARGET_INDIRECT_BRANCH_NOBP_JUMP)
+ 	(TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
+ 	(TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
+ 	(TARGET_INDIRECT_BRANCH_NOBP_CALL)
+ 	(TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
+ 	(TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
+ 	(TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
+ 	(TARGET_INDIRECT_BRANCH_TABLE): Define macros.
+ 	* config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
+ 	(INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
+ 	(mnemonic attribute): Add values which aren't recognized
+ 	automatically.
+ 	("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
+ 	pattern for branch conversion.  Fix mnemonic attribute.
+ 	("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
+ 	indirect branch via thunk if requested.
+ 	("indirect_jump", "<code>"): Expand patterns for branch conversion.
+ 	("*indirect_jump"): Disable for branch conversion using out of
+ 	line thunks.
+ 	("indirect_jump_via_thunk<mode>_z10")
+ 	("indirect_jump_via_thunk<mode>")
+ 	("indirect_jump_via_inlinethunk<mode>_z10")
+ 	("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
+ 	("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
+ 	("casesi_jump_via_inlinethunk<mode>_z10")
+ 	("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
+ 	("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
+ 	("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
+ 	("*indirect2_jump"): Disable for branch conversion.
+ 	("casesi_jump"): Turn into expander and expand patterns for branch
+ 	conversion.
+ 	("return_use"): New expander.
+ 	("*return"): Emit return via thunk and rename it to ...
+ 	("*return<mode>"): ... this one.
+ 	* config/s390/s390.opt: Add new options and and enum for the
+ 	option values.
+ 
+ 2018-02-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/84233
+ 	* tree-ssa-phiprop.c (propagate_with_phi): Use separate
+ 	changed flag instead of boguously re-using phi_inserted.
+ 
+ 2018-02-07  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal):
+ 	Display warning message for -mno-speculate-indirect-jumps.
+ 
+ 2018-02-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	Backport from mainline
+ 	2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR bootstrap/84017
+ 	* configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
+ 	* configure: Regenerate.
+ 
+ 2018-02-05  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Back port from mainline
+ 	2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/56010
+ 	PR target/83743
+ 	* config/rs6000/driver-rs6000.c: #include "diagnostic.h".
+ 	#include "opts.h".
+ 	(rs6000_supported_cpu_names): New static variable.
+ 	(linux_cpu_translation_table): Likewise.
+ 	(elf_platform) <cpu>: Define new static variable and use it.
+ 	Translate kernel AT_PLATFORM name to canonical name if needed.
+ 	Error if platform name is unknown.
+ 
+ 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	* config/i386/i386.c (ix86_output_function_return): Pass
+ 	INVALID_REGNUM, instead of -1, as invalid register number to
+ 	indirect_thunk_name and output_indirect_thunk.
+ 
+ 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR rtl-optimization/84123
+ 	* combine.c (change_zero_ext): Check if hard register satisfies
+ 	can_change_dest_mode before calling gen_lowpart_SUBREG.
+ 
+ 2018-02-01  Renlin Li  <renlin.li@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-02-01  Renlin Li  <renlin.li@arm.com>
+ 
+ 	PR target/83370
+ 	* config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
+ 	TAILCALL_ADDR_REGS.
+ 	(aarch64_register_move_cost): Likewise.
+ 	* config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
+ 	TAILCALL_ADDR_REGS.
+ 	(REG_CLASS_NAMES): Likewise.
+ 	(REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
+ 	TAILCALL_ADDR_REGS. Remove IP registers.
+ 	* config/aarch64/aarch64.md (Ucs): Update register constraint.
+ 
+ 2018-02-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2017-11-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82795
+ 	* tree-if-conv.c (predicate_mem_writes): Remove bogus assert.
+ 
+ 2018-01-31  Richard Biener <rguenther@suse.de>
+ 	    Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2018-01-29  Richard Biener <rguenther@suse.de>
+ 		    Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	PR bootstrap/80867
+ 	* tree-vect-stmts.c (vectorizable_call): Don't call
+ 	targetm.vectorize_builtin_md_vectorized_function if callee is
+ 	NULL.
+ 
+ 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/84071
+ 	* doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/84071
+ 	* combine.c (record_dead_and_set_regs_1): Record the source unmodified
+ 	for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
+ 
+ 2018-01-29  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	Backport from mainline
+ 	2018-01-24  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	PR target/68467
+ 	* config/m68k/m68k.c (m68k_promote_function_mode): New function.
+ 	(TARGET_PROMOTE_FUNCTION_MODE): New macro.
+ 
+ 2018-01-29  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/81763
+ 	* config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
+ 	to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
+ 
+ 2018-01-29  Alan Modra  <amodra@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-01-26  Alan Modra  <amodra@gmail.com>
+ 	PR target/84033
+ 	* config/rs6000/rs6000.c (rtx_is_swappable_p): Exclude
+ 	UNSPEC_VBPERMQ.
+ 
+ 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	* doc/invoke.texi: Replace -mfunction-return==@var{choice} with
+ 	-mfunction-return=@var{choice}.
+ 
+ 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/83905
+ 	* config/i386/i386.c (ix86_expand_prologue): Use cost reference
+ 	of struct ix86_frame.
+ 	(ix86_expand_epilogue): Likewise.  Add a local variable for
+ 	the reg_save_offset field in struct ix86_frame.
+ 
+ 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/83985
+ 	* dce.c (deletable_insn_p): Return false for separate shrink wrapping
+ 	REG_CFA_RESTORE insns.
+ 	(delete_unmarked_insns): Don't ignore separate shrink wrapping
+ 	REG_CFA_RESTORE insns here.
+ 
+ 2018-01-25  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (indirect_thunk_name): Declare regno
+ 	as unsigned int.  Compare regno with INVALID_REGNUM.
+ 	(output_indirect_thunk): Ditto.
+ 	(output_indirect_thunk_function): Ditto.
+ 	(ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
+ 	in the call to output_indirect_thunk_function.
+ 
+ 2018-01-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	Back port from trunk
+ 	2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/83862
+ 	* config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
+ 	no longer used.
+ 	* config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
+ 	* config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
+ 	128-bit to produce an UNSPEC move to get the double word with the
+ 	signbit and then a shift directly to do signbit.
+ 	(signbit<mode>2_dm): Replace old IEEE 128-bit signbit
+ 	implementation with a new version that just does either a direct
+ 	move or a regular move.  Move memory interface to separate insns.
+ 	Move insns so they are next to the expander.
+ 	(signbit<mode>2_dm_mem_be): New combiner insns to combine load
+ 	with signbit move.  Split big and little endian case.
+ 	(signbit<mode>2_dm_mem_le): Likewise.
+ 	(signbit<mode>2_dm_<su>ext): Delete, no longer used.
+ 	(signbit<mode>2_dm2): Likewise.
+ 
+ 2018-01-25  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Back port from mainline
+ 	2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/83399
+ 	* config/rs6000/rs6000.c (print_operand) <'y'>: Use
+ 	VECTOR_MEM_ALTIVEC_OR_VSX_P.
+ 	* config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
+ 	indexed_or_indirect_operand predicate.
+ 	(*vsx_le_perm_load_<mode> for VSX_W): Likewise.
+ 	(*vsx_le_perm_load_v8hi): Likewise.
+ 	(*vsx_le_perm_load_v16qi): Likewise.
+ 	(*vsx_le_perm_store_<mode> for VSX_D): Likewise.
+ 	(*vsx_le_perm_store_<mode> for VSX_W): Likewise.
+ 	(*vsx_le_perm_store_v8hi): Likewise.
+ 	(*vsx_le_perm_store_v16qi): Likewise.
+ 	(eight unnamed splitters): Likewise.
+ 
+ 2018-01-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
+ 	New function.
+ 	(rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
+ 	swap associated with both a load and a store.
+ 
+ 2018-01-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	* BASE-VER: Increment to 7.3.1.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/gcc/DATESTAMP gcc-7.4.0/gcc/DATESTAMP
*** gcc-7.3.0/gcc/DATESTAMP	Thu Jan 25 00:16:09 2018
--- gcc-7.4.0/gcc/DATESTAMP	Thu Dec  6 00:16:14 2018
***************
*** 1 ****
! 20180125
--- 1 ----
! 20181206
diff -Nrcpad gcc-7.3.0/gcc/ada/ChangeLog gcc-7.4.0/gcc/ada/ChangeLog
*** gcc-7.3.0/gcc/ada/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/ada/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,149 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-11-15  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/misc.c (gnat_init_gcc_eh): Do not override the switch
+ 	-fnon-call-exceptions passed on the command line in -gnatp mode.
+ 
+ 2018-11-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions
+ 	for the runtime on platforms where System.Machine_Overflow is true.
+ 
+ 2018-11-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* fe.h (Suppress_Checks): Declare.
+ 	* gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions
+ 	only if checks are not suppressed and -faggressive-loop-optimizations
+ 	only if they are.
+ 	* gcc-interface/trans.c (struct loop_info_d): Remove has_checks and
+ 	warned_aggressive_loop_optimizations fields.
+ 	(gigi): Do not clear warn_aggressive_loop_optimizations here.
+ 	(Raise_Error_to_gnu): Do not set has_checks.
+ 	(gnat_to_gnu) <N_Indexed_Component>: Remove support for aggressive
+ 	loop optimizations.
+ 
+ 2018-10-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (unchecked_convert): Use local variables for
+ 	the biased and reverse SSO attributes of both types.
+ 	Further extend the processing of integral types in the presence of
+ 	reverse SSO to all scalar types.
+ 
+ 2018-10-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Pragma_to_gnu) <Pragma_Inspection_Point>: Use
+ 	a simple memory constraint in all cases.
+ 
+ 2018-09-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	Backport from mainline
+ 	2018-07-31  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* s-osinte-solaris.ads (upad64_t): New private type.
+ 	(mutex_t): Use it for 'lock' and 'data' components.
+ 	(cond_t): Likewise for 'data' and use single 'flags' component.
+ 
+ 2018-07-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (choices_to_gnu): Rename parameters.  Deal with
+ 	an operand of Character type.  Factor out range generation to the end.
+ 	Check that the bounds are literals and convert them to the type of the
+ 	operand before building the ranges.
+ 	* gcc-interface/utils.c (make_dummy_type): Minor tweak.
+ 	(make_packable_type): Propagate TYPE_DEBUG_TYPE.
+ 	(maybe_pad_type): Likewise.
+ 
+ 2018-07-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Deal with
+ 	more rvalues in the expression of a renaming.
+ 
+ 2018-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/ada-tree.h (TYPE_RETURN_BY_DIRECT_REF_P): Change from
+ 	using TYPE_LANG_FLAG_4 to using TYPE_LANG_FLAG_0.
+ 	(TYPE_ALIGN_OK): Move around.
+ 	(TYPE_PADDING_FOR_COMPONENT): Remove superfluous parentheses.
+ 	* gcc-interface/decl.c (change_qualified_type): Move to...
+ 	(gnat_to_gnu_entity): Adjust comment.
+ 	* gcc-interface/gigi.h (change_qualified_type): ...here; make inline.
+ 	(ceil_pow2): Use ceil_log2.
+ 	* gcc-interface/utils.c (finish_subprog_decl): Add couple of comments
+ 	and do not set TREE_SIDE_EFFECTS.
+ 	(handle_noreturn_attribute): Use change_qualified_type.
+ 
+ 2018-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: Do not get
+ 	the expression of a dispatch table that is not being defined.
+ 	<E_Record_Subtype>: Remove obsolete kludge.
+ 
+ 2018-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	Backpor from mainline
+ 	2018-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: If this is
+ 	not a definition, retrieve the expression only if it's a compile-time
+ 	known value if we are just annotating types.
+ 
+ 	* gcc-interface/utils.c (convert): Do not try to upcast properly for a
+ 	conversion between tagged types in type_annotate_only mode.
+ 
+ 2018-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	Backport from mainline
+ 	2018-06-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Reuse the
+ 	existing fields of a dummy fat pointer type, if any.  Clear the
+ 	TYPE_DECL_SUPPRESS_DEBUG on the fat pointer type after completing it.
+ 
+ 2018-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/ada-tree.h (TYPE_PADDING_FOR_COMPONENT): New macro.
+ 	* gcc-interface/decl.c (gnat_to_gnu_component_type): Cache the padding
+ 	type built for an aliased component with variable size.
+ 
+ 2018-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	Backport from mainline
+ 	2018-05-31  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Call_to_gnu): If this is a function call and
+ 	there is no target, also create a temporary for the return value for
+ 	an allocator if the type is an unconstrained record type with default
+ 	discriminant.
+ 
+ 2018-04-12  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	Backport from mainline
+ 	2018-03-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* gcc-interface/Makefile.in (OSCONS_CPP): Remove redundant
+ 	$(GNATLIBCFLAGS).
+ 	(OSCONS_EXTRACT): Add $(GNATLIBCFLAGS_FOR_C).
+ 
+ 2018-03-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/82813
+ 	* gcc-interface/misc.c (gnat_post_options): Disable string overflow
+ 	warnings.
+ 
+ 2018-03-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (node_has_volatile_full_access) <N_Identifier>:
+ 	Consider only entities for objects.
+ 
+ 2018-03-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (convert_with_check): Fix typo in the condition
+ 	guarding the overflow check emitted for the upper bound of a floating-
+ 	point conversion.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/gcc/ada/fe.h gcc-7.4.0/gcc/ada/fe.h
*** gcc-7.3.0/gcc/ada/fe.h	Tue Oct 11 10:11:49 2016
--- gcc-7.4.0/gcc/ada/fe.h	Thu Nov  8 15:58:16 2018
*************** extern Boolean In_Same_Source_Unit
*** 177,182 ****
--- 177,183 ----
  #define GNAT_Mode                      opt__gnat_mode
  #define List_Representation_Info       opt__list_representation_info
  #define No_Strict_Aliasing_CP          opt__no_strict_aliasing
+ #define Suppress_Checks                opt__suppress_checks
  
  typedef enum {
    Front_End_SJLJ, Back_End_ZCX, Back_End_SJLJ
*************** extern Boolean Generate_SCO_Instance_Tab
*** 191,196 ****
--- 192,198 ----
  extern Boolean GNAT_Mode;
  extern Int List_Representation_Info;
  extern Boolean No_Strict_Aliasing_CP;
+ extern Boolean Suppress_Checks;
  
  #define ZCX_Exceptions            opt__zcx_exceptions
  #define SJLJ_Exceptions           opt__sjlj_exceptions
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/Makefile.in gcc-7.4.0/gcc/ada/gcc-interface/Makefile.in
*** gcc-7.3.0/gcc/ada/gcc-interface/Makefile.in	Mon Dec  4 13:41:46 2017
--- gcc-7.4.0/gcc/ada/gcc-interface/Makefile.in	Thu Apr 12 11:08:35 2018
*************** OSCONS_CC=$(subst ./xgcc,../../xgcc,$(su
*** 2756,2764 ****
  # ada/types.h does not conflict with a same-named system header (VxWorks
  # has a <types.h> header).
  
! OSCONS_CPP=$(OSCONS_CC) $(GNATLIBCFLAGS) $(GNATLIBCFLAGS_FOR_C) -E -C \
    -DTARGET=\"$(target)\" -iquote $(fsrcpfx)ada $(fsrcpfx)ada/s-oscons-tmplt.c > s-oscons-tmplt.i
! OSCONS_EXTRACT=$(OSCONS_CC) -S s-oscons-tmplt.i
  
  # Note: if you need to build with a non-GNU compiler, you could adapt the
  # following definitions (written for VMS DEC-C)
--- 2756,2764 ----
  # ada/types.h does not conflict with a same-named system header (VxWorks
  # has a <types.h> header).
  
! OSCONS_CPP=$(OSCONS_CC) $(GNATLIBCFLAGS_FOR_C) -E -C \
    -DTARGET=\"$(target)\" -iquote $(fsrcpfx)ada $(fsrcpfx)ada/s-oscons-tmplt.c > s-oscons-tmplt.i
! OSCONS_EXTRACT=$(OSCONS_CC) $(GNATLIBCFLAGS_FOR_C) -S s-oscons-tmplt.i
  
  # Note: if you need to build with a non-GNU compiler, you could adapt the
  # following definitions (written for VMS DEC-C)
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/ada-tree.h gcc-7.4.0/gcc/ada/gcc-interface/ada-tree.h
*** gcc-7.3.0/gcc/ada/gcc-interface/ada-tree.h	Mon Jul 11 15:02:12 2016
--- gcc-7.4.0/gcc/ada/gcc-interface/ada-tree.h	Tue Jun 12 10:35:05 2018
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2016, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2018, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** do {							 \
*** 83,88 ****
--- 83,94 ----
    ((TREE_CODE (NODE) == INTEGER_TYPE || TREE_CODE (NODE) == ARRAY_TYPE) \
     && TYPE_PACKED_ARRAY_TYPE_P (NODE))
  
+ /* For FUNCTION_TYPEs, nonzero if the function returns by direct reference,
+    i.e. the callee returns a pointer to a memory location it has allocated
+    and the caller only needs to dereference the pointer.  */
+ #define TYPE_RETURN_BY_DIRECT_REF_P(NODE) \
+   TYPE_LANG_FLAG_0 (FUNCTION_TYPE_CHECK (NODE))
+ 
  /* For INTEGER_TYPE, nonzero if this is a modular type with a modulus that
     is not equal to two to the power of its mode's size.  */
  #define TYPE_MODULAR_P(NODE) TYPE_LANG_FLAG_1 (INTEGER_TYPE_CHECK (NODE))
*************** do {							 \
*** 152,163 ****
  #define TYPE_CONVENTION_FORTRAN_P(NODE) \
    TYPE_LANG_FLAG_4 (ARRAY_TYPE_CHECK (NODE))
  
- /* For FUNCTION_TYPEs, nonzero if the function returns by direct reference,
-    i.e. the callee returns a pointer to a memory location it has allocated
-    and the caller only needs to dereference the pointer.  */
- #define TYPE_RETURN_BY_DIRECT_REF_P(NODE) \
-   TYPE_LANG_FLAG_4 (FUNCTION_TYPE_CHECK (NODE))
- 
  /* For RECORD_TYPE, UNION_TYPE and ENUMERAL_TYPE, nonzero if this is a dummy
     type, made to correspond to a private or incomplete type.  */
  #define TYPE_DUMMY_P(NODE) \
--- 158,163 ----
*************** do {							 \
*** 186,191 ****
--- 186,194 ----
  /* True for a dummy type if TYPE appears in a profile.  */
  #define TYPE_DUMMY_IN_PROFILE_P(NODE) TYPE_LANG_FLAG_6 (NODE)
  
+ /* True if objects of this type are guaranteed to be properly aligned.  */
+ #define TYPE_ALIGN_OK(NODE) TYPE_LANG_FLAG_7 (NODE)
+ 
  /* True for types that implement a packed array and for original packed array
     types.  */
  #define TYPE_IMPL_PACKED_ARRAY_P(NODE) \
*************** do {							 \
*** 199,207 ****
     alignment value the type ought to have.  */
  #define TYPE_MAX_ALIGN(NODE) (TYPE_PRECISION (RECORD_OR_UNION_CHECK (NODE)))
  
- /* True if objects of tagged types are guaranteed to be properly aligned.  */
- #define TYPE_ALIGN_OK(NODE) TYPE_LANG_FLAG_7 (NODE)
- 
  /* For an UNCONSTRAINED_ARRAY_TYPE, this is the record containing both the
     template and the object.
  
--- 202,207 ----
*************** do {							 \
*** 232,237 ****
--- 232,242 ----
     refer to the routine gnat_to_gnu_entity.  */
  #define TYPE_CI_CO_LIST(NODE) TYPE_LANG_SLOT_1 (FUNCTION_TYPE_CHECK (NODE))
  
+ /* For an ARRAY_TYPE with variable size, this is the padding type built for
+    the array type when it is itself the component type of another array.  */
+ #define TYPE_PADDING_FOR_COMPONENT(NODE) \
+   TYPE_LANG_SLOT_1 (ARRAY_TYPE_CHECK (NODE))
+ 
  /* For a VECTOR_TYPE, this is the representative array type.  */
  #define TYPE_REPRESENTATIVE_ARRAY(NODE) \
    TYPE_LANG_SLOT_1 (VECTOR_TYPE_CHECK (NODE))
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/decl.c gcc-7.4.0/gcc/ada/gcc-interface/decl.c
*** gcc-7.3.0/gcc/ada/gcc-interface/decl.c	Thu Dec 14 17:05:43 2017
--- gcc-7.4.0/gcc/ada/gcc-interface/decl.c	Tue Jul 17 10:12:02 2018
*************** static tree gnat_to_gnu_component_type (
*** 206,212 ****
  static tree gnat_to_gnu_subprog_type (Entity_Id, bool, bool, tree *);
  static tree gnat_to_gnu_field (Entity_Id, tree, int, bool, bool);
  static tree gnu_ext_name_for_subprog (Entity_Id, tree);
- static tree change_qualified_type (tree, int);
  static void set_nonaliased_component_on_array_type (tree);
  static void set_reverse_storage_order_on_array_type (tree);
  static bool same_discriminant_p (Entity_Id, Entity_Id);
--- 206,211 ----
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 592,608 ****
        /* If we have a constant that we are not defining, get the expression it
  	 was defined to represent.  This is necessary to avoid generating dumb
  	 elaboration code in simple cases, but we may throw it away later if it
! 	 is not a constant.  But do not retrieve it if it is an allocator since
! 	 the designated type might still be dummy at this point.  */
        if (!definition
  	  && !No_Initialization (Declaration_Node (gnat_entity))
! 	  && Present (Expression (Declaration_Node (gnat_entity)))
! 	  && Nkind (Expression (Declaration_Node (gnat_entity)))
! 	     != N_Allocator)
! 	  /* The expression may contain N_Expression_With_Actions nodes and
! 	     thus object declarations from other units.  Discard them.  */
! 	gnu_expr
! 	  = gnat_to_gnu_external (Expression (Declaration_Node (gnat_entity)));
  
        /* ... fall through ... */
  
--- 591,612 ----
        /* If we have a constant that we are not defining, get the expression it
  	 was defined to represent.  This is necessary to avoid generating dumb
  	 elaboration code in simple cases, but we may throw it away later if it
! 	 is not a constant.  But do not do it for dispatch tables because they
! 	 are only referenced indirectly and we need to have a consistent view
! 	 of the exported and of the imported declarations of the tables from
! 	 external units for them to be properly merged in LTO mode.  Moreover
! 	 simply do not retrieve the expression it if it is an allocator since
! 	 the designated type might still be dummy at this point.  Note that we
! 	 invoke gnat_to_gnu_external and not gnat_to_gnu because the expression
! 	 may contain N_Expression_With_Actions nodes and thus declarations of
! 	 objects from other units that we need to discard.  */
        if (!definition
  	  && !No_Initialization (Declaration_Node (gnat_entity))
! 	  && !Is_Dispatch_Table_Entity (gnat_entity)
! 	  && Present (gnat_temp = Expression (Declaration_Node (gnat_entity)))
! 	  && Nkind (gnat_temp) != N_Allocator
! 	  && (!type_annotate_only || Compile_Time_Known_Value (gnat_temp)))
! 	gnu_expr = gnat_to_gnu_external (gnat_temp);
  
        /* ... fall through ... */
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 968,975 ****
  	       function call is a constant object.  Therefore, it can be the
  	       inner object of a constant renaming and the renaming must be
  	       fully instantiated, i.e. it cannot be a reference to (part of)
! 	       an existing object.  And treat other rvalues (addresses, null
! 	       expressions, constructors and literals) the same way.  */
  	    tree inner = gnu_expr;
  	    while (handled_component_p (inner) || CONVERT_EXPR_P (inner))
  	      inner = TREE_OPERAND (inner, 0);
--- 972,978 ----
  	       function call is a constant object.  Therefore, it can be the
  	       inner object of a constant renaming and the renaming must be
  	       fully instantiated, i.e. it cannot be a reference to (part of)
! 	       an existing object.  And treat other rvalues the same way.  */
  	    tree inner = gnu_expr;
  	    while (handled_component_p (inner) || CONVERT_EXPR_P (inner))
  	      inner = TREE_OPERAND (inner, 0);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 980,990 ****
  	      inner = TREE_OPERAND (inner, 1);
  	    if ((TREE_CODE (inner) == CALL_EXPR
  		 && !call_is_atomic_load (inner))
- 		|| TREE_CODE (inner) == ADDR_EXPR
- 		|| TREE_CODE (inner) == NULL_EXPR
- 		|| TREE_CODE (inner) == PLUS_EXPR
  		|| TREE_CODE (inner) == CONSTRUCTOR
  		|| CONSTANT_CLASS_P (inner)
  		/* We need to detect the case where a temporary is created to
  		   hold the return value, since we cannot safely rename it at
  		   top level as it lives only in the elaboration routine.  */
--- 983,993 ----
  	      inner = TREE_OPERAND (inner, 1);
  	    if ((TREE_CODE (inner) == CALL_EXPR
  		 && !call_is_atomic_load (inner))
  		|| TREE_CODE (inner) == CONSTRUCTOR
  		|| CONSTANT_CLASS_P (inner)
+ 		|| COMPARISON_CLASS_P (inner)
+ 		|| BINARY_CLASS_P (inner)
+ 		|| EXPRESSION_CLASS_P (inner)
  		/* We need to detect the case where a temporary is created to
  		   hold the return value, since we cannot safely rename it at
  		   top level as it lives only in the elaboration routine.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1006,1012 ****
  		   underlying object lives only in the elaboration routine.  */
  		|| (TREE_CODE (inner) == INDIRECT_REF
  		    && (inner
! 			  = remove_conversions (TREE_OPERAND (inner, 0), true))
  		    && TREE_CODE (inner) == VAR_DECL
  		    && DECL_RETURN_VALUE_P (inner)))
  	      ;
--- 1009,1015 ----
  		   underlying object lives only in the elaboration routine.  */
  		|| (TREE_CODE (inner) == INDIRECT_REF
  		    && (inner
! 			= remove_conversions (TREE_OPERAND (inner, 0), true))
  		    && TREE_CODE (inner) == VAR_DECL
  		    && DECL_RETURN_VALUE_P (inner)))
  	      ;
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2063,2073 ****
  	  {
  	    gnu_fat_type = TYPE_MAIN_VARIANT (TYPE_POINTER_TO (gnu_type));
  	    TYPE_NAME (gnu_fat_type) = NULL_TREE;
- 	    /* Save the contents of the dummy type for update_pointer_to.  */
- 	    TYPE_POINTER_TO (gnu_type) = copy_type (gnu_fat_type);
  	    gnu_ptr_template =
! 	      TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (gnu_fat_type)));
  	    gnu_template_type = TREE_TYPE (gnu_ptr_template);
  	  }
  	else
  	  {
--- 2066,2081 ----
  	  {
  	    gnu_fat_type = TYPE_MAIN_VARIANT (TYPE_POINTER_TO (gnu_type));
  	    TYPE_NAME (gnu_fat_type) = NULL_TREE;
  	    gnu_ptr_template =
! 	      TREE_TYPE (DECL_CHAIN (TYPE_FIELDS (gnu_fat_type)));
  	    gnu_template_type = TREE_TYPE (gnu_ptr_template);
+ 
+ 	    /* Save the contents of the dummy type for update_pointer_to.  */
+ 	    TYPE_POINTER_TO (gnu_type) = copy_type (gnu_fat_type);
+ 	    TYPE_FIELDS (TYPE_POINTER_TO (gnu_type))
+ 	      = copy_node (TYPE_FIELDS (gnu_fat_type));
+ 	    DECL_CHAIN (TYPE_FIELDS (TYPE_POINTER_TO (gnu_type)))
+ 	      = copy_node (DECL_CHAIN (TYPE_FIELDS (gnu_fat_type)));
  	  }
  	else
  	  {
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2088,2116 ****
  
  	/* Build the fat pointer type.  Use a "void *" object instead of
  	   a pointer to the array type since we don't have the array type
! 	   yet (it will reference the fat pointer via the bounds).  */
! 	tem
! 	  = create_field_decl (get_identifier ("P_ARRAY"), ptr_type_node,
! 			       gnu_fat_type, NULL_TREE, NULL_TREE, 0, 0);
! 	DECL_CHAIN (tem)
! 	  = create_field_decl (get_identifier ("P_BOUNDS"), gnu_ptr_template,
! 			       gnu_fat_type, NULL_TREE, NULL_TREE, 0, 0);
  
  	if (COMPLETE_TYPE_P (gnu_fat_type))
  	  {
! 	    /* We are going to lay it out again so reset the alias set.  */
! 	    alias_set_type alias_set = TYPE_ALIAS_SET (gnu_fat_type);
! 	    TYPE_ALIAS_SET (gnu_fat_type) = -1;
! 	    finish_fat_pointer_type (gnu_fat_type, tem);
! 	    TYPE_ALIAS_SET (gnu_fat_type) = alias_set;
  	    for (t = gnu_fat_type; t; t = TYPE_NEXT_VARIANT (t))
! 	      {
! 		TYPE_FIELDS (t) = tem;
! 		SET_TYPE_UNCONSTRAINED_ARRAY (t, gnu_type);
! 	      }
  	  }
  	else
  	  {
  	    finish_fat_pointer_type (gnu_fat_type, tem);
  	    SET_TYPE_UNCONSTRAINED_ARRAY (gnu_fat_type, gnu_type);
  	  }
--- 2096,2134 ----
  
  	/* Build the fat pointer type.  Use a "void *" object instead of
  	   a pointer to the array type since we don't have the array type
! 	   yet (it will reference the fat pointer via the bounds).  Note
! 	   that we reuse the existing fields of a dummy type because for:
! 
! 	     type Arr is array (Positive range <>) of Element_Type;
! 	     type Array_Ref is access Arr;
! 	     Var : Array_Ref := Null;
  
+ 	   in a declarative part, Arr will be frozen only after Var, which
+ 	   means that the fields used in the CONSTRUCTOR built for Null are
+ 	   those of the dummy type, which in turn means that COMPONENT_REFs
+ 	   of Var may be built with these fields.  Now if COMPONENT_REFs of
+ 	   Var are also built later with the fields of the final type, the
+ 	   aliasing machinery may consider that the accesses are distinct
+ 	   if the FIELD_DECLs are distinct as objects.  */
  	if (COMPLETE_TYPE_P (gnu_fat_type))
  	  {
! 	    tem = TYPE_FIELDS (gnu_fat_type);
! 	    TREE_TYPE (tem) = ptr_type_node;
! 	    TREE_TYPE (DECL_CHAIN (tem)) = gnu_ptr_template;
! 	    TYPE_DECL_SUPPRESS_DEBUG (TYPE_STUB_DECL (gnu_fat_type)) = 0;
  	    for (t = gnu_fat_type; t; t = TYPE_NEXT_VARIANT (t))
! 	      SET_TYPE_UNCONSTRAINED_ARRAY (t, gnu_type);
  	  }
  	else
  	  {
+ 	    tem
+ 	      = create_field_decl (get_identifier ("P_ARRAY"),
+ 				   ptr_type_node, gnu_fat_type,
+ 				   NULL_TREE, NULL_TREE, 0, 0);
+ 	    DECL_CHAIN (tem)
+ 	      = create_field_decl (get_identifier ("P_BOUNDS"),
+ 				   gnu_ptr_template, gnu_fat_type,
+ 				   NULL_TREE, NULL_TREE, 0, 0);
  	    finish_fat_pointer_type (gnu_fat_type, tem);
  	    SET_TYPE_UNCONSTRAINED_ARRAY (gnu_fat_type, gnu_type);
  	  }
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3389,3408 ****
  	      break;
  	    }
  
- 	  /* If this is a record subtype associated with a dispatch table,
- 	     strip the suffix.  This is necessary to make sure 2 different
- 	     subtypes associated with the imported and exported views of a
- 	     dispatch table are properly merged in LTO mode.  */
- 	  if (Is_Dispatch_Table_Entity (gnat_entity))
- 	    {
- 	      char *p;
- 	      Get_Encoded_Name (gnat_entity);
- 	      p = strchr (Name_Buffer, '_');
- 	      gcc_assert (p);
- 	      strcpy (p+2, "dtS");
- 	      gnu_entity_name = get_identifier (Name_Buffer);
- 	    }
- 
  	  /* When the subtype has discriminants and these discriminants affect
  	     the initial shape it has inherited, factor them in.  But for an
  	     Unchecked_Union (it must be an Itype), just return the type.
--- 3407,3412 ----
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4681,4687 ****
        /* If this is not an unconstrained array type, set some flags.  */
        if (TREE_CODE (gnu_type) != UNCONSTRAINED_ARRAY_TYPE)
  	{
! 	  /* Tell the middle-end that objects of tagged types are guaranteed to
  	     be properly aligned.  This is necessary because conversions to the
  	     class-wide type are translated into conversions to the root type,
  	     which can be less aligned than some of its derived types.  */
--- 4685,4691 ----
        /* If this is not an unconstrained array type, set some flags.  */
        if (TREE_CODE (gnu_type) != UNCONSTRAINED_ARRAY_TYPE)
  	{
! 	  /* Record the property that objects of tagged types are guaranteed to
  	     be properly aligned.  This is necessary because conversions to the
  	     class-wide type are translated into conversions to the root type,
  	     which can be less aligned than some of its derived types.  */
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5272,5288 ****
  		     Is_Bit_Packed_Array (gnat_array) ? TYPE_DECL : VAR_DECL,
  		     true, Has_Component_Size_Clause (gnat_array));
  
-   /* If the array has aliased components and the component size can be zero,
-      force at least unit size to ensure that the components have distinct
-      addresses.  */
-   if (!gnu_comp_size
-       && Has_Aliased_Components (gnat_array)
-       && (integer_zerop (TYPE_SIZE (gnu_type))
- 	  || (TREE_CODE (gnu_type) == ARRAY_TYPE
- 	      && !TREE_CONSTANT (TYPE_SIZE (gnu_type)))))
-     gnu_comp_size
-       = size_binop (MAX_EXPR, TYPE_SIZE (gnu_type), bitsize_unit_node);
- 
    /* If the component type is a RECORD_TYPE that has a self-referential size,
       then use the maximum size for the component size.  */
    if (!gnu_comp_size
--- 5276,5281 ----
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5290,5295 ****
--- 5283,5295 ----
        && CONTAINS_PLACEHOLDER_P (TYPE_SIZE (gnu_type)))
      gnu_comp_size = max_size (TYPE_SIZE (gnu_type), true);
  
+   /* If the array has aliased components and the component size is zero, force
+      the unit size to ensure that the components have distinct addresses.  */
+   if (!gnu_comp_size
+       && Has_Aliased_Components (gnat_array)
+       && integer_zerop (TYPE_SIZE (gnu_type)))
+     gnu_comp_size = bitsize_unit_node;
+ 
    /* Honor the component size.  This is not needed for bit-packed arrays.  */
    if (gnu_comp_size && !Is_Bit_Packed_Array (gnat_array))
      {
*************** gnat_to_gnu_component_type (Entity_Id gn
*** 5312,5317 ****
--- 5312,5341 ----
  			  gnat_array);
      }
  
+   /* This is a very special case where the array has aliased components and the
+      component size might be zero at run time.  As explained above, we force at
+      least the unit size but we don't want to build a distinct padding type for
+      each invocation (they are not canonicalized if they have variable size) so
+      we cache this special padding type as TYPE_PADDING_FOR_COMPONENT.  */
+   else if (Has_Aliased_Components (gnat_array)
+ 	   && TREE_CODE (gnu_type) == ARRAY_TYPE
+ 	   && !TREE_CONSTANT (TYPE_SIZE (gnu_type)))
+     {
+       if (TYPE_PADDING_FOR_COMPONENT (gnu_type))
+ 	gnu_type = TYPE_PADDING_FOR_COMPONENT (gnu_type);
+       else
+ 	{
+ 	  gnu_comp_size
+ 	    = size_binop (MAX_EXPR, TYPE_SIZE (gnu_type), bitsize_unit_node);
+ 	  TYPE_PADDING_FOR_COMPONENT (gnu_type)
+ 	    = maybe_pad_type (gnu_type, gnu_comp_size, 0, gnat_array,
+ 			      true, false, definition, true);
+ 	  gnu_type = TYPE_PADDING_FOR_COMPONENT (gnu_type);
+ 	  create_type_decl (TYPE_NAME (gnu_type), gnu_type, true, debug_info_p,
+ 			    gnat_array);
+ 	}
+     }
+ 
    /* If the component type is a padded type made for a non-bit-packed array
       of scalars with reverse storage order, we need to propagate the reverse
       storage order to the padding type since it is the innermost enclosing
*************** gnu_ext_name_for_subprog (Entity_Id gnat
*** 6276,6294 ****
    return gnu_ext_name;
  }
  
- /* Like build_qualified_type, but TYPE_QUALS is added to the existing
-    qualifiers on TYPE.  */
- 
- static tree
- change_qualified_type (tree type, int type_quals)
- {
-   /* Qualifiers must be put on the associated array type.  */
-   if (TREE_CODE (type) == UNCONSTRAINED_ARRAY_TYPE)
-     return type;
- 
-   return build_qualified_type (type, TYPE_QUALS (type) | type_quals);
- }
- 
  /* Set TYPE_NONALIASED_COMPONENT on an array type built by means of
     build_nonshared_array_type.  */
  
--- 6300,6305 ----
*************** elaborate_reference (tree ref, Entity_Id
*** 6864,6928 ****
     the value passed against the list of choices.  */
  
  static tree
! choices_to_gnu (tree operand, Node_Id choices)
  {
!   Node_Id choice;
!   Node_Id gnat_temp;
!   tree result = boolean_false_node;
!   tree this_test, low = 0, high = 0, single = 0;
  
!   for (choice = First (choices); Present (choice); choice = Next (choice))
      {
!       switch (Nkind (choice))
  	{
  	case N_Range:
! 	  low = gnat_to_gnu (Low_Bound (choice));
! 	  high = gnat_to_gnu (High_Bound (choice));
! 
! 	  this_test
! 	    = build_binary_op (TRUTH_ANDIF_EXPR, boolean_type_node,
! 			       build_binary_op (GE_EXPR, boolean_type_node,
! 						operand, low, true),
! 			       build_binary_op (LE_EXPR, boolean_type_node,
! 						operand, high, true),
! 			       true);
! 
  	  break;
  
  	case N_Subtype_Indication:
! 	  gnat_temp = Range_Expression (Constraint (choice));
! 	  low = gnat_to_gnu (Low_Bound (gnat_temp));
! 	  high = gnat_to_gnu (High_Bound (gnat_temp));
! 
! 	  this_test
! 	    = build_binary_op (TRUTH_ANDIF_EXPR, boolean_type_node,
! 			       build_binary_op (GE_EXPR, boolean_type_node,
! 						operand, low, true),
! 			       build_binary_op (LE_EXPR, boolean_type_node,
! 						operand, high, true),
! 			       true);
  	  break;
  
  	case N_Identifier:
  	case N_Expanded_Name:
! 	  /* This represents either a subtype range, an enumeration
! 	     literal, or a constant  Ekind says which.  If an enumeration
! 	     literal or constant, fall through to the next case.  */
! 	  if (Ekind (Entity (choice)) != E_Enumeration_Literal
! 	      && Ekind (Entity (choice)) != E_Constant)
  	    {
! 	      tree type = gnat_to_gnu_type (Entity (choice));
! 
! 	      low = TYPE_MIN_VALUE (type);
! 	      high = TYPE_MAX_VALUE (type);
  
! 	      this_test
! 		= build_binary_op (TRUTH_ANDIF_EXPR, boolean_type_node,
! 				   build_binary_op (GE_EXPR, boolean_type_node,
! 						    operand, low, true),
! 				   build_binary_op (LE_EXPR, boolean_type_node,
! 						    operand, high, true),
! 				   true);
  	      break;
  	    }
  
--- 6875,6918 ----
     the value passed against the list of choices.  */
  
  static tree
! choices_to_gnu (tree gnu_operand, Node_Id gnat_choices)
  {
!   tree gnu_result = boolean_false_node, gnu_type;
  
!   gnu_operand = maybe_character_value (gnu_operand);
!   gnu_type = TREE_TYPE (gnu_operand);
! 
!   for (Node_Id gnat_choice = First (gnat_choices);
!        Present (gnat_choice);
!        gnat_choice = Next (gnat_choice))
      {
!       tree gnu_low = NULL_TREE, gnu_high = NULL_TREE;
!       tree gnu_test;
! 
!       switch (Nkind (gnat_choice))
  	{
  	case N_Range:
! 	  gnu_low = gnat_to_gnu (Low_Bound (gnat_choice));
! 	  gnu_high = gnat_to_gnu (High_Bound (gnat_choice));
  	  break;
  
  	case N_Subtype_Indication:
! 	  gnu_low = gnat_to_gnu (Low_Bound (Range_Expression
! 					    (Constraint (gnat_choice))));
! 	  gnu_high = gnat_to_gnu (High_Bound (Range_Expression
! 					      (Constraint (gnat_choice))));
  	  break;
  
  	case N_Identifier:
  	case N_Expanded_Name:
! 	  /* This represents either a subtype range or a static value of
! 	     some kind; Ekind says which.  */
! 	  if (Is_Type (Entity (gnat_choice)))
  	    {
! 	      tree gnu_type = get_unpadded_type (Entity (gnat_choice));
  
! 	      gnu_low = TYPE_MIN_VALUE (gnu_type);
! 	      gnu_high = TYPE_MAX_VALUE (gnu_type);
  	      break;
  	    }
  
*************** choices_to_gnu (tree operand, Node_Id ch
*** 6930,6956 ****
  
  	case N_Character_Literal:
  	case N_Integer_Literal:
! 	  single = gnat_to_gnu (choice);
! 	  this_test = build_binary_op (EQ_EXPR, boolean_type_node, operand,
! 				       single, true);
  	  break;
  
  	case N_Others_Choice:
- 	  this_test = boolean_true_node;
  	  break;
  
  	default:
  	  gcc_unreachable ();
  	}
  
!       if (result == boolean_false_node)
! 	result = this_test;
        else
! 	result = build_binary_op (TRUTH_ORIF_EXPR, boolean_type_node, result,
! 				  this_test, true);
      }
  
!   return result;
  }
  
  /* Adjust PACKED setting as passed to gnat_to_gnu_field for a field of
--- 6920,6968 ----
  
  	case N_Character_Literal:
  	case N_Integer_Literal:
! 	  gnu_low = gnat_to_gnu (gnat_choice);
  	  break;
  
  	case N_Others_Choice:
  	  break;
  
  	default:
  	  gcc_unreachable ();
  	}
  
!       /* Everything should be folded into constants at this point.  */
!       gcc_assert (!gnu_low  || TREE_CODE (gnu_low)  == INTEGER_CST);
!       gcc_assert (!gnu_high || TREE_CODE (gnu_high) == INTEGER_CST);
! 
!       if (gnu_low && TREE_TYPE (gnu_low) != gnu_type)
! 	gnu_low = convert (gnu_type, gnu_low);
!       if (gnu_high && TREE_TYPE (gnu_high) != gnu_type)
! 	gnu_high = convert (gnu_type, gnu_high);
! 
!       if (gnu_low && gnu_high)
! 	gnu_test
! 	  = build_binary_op (TRUTH_ANDIF_EXPR, boolean_type_node,
! 			     build_binary_op (GE_EXPR, boolean_type_node,
! 					      gnu_operand, gnu_low, true),
! 			     build_binary_op (LE_EXPR, boolean_type_node,
! 					      gnu_operand, gnu_high, true),
! 			     true);
!       else if (gnu_low)
! 	gnu_test
! 	  = build_binary_op (EQ_EXPR, boolean_type_node, gnu_operand, gnu_low,
! 			     true);
        else
! 	gnu_test = boolean_true_node;
! 
!       if (gnu_result == boolean_false_node)
! 	gnu_result = gnu_test;
!       else
! 	gnu_result
! 	  = build_binary_op (TRUTH_ORIF_EXPR, boolean_type_node, gnu_result,
! 			     gnu_test, true);
      }
  
!   return gnu_result;
  }
  
  /* Adjust PACKED setting as passed to gnat_to_gnu_field for a field of
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/gigi.h gcc-7.4.0/gcc/ada/gcc-interface/gigi.h
*** gcc-7.3.0/gcc/ada/gcc-interface/gigi.h	Tue Oct 11 10:35:43 2016
--- gcc-7.4.0/gcc/ada/gcc-interface/gigi.h	Tue Jun 12 10:35:05 2018
*************** maybe_vector_array (tree exp)
*** 1074,1080 ****
  static inline unsigned HOST_WIDE_INT
  ceil_pow2 (unsigned HOST_WIDE_INT x)
  {
!   return (unsigned HOST_WIDE_INT) 1 << (floor_log2 (x - 1) + 1);
  }
  
  /* Return true if EXP, a CALL_EXPR, is an atomic load.  */
--- 1074,1080 ----
  static inline unsigned HOST_WIDE_INT
  ceil_pow2 (unsigned HOST_WIDE_INT x)
  {
!   return (unsigned HOST_WIDE_INT) 1 << ceil_log2 (x);
  }
  
  /* Return true if EXP, a CALL_EXPR, is an atomic load.  */
*************** maybe_debug_type (tree type)
*** 1171,1173 ****
--- 1171,1186 ----
  
    return type;
  }
+ 
+ /* Like build_qualified_type, but TYPE_QUALS is added to the existing
+    qualifiers on TYPE.  */
+ 
+ static inline tree
+ change_qualified_type (tree type, int type_quals)
+ {
+   /* Qualifiers must be put on the associated array type.  */
+   if (TREE_CODE (type) == UNCONSTRAINED_ARRAY_TYPE)
+     return type;
+ 
+   return build_qualified_type (type, TYPE_QUALS (type) | type_quals);
+ }
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/misc.c gcc-7.4.0/gcc/ada/gcc-interface/misc.c
*** gcc-7.3.0/gcc/ada/gcc-interface/misc.c	Fri Feb 24 23:15:56 2017
--- gcc-7.4.0/gcc/ada/gcc-interface/misc.c	Thu Nov 15 12:06:55 2018
*************** gnat_post_options (const char **pfilenam
*** 262,267 ****
--- 262,270 ----
    /* No psABI change warnings for Ada.  */
    warn_psabi = 0;
  
+   /* No string overflow warnings for Ada.  */
+   warn_stringop_overflow = 0;
+ 
    /* No caret by default for Ada.  */
    if (!global_options_set.x_flag_diagnostics_show_caret)
      global_dc->show_caret = false;
*************** gnat_init_gcc_eh (void)
*** 393,399 ****
    using_eh_for_cleanups ();
  
    /* Turn on -fexceptions, -fnon-call-exceptions and -fdelete-dead-exceptions.
!      The first one triggers the generation of the necessary exception tables.
       The second one is useful for two reasons: 1/ we map some asynchronous
       signals like SEGV to exceptions, so we need to ensure that the insns
       which can lead to such signals are correctly attached to the exception
--- 396,402 ----
    using_eh_for_cleanups ();
  
    /* Turn on -fexceptions, -fnon-call-exceptions and -fdelete-dead-exceptions.
!      The first one activates the support for exceptions in the compiler.
       The second one is useful for two reasons: 1/ we map some asynchronous
       signals like SEGV to exceptions, so we need to ensure that the insns
       which can lead to such signals are correctly attached to the exception
*************** gnat_init_gcc_eh (void)
*** 403,412 ****
       for such calls to actually raise in Ada.
       The third one is an optimization that makes it possible to delete dead
       instructions that may throw exceptions, most notably loads and stores,
!      as permitted in Ada.  */
    flag_exceptions = 1;
-   flag_non_call_exceptions = 1;
    flag_delete_dead_exceptions = 1;
  
    init_eh ();
  }
--- 406,431 ----
       for such calls to actually raise in Ada.
       The third one is an optimization that makes it possible to delete dead
       instructions that may throw exceptions, most notably loads and stores,
!      as permitted in Ada.
!      Turn off -faggressive-loop-optimizations because it may optimize away
!      out-of-bound array accesses that we want to be able to catch.
!      If checks are disabled, we use the same settings as the C++ compiler,
!      except for the runtime on platforms where S'Machine_Overflow is true
!      because the runtime depends on FP (hardware) checks being properly
!      handled despite being compiled in -gnatp mode.  */
    flag_exceptions = 1;
    flag_delete_dead_exceptions = 1;
+   if (Suppress_Checks)
+     {
+       if (!global_options_set.x_flag_non_call_exceptions)
+ 	flag_non_call_exceptions = Machine_Overflows_On_Target && GNAT_Mode;
+     }
+   else
+     {
+       flag_non_call_exceptions = 1;
+       flag_aggressive_loop_optimizations = 0;
+       warn_aggressive_loop_optimizations = 0;
+     }
  
    init_eh ();
  }
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/trans.c gcc-7.4.0/gcc/ada/gcc-interface/trans.c
*** gcc-7.3.0/gcc/ada/gcc-interface/trans.c	Wed Dec 13 09:30:42 2017
--- gcc-7.4.0/gcc/ada/gcc-interface/trans.c	Thu Nov  8 15:58:16 2018
*************** struct GTY(()) loop_info_d {
*** 198,205 ****
    tree high_bound;
    vec<range_check_info, va_gc> *checks;
    bool artificial;
-   bool has_checks;
-   bool warned_aggressive_loop_optimizations;
  };
  
  typedef struct loop_info_d *loop_info;
--- 198,203 ----
*************** gigi (Node_Id gnat_root,
*** 658,667 ****
    /* Now translate the compilation unit proper.  */
    Compilation_Unit_to_gnu (gnat_root);
  
-   /* Disable -Waggressive-loop-optimizations since we implement our own
-      version of the warning.  */
-   warn_aggressive_loop_optimizations = 0;
- 
    /* Then process the N_Validate_Unchecked_Conversion nodes.  We do this at
       the very end to avoid having to second-guess the front-end when we run
       into dummy nodes during the regular processing.  */
--- 656,661 ----
*************** Pragma_to_gnu (Node_Id gnat_node)
*** 1266,1297 ****
  	{
  	  Node_Id gnat_expr = Expression (gnat_temp);
  	  tree gnu_expr = gnat_to_gnu (gnat_expr);
- 	  int use_address;
- 	  machine_mode mode;
  	  tree asm_constraint = NULL_TREE;
  #ifdef ASM_COMMENT_START
  	  char *comment;
  #endif
! 
! 	  if (TREE_CODE (gnu_expr) == UNCONSTRAINED_ARRAY_REF)
! 	    gnu_expr = TREE_OPERAND (gnu_expr, 0);
! 
! 	  /* Use the value only if it fits into a normal register,
! 	     otherwise use the address.  */
! 	  mode = TYPE_MODE (TREE_TYPE (gnu_expr));
! 	  use_address = ((GET_MODE_CLASS (mode) != MODE_INT
! 			  && GET_MODE_CLASS (mode) != MODE_PARTIAL_INT)
! 			 || GET_MODE_SIZE (mode) > UNITS_PER_WORD);
! 
! 	  if (use_address)
! 	    gnu_expr = build_unary_op (ADDR_EXPR, NULL_TREE, gnu_expr);
  
  #ifdef ASM_COMMENT_START
  	  comment = concat (ASM_COMMENT_START,
  			    " inspection point: ",
  			    Get_Name_String (Chars (gnat_expr)),
! 			    use_address ? " address" : "",
! 			    " is in %0",
  			    NULL);
  	  asm_constraint = build_string (strlen (comment), comment);
  	  free (comment);
--- 1260,1277 ----
  	{
  	  Node_Id gnat_expr = Expression (gnat_temp);
  	  tree gnu_expr = gnat_to_gnu (gnat_expr);
  	  tree asm_constraint = NULL_TREE;
  #ifdef ASM_COMMENT_START
  	  char *comment;
  #endif
! 	  gnu_expr = maybe_unconstrained_array (gnu_expr);
! 	  gnat_mark_addressable (gnu_expr);
  
  #ifdef ASM_COMMENT_START
  	  comment = concat (ASM_COMMENT_START,
  			    " inspection point: ",
  			    Get_Name_String (Chars (gnat_expr)),
! 			    " is at %0",
  			    NULL);
  	  asm_constraint = build_string (strlen (comment), comment);
  	  free (comment);
*************** Pragma_to_gnu (Node_Id gnat_node)
*** 1301,1308 ****
  			     NULL_TREE,
  			     tree_cons
  			     (build_tree_list (NULL_TREE,
! 					       build_string (1, "g")),
! 			      gnu_expr, NULL_TREE),
  			     NULL_TREE, NULL_TREE);
  	  ASM_VOLATILE_P (gnu_expr) = 1;
  	  set_expr_location_from_node (gnu_expr, gnat_node);
--- 1281,1288 ----
  			     NULL_TREE,
  			     tree_cons
  			     (build_tree_list (NULL_TREE,
! 					       build_string (1, "m")),
! 					       gnu_expr, NULL_TREE),
  			     NULL_TREE, NULL_TREE);
  	  ASM_VOLATILE_P (gnu_expr) = 1;
  	  set_expr_location_from_node (gnu_expr, gnat_node);
*************** node_has_volatile_full_access (Node_Id g
*** 4059,4064 ****
--- 4039,4046 ----
      case N_Identifier:
      case N_Expanded_Name:
        gnat_entity = Entity (gnat_node);
+       if (!Is_Object (gnat_entity))
+ 	break;
        return Is_Volatile_Full_Access (gnat_entity)
  	     || Is_Volatile_Full_Access (Etype (gnat_entity));
  
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 4324,4335 ****
  	  because we need to preserve the return value before copying back the
  	  parameters.
  
!        2. There is no target and the call is made for neither an object nor a
  	  renaming declaration, nor a return statement, nor an allocator, and
  	  the return type has variable size because in this case the gimplifier
! 	  cannot create the temporary, or more generally is simply an aggregate
! 	  type, because the gimplifier would then create the temporary in the
! 	  outermost scope instead of locally.
  
         3. There is a target and it is a slice or an array with fixed size,
  	  and the return type has variable size, because the gimplifier
--- 4306,4320 ----
  	  because we need to preserve the return value before copying back the
  	  parameters.
  
!        2. There is no target and the call is made for neither an object, nor a
  	  renaming declaration, nor a return statement, nor an allocator, and
  	  the return type has variable size because in this case the gimplifier
! 	  cannot create the temporary, or more generally is an aggregate type,
! 	  because the gimplifier would create the temporary in the outermost
! 	  scope instead of locally.  But there is an exception for an allocator
! 	  of an unconstrained record type with default discriminant because we
! 	  allocate the actual size in this case, unlike the other 3 cases, so
! 	  we need a temporary to fetch the discriminant and we create it here.
  
         3. There is a target and it is a slice or an array with fixed size,
  	  and the return type has variable size, because the gimplifier
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 4348,4355 ****
  	      && Nkind (Parent (gnat_node)) != N_Object_Declaration
  	      && Nkind (Parent (gnat_node)) != N_Object_Renaming_Declaration
  	      && Nkind (Parent (gnat_node)) != N_Simple_Return_Statement
! 	      && !(Nkind (Parent (gnat_node)) == N_Qualified_Expression
! 		   && Nkind (Parent (Parent (gnat_node))) == N_Allocator)
  	      && AGGREGATE_TYPE_P (gnu_result_type)
  	      && !TYPE_IS_FAT_POINTER_P (gnu_result_type))
  	  || (gnu_target
--- 4333,4341 ----
  	      && Nkind (Parent (gnat_node)) != N_Object_Declaration
  	      && Nkind (Parent (gnat_node)) != N_Object_Renaming_Declaration
  	      && Nkind (Parent (gnat_node)) != N_Simple_Return_Statement
! 	      && (!(Nkind (Parent (gnat_node)) == N_Qualified_Expression
! 		    && Nkind (Parent (Parent (gnat_node))) == N_Allocator)
! 		  || type_is_padding_self_referential (gnu_result_type))
  	      && AGGREGATE_TYPE_P (gnu_result_type)
  	      && !TYPE_IS_FAT_POINTER_P (gnu_result_type))
  	  || (gnu_target
*************** Raise_Error_to_gnu (Node_Id gnat_node, t
*** 5652,5658 ****
  	      rci->inserted_cond
  		= build1 (SAVE_EXPR, boolean_type_node, boolean_true_node);
  	      vec_safe_push (loop->checks, rci);
- 	      loop->has_checks = true;
  	      gnu_cond = build_noreturn_cond (gnat_to_gnu (gnat_cond));
  	      if (flag_unswitch_loops)
  		gnu_cond = build_binary_op (TRUTH_ANDIF_EXPR,
--- 5638,5643 ----
*************** Raise_Error_to_gnu (Node_Id gnat_node, t
*** 5665,5678 ****
  					    gnu_cond,
  					    rci->inserted_cond);
  	    }
- 
- 	  /* Or else, if aggressive loop optimizations are enabled, we just
- 	     record that there are checks applied to iteration variables.  */
- 	  else if (optimize
- 		   && flag_aggressive_loop_optimizations
- 		   && inside_loop_p ()
- 		   && (loop = find_loop_for (gnu_index)))
- 	    loop->has_checks = true;
  	}
        break;
  
--- 5650,5655 ----
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6288,6332 ****
  	    gcc_assert (TREE_CODE (gnu_type) == ARRAY_TYPE);
  	    gnat_temp = gnat_expr_array[i];
  	    gnu_expr = maybe_character_value (gnat_to_gnu (gnat_temp));
- 	    struct loop_info_d *loop;
  
  	    gnu_result
  	      = build_binary_op (ARRAY_REF, NULL_TREE, gnu_result, gnu_expr);
- 
- 	    /* Array accesses are bound-checked so they cannot trap, but this
- 	       is valid only if they are not hoisted ahead of the check.  We
- 	       need to mark them as no-trap to get decent loop optimizations
- 	       in the presence of -fnon-call-exceptions, so we do it when we
- 	       know that the original expression had no side-effects.  */
- 	    if (TREE_CODE (gnu_result) == ARRAY_REF
- 		&& !(Nkind (gnat_temp) == N_Identifier
- 		     && Ekind (Entity (gnat_temp)) == E_Constant))
- 	      TREE_THIS_NOTRAP (gnu_result) = 1;
- 
- 	    /* If aggressive loop optimizations are enabled, we warn for loops
- 	       overrunning a simple array of size 1 not at the end of a record.
- 	       This is aimed to catch misuses of the trailing array idiom.  */
- 	    if (optimize
- 		&& flag_aggressive_loop_optimizations
- 		&& inside_loop_p ()
- 		&& TREE_CODE (TREE_TYPE (gnu_type)) != ARRAY_TYPE
- 		&& TREE_CODE (gnu_array_object) != ARRAY_REF
- 		&& tree_int_cst_equal (TYPE_MIN_VALUE (TYPE_DOMAIN (gnu_type)),
- 				       TYPE_MAX_VALUE (TYPE_DOMAIN (gnu_type)))
- 		&& !array_at_struct_end_p (gnu_result)
- 		&& (loop = find_loop_for (gnu_expr))
- 		&& !loop->artificial
- 		&& !loop->has_checks
- 		&& tree_int_cst_equal (TYPE_MIN_VALUE (TYPE_DOMAIN (gnu_type)),
- 				       loop->low_bound)
- 		&& can_be_lower_p (loop->low_bound, loop->high_bound)
- 		&& !loop->warned_aggressive_loop_optimizations
- 		&& warning (OPT_Waggressive_loop_optimizations,
- 			    "out-of-bounds access may be optimized away"))
- 	      {
- 		inform (EXPR_LOCATION (loop->stmt), "containing loop");
- 		loop->warned_aggressive_loop_optimizations = true;
- 	      }
  	  }
  
  	gnu_result_type = get_unpadded_type (Etype (gnat_node));
--- 6265,6273 ----
*************** convert_with_check (Entity_Id gnat_type,
*** 9272,9278 ****
  	  ? tree_int_cst_lt (gnu_out_ub, gnu_in_ub)
  	  : (FLOAT_TYPE_P (gnu_base_type)
  	     ? real_less (&TREE_REAL_CST (gnu_out_ub),
! 			  &TREE_REAL_CST (gnu_in_lb))
  	     : 1))
  	gnu_cond
  	  = build_binary_op (TRUTH_ORIF_EXPR, boolean_type_node, gnu_cond,
--- 9213,9219 ----
  	  ? tree_int_cst_lt (gnu_out_ub, gnu_in_ub)
  	  : (FLOAT_TYPE_P (gnu_base_type)
  	     ? real_less (&TREE_REAL_CST (gnu_out_ub),
! 			  &TREE_REAL_CST (gnu_in_ub))
  	     : 1))
  	gnu_cond
  	  = build_binary_op (TRUTH_ORIF_EXPR, boolean_type_node, gnu_cond,
diff -Nrcpad gcc-7.3.0/gcc/ada/gcc-interface/utils.c gcc-7.4.0/gcc/ada/gcc-interface/utils.c
*** gcc-7.3.0/gcc/ada/gcc-interface/utils.c	Fri Nov 10 08:23:20 2017
--- gcc-7.4.0/gcc/ada/gcc-interface/utils.c	Mon Oct 22 11:09:11 2018
*************** make_packable_type (tree type, bool in_r
*** 1036,1042 ****
  
    finish_record_type (new_type, nreverse (new_field_list), 2, false);
    relate_alias_sets (new_type, type, ALIAS_SET_COPY);
!   if (TYPE_STUB_DECL (type))
      SET_DECL_PARALLEL_TYPE (TYPE_STUB_DECL (new_type),
  			    DECL_PARALLEL_TYPE (TYPE_STUB_DECL (type)));
  
--- 1036,1044 ----
  
    finish_record_type (new_type, nreverse (new_field_list), 2, false);
    relate_alias_sets (new_type, type, ALIAS_SET_COPY);
!   if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
!     SET_TYPE_DEBUG_TYPE (new_type, TYPE_DEBUG_TYPE (type));
!   else if (TYPE_STUB_DECL (type))
      SET_DECL_PARALLEL_TYPE (TYPE_STUB_DECL (new_type),
  			    DECL_PARALLEL_TYPE (TYPE_STUB_DECL (type)));
  
*************** maybe_pad_type (tree type, tree size, un
*** 1367,1373 ****
    finish_record_type (record, field, 1, false);
  
    if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
!     SET_TYPE_DEBUG_TYPE (record, type);
  
    /* Set the RM size if requested.  */
    if (set_rm_size)
--- 1369,1375 ----
    finish_record_type (record, field, 1, false);
  
    if (gnat_encodings == DWARF_GNAT_ENCODINGS_MINIMAL)
!     SET_TYPE_DEBUG_TYPE (record, maybe_debug_type (type));
  
    /* Set the RM size if requested.  */
    if (set_rm_size)
*************** finish_subprog_decl (tree decl, tree asm
*** 3255,3262 ****
    DECL_BY_REFERENCE (result_decl) = TREE_ADDRESSABLE (type);
    DECL_RESULT (decl) = result_decl;
  
    TREE_READONLY (decl) = TYPE_READONLY (type);
!   TREE_SIDE_EFFECTS (decl) = TREE_THIS_VOLATILE (decl) = TYPE_VOLATILE (type);
  
    if (asm_name)
      {
--- 3257,3267 ----
    DECL_BY_REFERENCE (result_decl) = TREE_ADDRESSABLE (type);
    DECL_RESULT (decl) = result_decl;
  
+   /* Propagate the "const" property.  */
    TREE_READONLY (decl) = TYPE_READONLY (type);
! 
!   /* Propagate the "noreturn" property.  */
!   TREE_THIS_VOLATILE (decl) = TYPE_VOLATILE (type);
  
    if (asm_name)
      {
*************** convert (tree type, tree expr)
*** 4543,4551 ****
  					   etype)))
      return build1 (VIEW_CONVERT_EXPR, type, expr);
  
!   /* If we are converting between tagged types, try to upcast properly.  */
    else if (ecode == RECORD_TYPE && code == RECORD_TYPE
! 	   && TYPE_ALIGN_OK (etype) && TYPE_ALIGN_OK (type))
      {
        tree child_etype = etype;
        do {
--- 4548,4559 ----
  					   etype)))
      return build1 (VIEW_CONVERT_EXPR, type, expr);
  
!   /* If we are converting between tagged types, try to upcast properly.
!      But don't do it if we are just annotating types since tagged types
!      aren't fully laid out in this mode.  */
    else if (ecode == RECORD_TYPE && code == RECORD_TYPE
! 	   && TYPE_ALIGN_OK (etype) && TYPE_ALIGN_OK (type)
! 	   && !type_annotate_only)
      {
        tree child_etype = etype;
        do {
*************** unchecked_convert (tree type, tree expr,
*** 5022,5029 ****
    tree etype = TREE_TYPE (expr);
    enum tree_code ecode = TREE_CODE (etype);
    enum tree_code code = TREE_CODE (type);
    tree tem;
!   int c;
  
    /* If the expression is already of the right type, we are done.  */
    if (etype == type)
--- 5030,5045 ----
    tree etype = TREE_TYPE (expr);
    enum tree_code ecode = TREE_CODE (etype);
    enum tree_code code = TREE_CODE (type);
+   const bool ebiased
+     = (ecode == INTEGER_TYPE && TYPE_BIASED_REPRESENTATION_P (etype));
+   const bool biased
+     = (code == INTEGER_TYPE && TYPE_BIASED_REPRESENTATION_P (type));
+   const bool ereverse
+     = (AGGREGATE_TYPE_P (etype) && TYPE_REVERSE_STORAGE_ORDER (etype));
+   const bool reverse
+     = (AGGREGATE_TYPE_P (type) && TYPE_REVERSE_STORAGE_ORDER (type));
    tree tem;
!   int c = 0;
  
    /* If the expression is already of the right type, we are done.  */
    if (etype == type)
*************** unchecked_convert (tree type, tree expr,
*** 5039,5045 ****
  	   || (ecode == RECORD_TYPE && TYPE_JUSTIFIED_MODULAR_P (etype))))
        || code == UNCONSTRAINED_ARRAY_TYPE)
      {
!       if (ecode == INTEGER_TYPE && TYPE_BIASED_REPRESENTATION_P (etype))
  	{
  	  tree ntype = copy_type (etype);
  	  TYPE_BIASED_REPRESENTATION_P (ntype) = 0;
--- 5055,5061 ----
  	   || (ecode == RECORD_TYPE && TYPE_JUSTIFIED_MODULAR_P (etype))))
        || code == UNCONSTRAINED_ARRAY_TYPE)
      {
!       if (ebiased)
  	{
  	  tree ntype = copy_type (etype);
  	  TYPE_BIASED_REPRESENTATION_P (ntype) = 0;
*************** unchecked_convert (tree type, tree expr,
*** 5047,5053 ****
  	  expr = build1 (NOP_EXPR, ntype, expr);
  	}
  
!       if (code == INTEGER_TYPE && TYPE_BIASED_REPRESENTATION_P (type))
  	{
  	  tree rtype = copy_type (type);
  	  TYPE_BIASED_REPRESENTATION_P (rtype) = 0;
--- 5063,5069 ----
  	  expr = build1 (NOP_EXPR, ntype, expr);
  	}
  
!       if (biased)
  	{
  	  tree rtype = copy_type (type);
  	  TYPE_BIASED_REPRESENTATION_P (rtype) = 0;
*************** unchecked_convert (tree type, tree expr,
*** 5076,5105 ****
       Finally, for the sake of consistency, we do the unchecked conversion
       to an integral type with reverse storage order as soon as the source
       type is an aggregate type with reverse storage order, even if there
!      are no considerations of precision or size involved.  */
!   else if (INTEGRAL_TYPE_P (type)
! 	   && TYPE_RM_SIZE (type)
! 	   && (tree_int_cst_compare (TYPE_RM_SIZE (type),
! 				     TYPE_SIZE (type)) < 0
! 	       || (AGGREGATE_TYPE_P (etype)
! 		   && TYPE_REVERSE_STORAGE_ORDER (etype))))
      {
        tree rec_type = make_node (RECORD_TYPE);
-       unsigned HOST_WIDE_INT prec = TREE_INT_CST_LOW (TYPE_RM_SIZE (type));
        tree field_type, field;
  
!       if (AGGREGATE_TYPE_P (etype))
! 	TYPE_REVERSE_STORAGE_ORDER (rec_type)
! 	  = TYPE_REVERSE_STORAGE_ORDER (etype);
  
!       if (type_unsigned_for_rm (type))
! 	field_type = make_unsigned_type (prec);
        else
! 	field_type = make_signed_type (prec);
!       SET_TYPE_RM_SIZE (field_type, TYPE_RM_SIZE (type));
  
        field = create_field_decl (get_identifier ("OBJ"), field_type, rec_type,
! 				 NULL_TREE, bitsize_zero_node, 1, 0);
  
        finish_record_type (rec_type, field, 1, false);
  
--- 5092,5126 ----
       Finally, for the sake of consistency, we do the unchecked conversion
       to an integral type with reverse storage order as soon as the source
       type is an aggregate type with reverse storage order, even if there
!      are no considerations of precision or size involved.  Ultimately, we
!      further extend this processing to any scalar type.  */
!   else if ((INTEGRAL_TYPE_P (type)
! 	    && TYPE_RM_SIZE (type)
! 	    && ((c = tree_int_cst_compare (TYPE_RM_SIZE (type),
! 					   TYPE_SIZE (type))) < 0
! 		|| ereverse))
! 	   || (SCALAR_FLOAT_TYPE_P (type) && ereverse))
      {
        tree rec_type = make_node (RECORD_TYPE);
        tree field_type, field;
  
!       TYPE_REVERSE_STORAGE_ORDER (rec_type) = ereverse;
  
!       if (c < 0)
! 	{
! 	  const unsigned HOST_WIDE_INT prec
! 	    = TREE_INT_CST_LOW (TYPE_RM_SIZE (type));
! 	  if (type_unsigned_for_rm (type))
! 	    field_type = make_unsigned_type (prec);
! 	  else
! 	    field_type = make_signed_type (prec);
! 	  SET_TYPE_RM_SIZE (field_type, TYPE_RM_SIZE (type));
! 	}
        else
! 	field_type = type;
  
        field = create_field_decl (get_identifier ("OBJ"), field_type, rec_type,
! 				 NULL_TREE, bitsize_zero_node, c < 0, 0);
  
        finish_record_type (rec_type, field, 1, false);
  
*************** unchecked_convert (tree type, tree expr,
*** 5114,5144 ****
  
       The same considerations as above apply if the target type is an aggregate
       type with reverse storage order and we also proceed similarly.  */
!   else if (INTEGRAL_TYPE_P (etype)
! 	   && TYPE_RM_SIZE (etype)
! 	   && (tree_int_cst_compare (TYPE_RM_SIZE (etype),
! 				     TYPE_SIZE (etype)) < 0
! 	       || (AGGREGATE_TYPE_P (type)
! 		   && TYPE_REVERSE_STORAGE_ORDER (type))))
      {
        tree rec_type = make_node (RECORD_TYPE);
-       unsigned HOST_WIDE_INT prec = TREE_INT_CST_LOW (TYPE_RM_SIZE (etype));
        vec<constructor_elt, va_gc> *v;
        vec_alloc (v, 1);
        tree field_type, field;
  
!       if (AGGREGATE_TYPE_P (type))
! 	TYPE_REVERSE_STORAGE_ORDER (rec_type)
! 	  = TYPE_REVERSE_STORAGE_ORDER (type);
  
!       if (type_unsigned_for_rm (etype))
! 	field_type = make_unsigned_type (prec);
        else
! 	field_type = make_signed_type (prec);
!       SET_TYPE_RM_SIZE (field_type, TYPE_RM_SIZE (etype));
  
        field = create_field_decl (get_identifier ("OBJ"), field_type, rec_type,
! 				 NULL_TREE, bitsize_zero_node, 1, 0);
  
        finish_record_type (rec_type, field, 1, false);
  
--- 5135,5169 ----
  
       The same considerations as above apply if the target type is an aggregate
       type with reverse storage order and we also proceed similarly.  */
!   else if ((INTEGRAL_TYPE_P (etype)
! 	    && TYPE_RM_SIZE (etype)
! 	    && ((c = tree_int_cst_compare (TYPE_RM_SIZE (etype),
! 					   TYPE_SIZE (etype))) < 0
! 		|| reverse))
! 	   || (SCALAR_FLOAT_TYPE_P (etype) && reverse))
      {
        tree rec_type = make_node (RECORD_TYPE);
        vec<constructor_elt, va_gc> *v;
        vec_alloc (v, 1);
        tree field_type, field;
  
!       TYPE_REVERSE_STORAGE_ORDER (rec_type) = reverse;
  
!       if (c < 0)
! 	{
! 	  const unsigned HOST_WIDE_INT prec
! 	    = TREE_INT_CST_LOW (TYPE_RM_SIZE (etype));
! 	  if (type_unsigned_for_rm (etype))
! 	    field_type = make_unsigned_type (prec);
! 	  else
! 	    field_type = make_signed_type (prec);
! 	  SET_TYPE_RM_SIZE (field_type, TYPE_RM_SIZE (etype));
! 	}
        else
! 	field_type = etype;
  
        field = create_field_decl (get_identifier ("OBJ"), field_type, rec_type,
! 				 NULL_TREE, bitsize_zero_node, c < 0, 0);
  
        finish_record_type (rec_type, field, 1, false);
  
*************** unchecked_convert (tree type, tree expr,
*** 5237,5244 ****
       if the input is also an integral type and both are unsigned or both are
       signed and have the same precision.  */
    if (!notrunc_p
        && INTEGRAL_TYPE_P (type)
-       && !(code == INTEGER_TYPE && TYPE_BIASED_REPRESENTATION_P (type))
        && TYPE_RM_SIZE (type)
        && tree_int_cst_compare (TYPE_RM_SIZE (type), TYPE_SIZE (type)) < 0
        && !(INTEGRAL_TYPE_P (etype)
--- 5262,5269 ----
       if the input is also an integral type and both are unsigned or both are
       signed and have the same precision.  */
    if (!notrunc_p
+       && !biased
        && INTEGRAL_TYPE_P (type)
        && TYPE_RM_SIZE (type)
        && tree_int_cst_compare (TYPE_RM_SIZE (type), TYPE_SIZE (type)) < 0
        && !(INTEGRAL_TYPE_P (etype)
*************** handle_noreturn_attribute (tree *node, t
*** 6113,6120 ****
  	   && TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE)
      TREE_TYPE (*node)
        = build_pointer_type
! 	(build_type_variant (TREE_TYPE (type),
! 			     TYPE_READONLY (TREE_TYPE (type)), 1));
    else
      {
        warning (OPT_Wattributes, "%qs attribute ignored",
--- 6138,6144 ----
  	   && TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE)
      TREE_TYPE (*node)
        = build_pointer_type
! 	(change_qualified_type (TREE_TYPE (type), TYPE_QUAL_VOLATILE));
    else
      {
        warning (OPT_Wattributes, "%qs attribute ignored",
diff -Nrcpad gcc-7.3.0/gcc/ada/s-osinte-solaris.ads gcc-7.4.0/gcc/ada/s-osinte-solaris.ads
*** gcc-7.3.0/gcc/ada/s-osinte-solaris.ads	Wed Nov 23 11:24:48 2011
--- gcc-7.4.0/gcc/ada/s-osinte-solaris.ads	Thu Sep 13 10:14:39 2018
*************** private
*** 536,552 ****
     end record;
     pragma Convention (C, record_type_3);
  
     type mutex_t is record
        flags : record_type_3;
!       lock  : String (1 .. 8);
!       data  : String (1 .. 8);
     end record;
     pragma Convention (C, mutex_t);
  
     type cond_t is record
!       flag  : array_type_9;
!       Xtype : unsigned_long;
!       data  : String (1 .. 8);
     end record;
     pragma Convention (C, cond_t);
  
--- 536,553 ----
     end record;
     pragma Convention (C, record_type_3);
  
+    type upad64_t is new Interfaces.Unsigned_64;
+ 
     type mutex_t is record
        flags : record_type_3;
!       lock  : upad64_t;
!       data  : upad64_t;
     end record;
     pragma Convention (C, mutex_t);
  
     type cond_t is record
!       flags : record_type_3;
!       data  : upad64_t;
     end record;
     pragma Convention (C, cond_t);
  
diff -Nrcpad gcc-7.3.0/gcc/alias.c gcc-7.4.0/gcc/alias.c
*** gcc-7.3.0/gcc/alias.c	Wed May  3 11:22:34 2017
--- gcc-7.4.0/gcc/alias.c	Fri Jun 22 20:57:15 2018
*************** write_dependence_p (const_rtx mem,
*** 2997,3003 ****
    int ret;
  
    gcc_checking_assert (x_canonicalized
! 		       ? (x_addr != NULL_RTX && x_mode != VOIDmode)
  		       : (x_addr == NULL_RTX && x_mode == VOIDmode));
  
    if (MEM_VOLATILE_P (x) && MEM_VOLATILE_P (mem))
--- 2997,3004 ----
    int ret;
  
    gcc_checking_assert (x_canonicalized
! 		       ? (x_addr != NULL_RTX
! 			  && (x_mode != VOIDmode || GET_MODE (x) == VOIDmode))
  		       : (x_addr == NULL_RTX && x_mode == VOIDmode));
  
    if (MEM_VOLATILE_P (x) && MEM_VOLATILE_P (mem))
diff -Nrcpad gcc-7.3.0/gcc/brig/ChangeLog gcc-7.4.0/gcc/brig/ChangeLog
*** gcc-7.3.0/gcc/brig/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/brig/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,12 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-07-04  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR hsa/86371
+ 	* Make-lang.in (BRIGINCLUDES): Remove erroneous include path in $HOME.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/gcc/brig/Make-lang.in gcc-7.4.0/gcc/brig/Make-lang.in
*** gcc-7.3.0/gcc/brig/Make-lang.in	Thu Jan 26 08:24:22 2017
--- gcc-7.4.0/gcc/brig/Make-lang.in	Wed Jul  4 12:22:29 2018
*************** brig.stagefeedback: stagefeedback-start
*** 235,242 ****
  CFLAGS-brig/brig-lang.o += -DDEFAULT_TARGET_VERSION=\"$(version)\" \
  	-DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\"
  
! BRIGINCLUDES = -I $(srcdir)/brig -I ${HOME}/local/include \
! 	-I $(srcdir)/brig/brigfrontend
  
  brig/brig-machine.o: brig/brigfrontend/brig-machine.c
  	$(COMPILE) $(BRIGINCLUDES) $<
--- 235,241 ----
  CFLAGS-brig/brig-lang.o += -DDEFAULT_TARGET_VERSION=\"$(version)\" \
  	-DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\"
  
! BRIGINCLUDES = -I $(srcdir)/brig -I $(srcdir)/brig/brigfrontend
  
  brig/brig-machine.o: brig/brigfrontend/brig-machine.c
  	$(COMPILE) $(BRIGINCLUDES) $<
diff -Nrcpad gcc-7.3.0/gcc/builtins.c gcc-7.4.0/gcc/builtins.c
*** gcc-7.3.0/gcc/builtins.c	Tue Oct 24 22:46:19 2017
--- gcc-7.4.0/gcc/builtins.c	Fri Jun 22 20:52:44 2018
*************** builtin_mathfn_code (const_tree t)
*** 7538,7545 ****
    const_tree argtype, parmtype;
    const_call_expr_arg_iterator iter;
  
!   if (TREE_CODE (t) != CALL_EXPR
!       || TREE_CODE (CALL_EXPR_FN (t)) != ADDR_EXPR)
      return END_BUILTINS;
  
    fndecl = get_callee_fndecl (t);
--- 7538,7544 ----
    const_tree argtype, parmtype;
    const_call_expr_arg_iterator iter;
  
!   if (TREE_CODE (t) != CALL_EXPR)
      return END_BUILTINS;
  
    fndecl = get_callee_fndecl (t);
*************** fold_builtin_strpbrk (location_t loc, tr
*** 9271,9277 ****
        if (p2[0] == '\0')
  	/* strpbrk(x, "") == NULL.
  	   Evaluate and ignore s1 in case it had side-effects.  */
! 	return omit_one_operand_loc (loc, TREE_TYPE (s1), integer_zero_node, s1);
  
        if (p2[1] != '\0')
  	return NULL_TREE;  /* Really call strpbrk.  */
--- 9270,9276 ----
        if (p2[0] == '\0')
  	/* strpbrk(x, "") == NULL.
  	   Evaluate and ignore s1 in case it had side-effects.  */
! 	return omit_one_operand_loc (loc, type, integer_zero_node, s1);
  
        if (p2[1] != '\0')
  	return NULL_TREE;  /* Really call strpbrk.  */
diff -Nrcpad gcc-7.3.0/gcc/c/ChangeLog gcc-7.4.0/gcc/c/ChangeLog
*** gcc-7.3.0/gcc/c/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/c/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,39 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-05-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/85696
+ 	* c-typeck.c (c_finish_omp_clauses): Don't use
+ 	c_omp_predetermined_sharing, instead just check TREE_READONLY.
+ 
+ 	2018-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85662
+ 	* c-fold.c (c_fully_fold_internal): Use fold_offsetof rather than
+ 	fold_offsetof_1, pass TREE_TYPE (expr) as TYPE to it and drop the
+ 	fold_convert_loc.
+ 	* c-typeck.c (build_unary_op): Use fold_offsetof rather than
+ 	fold_offsetof_1, pass argtype as TYPE to it and drop the
+ 	fold_convert_loc.
+ 
+ 	2018-03-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/84999
+ 	* c-typeck.c (build_binary_op): If c_common_type_for_size fails when
+ 	building vector comparison, diagnose it and return error_mark_node.
+ 
+ 	2018-03-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/84853
+ 	* c-typeck.c (build_binary_op) <case RSHIFT_EXPR, case LSHIFT_EXPR>:
+ 	If code1 is INTEGER_TYPE, only allow code0 VECTOR_TYPE if it has
+ 	INTEGER_TYPE element type.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/gcc/c/c-fold.c gcc-7.4.0/gcc/c/c-fold.c
*** gcc-7.3.0/gcc/c/c-fold.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/c/c-fold.c	Fri Jun 22 21:23:03 2018
*************** c_fully_fold_internal (tree expr, bool i
*** 403,409 ****
  	  && (op1 = get_base_address (op0)) != NULL_TREE
  	  && INDIRECT_REF_P (op1)
  	  && TREE_CONSTANT (TREE_OPERAND (op1, 0)))
! 	ret = fold_convert_loc (loc, TREE_TYPE (expr), fold_offsetof_1 (op0));
        else if (op0 != orig_op0 || in_init)
  	ret = in_init
  	  ? fold_build1_initializer_loc (loc, code, TREE_TYPE (expr), op0)
--- 403,409 ----
  	  && (op1 = get_base_address (op0)) != NULL_TREE
  	  && INDIRECT_REF_P (op1)
  	  && TREE_CONSTANT (TREE_OPERAND (op1, 0)))
! 	ret = fold_offsetof (op0, TREE_TYPE (expr));
        else if (op0 != orig_op0 || in_init)
  	ret = in_init
  	  ? fold_build1_initializer_loc (loc, code, TREE_TYPE (expr), op0)
diff -Nrcpad gcc-7.3.0/gcc/c/c-typeck.c gcc-7.4.0/gcc/c/c-typeck.c
*** gcc-7.3.0/gcc/c/c-typeck.c	Thu Jun  8 19:12:38 2017
--- gcc-7.4.0/gcc/c/c-typeck.c	Fri Jun 22 21:25:04 2018
*************** build_unary_op (location_t location, enu
*** 4638,4644 ****
        if (val && INDIRECT_REF_P (val)
            && TREE_CONSTANT (TREE_OPERAND (val, 0)))
  	{
! 	  ret = fold_convert_loc (location, argtype, fold_offsetof_1 (arg));
  	  goto return_build_unary_op;
  	}
  
--- 4638,4644 ----
        if (val && INDIRECT_REF_P (val)
            && TREE_CONSTANT (TREE_OPERAND (val, 0)))
  	{
! 	  ret = fold_offsetof (arg, argtype);
  	  goto return_build_unary_op;
  	}
  
*************** build_binary_op (location_t location, en
*** 11150,11156 ****
  	  converted = 1;
  	}
        else if ((code0 == INTEGER_TYPE || code0 == FIXED_POINT_TYPE
! 		|| code0 == VECTOR_TYPE)
  	       && code1 == INTEGER_TYPE)
  	{
  	  doing_shift = true;
--- 11150,11157 ----
  	  converted = 1;
  	}
        else if ((code0 == INTEGER_TYPE || code0 == FIXED_POINT_TYPE
! 		|| (code0 == VECTOR_TYPE
! 		    && TREE_CODE (TREE_TYPE (type0)) == INTEGER_TYPE))
  	       && code1 == INTEGER_TYPE)
  	{
  	  doing_shift = true;
*************** build_binary_op (location_t location, en
*** 11207,11213 ****
  	  converted = 1;
  	}
        else if ((code0 == INTEGER_TYPE || code0 == FIXED_POINT_TYPE
! 		|| code0 == VECTOR_TYPE)
  	       && code1 == INTEGER_TYPE)
  	{
  	  doing_shift = true;
--- 11208,11215 ----
  	  converted = 1;
  	}
        else if ((code0 == INTEGER_TYPE || code0 == FIXED_POINT_TYPE
! 		|| (code0 == VECTOR_TYPE
! 		    && TREE_CODE (TREE_TYPE (type0)) == INTEGER_TYPE))
  	       && code1 == INTEGER_TYPE)
  	{
  	  doing_shift = true;
*************** build_binary_op (location_t location, en
*** 11299,11304 ****
--- 11301,11313 ----
            /* Always construct signed integer vector type.  */
            intt = c_common_type_for_size (GET_MODE_BITSIZE
  					   (TYPE_MODE (TREE_TYPE (type0))), 0);
+ 	  if (!intt)
+ 	    {
+ 	      error_at (location, "could not find an integer type "
+ 				  "of the same size as %qT",
+ 			TREE_TYPE (type0));
+ 	      return error_mark_node;
+ 	    }
            result_type = build_opaque_vector_type (intt,
  						  TYPE_VECTOR_SUBPARTS (type0));
            converted = 1;
*************** build_binary_op (location_t location, en
*** 11458,11463 ****
--- 11467,11479 ----
            /* Always construct signed integer vector type.  */
            intt = c_common_type_for_size (GET_MODE_BITSIZE
  					   (TYPE_MODE (TREE_TYPE (type0))), 0);
+ 	  if (!intt)
+ 	    {
+ 	      error_at (location, "could not find an integer type "
+ 				  "of the same size as %qT",
+ 			TREE_TYPE (type0));
+ 	      return error_mark_node;
+ 	    }
            result_type = build_opaque_vector_type (intt,
  						  TYPE_VECTOR_SUBPARTS (type0));
            converted = 1;
*************** c_finish_omp_clauses (tree clauses, enum
*** 13744,13765 ****
  
  	      if (VAR_P (t) && DECL_THREAD_LOCAL_P (t))
  		share_name = "threadprivate";
! 	      else switch (c_omp_predetermined_sharing (t))
  		{
- 		case OMP_CLAUSE_DEFAULT_UNSPECIFIED:
- 		  break;
- 		case OMP_CLAUSE_DEFAULT_SHARED:
  		  /* const vars may be specified in firstprivate clause.  */
! 		  if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_FIRSTPRIVATE
! 		      && TREE_READONLY (t))
! 		    break;
! 		  share_name = "shared";
! 		  break;
! 		case OMP_CLAUSE_DEFAULT_PRIVATE:
! 		  share_name = "private";
! 		  break;
! 		default:
! 		  gcc_unreachable ();
  		}
  	      if (share_name)
  		{
--- 13760,13770 ----
  
  	      if (VAR_P (t) && DECL_THREAD_LOCAL_P (t))
  		share_name = "threadprivate";
! 	      else if (TREE_READONLY (t))
  		{
  		  /* const vars may be specified in firstprivate clause.  */
! 		  if (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_FIRSTPRIVATE)
! 		    share_name = "shared";
  		}
  	      if (share_name)
  		{
diff -Nrcpad gcc-7.3.0/gcc/c-family/ChangeLog gcc-7.4.0/gcc/c-family/ChangeLog
*** gcc-7.3.0/gcc/c-family/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/c-family/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,60 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-06-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/86210
+ 	* c-common.c (check_nonnull_arg): Use fold_for_warn.  Adjust obsolete
+ 	comment.
+ 
+ 	2018-05-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/85696
+ 	* c-omp.c (c_omp_predetermined_sharing): Return
+ 	OMP_CLAUSE_DEFAULT_SHARED for artificial vars with integral type.
+ 
+ 	2018-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85662
+ 	* c-common.h (fold_offsetof_1): Removed.
+ 	(fold_offsetof): Add TYPE argument defaulted to size_type_node and
+ 	CTX argument defaulted to ERROR_MARK.
+ 	* c-common.c (fold_offsetof_1): Renamed to ...
+ 	(fold_offsetof): ... this.  Remove wrapper function.  Add TYPE
+ 	argument, convert the pointer constant to TYPE and use size_binop
+ 	with PLUS_EXPR instead of fold_build_pointer_plus if type is not
+ 	a pointer type.  Adjust recursive calls.
+ 
+ 2018-04-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c/84873
+ 	* c-gimplify.c (c_gimplify_expr): Revert previous change.  Instead
+ 	unshare the possibly folded expression.
+ 
+ 	2018-03-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c/84873
+ 	* c-gimplify.c (c_gimplify_expr): Do not fold expressions.
+ 
+ 2018-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-01-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* c-cppbuiltin.c (c_cpp_builtins): Use ggc_strdup for the fp_suffix
+ 	argument.
+ 	(LAZY_HEX_FP_VALUES_CNT): Define.
+ 	(lazy_hex_fp_values): Allow up to LAZY_HEX_FP_VALUES_CNT lazy hex fp
+ 	values rather than just 12.
+ 	(builtin_define_with_hex_fp_value): Likewise.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/gcc/c-family/c-common.c gcc-7.4.0/gcc/c-family/c-common.c
*** gcc-7.3.0/gcc/c-family/c-common.c	Fri Dec 15 21:50:52 2017
--- gcc-7.4.0/gcc/c-family/c-common.c	Fri Jun 22 21:33:58 2018
*************** check_nonnull_arg (void *ctx, tree param
*** 5434,5443 ****
    if (TREE_CODE (TREE_TYPE (param)) != POINTER_TYPE)
      return;
  
!   /* When not optimizing diagnose the simple cases of null arguments.
!      When optimization is enabled defer the checking until expansion
!      when more cases can be detected.  */
!   if (integer_zerop (param))
      {
        warning_at (pctx->loc, OPT_Wnonnull, "null argument where non-null "
  		  "required (argument %lu)", (unsigned long) param_num);
--- 5434,5441 ----
    if (TREE_CODE (TREE_TYPE (param)) != POINTER_TYPE)
      return;
  
!   /* Diagnose the simple cases of null arguments.  */
!   if (integer_zerop (fold_for_warn (param)))
      {
        warning_at (pctx->loc, OPT_Wnonnull, "null argument where non-null "
  		  "required (argument %lu)", (unsigned long) param_num);
*************** c_common_to_target_charset (HOST_WIDE_IN
*** 6253,6262 ****
  
  /* Fold an offsetof-like expression.  EXPR is a nested sequence of component
     references with an INDIRECT_REF of a constant at the bottom; much like the
!    traditional rendering of offsetof as a macro.  Return the folded result.  */
  
  tree
! fold_offsetof_1 (tree expr, enum tree_code ctx)
  {
    tree base, off, t;
    tree_code code = TREE_CODE (expr);
--- 6251,6261 ----
  
  /* Fold an offsetof-like expression.  EXPR is a nested sequence of component
     references with an INDIRECT_REF of a constant at the bottom; much like the
!    traditional rendering of offsetof as a macro.  TYPE is the desired type of
!    the whole expression.  Return the folded result.  */
  
  tree
! fold_offsetof (tree expr, tree type, enum tree_code ctx)
  {
    tree base, off, t;
    tree_code code = TREE_CODE (expr);
*************** fold_offsetof_1 (tree expr, enum tree_co
*** 6281,6290 ****
  	  error ("cannot apply %<offsetof%> to a non constant address");
  	  return error_mark_node;
  	}
!       return TREE_OPERAND (expr, 0);
  
      case COMPONENT_REF:
!       base = fold_offsetof_1 (TREE_OPERAND (expr, 0), code);
        if (base == error_mark_node)
  	return base;
  
--- 6280,6289 ----
  	  error ("cannot apply %<offsetof%> to a non constant address");
  	  return error_mark_node;
  	}
!       return convert (type, TREE_OPERAND (expr, 0));
  
      case COMPONENT_REF:
!       base = fold_offsetof (TREE_OPERAND (expr, 0), type, code);
        if (base == error_mark_node)
  	return base;
  
*************** fold_offsetof_1 (tree expr, enum tree_co
*** 6301,6307 ****
        break;
  
      case ARRAY_REF:
!       base = fold_offsetof_1 (TREE_OPERAND (expr, 0), code);
        if (base == error_mark_node)
  	return base;
  
--- 6300,6306 ----
        break;
  
      case ARRAY_REF:
!       base = fold_offsetof (TREE_OPERAND (expr, 0), type, code);
        if (base == error_mark_node)
  	return base;
  
*************** fold_offsetof_1 (tree expr, enum tree_co
*** 6358,6380 ****
        /* Handle static members of volatile structs.  */
        t = TREE_OPERAND (expr, 1);
        gcc_assert (VAR_P (t));
!       return fold_offsetof_1 (t);
  
      default:
        gcc_unreachable ();
      }
  
    return fold_build_pointer_plus (base, off);
  }
- 
- /* Likewise, but convert it to the return type of offsetof.  */
- 
- tree
- fold_offsetof (tree expr)
- {
-   return convert (size_type_node, fold_offsetof_1 (expr));
- }
- 
  
  /* *PTYPE is an incomplete array.  Complete it with a domain based on
     INITIAL_VALUE.  If INITIAL_VALUE is not present, use 1 if DO_DEFAULT
--- 6357,6372 ----
        /* Handle static members of volatile structs.  */
        t = TREE_OPERAND (expr, 1);
        gcc_assert (VAR_P (t));
!       return fold_offsetof (t, type);
  
      default:
        gcc_unreachable ();
      }
  
+   if (!POINTER_TYPE_P (type))
+     return size_binop (PLUS_EXPR, base, convert (type, off));
    return fold_build_pointer_plus (base, off);
  }
  
  /* *PTYPE is an incomplete array.  Complete it with a domain based on
     INITIAL_VALUE.  If INITIAL_VALUE is not present, use 1 if DO_DEFAULT
diff -Nrcpad gcc-7.3.0/gcc/c-family/c-common.h gcc-7.4.0/gcc/c-family/c-common.h
*** gcc-7.3.0/gcc/c-family/c-common.h	Fri Mar 31 06:40:39 2017
--- gcc-7.4.0/gcc/c-family/c-common.h	Fri Jun 22 21:23:03 2018
*************** extern bool c_dump_tree (void *, tree);
*** 1053,1060 ****
  
  extern void verify_sequence_points (tree);
  
! extern tree fold_offsetof_1 (tree, tree_code ctx = ERROR_MARK);
! extern tree fold_offsetof (tree);
  
  extern int complete_array_type (tree *, tree, bool);
  
--- 1053,1060 ----
  
  extern void verify_sequence_points (tree);
  
! extern tree fold_offsetof (tree, tree = size_type_node,
! 			   tree_code ctx = ERROR_MARK);
  
  extern int complete_array_type (tree *, tree, bool);
  
diff -Nrcpad gcc-7.3.0/gcc/c-family/c-cppbuiltin.c gcc-7.4.0/gcc/c-family/c-cppbuiltin.c
*** gcc-7.3.0/gcc/c-family/c-cppbuiltin.c	Sun Sep 10 08:44:04 2017
--- gcc-7.4.0/gcc/c-family/c-cppbuiltin.c	Sat Mar  3 13:20:13 2018
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1119,1125 ****
  	       floatn_nx_types[i].extended ? "X" : "");
        sprintf (csuffix, "F%d%s", floatn_nx_types[i].n,
  	       floatn_nx_types[i].extended ? "x" : "");
!       builtin_define_float_constants (prefix, csuffix, "%s", NULL,
  				      FLOATN_NX_TYPE_NODE (i));
      }
  
--- 1119,1125 ----
  	       floatn_nx_types[i].extended ? "X" : "");
        sprintf (csuffix, "F%d%s", floatn_nx_types[i].n,
  	       floatn_nx_types[i].extended ? "x" : "");
!       builtin_define_float_constants (prefix, ggc_strdup (csuffix), "%s", NULL,
  				      FLOATN_NX_TYPE_NODE (i));
      }
  
*************** struct GTY(()) lazy_hex_fp_value_struct
*** 1566,1572 ****
    int digits;
    const char *fp_suffix;
  };
! static GTY(()) struct lazy_hex_fp_value_struct lazy_hex_fp_values[12];
  static GTY(()) int lazy_hex_fp_value_count;
  
  static bool
--- 1566,1579 ----
    int digits;
    const char *fp_suffix;
  };
! /* Number of the expensive to compute macros we should evaluate lazily.
!    Each builtin_define_float_constants invocation calls
!    builtin_define_with_hex_fp_value 4 times and builtin_define_float_constants
!    is called for FLT, DBL, LDBL and up to NUM_FLOATN_NX_TYPES times for
!    FLTNN*.  */ 
! #define LAZY_HEX_FP_VALUES_CNT (4 * (3 + NUM_FLOATN_NX_TYPES))
! static GTY(()) struct lazy_hex_fp_value_struct
!   lazy_hex_fp_values[LAZY_HEX_FP_VALUES_CNT];
  static GTY(()) int lazy_hex_fp_value_count;
  
  static bool
*************** builtin_define_with_hex_fp_value (const
*** 1611,1617 ****
    char dec_str[64], buf1[256], buf2[256];
  
    /* This is very expensive, so if possible expand them lazily.  */
!   if (lazy_hex_fp_value_count < 12
        && flag_dump_macros == 0
        && !cpp_get_options (parse_in)->traditional)
      {
--- 1618,1624 ----
    char dec_str[64], buf1[256], buf2[256];
  
    /* This is very expensive, so if possible expand them lazily.  */
!   if (lazy_hex_fp_value_count < LAZY_HEX_FP_VALUES_CNT
        && flag_dump_macros == 0
        && !cpp_get_options (parse_in)->traditional)
      {
diff -Nrcpad gcc-7.3.0/gcc/c-family/c-gimplify.c gcc-7.4.0/gcc/c-family/c-gimplify.c
*** gcc-7.3.0/gcc/c-family/c-gimplify.c	Fri Jan 20 12:02:50 2017
--- gcc-7.4.0/gcc/c-family/c-gimplify.c	Thu Apr 26 10:00:24 2018
*************** c_gimplify_expr (tree *expr_p, gimple_se
*** 244,250 ****
  				    unsigned_type_node)
  	    && !types_compatible_p (TYPE_MAIN_VARIANT (TREE_TYPE (*op1_p)),
  				    integer_type_node))
! 	  *op1_p = convert (unsigned_type_node, *op1_p);
  	break;
        }
  
--- 244,252 ----
  				    unsigned_type_node)
  	    && !types_compatible_p (TYPE_MAIN_VARIANT (TREE_TYPE (*op1_p)),
  				    integer_type_node))
! 	  /* Make sure to unshare the result, tree sharing is invalid
! 	     during gimplification.  */
! 	  *op1_p = unshare_expr (convert (unsigned_type_node, *op1_p));
  	break;
        }
  
diff -Nrcpad gcc-7.3.0/gcc/c-family/c-omp.c gcc-7.4.0/gcc/c-family/c-omp.c
*** gcc-7.3.0/gcc/c-family/c-omp.c	Thu Sep  7 20:18:45 2017
--- gcc-7.4.0/gcc/c-family/c-omp.c	Fri Jun 22 21:25:04 2018
*************** c_omp_predetermined_sharing (tree decl)
*** 1540,1544 ****
--- 1540,1552 ----
    if (TREE_READONLY (decl))
      return OMP_CLAUSE_DEFAULT_SHARED;
  
+   /* Predetermine artificial variables holding integral values, those
+      are usually result of gimplify_one_sizepos or SAVE_EXPR
+      gimplification.  */
+   if (VAR_P (decl)
+       && DECL_ARTIFICIAL (decl)
+       && INTEGRAL_TYPE_P (TREE_TYPE (decl)))
+     return OMP_CLAUSE_DEFAULT_SHARED;
+ 
    return OMP_CLAUSE_DEFAULT_UNSPECIFIED;
  }
diff -Nrcpad gcc-7.3.0/gcc/calls.c gcc-7.4.0/gcc/calls.c
*** gcc-7.3.0/gcc/calls.c	Thu Sep  7 20:20:43 2017
--- gcc-7.4.0/gcc/calls.c	Fri Jun 22 20:43:53 2018
*************** static GTY(()) tree alloc_object_size_li
*** 1196,1260 ****
  static tree
  alloc_max_size (void)
  {
!   if (!alloc_object_size_limit)
!     {
!       alloc_object_size_limit = TYPE_MAX_VALUE (ssizetype);
  
!       if (warn_alloc_size_limit)
! 	{
! 	  char *end = NULL;
! 	  errno = 0;
! 	  unsigned HOST_WIDE_INT unit = 1;
! 	  unsigned HOST_WIDE_INT limit
! 	    = strtoull (warn_alloc_size_limit, &end, 10);
  
! 	  if (!errno)
! 	    {
! 	      if (end && *end)
! 		{
! 		  /* Numeric option arguments are at most INT_MAX.  Make it
! 		     possible to specify a larger value by accepting common
! 		     suffixes.  */
! 		  if (!strcmp (end, "kB"))
! 		    unit = 1000;
! 		  else if (!strcasecmp (end, "KiB") || strcmp (end, "KB"))
! 		    unit = 1024;
! 		  else if (!strcmp (end, "MB"))
! 		    unit = HOST_WIDE_INT_UC (1000) * 1000;
! 		  else if (!strcasecmp (end, "MiB"))
! 		    unit = HOST_WIDE_INT_UC (1024) * 1024;
! 		  else if (!strcasecmp (end, "GB"))
! 		    unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000;
! 		  else if (!strcasecmp (end, "GiB"))
! 		    unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024;
! 		  else if (!strcasecmp (end, "TB"))
! 		    unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000;
! 		  else if (!strcasecmp (end, "TiB"))
! 		    unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024;
! 		  else if (!strcasecmp (end, "PB"))
! 		    unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000 * 1000;
! 		  else if (!strcasecmp (end, "PiB"))
! 		    unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024 * 1024;
! 		  else if (!strcasecmp (end, "EB"))
! 		    unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000 * 1000
! 			   * 1000;
! 		  else if (!strcasecmp (end, "EiB"))
! 		    unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024 * 1024
! 			   * 1024;
! 		  else
! 		    unit = 0;
! 		}
  
! 	      if (unit)
! 		{
! 		  wide_int w = wi::uhwi (limit, HOST_BITS_PER_WIDE_INT + 64);
! 		  w *= unit;
! 		  if (wi::ltu_p (w, alloc_object_size_limit))
! 		    alloc_object_size_limit = wide_int_to_tree (ssizetype, w);
! 		}
! 	    }
  	}
      }
    return alloc_object_size_limit;
  }
  
--- 1196,1274 ----
  static tree
  alloc_max_size (void)
  {
!   if (alloc_object_size_limit)
!     return alloc_object_size_limit;
  
!   alloc_object_size_limit = TYPE_MAX_VALUE (ssizetype);
  
!   if (!warn_alloc_size_limit)
!     return alloc_object_size_limit;
  
!   const char *optname = "-Walloc-size-larger-than=";
! 
!   char *end = NULL;
!   errno = 0;
!   unsigned HOST_WIDE_INT unit = 1;
!   unsigned HOST_WIDE_INT limit
!     = strtoull (warn_alloc_size_limit, &end, 10);
! 
!   /* If the value is too large to be represented use the maximum
!      representable value that strtoull sets limit to (setting
!      errno to ERANGE).  */
! 
!   if (end && *end)
!     {
!       /* Numeric option arguments are at most INT_MAX.  Make it
! 	 possible to specify a larger value by accepting common
! 	 suffixes.  */
!       if (!strcmp (end, "kB"))
! 	unit = 1000;
!       else if (!strcasecmp (end, "KiB") || !strcmp (end, "KB"))
! 	unit = 1024;
!       else if (!strcmp (end, "MB"))
! 	unit = HOST_WIDE_INT_UC (1000) * 1000;
!       else if (!strcasecmp (end, "MiB"))
! 	unit = HOST_WIDE_INT_UC (1024) * 1024;
!       else if (!strcasecmp (end, "GB"))
! 	unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000;
!       else if (!strcasecmp (end, "GiB"))
! 	unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024;
!       else if (!strcasecmp (end, "TB"))
! 	unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000;
!       else if (!strcasecmp (end, "TiB"))
! 	unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024;
!       else if (!strcasecmp (end, "PB"))
! 	unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000 * 1000;
!       else if (!strcasecmp (end, "PiB"))
! 	unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024 * 1024;
!       else if (!strcasecmp (end, "EB"))
! 	unit = HOST_WIDE_INT_UC (1000) * 1000 * 1000 * 1000 * 1000
! 	  * 1000;
!       else if (!strcasecmp (end, "EiB"))
! 	unit = HOST_WIDE_INT_UC (1024) * 1024 * 1024 * 1024 * 1024
! 	  * 1024;
!       else
! 	{
! 	  /* This could mean an unknown suffix or a bad prefix, like
! 	     "+-1".  */
! 	  warning_at (UNKNOWN_LOCATION, 0,
! 		      "invalid argument %qs to %qs",
! 		      warn_alloc_size_limit, optname);
! 	  /* Ignore the limit extracted by strtoull.  */
! 	  unit = 0;
  	}
      }
+ 
+   if (unit)
+     {
+       widest_int w = wi::mul (limit, unit);
+       if (w < wi::to_widest (alloc_object_size_limit))
+ 	alloc_object_size_limit
+ 	  = wide_int_to_tree (ptrdiff_type_node, w);
+       else
+ 	alloc_object_size_limit = build_all_ones_cst (size_type_node);
+     }
+ 
    return alloc_object_size_limit;
  }
  
*************** expand_call (tree exp, rtx target, int i
*** 3133,3141 ****
  	if (CALL_EXPR_RETURN_SLOT_OPT (exp)
  	    && target
  	    && MEM_P (target)
! 	    && !(MEM_ALIGN (target) < TYPE_ALIGN (rettype)
! 		 && SLOW_UNALIGNED_ACCESS (TYPE_MODE (rettype),
! 					   MEM_ALIGN (target))))
  	  structure_value_addr = XEXP (target, 0);
  	else
  	  {
--- 3147,3160 ----
  	if (CALL_EXPR_RETURN_SLOT_OPT (exp)
  	    && target
  	    && MEM_P (target)
! 	    /* If rettype is addressable, we may not create a temporary.
! 	       If target is properly aligned at runtime and the compiler
! 	       just doesn't know about it, it will work fine, otherwise it
! 	       will be UB.  */
! 	    && (TREE_ADDRESSABLE (rettype)
! 		|| !(MEM_ALIGN (target) < TYPE_ALIGN (rettype)
! 		     && SLOW_UNALIGNED_ACCESS (TYPE_MODE (rettype),
! 					       MEM_ALIGN (target)))))
  	  structure_value_addr = XEXP (target, 0);
  	else
  	  {
diff -Nrcpad gcc-7.3.0/gcc/cfgexpand.c gcc-7.4.0/gcc/cfgexpand.c
*** gcc-7.3.0/gcc/cfgexpand.c	Thu Jan  5 01:46:32 2017
--- gcc-7.4.0/gcc/cfgexpand.c	Sun Nov 11 17:44:43 2018
*************** set_parm_rtl (tree parm, rtx x)
*** 1252,1261 ****
  	 allocate it, which means that in-frame portion is just a
  	 pointer.  ??? We've got a pseudo for sure here, do we
  	 actually dynamically allocate its spilling area if needed?
! 	 ??? Isn't it a problem when POINTER_SIZE also exceeds
! 	 MAX_SUPPORTED_STACK_ALIGNMENT, as on cris and lm32?  */
        if (align > MAX_SUPPORTED_STACK_ALIGNMENT)
! 	align = POINTER_SIZE;
  
        record_alignment_for_reg_var (align);
      }
--- 1252,1261 ----
  	 allocate it, which means that in-frame portion is just a
  	 pointer.  ??? We've got a pseudo for sure here, do we
  	 actually dynamically allocate its spilling area if needed?
! 	 ??? Isn't it a problem when Pmode alignment also exceeds
! 	 MAX_SUPPORTED_STACK_ALIGNMENT, as can happen on cris and lm32?  */
        if (align > MAX_SUPPORTED_STACK_ALIGNMENT)
! 	align = GET_MODE_ALIGNMENT (Pmode);
  
        record_alignment_for_reg_var (align);
      }
*************** expand_one_ssa_partition (tree var)
*** 1375,1381 ****
    /* If the variable alignment is very large we'll dynamicaly allocate
       it, which means that in-frame portion is just a pointer.  */
    if (align > MAX_SUPPORTED_STACK_ALIGNMENT)
!     align = POINTER_SIZE;
  
    record_alignment_for_reg_var (align);
  
--- 1375,1381 ----
    /* If the variable alignment is very large we'll dynamicaly allocate
       it, which means that in-frame portion is just a pointer.  */
    if (align > MAX_SUPPORTED_STACK_ALIGNMENT)
!     align = GET_MODE_ALIGNMENT (Pmode);
  
    record_alignment_for_reg_var (align);
  
*************** expand_one_var (tree var, bool toplevel,
*** 1592,1598 ****
        /* If the variable alignment is very large we'll dynamicaly allocate
  	 it, which means that in-frame portion is just a pointer.  */
        if (align > MAX_SUPPORTED_STACK_ALIGNMENT)
! 	align = POINTER_SIZE;
      }
  
    record_alignment_for_reg_var (align);
--- 1592,1598 ----
        /* If the variable alignment is very large we'll dynamicaly allocate
  	 it, which means that in-frame portion is just a pointer.  */
        if (align > MAX_SUPPORTED_STACK_ALIGNMENT)
! 	align = GET_MODE_ALIGNMENT (Pmode);
      }
  
    record_alignment_for_reg_var (align);
*************** expand_asm_stmt (gasm *stmt)
*** 2997,3010 ****
  
        generating_concat_p = 0;
  
!       if ((TREE_CODE (val) == INDIRECT_REF
! 	   && allows_mem)
  	  || (DECL_P (val)
  	      && (allows_mem || REG_P (DECL_RTL (val)))
  	      && ! (REG_P (DECL_RTL (val))
  		    && GET_MODE (DECL_RTL (val)) != TYPE_MODE (type)))
  	  || ! allows_reg
! 	  || is_inout)
  	{
  	  op = expand_expr (val, NULL_RTX, VOIDmode,
  			    !allows_reg ? EXPAND_MEMORY : EXPAND_WRITE);
--- 2997,3010 ----
  
        generating_concat_p = 0;
  
!       if ((TREE_CODE (val) == INDIRECT_REF && allows_mem)
  	  || (DECL_P (val)
  	      && (allows_mem || REG_P (DECL_RTL (val)))
  	      && ! (REG_P (DECL_RTL (val))
  		    && GET_MODE (DECL_RTL (val)) != TYPE_MODE (type)))
  	  || ! allows_reg
! 	  || is_inout
! 	  || TREE_ADDRESSABLE (type))
  	{
  	  op = expand_expr (val, NULL_RTX, VOIDmode,
  			    !allows_reg ? EXPAND_MEMORY : EXPAND_WRITE);
*************** expand_asm_stmt (gasm *stmt)
*** 3013,3019 ****
  
  	  if (! allows_reg && !MEM_P (op))
  	    error ("output number %d not directly addressable", i);
! 	  if ((! allows_mem && MEM_P (op))
  	      || GET_CODE (op) == CONCAT)
  	    {
  	      rtx old_op = op;
--- 3013,3019 ----
  
  	  if (! allows_reg && !MEM_P (op))
  	    error ("output number %d not directly addressable", i);
! 	  if ((! allows_mem && MEM_P (op) && GET_MODE (op) != BLKmode)
  	      || GET_CODE (op) == CONCAT)
  	    {
  	      rtx old_op = op;
*************** pass_expand::execute (function *fun)
*** 6466,6471 ****
--- 6466,6479 ----
    find_many_sub_basic_blocks (blocks);
    purge_all_dead_edges ();
  
+   /* After initial rtl generation, call back to finish generating
+      exception support code.  We need to do this before cleaning up
+      the CFG as the code does not expect dead landing pads.  */
+   if (fun->eh->region_tree != NULL)
+     finish_eh_generation ();
+ 
+   /* Call expand_stack_alignment after finishing all
+      updates to crtl->preferred_stack_boundary.  */
    expand_stack_alignment ();
  
    /* Fixup REG_EQUIV notes in the prologue if there are tailcalls in this
*************** pass_expand::execute (function *fun)
*** 6473,6484 ****
    if (crtl->tail_call_emit)
      fixup_tail_calls ();
  
-   /* After initial rtl generation, call back to finish generating
-      exception support code.  We need to do this before cleaning up
-      the CFG as the code does not expect dead landing pads.  */
-   if (fun->eh->region_tree != NULL)
-     finish_eh_generation ();
- 
    /* Remove unreachable blocks, otherwise we cannot compute dominators
       which are needed for loop state verification.  As a side-effect
       this also compacts blocks.
--- 6481,6486 ----
diff -Nrcpad gcc-7.3.0/gcc/cgraph.h gcc-7.4.0/gcc/cgraph.h
*** gcc-7.3.0/gcc/cgraph.h	Fri Apr 28 11:42:14 2017
--- gcc-7.4.0/gcc/cgraph.h	Tue Mar  6 20:04:20 2018
*************** public:
*** 321,326 ****
--- 321,329 ----
       or abstract function kept for debug info purposes only.  */
    bool real_symbol_p (void);
  
+   /* Return true when the symbol needs to be output to the LTO symbol table.  */
+   bool output_to_lto_symbol_table_p (void);
+ 
    /* Determine if symbol declaration is needed.  That is, visible to something
       either outside this translation unit, something magic in the system
       configury. This function is used just during symbol creation.  */
diff -Nrcpad gcc-7.3.0/gcc/collect2.c gcc-7.4.0/gcc/collect2.c
*** gcc-7.3.0/gcc/collect2.c	Mon Apr  3 22:30:56 2017
--- gcc-7.4.0/gcc/collect2.c	Wed Jun 27 20:08:21 2018
***************
*** 1,6 ****
  /* Collect static initialization info into data structures that can be
     traversed by C++ initialization and finalization routines.
!    Copyright (C) 1992-2017 Free Software Foundation, Inc.
     Contributed by Chris Smith (csmith@convex.com).
     Heavily modified by Michael Meissner (meissner@cygnus.com),
     Per Bothner (bothner@cygnus.com), and John Gilmore (gnu@cygnus.com).
--- 1,6 ----
  /* Collect static initialization info into data structures that can be
     traversed by C++ initialization and finalization routines.
!    Copyright (C) 1992-2018 Free Software Foundation, Inc.
     Contributed by Chris Smith (csmith@convex.com).
     Heavily modified by Michael Meissner (meissner@cygnus.com),
     Per Bothner (bothner@cygnus.com), and John Gilmore (gnu@cygnus.com).
*************** static enum lto_mode_d lto_mode = LTO_MO
*** 201,206 ****
--- 201,207 ----
  bool helpflag;			/* true if --help */
  
  static int shared_obj;			/* true if -shared */
+ static int static_obj;			/* true if -static */
  
  static const char *c_file;		/* <xxx>.c for constructor/destructor list.  */
  static const char *o_file;		/* <xxx>.o for constructor/destructor list.  */
*************** bool may_unlink_output_file = false;
*** 255,260 ****
--- 256,262 ----
  #ifdef COLLECT_EXPORT_LIST
  /* Lists to keep libraries to be scanned for global constructors/destructors.  */
  static struct head libs;                    /* list of libraries */
+ static struct head static_libs;             /* list of statically linked libraries */
  static struct path_prefix cmdline_lib_dirs; /* directories specified with -L */
  static struct path_prefix libpath_lib_dirs; /* directories in LIBPATH */
  static struct path_prefix *libpaths[3] = {&cmdline_lib_dirs,
*************** static void write_c_file_glob (FILE *, c
*** 320,328 ****
  static void scan_libraries (const char *);
  #endif
  #ifdef COLLECT_EXPORT_LIST
- #if 0
  static int is_in_list (const char *, struct id *);
- #endif
  static void write_aix_file (FILE *, struct id *);
  static char *resolve_lib_name (const char *);
  #endif
--- 322,328 ----
*************** main (int argc, char **argv)
*** 911,916 ****
--- 911,919 ----
    int first_file;
    int num_c_args;
    char **old_argv;
+ #ifdef COLLECT_EXPORT_LIST
+   bool is_static = false;
+ #endif
    int i;
  
    for (i = 0; i < USE_LD_MAX; i++)
*************** main (int argc, char **argv)
*** 1241,1246 ****
--- 1244,1251 ----
  	*c_ptr++ = xstrdup (q);
        if (strcmp (q, "-shared") == 0)
  	shared_obj = 1;
+       if (strcmp (q, "-static") == 0)
+ 	static_obj = 1;
        if (*q == '-' && q[1] == 'B')
  	{
  	  *c_ptr++ = xstrdup (q);
*************** main (int argc, char **argv)
*** 1269,1274 ****
--- 1274,1282 ----
    /* Parse arguments.  Remember output file spec, pass the rest to ld.  */
    /* After the first file, put in the c++ rt0.  */
  
+ #ifdef COLLECT_EXPORT_LIST
+   is_static = static_obj;
+ #endif
    first_file = 1;
    while ((arg = *++argv) != (char *) 0)
      {
*************** main (int argc, char **argv)
*** 1374,1379 ****
--- 1382,1399 ----
  #endif
                break;
  
+ #ifdef COLLECT_EXPORT_LIST
+ 	    case 'b':
+ 	      if (!strcmp (arg, "-bstatic"))
+ 		{
+ 		  is_static = true;
+ 		}
+ 	      else if (!strcmp (arg, "-bdynamic") || !strcmp (arg, "-bshared"))
+ 		{
+ 		  is_static = false;
+ 		}
+ 	      break;
+ #endif
  	    case 'l':
  	      if (first_file)
  		{
*************** main (int argc, char **argv)
*** 1390,1395 ****
--- 1410,1417 ----
  
  		/* Saving a full library name.  */
  		add_to_list (&libs, s);
+ 		if (is_static)
+ 		    add_to_list (&static_libs, s);
  	      }
  #endif
  	      break;
*************** main (int argc, char **argv)
*** 1490,1495 ****
--- 1512,1519 ----
  	    {
  	      /* Saving a full library name.  */
  	      add_to_list (&libs, arg);
+ 	      if (is_static)
+ 		add_to_list (&static_libs, arg);
  	    }
  #endif
  	}
*************** main (int argc, char **argv)
*** 1501,1506 ****
--- 1525,1532 ----
      {
        fprintf (stderr, "List of libraries:\n");
        dump_list (stderr, "\t", libs.first);
+       fprintf (stderr, "List of statically linked libraries:\n");
+       dump_list (stderr, "\t", static_libs.first);
      }
  
    /* The AIX linker will discard static constructors in object files if
*************** main (int argc, char **argv)
*** 1525,1533 ****
--- 1551,1561 ----
        this_filter &= ~SCAN_DWEH;
  #endif
  
+     /* Scan object files.  */
      while (export_object_lst < object)
        scan_prog_file (*export_object_lst++, PASS_OBJ, this_filter);
  
+     /* Scan libraries.  */
      for (; list; list = list->next)
        scan_prog_file (list->name, PASS_FIRST, this_filter);
  
*************** write_list (FILE *stream, const char *pr
*** 1975,1981 ****
  
  #ifdef COLLECT_EXPORT_LIST
  /* This function is really used only on AIX, but may be useful.  */
- #if 0
  static int
  is_in_list (const char *prefix, struct id *list)
  {
--- 2003,2008 ----
*************** is_in_list (const char *prefix, struct i
*** 1986,1992 ****
      }
      return 0;
  }
- #endif
  #endif /* COLLECT_EXPORT_LIST */
  
  /* Added for debugging purpose.  */
--- 2013,2018 ----
*************** scan_prog_file (const char *prog_name, s
*** 2815,2821 ****
  			case SYM_AIXI:
  			  if (! (filter & SCAN_CTOR))
  			    break;
! 			  if (is_shared && !aixlazy_flag)
  			    add_to_list (&constructors, name);
  			  break;
  
--- 2841,2852 ----
  			case SYM_AIXI:
  			  if (! (filter & SCAN_CTOR))
  			    break;
! 			  if (is_shared && !aixlazy_flag
! #ifdef COLLECT_EXPORT_LIST
! 			      && ! static_obj
! 			      && ! is_in_list (prog_name, static_libs.first)
! #endif
! 			      )
  			    add_to_list (&constructors, name);
  			  break;
  
diff -Nrcpad gcc-7.3.0/gcc/combine.c gcc-7.4.0/gcc/combine.c
*** gcc-7.3.0/gcc/combine.c	Sun Jan 14 15:45:38 2018
--- gcc-7.4.0/gcc/combine.c	Tue Nov 20 09:04:12 2018
*************** subst (rtx x, rtx from, rtx to, int in_d
*** 5482,5492 ****
  		    x = gen_rtx_CLOBBER (mode, const0_rtx);
  		}
  	      else if (CONST_SCALAR_INT_P (new_rtx)
! 		       && GET_CODE (x) == ZERO_EXTEND)
  		{
! 		  x = simplify_unary_operation (ZERO_EXTEND, GET_MODE (x),
! 						new_rtx, GET_MODE (XEXP (x, 0)));
! 		  gcc_assert (x);
  		}
  	      else
  		SUBST (XEXP (x, i), new_rtx);
--- 5482,5496 ----
  		    x = gen_rtx_CLOBBER (mode, const0_rtx);
  		}
  	      else if (CONST_SCALAR_INT_P (new_rtx)
! 		       && (GET_CODE (x) == ZERO_EXTEND
! 			   || GET_CODE (x) == FLOAT
! 			   || GET_CODE (x) == UNSIGNED_FLOAT))
  		{
! 		  x = simplify_unary_operation (GET_CODE (x), GET_MODE (x),
! 						new_rtx,
! 						GET_MODE (XEXP (x, 0)));
! 		  if (!x)
! 		    return gen_rtx_CLOBBER (VOIDmode, const0_rtx);
  		}
  	      else
  		SUBST (XEXP (x, i), new_rtx);
*************** combine_simplify_rtx (rtx x, machine_mod
*** 5637,5643 ****
  	  /* If everything is a comparison, what we have is highly unlikely
  	     to be simpler, so don't use it.  */
  	  && ! (COMPARISON_P (x)
! 		&& (COMPARISON_P (true_rtx) || COMPARISON_P (false_rtx))))
  	{
  	  rtx cop1 = const0_rtx;
  	  enum rtx_code cond_code = simplify_comparison (NE, &cond, &cop1);
--- 5641,5651 ----
  	  /* If everything is a comparison, what we have is highly unlikely
  	     to be simpler, so don't use it.  */
  	  && ! (COMPARISON_P (x)
! 		&& (COMPARISON_P (true_rtx) || COMPARISON_P (false_rtx)))
! 	  /* Similarly, if we end up with one of the expressions the same
! 	     as the original, it is certainly not simpler.  */
! 	  && ! rtx_equal_p (x, true_rtx)
! 	  && ! rtx_equal_p (x, false_rtx))
  	{
  	  rtx cop1 = const0_rtx;
  	  enum rtx_code cond_code = simplify_comparison (NE, &cond, &cop1);
*************** simplify_if_then_else (rtx x)
*** 6325,6331 ****
  			  pc_rtx, pc_rtx, 0, 0, 0);
        if (reg_mentioned_p (from, false_rtx))
  	false_rtx = subst (known_cond (copy_rtx (false_rtx), false_code,
! 				   from, false_val),
  			   pc_rtx, pc_rtx, 0, 0, 0);
  
        SUBST (XEXP (x, 1), swapped ? false_rtx : true_rtx);
--- 6333,6339 ----
  			  pc_rtx, pc_rtx, 0, 0, 0);
        if (reg_mentioned_p (from, false_rtx))
  	false_rtx = subst (known_cond (copy_rtx (false_rtx), false_code,
! 				       from, false_val),
  			   pc_rtx, pc_rtx, 0, 0, 0);
  
        SUBST (XEXP (x, 1), swapped ? false_rtx : true_rtx);
*************** if_then_else_cond (rtx x, rtx *ptrue, rt
*** 9179,9184 ****
--- 9187,9193 ----
  
  	  if (COMPARISON_P (cond0)
  	      && COMPARISON_P (cond1)
+ 	      && SCALAR_INT_MODE_P (mode)
  	      && ((GET_CODE (cond0) == reversed_comparison_code (cond1, NULL)
  		   && rtx_equal_p (XEXP (cond0, 0), XEXP (cond1, 0))
  		   && rtx_equal_p (XEXP (cond0, 1), XEXP (cond1, 1)))
*************** known_cond (rtx x, enum rtx_code cond, r
*** 9327,9338 ****
  	  if (COMPARISON_P (x))
  	    {
  	      if (comparison_dominates_p (cond, code))
! 		return const_true_rtx;
  
  	      code = reversed_comparison_code (x, NULL);
  	      if (code != UNKNOWN
  		  && comparison_dominates_p (cond, code))
! 		return const0_rtx;
  	      else
  		return x;
  	    }
--- 9336,9347 ----
  	  if (COMPARISON_P (x))
  	    {
  	      if (comparison_dominates_p (cond, code))
! 		return VECTOR_MODE_P (GET_MODE (x)) ? x : const_true_rtx;
  
  	      code = reversed_comparison_code (x, NULL);
  	      if (code != UNKNOWN
  		  && comparison_dominates_p (cond, code))
! 		return CONST0_RTX (GET_MODE (x));
  	      else
  		return x;
  	    }
*************** known_cond (rtx x, enum rtx_code cond, r
*** 9375,9381 ****
  	  /* We must simplify subreg here, before we lose track of the
  	     original inner_mode.  */
  	  new_rtx = simplify_subreg (GET_MODE (x), r,
! 				 inner_mode, SUBREG_BYTE (x));
  	  if (new_rtx)
  	    return new_rtx;
  	  else
--- 9384,9390 ----
  	  /* We must simplify subreg here, before we lose track of the
  	     original inner_mode.  */
  	  new_rtx = simplify_subreg (GET_MODE (x), r,
! 				     inner_mode, SUBREG_BYTE (x));
  	  if (new_rtx)
  	    return new_rtx;
  	  else
*************** known_cond (rtx x, enum rtx_code cond, r
*** 9400,9406 ****
  	  /* We must simplify the zero_extend here, before we lose
  	     track of the original inner_mode.  */
  	  new_rtx = simplify_unary_operation (ZERO_EXTEND, GET_MODE (x),
! 					  r, inner_mode);
  	  if (new_rtx)
  	    return new_rtx;
  	  else
--- 9409,9415 ----
  	  /* We must simplify the zero_extend here, before we lose
  	     track of the original inner_mode.  */
  	  new_rtx = simplify_unary_operation (ZERO_EXTEND, GET_MODE (x),
! 					      r, inner_mode);
  	  if (new_rtx)
  	    return new_rtx;
  	  else
*************** change_zero_ext (rtx pat)
*** 11322,11329 ****
  	    x = gen_rtx_LSHIFTRT (inner_mode, XEXP (x, 0), GEN_INT (start));
  	  else
  	    x = XEXP (x, 0);
  	  if (mode != inner_mode)
! 	    x = gen_lowpart_SUBREG (mode, x);
  	}
        else if (GET_CODE (x) == ZERO_EXTEND
  	       && SCALAR_INT_MODE_P (mode)
--- 11331,11345 ----
  	    x = gen_rtx_LSHIFTRT (inner_mode, XEXP (x, 0), GEN_INT (start));
  	  else
  	    x = XEXP (x, 0);
+ 
  	  if (mode != inner_mode)
! 	    {
! 	      if (REG_P (x) && HARD_REGISTER_P (x)
! 		  && !can_change_dest_mode (x, 0, mode))
! 		continue;
! 
! 	      x = gen_lowpart_SUBREG (mode, x);
! 	    }
  	}
        else if (GET_CODE (x) == ZERO_EXTEND
  	       && SCALAR_INT_MODE_P (mode)
*************** change_zero_ext (rtx pat)
*** 11335,11341 ****
  	  size = GET_MODE_PRECISION (GET_MODE (XEXP (x, 0)));
  	  x = SUBREG_REG (XEXP (x, 0));
  	  if (GET_MODE (x) != mode)
! 	    x = gen_lowpart_SUBREG (mode, x);
  	}
        else if (GET_CODE (x) == ZERO_EXTEND
  	       && SCALAR_INT_MODE_P (mode)
--- 11351,11363 ----
  	  size = GET_MODE_PRECISION (GET_MODE (XEXP (x, 0)));
  	  x = SUBREG_REG (XEXP (x, 0));
  	  if (GET_MODE (x) != mode)
! 	    {
! 	      if (REG_P (x) && HARD_REGISTER_P (x)
! 		  && !can_change_dest_mode (x, 0, mode))
! 		continue;
! 
! 	      x = gen_lowpart_SUBREG (mode, x);
! 	    }
  	}
        else if (GET_CODE (x) == ZERO_EXTEND
  	       && SCALAR_INT_MODE_P (mode)
*************** record_dead_and_set_regs_1 (rtx dest, co
*** 13081,13088 ****
    if (REG_P (dest))
      {
        /* If we are setting the whole register, we know its value.  Otherwise
! 	 show that we don't know the value.  We can handle SUBREG in
! 	 some cases.  */
        if (GET_CODE (setter) == SET && dest == SET_DEST (setter))
  	record_value_for_reg (dest, record_dead_insn, SET_SRC (setter));
        else if (GET_CODE (setter) == SET
--- 13103,13113 ----
    if (REG_P (dest))
      {
        /* If we are setting the whole register, we know its value.  Otherwise
! 	 show that we don't know the value.  We can handle a SUBREG if it's
! 	 the low part, but we must be careful with paradoxical SUBREGs on
! 	 RISC architectures because we cannot strip e.g. an extension around
! 	 a load and record the naked load since the RTL middle-end considers
! 	 that the upper bits are defined according to LOAD_EXTEND_OP.  */
        if (GET_CODE (setter) == SET && dest == SET_DEST (setter))
  	record_value_for_reg (dest, record_dead_insn, SET_SRC (setter));
        else if (GET_CODE (setter) == SET
*************** record_dead_and_set_regs_1 (rtx dest, co
*** 13091,13098 ****
  	       && GET_MODE_PRECISION (GET_MODE (dest)) <= BITS_PER_WORD
  	       && subreg_lowpart_p (SET_DEST (setter)))
  	record_value_for_reg (dest, record_dead_insn,
! 			      gen_lowpart (GET_MODE (dest),
! 						       SET_SRC (setter)));
        else
  	record_value_for_reg (dest, record_dead_insn, NULL_RTX);
      }
--- 13116,13127 ----
  	       && GET_MODE_PRECISION (GET_MODE (dest)) <= BITS_PER_WORD
  	       && subreg_lowpart_p (SET_DEST (setter)))
  	record_value_for_reg (dest, record_dead_insn,
! 			      WORD_REGISTER_OPERATIONS
! 			      && word_register_operation_p (SET_SRC (setter))
! 			      && paradoxical_subreg_p (SET_DEST (setter))
! 			      ? SET_SRC (setter)
! 			      : gen_lowpart (GET_MODE (dest),
! 					     SET_SRC (setter)));
        else
  	record_value_for_reg (dest, record_dead_insn, NULL_RTX);
      }
diff -Nrcpad gcc-7.3.0/gcc/config/aarch64/aarch64-simd.md gcc-7.4.0/gcc/config/aarch64/aarch64-simd.md
*** gcc-7.3.0/gcc/config/aarch64/aarch64-simd.md	Thu Mar 16 11:41:24 2017
--- gcc-7.4.0/gcc/config/aarch64/aarch64-simd.md	Wed Mar 28 10:15:47 2018
***************
*** 2462,2471 ****
  	  break;
  	}
        /* Fall through.  */
!     case UNGE:
        std::swap (operands[2], operands[3]);
        /* Fall through.  */
!     case UNLE:
      case GT:
        comparison = gen_aarch64_cmgt<mode>;
        break;
--- 2462,2471 ----
  	  break;
  	}
        /* Fall through.  */
!     case UNLT:
        std::swap (operands[2], operands[3]);
        /* Fall through.  */
!     case UNGT:
      case GT:
        comparison = gen_aarch64_cmgt<mode>;
        break;
***************
*** 2476,2485 ****
  	  break;
  	}
        /* Fall through.  */
!     case UNGT:
        std::swap (operands[2], operands[3]);
        /* Fall through.  */
!     case UNLT:
      case GE:
        comparison = gen_aarch64_cmge<mode>;
        break;
--- 2476,2485 ----
  	  break;
  	}
        /* Fall through.  */
!     case UNLE:
        std::swap (operands[2], operands[3]);
        /* Fall through.  */
!     case UNGE:
      case GE:
        comparison = gen_aarch64_cmge<mode>;
        break;
***************
*** 2490,2495 ****
--- 2490,2496 ----
      case UNEQ:
      case ORDERED:
      case UNORDERED:
+     case LTGT:
        break;
      default:
        gcc_unreachable ();
***************
*** 2501,2521 ****
      case UNGT:
      case UNLE:
      case UNLT:
!     case NE:
!       /* FCM returns false for lanes which are unordered, so if we use
! 	 the inverse of the comparison we actually want to emit, then
! 	 invert the result, we will end up with the correct result.
! 	 Note that a NE NaN and NaN NE b are true for all a, b.
  
! 	 Our transformations are:
! 	 a UNGE b -> !(b GT a)
! 	 a UNGT b -> !(b GE a)
! 	 a UNLE b -> !(a GT b)
! 	 a UNLT b -> !(a GE b)
! 	 a   NE b -> !(a EQ b)  */
!       gcc_assert (comparison != NULL);
!       emit_insn (comparison (operands[0], operands[2], operands[3]));
!       emit_insn (gen_one_cmpl<v_cmp_result>2 (operands[0], operands[0]));
        break;
  
      case LT:
--- 2502,2536 ----
      case UNGT:
      case UNLE:
      case UNLT:
!       {
! 	/* All of the above must not raise any FP exceptions.  Thus we first
! 	   check each operand for NaNs and force any elements containing NaN to
! 	   zero before using them in the compare.
! 	   Example: UN<cc> (a, b) -> UNORDERED (a, b) |
! 				     (cm<cc> (isnan (a) ? 0.0 : a,
! 					      isnan (b) ? 0.0 : b))
! 	   We use the following transformations for doing the comparisions:
! 	   a UNGE b -> a GE b
! 	   a UNGT b -> a GT b
! 	   a UNLE b -> b GE a
! 	   a UNLT b -> b GT a.  */
  
! 	rtx tmp0 = gen_reg_rtx (<V_cmp_result>mode);
! 	rtx tmp1 = gen_reg_rtx (<V_cmp_result>mode);
! 	rtx tmp2 = gen_reg_rtx (<V_cmp_result>mode);
! 	emit_insn (gen_aarch64_cmeq<mode> (tmp0, operands[2], operands[2]));
! 	emit_insn (gen_aarch64_cmeq<mode> (tmp1, operands[3], operands[3]));
! 	emit_insn (gen_and<v_cmp_result>3 (tmp2, tmp0, tmp1));
! 	emit_insn (gen_and<v_cmp_result>3 (tmp0, tmp0,
! 			lowpart_subreg (<V_cmp_result>mode, operands[2], <MODE>mode)));
! 	emit_insn (gen_and<v_cmp_result>3 (tmp1, tmp1,
! 			lowpart_subreg (<V_cmp_result>mode, operands[3], <MODE>mode)));
! 	gcc_assert (comparison != NULL);
! 	emit_insn (comparison (operands[0],
! 			       lowpart_subreg (<MODE>mode, tmp0, <V_cmp_result>mode),
! 			       lowpart_subreg (<MODE>mode, tmp1, <V_cmp_result>mode)));
! 	emit_insn (gen_orn<v_cmp_result>3 (operands[0], tmp2, operands[0]));
!       }
        break;
  
      case LT:
***************
*** 2523,2564 ****
      case GT:
      case GE:
      case EQ:
        /* The easy case.  Here we emit one of FCMGE, FCMGT or FCMEQ.
  	 As a LT b <=> b GE a && a LE b <=> b GT a.  Our transformations are:
  	 a GE b -> a GE b
  	 a GT b -> a GT b
  	 a LE b -> b GE a
  	 a LT b -> b GT a
! 	 a EQ b -> a EQ b  */
        gcc_assert (comparison != NULL);
        emit_insn (comparison (operands[0], operands[2], operands[3]));
        break;
  
!     case UNEQ:
!       /* We first check (a > b ||  b > a) which is !UNEQ, inverting
! 	 this result will then give us (a == b || a UNORDERED b).  */
        emit_insn (gen_aarch64_cmgt<mode> (operands[0],
  					 operands[2], operands[3]));
        emit_insn (gen_aarch64_cmgt<mode> (tmp, operands[3], operands[2]));
        emit_insn (gen_ior<v_cmp_result>3 (operands[0], operands[0], tmp));
-       emit_insn (gen_one_cmpl<v_cmp_result>2 (operands[0], operands[0]));
        break;
  
      case UNORDERED:
!       /* Operands are ORDERED iff (a > b || b >= a), so we can compute
! 	 UNORDERED as !ORDERED.  */
!       emit_insn (gen_aarch64_cmgt<mode> (tmp, operands[2], operands[3]));
!       emit_insn (gen_aarch64_cmge<mode> (operands[0],
! 					 operands[3], operands[2]));
!       emit_insn (gen_ior<v_cmp_result>3 (operands[0], operands[0], tmp));
!       emit_insn (gen_one_cmpl<v_cmp_result>2 (operands[0], operands[0]));
!       break;
  
!     case ORDERED:
!       emit_insn (gen_aarch64_cmgt<mode> (tmp, operands[2], operands[3]));
!       emit_insn (gen_aarch64_cmge<mode> (operands[0],
! 					 operands[3], operands[2]));
!       emit_insn (gen_ior<v_cmp_result>3 (operands[0], operands[0], tmp));
        break;
  
      default:
--- 2538,2583 ----
      case GT:
      case GE:
      case EQ:
+     case NE:
        /* The easy case.  Here we emit one of FCMGE, FCMGT or FCMEQ.
  	 As a LT b <=> b GE a && a LE b <=> b GT a.  Our transformations are:
  	 a GE b -> a GE b
  	 a GT b -> a GT b
  	 a LE b -> b GE a
  	 a LT b -> b GT a
! 	 a EQ b -> a EQ b
! 	 a NE b -> ~(a EQ b)  */
        gcc_assert (comparison != NULL);
        emit_insn (comparison (operands[0], operands[2], operands[3]));
+       if (code == NE)
+ 	emit_insn (gen_one_cmpl<v_cmp_result>2 (operands[0], operands[0]));
        break;
  
!     case LTGT:
!       /* LTGT is not guranteed to not generate a FP exception.  So let's
! 	 go the faster way : ((a > b) || (b > a)).  */
        emit_insn (gen_aarch64_cmgt<mode> (operands[0],
  					 operands[2], operands[3]));
        emit_insn (gen_aarch64_cmgt<mode> (tmp, operands[3], operands[2]));
        emit_insn (gen_ior<v_cmp_result>3 (operands[0], operands[0], tmp));
        break;
  
+     case ORDERED:
      case UNORDERED:
!     case UNEQ:
!       /* cmeq (a, a) & cmeq (b, b).  */
!       emit_insn (gen_aarch64_cmeq<mode> (operands[0],
! 					 operands[2], operands[2]));
!       emit_insn (gen_aarch64_cmeq<mode> (tmp, operands[3], operands[3]));
!       emit_insn (gen_and<v_cmp_result>3 (operands[0], operands[0], tmp));
  
!       if (code == UNORDERED)
! 	emit_insn (gen_one_cmpl<v_cmp_result>2 (operands[0], operands[0]));
!       else if (code == UNEQ)
! 	{
! 	  emit_insn (gen_aarch64_cmeq<mode> (tmp, operands[2], operands[3]));
! 	  emit_insn (gen_orn<v_cmp_result>3 (operands[0], operands[0], tmp));
! 	}
        break;
  
      default:
diff -Nrcpad gcc-7.3.0/gcc/config/aarch64/aarch64.c gcc-7.4.0/gcc/config/aarch64/aarch64.c
*** gcc-7.3.0/gcc/config/aarch64/aarch64.c	Fri Nov  3 15:01:10 2017
--- gcc-7.4.0/gcc/config/aarch64/aarch64.c	Tue Oct 16 13:40:57 2018
*************** aarch64_select_cc_mode (RTX_CODE code, r
*** 4664,4676 ****
  	case UNGT:
  	case UNGE:
  	case UNEQ:
- 	case LTGT:
  	  return CCFPmode;
  
  	case LT:
  	case LE:
  	case GT:
  	case GE:
  	  return CCFPEmode;
  
  	default:
--- 4664,4676 ----
  	case UNGT:
  	case UNGE:
  	case UNEQ:
  	  return CCFPmode;
  
  	case LT:
  	case LE:
  	case GT:
  	case GE:
+ 	case LTGT:
  	  return CCFPEmode;
  
  	default:
*************** aarch64_class_max_nregs (reg_class_t reg
*** 5721,5727 ****
  {
    switch (regclass)
      {
!     case CALLER_SAVE_REGS:
      case POINTER_REGS:
      case GENERAL_REGS:
      case ALL_REGS:
--- 5721,5727 ----
  {
    switch (regclass)
      {
!     case TAILCALL_ADDR_REGS:
      case POINTER_REGS:
      case GENERAL_REGS:
      case ALL_REGS:
*************** aarch64_elf_asm_constructor (rtx symbol,
*** 5804,5810 ****
           -Wformat-truncation false positive, use a larger size.  */
        char buf[23];
        snprintf (buf, sizeof (buf), ".init_array.%.5u", priority);
!       s = get_section (buf, SECTION_WRITE, NULL);
        switch_to_section (s);
        assemble_align (POINTER_SIZE);
        assemble_aligned_integer (POINTER_BYTES, symbol);
--- 5804,5810 ----
           -Wformat-truncation false positive, use a larger size.  */
        char buf[23];
        snprintf (buf, sizeof (buf), ".init_array.%.5u", priority);
!       s = get_section (buf, SECTION_WRITE | SECTION_NOTYPE, NULL);
        switch_to_section (s);
        assemble_align (POINTER_SIZE);
        assemble_aligned_integer (POINTER_BYTES, symbol);
*************** aarch64_elf_asm_destructor (rtx symbol,
*** 5824,5830 ****
           -Wformat-truncation false positive, use a larger size.  */
        char buf[23];
        snprintf (buf, sizeof (buf), ".fini_array.%.5u", priority);
!       s = get_section (buf, SECTION_WRITE, NULL);
        switch_to_section (s);
        assemble_align (POINTER_SIZE);
        assemble_aligned_integer (POINTER_BYTES, symbol);
--- 5824,5830 ----
           -Wformat-truncation false positive, use a larger size.  */
        char buf[23];
        snprintf (buf, sizeof (buf), ".fini_array.%.5u", priority);
!       s = get_section (buf, SECTION_WRITE | SECTION_NOTYPE, NULL);
        switch_to_section (s);
        assemble_align (POINTER_SIZE);
        assemble_aligned_integer (POINTER_BYTES, symbol);
*************** aarch64_mask_and_shift_for_ubfiz_p (mach
*** 6536,6542 ****
    return CONST_INT_P (mask) && CONST_INT_P (shft_amnt)
  	 && INTVAL (shft_amnt) < GET_MODE_BITSIZE (mode)
  	 && exact_log2 ((INTVAL (mask) >> INTVAL (shft_amnt)) + 1) >= 0
! 	 && (INTVAL (mask) & ((1 << INTVAL (shft_amnt)) - 1)) == 0;
  }
  
  /* Calculate the cost of calculating X, storing it in *COST.  Result
--- 6536,6543 ----
    return CONST_INT_P (mask) && CONST_INT_P (shft_amnt)
  	 && INTVAL (shft_amnt) < GET_MODE_BITSIZE (mode)
  	 && exact_log2 ((INTVAL (mask) >> INTVAL (shft_amnt)) + 1) >= 0
! 	 && (INTVAL (mask)
! 	     & ((HOST_WIDE_INT_1U << INTVAL (shft_amnt)) - 1)) == 0;
  }
  
  /* Calculate the cost of calculating X, storing it in *COST.  Result
*************** aarch64_register_move_cost (machine_mode
*** 7799,7808 ****
      = aarch64_tune_params.regmove_cost;
  
    /* Caller save and pointer regs are equivalent to GENERAL_REGS.  */
!   if (to == CALLER_SAVE_REGS || to == POINTER_REGS)
      to = GENERAL_REGS;
  
!   if (from == CALLER_SAVE_REGS || from == POINTER_REGS)
      from = GENERAL_REGS;
  
    /* Moving between GPR and stack cost is the same as GP2GP.  */
--- 7800,7809 ----
      = aarch64_tune_params.regmove_cost;
  
    /* Caller save and pointer regs are equivalent to GENERAL_REGS.  */
!   if (to == TAILCALL_ADDR_REGS || to == POINTER_REGS)
      to = GENERAL_REGS;
  
!   if (from == TAILCALL_ADDR_REGS || from == POINTER_REGS)
      from = GENERAL_REGS;
  
    /* Moving between GPR and stack cost is the same as GP2GP.  */
*************** aarch64_override_options_after_change_1
*** 8608,8624 ****
    if (opts->x_pcrelative_literal_loads == 1)
      aarch64_pcrelative_literal_loads = true;
  
-   /* This is PR70113. When building the Linux kernel with
-      CONFIG_ARM64_ERRATUM_843419, support for relocations
-      R_AARCH64_ADR_PREL_PG_HI21 and R_AARCH64_ADR_PREL_PG_HI21_NC is
-      removed from the kernel to avoid loading objects with possibly
-      offending sequences.  Without -mpc-relative-literal-loads we would
-      generate such relocations, preventing the kernel build from
-      succeeding.  */
-   if (opts->x_pcrelative_literal_loads == 2
-       && TARGET_FIX_ERR_A53_843419)
-     aarch64_pcrelative_literal_loads = true;
- 
    /* In the tiny memory model it makes no sense to disallow PC relative
       literal pool loads.  */
    if (aarch64_cmodel == AARCH64_CMODEL_TINY
--- 8609,8614 ----
diff -Nrcpad gcc-7.3.0/gcc/config/aarch64/aarch64.h gcc-7.4.0/gcc/config/aarch64/aarch64.h
*** gcc-7.3.0/gcc/config/aarch64/aarch64.h	Thu Sep 21 12:16:31 2017
--- gcc-7.4.0/gcc/config/aarch64/aarch64.h	Thu Feb  1 21:09:06 2018
*************** extern unsigned aarch64_architecture_ver
*** 439,445 ****
  enum reg_class
  {
    NO_REGS,
!   CALLER_SAVE_REGS,
    GENERAL_REGS,
    STACK_REG,
    POINTER_REGS,
--- 439,445 ----
  enum reg_class
  {
    NO_REGS,
!   TAILCALL_ADDR_REGS,
    GENERAL_REGS,
    STACK_REG,
    POINTER_REGS,
*************** enum reg_class
*** 454,460 ****
  #define REG_CLASS_NAMES				\
  {						\
    "NO_REGS",					\
!   "CALLER_SAVE_REGS",				\
    "GENERAL_REGS",				\
    "STACK_REG",					\
    "POINTER_REGS",				\
--- 454,460 ----
  #define REG_CLASS_NAMES				\
  {						\
    "NO_REGS",					\
!   "TAILCALL_ADDR_REGS",				\
    "GENERAL_REGS",				\
    "STACK_REG",					\
    "POINTER_REGS",				\
*************** enum reg_class
*** 466,472 ****
  #define REG_CLASS_CONTENTS						\
  {									\
    { 0x00000000, 0x00000000, 0x00000000 },	/* NO_REGS */		\
!   { 0x0007ffff, 0x00000000, 0x00000000 },	/* CALLER_SAVE_REGS */	\
    { 0x7fffffff, 0x00000000, 0x00000003 },	/* GENERAL_REGS */	\
    { 0x80000000, 0x00000000, 0x00000000 },	/* STACK_REG */		\
    { 0xffffffff, 0x00000000, 0x00000003 },	/* POINTER_REGS */	\
--- 466,472 ----
  #define REG_CLASS_CONTENTS						\
  {									\
    { 0x00000000, 0x00000000, 0x00000000 },	/* NO_REGS */		\
!   { 0x0004ffff, 0x00000000, 0x00000000 },	/* TAILCALL_ADDR_REGS */\
    { 0x7fffffff, 0x00000000, 0x00000003 },	/* GENERAL_REGS */	\
    { 0x80000000, 0x00000000, 0x00000000 },	/* STACK_REG */		\
    { 0xffffffff, 0x00000000, 0x00000003 },	/* POINTER_REGS */	\
diff -Nrcpad gcc-7.3.0/gcc/config/aarch64/aarch64.md gcc-7.4.0/gcc/config/aarch64/aarch64.md
*** gcc-7.3.0/gcc/config/aarch64/aarch64.md	Wed Apr  5 11:48:02 2017
--- gcc-7.4.0/gcc/config/aarch64/aarch64.md	Tue Apr 10 12:59:08 2018
***************
*** 3093,3099 ****
  (define_insn_and_split "*compare_cstore<mode>_insn"
    [(set (match_operand:GPI 0 "register_operand" "=r")
  	 (EQL:GPI (match_operand:GPI 1 "register_operand" "r")
! 		  (match_operand:GPI 2 "aarch64_imm24" "n")))]
    "!aarch64_move_imm (INTVAL (operands[2]), <MODE>mode)
     && !aarch64_plus_operand (operands[2], <MODE>mode)
     && !reload_completed"
--- 3093,3100 ----
  (define_insn_and_split "*compare_cstore<mode>_insn"
    [(set (match_operand:GPI 0 "register_operand" "=r")
  	 (EQL:GPI (match_operand:GPI 1 "register_operand" "r")
! 		  (match_operand:GPI 2 "aarch64_imm24" "n")))
!    (clobber (reg:CC CC_REGNUM))]
    "!aarch64_move_imm (INTVAL (operands[2]), <MODE>mode)
     && !aarch64_plus_operand (operands[2], <MODE>mode)
     && !reload_completed"
diff -Nrcpad gcc-7.3.0/gcc/config/aarch64/constraints.md gcc-7.4.0/gcc/config/aarch64/constraints.md
*** gcc-7.3.0/gcc/config/aarch64/constraints.md	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/aarch64/constraints.md	Thu Feb  1 21:09:06 2018
***************
*** 21,28 ****
  (define_register_constraint "k" "STACK_REG"
    "@internal The stack register.")
  
! (define_register_constraint "Ucs" "CALLER_SAVE_REGS"
!   "@internal The caller save registers.")
  
  (define_register_constraint "w" "FP_REGS"
    "Floating point and SIMD vector registers.")
--- 21,28 ----
  (define_register_constraint "k" "STACK_REG"
    "@internal The stack register.")
  
! (define_register_constraint "Ucs" "TAILCALL_ADDR_REGS"
!   "@internal Registers suitable for an indirect tail call")
  
  (define_register_constraint "w" "FP_REGS"
    "Floating point and SIMD vector registers.")
diff -Nrcpad gcc-7.3.0/gcc/config/alpha/alpha.c gcc-7.4.0/gcc/config/alpha/alpha.c
*** gcc-7.3.0/gcc/config/alpha/alpha.c	Sun Jan  7 19:14:55 2018
--- gcc-7.4.0/gcc/config/alpha/alpha.c	Wed Apr 11 18:36:37 2018
*************** alpha_expand_prologue (void)
*** 7750,7762 ****
  	  int probed;
  
  	  for (probed = 4096; probed < probed_size; probed += 8192)
! 	    emit_insn (gen_probe_stack (GEN_INT (-probed)));
  
  	  /* We only have to do this probe if we aren't saving registers or
  	     if we are probing beyond the frame because of -fstack-check.  */
  	  if ((sa_size == 0 && probed_size > probed - 4096)
  	      || flag_stack_check)
! 	    emit_insn (gen_probe_stack (GEN_INT (-probed_size)));
  	}
  
        if (frame_size != 0)
--- 7750,7762 ----
  	  int probed;
  
  	  for (probed = 4096; probed < probed_size; probed += 8192)
! 	    emit_insn (gen_stack_probe_internal (GEN_INT (-probed)));
  
  	  /* We only have to do this probe if we aren't saving registers or
  	     if we are probing beyond the frame because of -fstack-check.  */
  	  if ((sa_size == 0 && probed_size > probed - 4096)
  	      || flag_stack_check)
! 	    emit_insn (gen_stack_probe_internal (GEN_INT (-probed_size)));
  	}
  
        if (frame_size != 0)
diff -Nrcpad gcc-7.3.0/gcc/config/alpha/alpha.md gcc-7.4.0/gcc/config/alpha/alpha.md
*** gcc-7.3.0/gcc/config/alpha/alpha.md	Sun Jan 14 15:45:38 2018
--- gcc-7.4.0/gcc/config/alpha/alpha.md	Wed Apr 11 18:36:37 2018
***************
*** 4915,4921 ****
  
  
  ;; Subroutine of stack space allocation.  Perform a stack probe.
! (define_expand "probe_stack"
    [(set (match_dup 1) (match_operand:DI 0 "const_int_operand"))]
    ""
  {
--- 4915,4921 ----
  
  
  ;; Subroutine of stack space allocation.  Perform a stack probe.
! (define_expand "stack_probe_internal"
    [(set (match_dup 1) (match_operand:DI 0 "const_int_operand"))]
    ""
  {
***************
*** 4950,4961 ****
  
  	  int probed = 4096;
  
! 	  emit_insn (gen_probe_stack (GEN_INT (- probed)));
  	  while (probed + 8192 < INTVAL (operands[1]))
! 	    emit_insn (gen_probe_stack (GEN_INT (- (probed += 8192))));
  
  	  if (probed + 4096 < INTVAL (operands[1]))
! 	    emit_insn (gen_probe_stack (GEN_INT (- INTVAL(operands[1]))));
  	}
  
        operands[1] = GEN_INT (- INTVAL (operands[1]));
--- 4950,4963 ----
  
  	  int probed = 4096;
  
! 	  emit_insn (gen_stack_probe_internal (GEN_INT (- probed)));
  	  while (probed + 8192 < INTVAL (operands[1]))
! 	    emit_insn (gen_stack_probe_internal
! 		       (GEN_INT (- (probed += 8192))));
  
  	  if (probed + 4096 < INTVAL (operands[1]))
! 	    emit_insn (gen_stack_probe_internal
! 		       (GEN_INT (- INTVAL(operands[1]))));
  	}
  
        operands[1] = GEN_INT (- INTVAL (operands[1]));
diff -Nrcpad gcc-7.3.0/gcc/config/arm/arm-builtins.c gcc-7.4.0/gcc/config/arm/arm-builtins.c
*** gcc-7.3.0/gcc/config/arm/arm-builtins.c	Fri Jun 23 16:08:40 2017
--- gcc-7.4.0/gcc/config/arm/arm-builtins.c	Wed Apr 18 11:42:10 2018
*************** arm_expand_builtin (tree exp,
*** 2576,2582 ****
  	  icode = CODE_FOR_set_fpscr;
  	  arg0 = CALL_EXPR_ARG (exp, 0);
  	  op0 = expand_normal (arg0);
! 	  pat = GEN_FCN (icode) (op0);
  	}
        emit_insn (pat);
        return target;
--- 2576,2582 ----
  	  icode = CODE_FOR_set_fpscr;
  	  arg0 = CALL_EXPR_ARG (exp, 0);
  	  op0 = expand_normal (arg0);
! 	  pat = GEN_FCN (icode) (force_reg (SImode, op0));
  	}
        emit_insn (pat);
        return target;
*************** arm_expand_builtin (tree exp,
*** 2584,2590 ****
      case ARM_BUILTIN_CMSE_NONSECURE_CALLER:
        target = gen_reg_rtx (SImode);
        op0 = arm_return_addr (0, NULL_RTX);
!       emit_insn (gen_addsi3 (target, op0, const1_rtx));
        return target;
  
      case ARM_BUILTIN_TEXTRMSB:
--- 2584,2592 ----
      case ARM_BUILTIN_CMSE_NONSECURE_CALLER:
        target = gen_reg_rtx (SImode);
        op0 = arm_return_addr (0, NULL_RTX);
!       emit_insn (gen_andsi3 (target, op0, const1_rtx));
!       op1 = gen_rtx_EQ (SImode, target, const0_rtx);
!       emit_insn (gen_cstoresi4 (target, op1, target, const0_rtx));
        return target;
  
      case ARM_BUILTIN_TEXTRMSB:
diff -Nrcpad gcc-7.3.0/gcc/config/arm/arm.c gcc-7.4.0/gcc/config/arm/arm.c
*** gcc-7.3.0/gcc/config/arm/arm.c	Tue Nov 21 18:14:34 2017
--- gcc-7.4.0/gcc/config/arm/arm.c	Wed Nov 21 16:50:37 2018
*************** arm_reorg (void)
*** 17367,17373 ****
  
    if (use_cmse)
      cmse_nonsecure_call_clear_caller_saved ();
!   if (TARGET_THUMB1)
      thumb1_reorg ();
    else if (TARGET_THUMB2)
      thumb2_reorg ();
--- 17367,17377 ----
  
    if (use_cmse)
      cmse_nonsecure_call_clear_caller_saved ();
! 
!   /* We cannot run the Thumb passes for thunks because there is no CFG.  */
!   if (cfun->is_thunk)
!     ;
!   else if (TARGET_THUMB1)
      thumb1_reorg ();
    else if (TARGET_THUMB2)
      thumb2_reorg ();
*************** output_move_double (rtx *operands, bool
*** 18187,18198 ****
        gcc_assert ((REGNO (operands[1]) != IP_REGNUM)
                    || (TARGET_ARM && TARGET_LDRD));
  
        switch (GET_CODE (XEXP (operands[0], 0)))
          {
  	case REG:
  	  if (emit)
  	    {
! 	      if (TARGET_LDRD)
  		output_asm_insn ("strd%?\t%1, [%m0]", operands);
  	      else
  		output_asm_insn ("stm%?\t%m0, %M1", operands);
--- 18191,18208 ----
        gcc_assert ((REGNO (operands[1]) != IP_REGNUM)
                    || (TARGET_ARM && TARGET_LDRD));
  
+       /* For TARGET_ARM the first source register of an STRD
+ 	 must be even.  This is usually the case for double-word
+ 	 values but user assembly constraints can force an odd
+ 	 starting register.  */
+       bool allow_strd = TARGET_LDRD
+ 			 && !(TARGET_ARM && (REGNO (operands[1]) & 1) == 1);
        switch (GET_CODE (XEXP (operands[0], 0)))
          {
  	case REG:
  	  if (emit)
  	    {
! 	      if (allow_strd)
  		output_asm_insn ("strd%?\t%1, [%m0]", operands);
  	      else
  		output_asm_insn ("stm%?\t%m0, %M1", operands);
*************** output_move_double (rtx *operands, bool
*** 18200,18206 ****
  	  break;
  
          case PRE_INC:
! 	  gcc_assert (TARGET_LDRD);
  	  if (emit)
  	    output_asm_insn ("strd%?\t%1, [%m0, #8]!", operands);
  	  break;
--- 18210,18216 ----
  	  break;
  
          case PRE_INC:
! 	  gcc_assert (allow_strd);
  	  if (emit)
  	    output_asm_insn ("strd%?\t%1, [%m0, #8]!", operands);
  	  break;
*************** output_move_double (rtx *operands, bool
*** 18208,18214 ****
          case PRE_DEC:
  	  if (emit)
  	    {
! 	      if (TARGET_LDRD)
  		output_asm_insn ("strd%?\t%1, [%m0, #-8]!", operands);
  	      else
  		output_asm_insn ("stmdb%?\t%m0!, %M1", operands);
--- 18218,18224 ----
          case PRE_DEC:
  	  if (emit)
  	    {
! 	      if (allow_strd)
  		output_asm_insn ("strd%?\t%1, [%m0, #-8]!", operands);
  	      else
  		output_asm_insn ("stmdb%?\t%m0!, %M1", operands);
*************** output_move_double (rtx *operands, bool
*** 18218,18224 ****
          case POST_INC:
  	  if (emit)
  	    {
! 	      if (TARGET_LDRD)
  		output_asm_insn ("strd%?\t%1, [%m0], #8", operands);
  	      else
  		output_asm_insn ("stm%?\t%m0!, %M1", operands);
--- 18228,18234 ----
          case POST_INC:
  	  if (emit)
  	    {
! 	      if (allow_strd)
  		output_asm_insn ("strd%?\t%1, [%m0], #8", operands);
  	      else
  		output_asm_insn ("stm%?\t%m0!, %M1", operands);
*************** output_move_double (rtx *operands, bool
*** 18226,18232 ****
  	  break;
  
          case POST_DEC:
! 	  gcc_assert (TARGET_LDRD);
  	  if (emit)
  	    output_asm_insn ("strd%?\t%1, [%m0], #-8", operands);
  	  break;
--- 18236,18242 ----
  	  break;
  
          case POST_DEC:
! 	  gcc_assert (allow_strd);
  	  if (emit)
  	    output_asm_insn ("strd%?\t%1, [%m0], #-8", operands);
  	  break;
*************** output_move_double (rtx *operands, bool
*** 18237,18244 ****
  	  otherops[1] = XEXP (XEXP (XEXP (operands[0], 0), 1), 0);
  	  otherops[2] = XEXP (XEXP (XEXP (operands[0], 0), 1), 1);
  
! 	  /* IWMMXT allows offsets larger than ldrd can handle,
! 	     fix these up with a pair of ldr.  */
  	  if (!TARGET_THUMB2
  	      && CONST_INT_P (otherops[2])
  	      && (INTVAL(otherops[2]) <= -256
--- 18247,18254 ----
  	  otherops[1] = XEXP (XEXP (XEXP (operands[0], 0), 1), 0);
  	  otherops[2] = XEXP (XEXP (XEXP (operands[0], 0), 1), 1);
  
! 	  /* IWMMXT allows offsets larger than strd can handle,
! 	     fix these up with a pair of str.  */
  	  if (!TARGET_THUMB2
  	      && CONST_INT_P (otherops[2])
  	      && (INTVAL(otherops[2]) <= -256
*************** output_move_double (rtx *operands, bool
*** 18303,18309 ****
  		  return "";
  		}
  	    }
! 	  if (TARGET_LDRD
  	      && (REG_P (otherops[2])
  		  || TARGET_THUMB2
  		  || (CONST_INT_P (otherops[2])
--- 18313,18319 ----
  		  return "";
  		}
  	    }
! 	  if (allow_strd
  	      && (REG_P (otherops[2])
  		  || TARGET_THUMB2
  		  || (CONST_INT_P (otherops[2])
*************** arm_r3_live_at_start_p (void)
*** 19097,19102 ****
--- 19107,19117 ----
  static int
  arm_compute_static_chain_stack_bytes (void)
  {
+   /* Once the value is updated from the init value of -1, do not
+      re-compute.  */
+   if (cfun->machine->static_chain_stack_bytes != -1)
+     return cfun->machine->static_chain_stack_bytes;
+ 
    /* See the defining assertion in arm_expand_prologue.  */
    if (IS_NESTED (arm_current_func_type ())
        && ((TARGET_APCS_FRAME && frame_pointer_needed && TARGET_ARM)
*************** arm_expand_prologue (void)
*** 21395,21400 ****
--- 21410,21420 ----
        emit_insn (gen_movsi (stack_pointer_rtx, r1));
      }
  
+   /* Let's compute the static_chain_stack_bytes required and store it.  Right
+      now the value must the -1 as stored by arm_init_machine_status ().  */
+   cfun->machine->static_chain_stack_bytes
+     = arm_compute_static_chain_stack_bytes ();
+ 
    /* The static chain register is the same as the IP register.  If it is
       clobbered when creating the frame, we need to save and restore it.  */
    clobber_ip = IS_NESTED (func_type)
*************** arm_init_machine_status (void)
*** 24542,24547 ****
--- 24562,24568 ----
  #if ARM_FT_UNKNOWN != 0
    machine->func_type = ARM_FT_UNKNOWN;
  #endif
+   machine->static_chain_stack_bytes = -1;
    return machine;
  }
  
*************** static void
*** 26412,26417 ****
--- 26433,26440 ----
  arm32_output_mi_thunk (FILE *file, tree, HOST_WIDE_INT delta,
  		       HOST_WIDE_INT vcall_offset, tree function)
  {
+   const bool long_call_p = arm_is_long_call_p (function);
+ 
    /* On ARM, this_regno is R0 or R1 depending on
       whether the function returns an aggregate or not.
    */
*************** arm32_output_mi_thunk (FILE *file, tree,
*** 26449,26457 ****
        TREE_USED (function) = 1;
      }
    rtx funexp = XEXP (DECL_RTL (function), 0);
    funexp = gen_rtx_MEM (FUNCTION_MODE, funexp);
!   rtx_insn * insn = emit_call_insn (gen_sibcall (funexp, const0_rtx, NULL_RTX));
    SIBLING_CALL_P (insn) = 1;
  
    insn = get_insns ();
    shorten_branches (insn);
--- 26472,26493 ----
        TREE_USED (function) = 1;
      }
    rtx funexp = XEXP (DECL_RTL (function), 0);
+   if (long_call_p)
+     {
+       emit_move_insn (temp, funexp);
+       funexp = temp;
+     }
    funexp = gen_rtx_MEM (FUNCTION_MODE, funexp);
!   rtx_insn *insn = emit_call_insn (gen_sibcall (funexp, const0_rtx, NULL_RTX));
    SIBLING_CALL_P (insn) = 1;
+   emit_barrier ();
+ 
+   /* Indirect calls require a bit of fixup in PIC mode.  */
+   if (long_call_p)
+     {
+       split_all_insns_noflow ();
+       arm_reorg ();
+     }
  
    insn = get_insns ();
    shorten_branches (insn);
*************** static bool
*** 26853,26859 ****
  arm_array_mode_supported_p (machine_mode mode,
  			    unsigned HOST_WIDE_INT nelems)
  {
!   if (TARGET_NEON
        && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode))
        && (nelems >= 2 && nelems <= 4))
      return true;
--- 26889,26898 ----
  arm_array_mode_supported_p (machine_mode mode,
  			    unsigned HOST_WIDE_INT nelems)
  {
!   /* We don't want to enable interleaved loads and stores for BYTES_BIG_ENDIAN
!      for now, as the lane-swapping logic needs to be extended in the expanders.
!      See PR target/82518.  */
!   if (TARGET_NEON && !BYTES_BIG_ENDIAN
        && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode))
        && (nelems >= 2 && nelems <= 4))
      return true;
diff -Nrcpad gcc-7.3.0/gcc/config/arm/arm.h gcc-7.4.0/gcc/config/arm/arm.h
*** gcc-7.3.0/gcc/config/arm/arm.h	Mon Jan  8 18:42:50 2018
--- gcc-7.4.0/gcc/config/arm/arm.h	Thu Mar 29 09:19:45 2018
*************** typedef struct GTY(()) machine_function
*** 1420,1425 ****
--- 1420,1428 ----
    machine_mode thumb1_cc_mode;
    /* Set to 1 after arm_reorg has started.  */
    int after_arm_reorg;
+   /* The number of bytes used to store the static chain register on the
+      stack, above the stack frame.  */
+   int static_chain_stack_bytes;
  }
  machine_function;
  #endif
diff -Nrcpad gcc-7.3.0/gcc/config/arm/arm.md gcc-7.4.0/gcc/config/arm/arm.md
*** gcc-7.3.0/gcc/config/arm/arm.md	Fri Jun  2 11:19:16 2017
--- gcc-7.4.0/gcc/config/arm/arm.md	Wed Mar 28 09:20:22 2018
***************
*** 4498,4513 ****
     (set_attr "type" "load1")])
  
  (define_insn "unaligned_loadhis"
!   [(set (match_operand:SI 0 "s_register_operand" "=l,r")
  	(sign_extend:SI
! 	  (unspec:HI [(match_operand:HI 1 "memory_operand" "Uw,Uh")]
  		     UNSPEC_UNALIGNED_LOAD)))]
    "unaligned_access"
    "ldrsh%?\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_loadhiu"
--- 4498,4510 ----
     (set_attr "type" "load1")])
  
  (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"
diff -Nrcpad gcc-7.3.0/gcc/config/arm/arm_cmse.h gcc-7.4.0/gcc/config/arm/arm_cmse.h
*** gcc-7.3.0/gcc/config/arm/arm_cmse.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/arm/arm_cmse.h	Fri Jun 22 14:38:34 2018
*************** extern "C" {
*** 35,41 ****
  #if __ARM_FEATURE_CMSE & 1
  
  #include <stddef.h>
- #include <stdint.h>
  
  #ifdef __ARM_BIG_ENDIAN
  
--- 35,40 ----
*************** cmse_nonsecure_caller (void)
*** 174,182 ****
  #define CMSE_MPU_NONSECURE	16
  #define CMSE_NONSECURE		18
  
! #define cmse_nsfptr_create(p) ((typeof ((p))) ((intptr_t) (p) & ~1))
  
! #define cmse_is_nsfptr(p) (!((intptr_t) (p) & 1))
  
  #endif /* __ARM_FEATURE_CMSE & 2 */
  
--- 173,181 ----
  #define CMSE_MPU_NONSECURE	16
  #define CMSE_NONSECURE		18
  
! #define cmse_nsfptr_create(p) ((__typeof__ ((p))) ((__INTPTR_TYPE__) (p) & ~1))
  
! #define cmse_is_nsfptr(p) (!((__INTPTR_TYPE__) (p) & 1))
  
  #endif /* __ARM_FEATURE_CMSE & 2 */
  
*************** __extension__ void *
*** 188,194 ****
  cmse_check_address_range (void *, size_t, int);
  
  #define cmse_check_pointed_object(p, f) \
!   ((typeof ((p))) cmse_check_address_range ((p), sizeof (*(p)), (f)))
  
  #endif /* __ARM_FEATURE_CMSE & 1 */
  
--- 187,193 ----
  cmse_check_address_range (void *, size_t, int);
  
  #define cmse_check_pointed_object(p, f) \
!   ((__typeof__ ((p))) cmse_check_address_range ((p), sizeof (*(p)), (f)))
  
  #endif /* __ARM_FEATURE_CMSE & 1 */
  
diff -Nrcpad gcc-7.3.0/gcc/config/arm/neon.md gcc-7.4.0/gcc/config/arm/neon.md
*** gcc-7.3.0/gcc/config/arm/neon.md	Wed Jan 17 11:51:03 2018
--- gcc-7.4.0/gcc/config/arm/neon.md	Tue Mar 27 13:26:56 2018
***************
*** 1143,1154 ****
  )
  
  (define_insn_and_split "ashldi3_neon"
!   [(set (match_operand:DI 0 "s_register_operand"	    "= w, w,?&r,?r,?&r, ?w,w")
! 	(ashift:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, 0,  r, 0w,w")
! 		   (match_operand:SI 2 "general_operand"    "rUm, i,  r, i,  i,rUm,i")))
!    (clobber (match_scratch:SI 3				    "= X, X,?&r, X,  X,  X,X"))
!    (clobber (match_scratch:SI 4				    "= X, X,?&r, X,  X,  X,X"))
!    (clobber (match_scratch:DI 5				    "=&w, X,  X, X,  X, &w,X"))
     (clobber (reg:CC_C CC_REGNUM))]
    "TARGET_NEON"
    "#"
--- 1143,1154 ----
  )
  
  (define_insn_and_split "ashldi3_neon"
!   [(set (match_operand:DI 0 "s_register_operand"	    "= w, w, &r, r, &r, ?w,?w")
! 	(ashift:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, 0,  r, 0w, w")
! 		   (match_operand:SI 2 "general_operand"    "rUm, i,  r, i,  i,rUm, i")))
!    (clobber (match_scratch:SI 3				    "= X, X, &r, X,  X,  X, X"))
!    (clobber (match_scratch:SI 4				    "= X, X, &r, X,  X,  X, X"))
!    (clobber (match_scratch:DI 5				    "=&w, X,  X, X,  X, &w, X"))
     (clobber (reg:CC_C CC_REGNUM))]
    "TARGET_NEON"
    "#"
***************
*** 1243,1249 ****
  ;; ashrdi3_neon
  ;; lshrdi3_neon
  (define_insn_and_split "<shift>di3_neon"
!   [(set (match_operand:DI 0 "s_register_operand"	     "= w, w,?&r,?r,?&r,?w,?w")
  	(RSHIFTS:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, 0,  r,0w, w")
  		    (match_operand:SI 2 "reg_or_int_operand" "  r, i,  r, i,  i, r, i")))
     (clobber (match_scratch:SI 3				     "=2r, X, &r, X,  X,2r, X"))
--- 1243,1249 ----
  ;; ashrdi3_neon
  ;; lshrdi3_neon
  (define_insn_and_split "<shift>di3_neon"
!   [(set (match_operand:DI 0 "s_register_operand"	     "= w, w, &r, r, &r,?w,?w")
  	(RSHIFTS:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, 0,  r,0w, w")
  		    (match_operand:SI 2 "reg_or_int_operand" "  r, i,  r, i,  i, r, i")))
     (clobber (match_scratch:SI 3				     "=2r, X, &r, X,  X,2r, X"))
diff -Nrcpad gcc-7.3.0/gcc/config/avr/avr.h gcc-7.4.0/gcc/config/avr/avr.h
*** gcc-7.3.0/gcc/config/avr/avr.h	Mon Jan 16 09:48:45 2017
--- gcc-7.4.0/gcc/config/avr/avr.h	Wed Mar  7 09:13:12 2018
*************** FIXME: DRIVER_SELF_SPECS has changed.
*** 153,158 ****
--- 153,161 ----
  
  #define FIRST_PSEUDO_REGISTER 36
  
+ #define GENERAL_REGNO_P(N)	IN_RANGE (N, 2, 31)
+ #define GENERAL_REG_P(X)	(REG_P (X) && GENERAL_REGNO_P (REGNO (X)))
+ 
  #define FIXED_REGISTERS {\
    1,1,/* r0 r1 */\
    0,0,/* r2 r3 */\
diff -Nrcpad gcc-7.3.0/gcc/config/avr/avr.md gcc-7.4.0/gcc/config/avr/avr.md
*** gcc-7.3.0/gcc/config/avr/avr.md	Wed Mar  8 08:52:05 2017
--- gcc-7.4.0/gcc/config/avr/avr.md	Wed Mar  7 09:13:12 2018
***************
*** 3362,3367 ****
--- 3362,3369 ----
          (match_operand:HI 1 "reg_or_0_operand"))]
    "optimize
     && reload_completed
+    && GENERAL_REG_P (operands[0])
+    && (operands[1] == const0_rtx || GENERAL_REG_P (operands[1]))
     && (!AVR_HAVE_MOVW
         || const0_rtx == operands[1])"
    [(set (match_dup 2) (match_dup 3))
diff -Nrcpad gcc-7.3.0/gcc/config/darwin.c gcc-7.4.0/gcc/config/darwin.c
*** gcc-7.3.0/gcc/config/darwin.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/darwin.c	Mon Nov 26 19:46:24 2018
*************** default_function_sections:
*** 3674,3694 ****
  		    : text_section;
  }
  
- /* When a function is partitioned between sections, we need to insert a label
-    at the start of each new chunk - so that it may become a valid 'atom' for
-    eh and debug purposes.  Without this the linker will emit warnings if one 
-    tries to add line location information (since the switched fragment will 
-    be anonymous).  */
- 
- void
- darwin_function_switched_text_sections (FILE *fp, tree decl, bool new_is_cold)
- {
-   char buf[128];
-   snprintf (buf, 128, "%s%s",new_is_cold?"__cold_sect_of_":"__hot_sect_of_",
- 	    IDENTIFIER_POINTER (DECL_NAME (decl)));
-   /* Make sure we pick up all the relevant quotes etc.  */
-   assemble_name_raw (fp, (const char *) buf);
-   fputs (":\n", fp);
- }
- 
  #include "gt-darwin.h"
--- 3674,3677 ----
diff -Nrcpad gcc-7.3.0/gcc/config/darwin.h gcc-7.4.0/gcc/config/darwin.h
*** gcc-7.3.0/gcc/config/darwin.h	Mon Jan 16 21:33:07 2017
--- gcc-7.4.0/gcc/config/darwin.h	Mon Nov 26 19:46:24 2018
*************** extern GTY(()) section * darwin_sections
*** 705,714 ****
  #undef	TARGET_ASM_FUNCTION_SECTION
  #define TARGET_ASM_FUNCTION_SECTION darwin_function_section
  
- #undef	TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS
- #define TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS \
- 	darwin_function_switched_text_sections
- 
  #undef	TARGET_ASM_SELECT_RTX_SECTION
  #define TARGET_ASM_SELECT_RTX_SECTION machopic_select_rtx_section
  #undef  TARGET_ASM_UNIQUE_SECTION
--- 705,710 ----
diff -Nrcpad gcc-7.3.0/gcc/config/gnu-user.h gcc-7.4.0/gcc/config/gnu-user.h
*** gcc-7.3.0/gcc/config/gnu-user.h	Tue Aug 29 08:22:44 2017
--- gcc-7.4.0/gcc/config/gnu-user.h	Thu Jul 12 16:29:50 2018
*************** see the files COPYING3 and COPYING.RUNTI
*** 122,128 ****
  
  #define GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC \
    "%{shared:-lc} \
!    %{!shared:%{mieee-fp:-lieee} %{profile:-lc_p}%{!profile:-lc}}"
  
  #define GNU_USER_TARGET_LIB_SPEC \
    "%{pthread:-lpthread} " \
--- 122,128 ----
  
  #define GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC \
    "%{shared:-lc} \
!    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
  
  #define GNU_USER_TARGET_LIB_SPEC \
    "%{pthread:-lpthread} " \
diff -Nrcpad gcc-7.3.0/gcc/config/i386/avx512fintrin.h gcc-7.4.0/gcc/config/i386/avx512fintrin.h
*** gcc-7.3.0/gcc/config/i386/avx512fintrin.h	Mon Apr 10 06:53:28 2017
--- gcc-7.4.0/gcc/config/i386/avx512fintrin.h	Mon Oct  8 15:23:48 2018
*************** _mm512_maskz_fnmsub_round_ps (__mmask16
*** 3333,3339 ****
      (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, C, -1, R)
  
  #define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R)    \
!     (__m512d)__builtin_ia32_vfmaddpd512_mask(A, B, C, U, R)
  
  #define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R)   \
      (__m512d)__builtin_ia32_vfmaddsubpd512_mask3(A, B, C, U, R)
--- 3333,3339 ----
      (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, C, -1, R)
  
  #define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R)    \
!     (__m512d)__builtin_ia32_vfmaddsubpd512_mask(A, B, C, U, R)
  
  #define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R)   \
      (__m512d)__builtin_ia32_vfmaddsubpd512_mask3(A, B, C, U, R)
*************** _mm512_mask_abs_ps (__m512 __W, __mmask1
*** 7298,7304 ****
  
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_abs_pd (__m512 __A)
  {
    return (__m512d) _mm512_and_epi64 ((__m512i) __A,
  				     _mm512_set1_epi64 (0x7fffffffffffffffLL));
--- 7298,7304 ----
  
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_abs_pd (__m512d __A)
  {
    return (__m512d) _mm512_and_epi64 ((__m512i) __A,
  				     _mm512_set1_epi64 (0x7fffffffffffffffLL));
*************** _mm512_abs_pd (__m512 __A)
*** 7306,7312 ****
  
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_abs_pd (__m512d __W, __mmask8 __U, __m512 __A)
  {
    return (__m512d)
  	 _mm512_mask_and_epi64 ((__m512i) __W, __U, (__m512i) __A,
--- 7306,7312 ----
  
  extern __inline __m512d
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm512_mask_abs_pd (__m512d __W, __mmask8 __U, __m512d __A)
  {
    return (__m512d)
  	 _mm512_mask_and_epi64 ((__m512i) __W, __U, (__m512i) __A,
diff -Nrcpad gcc-7.3.0/gcc/config/i386/avx512vlintrin.h gcc-7.4.0/gcc/config/i386/avx512vlintrin.h
*** gcc-7.3.0/gcc/config/i386/avx512vlintrin.h	Thu Mar  9 09:11:06 2017
--- gcc-7.4.0/gcc/config/i386/avx512vlintrin.h	Thu Mar 29 14:51:03 2018
*************** _mm_maskz_mul_epi32 (__mmask8 __M, __m12
*** 9099,9104 ****
--- 9099,9115 ----
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_permutexvar_epi64 (__m256i __X, __m256i __Y)
+ {
+   return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
+ 						     (__v4di) __X,
+ 						     (__v4di)
+ 						     _mm256_setzero_si256 (),
+ 						     (__mmask8) -1);
+ }
+ 
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X,
  			       __m256i __Y)
  {
*************** _mm_maskz_mul_epu32 (__mmask8 __M, __m12
*** 9163,9168 ****
--- 9174,9190 ----
  
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_permutexvar_epi32 (__m256i __X, __m256i __Y)
+ {
+   return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y,
+ 						     (__v8si) __X,
+ 						     (__v8si)
+ 						     _mm256_setzero_si256 (),
+ 						     (__mmask8) -1);
+ }
+ 
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_permutexvar_epi32 (__m256i __W, __mmask8 __M, __m256i __X,
  			       __m256i __Y)
  {
*************** _mm_cmple_epi64_mask (__m128i __X, __m12
*** 9751,9756 ****
--- 9773,9789 ----
  #ifdef __OPTIMIZE__
  extern __inline __m256i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_permutex_epi64 (__m256i __X, const int __I)
+ {
+   return (__m256i) __builtin_ia32_permdi256_mask ((__v4di) __X,
+ 					      __I,
+ 					      (__v4di)
+ 					      _mm256_setzero_si256 (),
+ 					      (__mmask8) -1);
+ }
+ 
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_permutex_epi64 (__m256i __W, __mmask8 __M,
  			    __m256i __X, const int __I)
  {
*************** _mm256_permutex_pd (__m256d __X, const i
*** 12367,12372 ****
--- 12400,12412 ----
  					    _mm256_undefined_pd (),		\
  					    (__mmask8)-1))
  
+ #define _mm256_permutex_epi64(X, I)				\
+   ((__m256i) __builtin_ia32_permdi256_mask ((__v4di)(__m256i)(X), \
+ 					    (int)(I),		\
+ 					    (__v4di)(__m256i)	\
+ 					    (_mm256_setzero_si256 ()),\
+ 					    (__mmask8) -1))
+ 
  #define _mm256_maskz_permutex_epi64(M, X, I)                    \
    ((__m256i) __builtin_ia32_permdi256_mask ((__v4di)(__m256i)(X),    \
  					    (int)(I),                \
diff -Nrcpad gcc-7.3.0/gcc/config/i386/constraints.md gcc-7.4.0/gcc/config/i386/constraints.md
*** gcc-7.3.0/gcc/config/i386/constraints.md	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/config/i386/constraints.md	Fri Mar  2 13:09:55 2018
***************
*** 198,204 ****
  
  (define_constraint "Bs"
    "@internal Sibcall memory operand."
!   (ior (and (not (match_test "ix86_indirect_branch_register"))
  	    (not (match_test "TARGET_X32"))
  	    (match_operand 0 "sibcall_memory_operand"))
         (and (match_test "TARGET_X32 && Pmode == DImode")
--- 198,204 ----
  
  (define_constraint "Bs"
    "@internal Sibcall memory operand."
!   (ior (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
  	    (not (match_test "TARGET_X32"))
  	    (match_operand 0 "sibcall_memory_operand"))
         (and (match_test "TARGET_X32 && Pmode == DImode")
***************
*** 206,212 ****
  
  (define_constraint "Bw"
    "@internal Call memory operand."
!   (ior (and (not (match_test "ix86_indirect_branch_register"))
  	    (not (match_test "TARGET_X32"))
  	    (match_operand 0 "memory_operand"))
         (and (match_test "TARGET_X32 && Pmode == DImode")
--- 206,212 ----
  
  (define_constraint "Bw"
    "@internal Call memory operand."
!   (ior (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
  	    (not (match_test "TARGET_X32"))
  	    (match_operand 0 "memory_operand"))
         (and (match_test "TARGET_X32 && Pmode == DImode")
diff -Nrcpad gcc-7.3.0/gcc/config/i386/cygming.h gcc-7.4.0/gcc/config/i386/cygming.h
*** gcc-7.3.0/gcc/config/i386/cygming.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/i386/cygming.h	Sun Nov 18 21:36:30 2018
*************** do {						\
*** 269,277 ****
     bytes in one go.  */
  #define CHECK_STACK_LIMIT 4000
  
- #undef STACK_BOUNDARY
- #define STACK_BOUNDARY	(TARGET_64BIT && ix86_abi == MS_ABI ? 128 : BITS_PER_WORD)
- 
  /* By default, target has a 80387, uses IEEE compatible arithmetic,
     returns float values in the 387 and needs stack probes.
     We also align doubles to 64-bits for MSVC default compatibility.  */
--- 269,274 ----
diff -Nrcpad gcc-7.3.0/gcc/config/i386/darwin.h gcc-7.4.0/gcc/config/i386/darwin.h
*** gcc-7.3.0/gcc/config/i386/darwin.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/i386/darwin.h	Sun Nov 18 21:36:30 2018
*************** extern int darwin_emit_branch_islands;
*** 87,94 ****
     or dynamic loader.  */
  #undef STACK_BOUNDARY
  #define STACK_BOUNDARY \
!  ((profile_flag || (TARGET_64BIT && ix86_abi == MS_ABI)) \
!   ? 128 : BITS_PER_WORD)
  
  #undef MAIN_STACK_BOUNDARY
  #define MAIN_STACK_BOUNDARY 128
--- 87,93 ----
     or dynamic loader.  */
  #undef STACK_BOUNDARY
  #define STACK_BOUNDARY \
!   ((profile_flag || TARGET_64BIT_MS_ABI) ? 128 : BITS_PER_WORD)
  
  #undef MAIN_STACK_BOUNDARY
  #define MAIN_STACK_BOUNDARY 128
diff -Nrcpad gcc-7.3.0/gcc/config/i386/emmintrin.h gcc-7.4.0/gcc/config/i386/emmintrin.h
*** gcc-7.3.0/gcc/config/i386/emmintrin.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/i386/emmintrin.h	Tue Nov 20 14:35:43 2018
*************** typedef unsigned int __v4su __attribute_
*** 45,50 ****
--- 45,51 ----
  typedef short __v8hi __attribute__ ((__vector_size__ (16)));
  typedef unsigned short __v8hu __attribute__ ((__vector_size__ (16)));
  typedef char __v16qi __attribute__ ((__vector_size__ (16)));
+ typedef signed char __v16qs __attribute__ ((__vector_size__ (16)));
  typedef unsigned char __v16qu __attribute__ ((__vector_size__ (16)));
  
  /* The Intel API is flexible enough that we must allow aliasing with other
*************** _mm_xor_si128 (__m128i __A, __m128i __B)
*** 1295,1301 ****
  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__))
--- 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__))
*************** _mm_cmpeq_epi32 (__m128i __A, __m128i __
*** 1313,1319 ****
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmplt_epi8 (__m128i __A, __m128i __B)
  {
!   return (__m128i) ((__v16qi)__A < (__v16qi)__B);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1314,1320 ----
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmplt_epi8 (__m128i __A, __m128i __B)
  {
!   return (__m128i) ((__v16qs)__A < (__v16qs)__B);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_cmplt_epi32 (__m128i __A, __m128i __
*** 1331,1337 ****
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpgt_epi8 (__m128i __A, __m128i __B)
  {
!   return (__m128i) ((__v16qi)__A > (__v16qi)__B);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1332,1338 ----
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpgt_epi8 (__m128i __A, __m128i __B)
  {
!   return (__m128i) ((__v16qs)__A > (__v16qs)__B);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
diff -Nrcpad gcc-7.3.0/gcc/config/i386/gnu-user.h gcc-7.4.0/gcc/config/i386/gnu-user.h
*** gcc-7.3.0/gcc/config/i386/gnu-user.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/i386/gnu-user.h	Fri Oct  5 11:40:59 2018
*************** along with GCC; see the file COPYING3.
*** 67,73 ****
  
  #undef  ASM_SPEC
  #define ASM_SPEC \
!   "--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
  
  #undef  SUBTARGET_EXTRA_SPECS
  #define SUBTARGET_EXTRA_SPECS \
--- 67,73 ----
  
  #undef  ASM_SPEC
  #define ASM_SPEC \
!   "--32 %{msse2avx:%{!mavx:-msse2avx}}"
  
  #undef  SUBTARGET_EXTRA_SPECS
  #define SUBTARGET_EXTRA_SPECS \
diff -Nrcpad gcc-7.3.0/gcc/config/i386/gnu-user64.h gcc-7.4.0/gcc/config/i386/gnu-user64.h
*** gcc-7.3.0/gcc/config/i386/gnu-user64.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/i386/gnu-user64.h	Fri Oct  5 11:40:59 2018
*************** see the files COPYING3 and COPYING.RUNTI
*** 50,56 ****
  #define ASM_SPEC "%{" SPEC_32 ":--32} \
   %{" SPEC_64 ":--64} \
   %{" SPEC_X32 ":--x32} \
!  %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
  
  #define GNU_USER_TARGET_LINK_SPEC				   \
                    "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \
--- 50,56 ----
  #define ASM_SPEC "%{" SPEC_32 ":--32} \
   %{" SPEC_64 ":--64} \
   %{" SPEC_X32 ":--x32} \
!  %{msse2avx:%{!mavx:-msse2avx}}"
  
  #define GNU_USER_TARGET_LINK_SPEC				   \
                    "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \
diff -Nrcpad gcc-7.3.0/gcc/config/i386/i386-builtin.def gcc-7.4.0/gcc/config/i386/i386-builtin.def
*** gcc-7.3.0/gcc/config/i386/i386-builtin.def	Tue Apr 11 08:54:54 2017
--- gcc-7.4.0/gcc/config/i386/i386-builtin.def	Fri Oct 12 14:55:17 2018
*************** BDESC_END (PCMPISTR, SPECIAL_ARGS)
*** 90,95 ****
--- 90,96 ----
  BDESC_FIRST (special_args, SPECIAL_ARGS,
         0, CODE_FOR_nothing, "__builtin_ia32_rdtsc", IX86_BUILTIN_RDTSC, UNKNOWN, (int) UINT64_FTYPE_VOID)
  BDESC (0, CODE_FOR_nothing, "__builtin_ia32_rdtscp", IX86_BUILTIN_RDTSCP, UNKNOWN, (int) UINT64_FTYPE_PUNSIGNED)
+ BDESC (0, CODE_FOR_nothing, "__builtin_ia32_rdpmc", IX86_BUILTIN_RDPMC, UNKNOWN, (int) UINT64_FTYPE_INT)
  BDESC (0, CODE_FOR_pause, "__builtin_ia32_pause", IX86_BUILTIN_PAUSE, UNKNOWN, (int) VOID_FTYPE_VOID)
  
  /* 80387 (for use internally for atomic compound assignment).  */
*************** BDESC_END (SPECIAL_ARGS, ARGS)
*** 387,393 ****
  BDESC_FIRST (args, ARGS,
         0, CODE_FOR_bsr, "__builtin_ia32_bsrsi", IX86_BUILTIN_BSRSI, UNKNOWN, (int) INT_FTYPE_INT)
  BDESC (OPTION_MASK_ISA_64BIT, CODE_FOR_bsr_rex64, "__builtin_ia32_bsrdi", IX86_BUILTIN_BSRDI, UNKNOWN, (int) INT64_FTYPE_INT64)
- BDESC (0, CODE_FOR_nothing, "__builtin_ia32_rdpmc", IX86_BUILTIN_RDPMC, UNKNOWN, (int) UINT64_FTYPE_INT)
  BDESC (0, CODE_FOR_rotlqi3, "__builtin_ia32_rolqi", IX86_BUILTIN_ROLQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT)
  BDESC (0, CODE_FOR_rotlhi3, "__builtin_ia32_rolhi", IX86_BUILTIN_ROLHI, UNKNOWN, (int) UINT16_FTYPE_UINT16_INT)
  BDESC (0, CODE_FOR_rotrqi3, "__builtin_ia32_rorqi", IX86_BUILTIN_RORQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT)
--- 388,393 ----
diff -Nrcpad gcc-7.3.0/gcc/config/i386/i386-protos.h gcc-7.4.0/gcc/config/i386/i386-protos.h
*** gcc-7.3.0/gcc/config/i386/i386-protos.h	Tue Jan 16 11:10:44 2018
--- gcc-7.4.0/gcc/config/i386/i386-protos.h	Fri Mar  2 13:05:18 2018
*************** extern enum attr_cpu ix86_schedule;
*** 313,320 ****
  #endif
  
  extern const char * ix86_output_call_insn (rtx_insn *insn, rtx call_op);
! extern const char * ix86_output_indirect_jmp (rtx call_op, bool ret_p);
  extern const char * ix86_output_function_return (bool long_p);
  extern bool ix86_operands_ok_for_move_multiple (rtx *operands, bool load,
  						enum machine_mode mode);
  
--- 313,322 ----
  #endif
  
  extern const char * ix86_output_call_insn (rtx_insn *insn, rtx call_op);
! extern const char * ix86_output_indirect_jmp (rtx call_op);
  extern const char * ix86_output_function_return (bool long_p);
+ extern const char * ix86_output_indirect_function_return (rtx ret_op);
+ extern void ix86_split_simple_return_pop_internal (rtx);
  extern bool ix86_operands_ok_for_move_multiple (rtx *operands, bool load,
  						enum machine_mode mode);
  
diff -Nrcpad gcc-7.3.0/gcc/config/i386/i386.c gcc-7.4.0/gcc/config/i386/i386.c
*** gcc-7.3.0/gcc/config/i386/i386.c	Tue Jan 16 12:49:29 2018
--- gcc-7.4.0/gcc/config/i386/i386.c	Tue Oct  9 17:23:06 2018
*************** construct_container (machine_mode mode,
*** 9442,9448 ****
        case X86_64_SSEDF_CLASS:
  	if (mode != BLKmode)
  	  return gen_reg_or_parallel (mode, orig_mode,
! 				      SSE_REGNO (sse_regno));
  	break;
        case X86_64_X87_CLASS:
        case X86_64_COMPLEX_X87_CLASS:
--- 9442,9448 ----
        case X86_64_SSEDF_CLASS:
  	if (mode != BLKmode)
  	  return gen_reg_or_parallel (mode, orig_mode,
! 				      GET_SSE_REGNO (sse_regno));
  	break;
        case X86_64_X87_CLASS:
        case X86_64_COMPLEX_X87_CLASS:
*************** construct_container (machine_mode mode,
*** 9458,9464 ****
        && regclass[1] == X86_64_SSEUP_CLASS
        && mode != BLKmode)
      return gen_reg_or_parallel (mode, orig_mode,
! 				SSE_REGNO (sse_regno));
    if (n == 4
        && regclass[0] == X86_64_SSE_CLASS
        && regclass[1] == X86_64_SSEUP_CLASS
--- 9458,9464 ----
        && regclass[1] == X86_64_SSEUP_CLASS
        && mode != BLKmode)
      return gen_reg_or_parallel (mode, orig_mode,
! 				GET_SSE_REGNO (sse_regno));
    if (n == 4
        && regclass[0] == X86_64_SSE_CLASS
        && regclass[1] == X86_64_SSEUP_CLASS
*************** construct_container (machine_mode mode,
*** 9466,9472 ****
        && regclass[3] == X86_64_SSEUP_CLASS
        && mode != BLKmode)
      return gen_reg_or_parallel (mode, orig_mode,
! 				SSE_REGNO (sse_regno));
    if (n == 8
        && regclass[0] == X86_64_SSE_CLASS
        && regclass[1] == X86_64_SSEUP_CLASS
--- 9466,9472 ----
        && regclass[3] == X86_64_SSEUP_CLASS
        && mode != BLKmode)
      return gen_reg_or_parallel (mode, orig_mode,
! 				GET_SSE_REGNO (sse_regno));
    if (n == 8
        && regclass[0] == X86_64_SSE_CLASS
        && regclass[1] == X86_64_SSEUP_CLASS
*************** construct_container (machine_mode mode,
*** 9478,9484 ****
        && regclass[7] == X86_64_SSEUP_CLASS
        && mode != BLKmode)
      return gen_reg_or_parallel (mode, orig_mode,
! 				SSE_REGNO (sse_regno));
    if (n == 2
        && regclass[0] == X86_64_X87_CLASS
        && regclass[1] == X86_64_X87UP_CLASS)
--- 9478,9484 ----
        && regclass[7] == X86_64_SSEUP_CLASS
        && mode != BLKmode)
      return gen_reg_or_parallel (mode, orig_mode,
! 				GET_SSE_REGNO (sse_regno));
    if (n == 2
        && regclass[0] == X86_64_X87_CLASS
        && regclass[1] == X86_64_X87UP_CLASS)
*************** construct_container (machine_mode mode,
*** 9487,9495 ****
    if (n == 2
        && regclass[0] == X86_64_INTEGER_CLASS
        && regclass[1] == X86_64_INTEGER_CLASS
!       && (mode == CDImode || mode == TImode)
        && intreg[0] + 1 == intreg[1])
!     return gen_rtx_REG (mode, intreg[0]);
  
    /* Otherwise figure out the entries of the PARALLEL.  */
    for (i = 0; i < n; i++)
--- 9487,9508 ----
    if (n == 2
        && regclass[0] == X86_64_INTEGER_CLASS
        && regclass[1] == X86_64_INTEGER_CLASS
!       && (mode == CDImode || mode == TImode || mode == BLKmode)
        && intreg[0] + 1 == intreg[1])
!     {
!       if (mode == BLKmode)
! 	{
! 	  /* Use TImode for BLKmode values in 2 integer registers.  */
! 	  exp[0] = gen_rtx_EXPR_LIST (VOIDmode,
! 				      gen_rtx_REG (TImode, intreg[0]),
! 				      GEN_INT (0));
! 	  ret = gen_rtx_PARALLEL (mode, rtvec_alloc (1));
! 	  XVECEXP (ret, 0, 0) = exp[0];
! 	  return ret;
! 	}
!       else
! 	return gen_rtx_REG (mode, intreg[0]);
!     }
  
    /* Otherwise figure out the entries of the PARALLEL.  */
    for (i = 0; i < n; i++)
*************** construct_container (machine_mode mode,
*** 9524,9530 ****
  	    exp [nexps++]
  	      = gen_rtx_EXPR_LIST (VOIDmode,
  				   gen_rtx_REG (SFmode,
! 						SSE_REGNO (sse_regno)),
  				   GEN_INT (i*8));
  	    sse_regno++;
  	    break;
--- 9537,9543 ----
  	    exp [nexps++]
  	      = gen_rtx_EXPR_LIST (VOIDmode,
  				   gen_rtx_REG (SFmode,
! 						GET_SSE_REGNO (sse_regno)),
  				   GEN_INT (i*8));
  	    sse_regno++;
  	    break;
*************** construct_container (machine_mode mode,
*** 9532,9538 ****
  	    exp [nexps++]
  	      = gen_rtx_EXPR_LIST (VOIDmode,
  				   gen_rtx_REG (DFmode,
! 						SSE_REGNO (sse_regno)),
  				   GEN_INT (i*8));
  	    sse_regno++;
  	    break;
--- 9545,9551 ----
  	    exp [nexps++]
  	      = gen_rtx_EXPR_LIST (VOIDmode,
  				   gen_rtx_REG (DFmode,
! 						GET_SSE_REGNO (sse_regno)),
  				   GEN_INT (i*8));
  	    sse_regno++;
  	    break;
*************** construct_container (machine_mode mode,
*** 9578,9584 ****
  	    exp [nexps++]
  	      = gen_rtx_EXPR_LIST (VOIDmode,
  				   gen_rtx_REG (tmpmode,
! 						SSE_REGNO (sse_regno)),
  				   GEN_INT (pos*8));
  	    sse_regno++;
  	    break;
--- 9591,9597 ----
  	    exp [nexps++]
  	      = gen_rtx_EXPR_LIST (VOIDmode,
  				   gen_rtx_REG (tmpmode,
! 						GET_SSE_REGNO (sse_regno)),
  				   GEN_INT (pos*8));
  	    sse_regno++;
  	    break;
*************** setup_incoming_varargs_64 (CUMULATIVE_AR
*** 11013,11019 ****
  	  set_mem_alias_set (mem, set);
  	  set_mem_align (mem, GET_MODE_ALIGNMENT (smode));
  
! 	  emit_move_insn (mem, gen_rtx_REG (smode, SSE_REGNO (i)));
  	}
  
        emit_label (label);
--- 11026,11032 ----
  	  set_mem_alias_set (mem, set);
  	  set_mem_align (mem, GET_MODE_ALIGNMENT (smode));
  
! 	  emit_move_insn (mem, gen_rtx_REG (smode, GET_SSE_REGNO (i)));
  	}
  
        emit_label (label);
*************** ix86_setup_frame_addresses (void)
*** 12031,12049 ****
     labels in call and return thunks.  */
  static int indirectlabelno;
  
! /* True if call and return thunk functions are needed.  */
  static bool indirect_thunk_needed = false;
! /* True if call and return thunk functions with the BND prefix are
!    needed.  */
  static bool indirect_thunk_bnd_needed = false;
  
  /* Bit masks of integer registers, which contain branch target, used
!    by call and return thunks functions.  */
  static int indirect_thunks_used;
  /* Bit masks of integer registers, which contain branch target, used
!    by call and return thunks functions with the BND prefix.  */
  static int indirect_thunks_bnd_used;
  
  #ifndef INDIRECT_LABEL
  # define INDIRECT_LABEL "LIND"
  #endif
--- 12044,12072 ----
     labels in call and return thunks.  */
  static int indirectlabelno;
  
! /* True if call thunk function is needed.  */
  static bool indirect_thunk_needed = false;
! /* True if call thunk function with the BND prefix is needed.  */
  static bool indirect_thunk_bnd_needed = false;
  
  /* Bit masks of integer registers, which contain branch target, used
!    by call thunk functions.  */
  static int indirect_thunks_used;
  /* Bit masks of integer registers, which contain branch target, used
!    by call thunk functions with the BND prefix.  */
  static int indirect_thunks_bnd_used;
  
+ /* True if return thunk function is needed.  */
+ static bool indirect_return_needed = false;
+ /* True if return thunk function with the BND prefix is needed.  */
+ static bool indirect_return_bnd_needed = false;
+ 
+ /* True if return thunk function via CX is needed.  */
+ static bool indirect_return_via_cx;
+ /* True if return thunk function via CX with the BND prefix is
+    needed.  */
+ static bool indirect_return_via_cx_bnd;
+ 
  #ifndef INDIRECT_LABEL
  # define INDIRECT_LABEL "LIND"
  #endif
*************** static int indirect_thunks_bnd_used;
*** 12051,12084 ****
  /* Fills in the label name that should be used for the indirect thunk.  */
  
  static void
! indirect_thunk_name (char name[32], int regno, bool need_bnd_p,
! 		     bool ret_p)
  {
!   if (regno >= 0 && ret_p)
      gcc_unreachable ();
  
    if (USE_HIDDEN_LINKONCE)
      {
        const char *bnd = need_bnd_p ? "_bnd" : "";
!       if (regno >= 0)
  	{
  	  const char *reg_prefix;
  	  if (LEGACY_INT_REGNO_P (regno))
  	    reg_prefix = TARGET_64BIT ? "r" : "e";
  	  else
  	    reg_prefix = "";
! 	  sprintf (name, "__x86_indirect_thunk%s_%s%s",
! 		   bnd, reg_prefix, reg_names[regno]);
  	}
        else
! 	{
! 	  const char *ret = ret_p ? "return" : "indirect";
! 	  sprintf (name, "__x86_%s_thunk%s", ret, bnd);
! 	}
      }
    else
      {
!       if (regno >= 0)
  	{
  	  if (need_bnd_p)
  	    ASM_GENERATE_INTERNAL_LABEL (name, "LITBR", regno);
--- 12074,12105 ----
  /* Fills in the label name that should be used for the indirect thunk.  */
  
  static void
! indirect_thunk_name (char name[32], unsigned int regno,
! 		     bool need_bnd_p, bool ret_p)
  {
!   if (regno != INVALID_REGNUM && regno != CX_REG && ret_p)
      gcc_unreachable ();
  
    if (USE_HIDDEN_LINKONCE)
      {
        const char *bnd = need_bnd_p ? "_bnd" : "";
!       const char *ret = ret_p ? "return" : "indirect";
!       if (regno != INVALID_REGNUM)
  	{
  	  const char *reg_prefix;
  	  if (LEGACY_INT_REGNO_P (regno))
  	    reg_prefix = TARGET_64BIT ? "r" : "e";
  	  else
  	    reg_prefix = "";
! 	  sprintf (name, "__x86_%s_thunk%s_%s%s",
! 		   ret, bnd, reg_prefix, reg_names[regno]);
  	}
        else
! 	sprintf (name, "__x86_%s_thunk%s", ret, bnd);
      }
    else
      {
!       if (regno != INVALID_REGNUM)
  	{
  	  if (need_bnd_p)
  	    ASM_GENERATE_INTERNAL_LABEL (name, "LITBR", regno);
*************** indirect_thunk_name (char name[32], int
*** 12130,12136 ****
   */
  
  static void
! output_indirect_thunk (bool need_bnd_p, int regno)
  {
    char indirectlabel1[32];
    char indirectlabel2[32];
--- 12151,12157 ----
   */
  
  static void
! output_indirect_thunk (bool need_bnd_p, unsigned int regno)
  {
    char indirectlabel1[32];
    char indirectlabel2[32];
*************** output_indirect_thunk (bool need_bnd_p,
*** 12160,12166 ****
  
    ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2);
  
!   if (regno >= 0)
      {
        /* MOV.  */
        rtx xops[2];
--- 12181,12187 ----
  
    ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2);
  
!   if (regno != INVALID_REGNUM)
      {
        /* MOV.  */
        rtx xops[2];
*************** output_indirect_thunk (bool need_bnd_p,
*** 12184,12201 ****
  }
  
  /* Output a funtion with a call and return thunk for indirect branch.
!    If BND_P is true, the BND prefix is needed.   If REGNO != -1,  the
!    function address is in REGNO.  Otherwise, the function address is
!    on the top of stack.  */
  
  static void
! output_indirect_thunk_function (bool need_bnd_p, int regno)
  {
    char name[32];
    tree decl;
  
    /* Create __x86_indirect_thunk/__x86_indirect_thunk_bnd.  */
!   indirect_thunk_name (name, regno, need_bnd_p, false);
    decl = build_decl (BUILTINS_LOCATION, FUNCTION_DECL,
  		     get_identifier (name),
  		     build_function_type_list (void_type_node, NULL_TREE));
--- 12205,12224 ----
  }
  
  /* Output a funtion with a call and return thunk for indirect branch.
!    If BND_P is true, the BND prefix is needed.  If REGNO != INVALID_REGNUM,
!    the function address is in REGNO.  Otherwise, the function address is
!    on the top of stack.  Thunk is used for function return if RET_P is
!    true.  */
  
  static void
! output_indirect_thunk_function (bool need_bnd_p, unsigned int regno,
! 				bool ret_p)
  {
    char name[32];
    tree decl;
  
    /* Create __x86_indirect_thunk/__x86_indirect_thunk_bnd.  */
!   indirect_thunk_name (name, regno, need_bnd_p, ret_p);
    decl = build_decl (BUILTINS_LOCATION, FUNCTION_DECL,
  		     get_identifier (name),
  		     build_function_type_list (void_type_node, NULL_TREE));
*************** output_indirect_thunk_function (bool nee
*** 12238,12273 ****
  	ASM_OUTPUT_LABEL (asm_out_file, name);
        }
  
-   if (regno < 0)
-     {
-       /* Create alias for __x86.return_thunk/__x86.return_thunk_bnd.  */
-       char alias[32];
- 
-       indirect_thunk_name (alias, regno, need_bnd_p, true);
- #if TARGET_MACHO
-       if (TARGET_MACHO)
- 	{
- 	  fputs ("\t.weak_definition\t", asm_out_file);
- 	  assemble_name (asm_out_file, alias);
- 	  fputs ("\n\t.private_extern\t", asm_out_file);
- 	  assemble_name (asm_out_file, alias);
- 	  putc ('\n', asm_out_file);
- 	  ASM_OUTPUT_LABEL (asm_out_file, alias);
- 	}
- #else
-       ASM_OUTPUT_DEF (asm_out_file, alias, name);
-       if (USE_HIDDEN_LINKONCE)
- 	{
- 	  fputs ("\t.globl\t", asm_out_file);
- 	  assemble_name (asm_out_file, alias);
- 	  putc ('\n', asm_out_file);
- 	  fputs ("\t.hidden\t", asm_out_file);
- 	  assemble_name (asm_out_file, alias);
- 	  putc ('\n', asm_out_file);
- 	}
- #endif
-     }
- 
    DECL_INITIAL (decl) = make_node (BLOCK);
    current_function_decl = decl;
    allocate_struct_function (decl, false);
--- 12261,12266 ----
*************** static void
*** 12312,12332 ****
  ix86_code_end (void)
  {
    rtx xops[2];
!   int regno;
  
    if (indirect_thunk_needed)
!     output_indirect_thunk_function (false, -1);
    if (indirect_thunk_bnd_needed)
!     output_indirect_thunk_function (true, -1);
  
    for (regno = FIRST_REX_INT_REG; regno <= LAST_REX_INT_REG; regno++)
      {
!       int i = regno - FIRST_REX_INT_REG + LAST_INT_REG + 1;
        if ((indirect_thunks_used & (1 << i)))
! 	output_indirect_thunk_function (false, regno);
  
        if ((indirect_thunks_bnd_used & (1 << i)))
! 	output_indirect_thunk_function (true, regno);
      }
  
    for (regno = AX_REG; regno <= SP_REG; regno++)
--- 12305,12335 ----
  ix86_code_end (void)
  {
    rtx xops[2];
!   unsigned int regno;
! 
!   if (indirect_return_needed)
!     output_indirect_thunk_function (false, INVALID_REGNUM, true);
!   if (indirect_return_bnd_needed)
!     output_indirect_thunk_function (true, INVALID_REGNUM, true);
! 
!   if (indirect_return_via_cx)
!     output_indirect_thunk_function (false, CX_REG, true);
!   if (indirect_return_via_cx_bnd)
!     output_indirect_thunk_function (true, CX_REG, true);
  
    if (indirect_thunk_needed)
!     output_indirect_thunk_function (false, INVALID_REGNUM, false);
    if (indirect_thunk_bnd_needed)
!     output_indirect_thunk_function (true, INVALID_REGNUM, false);
  
    for (regno = FIRST_REX_INT_REG; regno <= LAST_REX_INT_REG; regno++)
      {
!       unsigned int i = regno - FIRST_REX_INT_REG + LAST_INT_REG + 1;
        if ((indirect_thunks_used & (1 << i)))
! 	output_indirect_thunk_function (false, regno, false);
  
        if ((indirect_thunks_bnd_used & (1 << i)))
! 	output_indirect_thunk_function (true, regno, false);
      }
  
    for (regno = AX_REG; regno <= SP_REG; regno++)
*************** ix86_code_end (void)
*** 12335,12344 ****
        tree decl;
  
        if ((indirect_thunks_used & (1 << regno)))
! 	output_indirect_thunk_function (false, regno);
  
        if ((indirect_thunks_bnd_used & (1 << regno)))
! 	output_indirect_thunk_function (true, regno);
  
        if (!(pic_labels_used & (1 << regno)))
  	continue;
--- 12338,12347 ----
        tree decl;
  
        if ((indirect_thunks_used & (1 << regno)))
! 	output_indirect_thunk_function (false, regno, false);
  
        if ((indirect_thunks_bnd_used & (1 << regno)))
! 	output_indirect_thunk_function (true, regno, false);
  
        if (!(pic_labels_used & (1 << regno)))
  	continue;
*************** ix86_expand_prologue (void)
*** 14061,14067 ****
  {
    struct machine_function *m = cfun->machine;
    rtx insn, t;
-   struct ix86_frame frame;
    HOST_WIDE_INT allocate;
    bool int_registers_saved;
    bool sse_registers_saved;
--- 14064,14069 ----
*************** ix86_expand_prologue (void)
*** 14085,14091 ****
    m->fs.sp_valid = true;
  
    ix86_compute_frame_layout ();
!   frame = m->frame;
  
    if (!TARGET_64BIT && ix86_function_ms_hook_prologue (current_function_decl))
      {
--- 14087,14093 ----
    m->fs.sp_valid = true;
  
    ix86_compute_frame_layout ();
!   const struct ix86_frame &frame = cfun->machine->frame;
  
    if (!TARGET_64BIT && ix86_function_ms_hook_prologue (current_function_decl))
      {
*************** ix86_expand_epilogue (int style)
*** 14748,14760 ****
  {
    struct machine_function *m = cfun->machine;
    struct machine_frame_state frame_state_save = m->fs;
-   struct ix86_frame frame;
    bool restore_regs_via_mov;
    bool using_drap;
  
    ix86_finalize_stack_realign_flags ();
    ix86_compute_frame_layout ();
!   frame = m->frame;
  
    m->fs.sp_valid = (!frame_pointer_needed
  		    || (crtl->sp_is_unchanging
--- 14750,14761 ----
  {
    struct machine_function *m = cfun->machine;
    struct machine_frame_state frame_state_save = m->fs;
    bool restore_regs_via_mov;
    bool using_drap;
  
    ix86_finalize_stack_realign_flags ();
    ix86_compute_frame_layout ();
!   const struct ix86_frame &frame = cfun->machine->frame;
  
    m->fs.sp_valid = (!frame_pointer_needed
  		    || (crtl->sp_is_unchanging
*************** ix86_expand_epilogue (int style)
*** 14796,14806 ****
  				  + UNITS_PER_WORD);
      }
  
    /* Special care must be taken for the normal return case of a function
       using eh_return: the eax and edx registers are marked as saved, but
       not restored along this path.  Adjust the save location to match.  */
    if (crtl->calls_eh_return && style != 2)
!     frame.reg_save_offset -= 2 * UNITS_PER_WORD;
  
    /* EH_RETURN requires the use of moves to function properly.  */
    if (crtl->calls_eh_return)
--- 14797,14809 ----
  				  + UNITS_PER_WORD);
      }
  
+   HOST_WIDE_INT reg_save_offset = frame.reg_save_offset;
+ 
    /* Special care must be taken for the normal return case of a function
       using eh_return: the eax and edx registers are marked as saved, but
       not restored along this path.  Adjust the save location to match.  */
    if (crtl->calls_eh_return && style != 2)
!     reg_save_offset -= 2 * UNITS_PER_WORD;
  
    /* EH_RETURN requires the use of moves to function properly.  */
    if (crtl->calls_eh_return)
*************** ix86_expand_epilogue (int style)
*** 14816,14826 ****
    else if (TARGET_EPILOGUE_USING_MOVE
  	   && cfun->machine->use_fast_prologue_epilogue
  	   && (frame.nregs > 1
! 	       || m->fs.sp_offset != frame.reg_save_offset))
      restore_regs_via_mov = true;
    else if (frame_pointer_needed
  	   && !frame.nregs
! 	   && m->fs.sp_offset != frame.reg_save_offset)
      restore_regs_via_mov = true;
    else if (frame_pointer_needed
  	   && TARGET_USE_LEAVE
--- 14819,14829 ----
    else if (TARGET_EPILOGUE_USING_MOVE
  	   && cfun->machine->use_fast_prologue_epilogue
  	   && (frame.nregs > 1
! 	       || m->fs.sp_offset != reg_save_offset))
      restore_regs_via_mov = true;
    else if (frame_pointer_needed
  	   && !frame.nregs
! 	   && m->fs.sp_offset != reg_save_offset)
      restore_regs_via_mov = true;
    else if (frame_pointer_needed
  	   && TARGET_USE_LEAVE
*************** ix86_expand_epilogue (int style)
*** 14858,14864 ****
        rtx t;
  
        if (frame.nregs)
! 	ix86_emit_restore_regs_using_mov (frame.reg_save_offset, style == 2);
  
        /* eh_return epilogues need %ecx added to the stack pointer.  */
        if (style == 2)
--- 14861,14867 ----
        rtx t;
  
        if (frame.nregs)
! 	ix86_emit_restore_regs_using_mov (reg_save_offset, style == 2);
  
        /* eh_return epilogues need %ecx added to the stack pointer.  */
        if (style == 2)
*************** ix86_expand_epilogue (int style)
*** 14948,14966 ****
  	 epilogues.  */
        if (!m->fs.sp_valid
   	  || (TARGET_SEH
! 	      && (m->fs.sp_offset - frame.reg_save_offset
  		  >= SEH_MAX_FRAME_SIZE)))
  	{
  	  pro_epilogue_adjust_stack (stack_pointer_rtx, hard_frame_pointer_rtx,
  				     GEN_INT (m->fs.fp_offset
! 					      - frame.reg_save_offset),
  				     style, false);
  	}
!       else if (m->fs.sp_offset != frame.reg_save_offset)
  	{
  	  pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
  				     GEN_INT (m->fs.sp_offset
! 					      - frame.reg_save_offset),
  				     style,
  				     m->fs.cfa_reg == stack_pointer_rtx);
  	}
--- 14951,14969 ----
  	 epilogues.  */
        if (!m->fs.sp_valid
   	  || (TARGET_SEH
! 	      && (m->fs.sp_offset - reg_save_offset
  		  >= SEH_MAX_FRAME_SIZE)))
  	{
  	  pro_epilogue_adjust_stack (stack_pointer_rtx, hard_frame_pointer_rtx,
  				     GEN_INT (m->fs.fp_offset
! 					      - reg_save_offset),
  				     style, false);
  	}
!       else if (m->fs.sp_offset != reg_save_offset)
  	{
  	  pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
  				     GEN_INT (m->fs.sp_offset
! 					      - reg_save_offset),
  				     style,
  				     m->fs.cfa_reg == stack_pointer_rtx);
  	}
*************** ix86_print_operand (FILE *file, rtx x, i
*** 18842,18848 ****
  	 since we can in fact encode that into an immediate.  */
        if (GET_CODE (x) == CONST_VECTOR)
  	{
! 	  gcc_assert (x == CONST0_RTX (GET_MODE (x)));
  	  x = const0_rtx;
  	}
  
--- 18845,18852 ----
  	 since we can in fact encode that into an immediate.  */
        if (GET_CODE (x) == CONST_VECTOR)
  	{
! 	  if (x != CONST0_RTX (GET_MODE (x)))
! 	    output_operand_lossage ("invalid vector immediate");
  	  x = const0_rtx;
  	}
  
*************** emit_i387_cw_initialization (int mode)
*** 19807,19878 ****
    emit_insn (gen_x86_fnstcw_1 (stored_mode));
    emit_move_insn (reg, copy_rtx (stored_mode));
  
!   if (TARGET_64BIT || TARGET_PARTIAL_REG_STALL
!       || optimize_insn_for_size_p ())
!     {
!       switch (mode)
! 	{
! 	case I387_CW_TRUNC:
! 	  /* round toward zero (truncate) */
! 	  emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0c00)));
! 	  slot = SLOT_CW_TRUNC;
! 	  break;
! 
! 	case I387_CW_FLOOR:
! 	  /* round down toward -oo */
! 	  emit_insn (gen_andhi3 (reg, reg, GEN_INT (~0x0c00)));
! 	  emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0400)));
! 	  slot = SLOT_CW_FLOOR;
! 	  break;
! 
! 	case I387_CW_CEIL:
! 	  /* round up toward +oo */
! 	  emit_insn (gen_andhi3 (reg, reg, GEN_INT (~0x0c00)));
! 	  emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0800)));
! 	  slot = SLOT_CW_CEIL;
! 	  break;
! 
! 	case I387_CW_MASK_PM:
! 	  /* mask precision exception for nearbyint() */
! 	  emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0020)));
! 	  slot = SLOT_CW_MASK_PM;
! 	  break;
! 
! 	default:
! 	  gcc_unreachable ();
! 	}
!     }
!   else
      {
!       switch (mode)
! 	{
! 	case I387_CW_TRUNC:
! 	  /* round toward zero (truncate) */
! 	  emit_insn (gen_insvsi_1 (reg, GEN_INT (0xc)));
! 	  slot = SLOT_CW_TRUNC;
! 	  break;
  
! 	case I387_CW_FLOOR:
! 	  /* round down toward -oo */
! 	  emit_insn (gen_insvsi_1 (reg, GEN_INT (0x4)));
! 	  slot = SLOT_CW_FLOOR;
! 	  break;
  
! 	case I387_CW_CEIL:
! 	  /* round up toward +oo */
! 	  emit_insn (gen_insvsi_1 (reg, GEN_INT (0x8)));
! 	  slot = SLOT_CW_CEIL;
! 	  break;
  
! 	case I387_CW_MASK_PM:
! 	  /* mask precision exception for nearbyint() */
! 	  emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0020)));
! 	  slot = SLOT_CW_MASK_PM;
! 	  break;
  
! 	default:
! 	  gcc_unreachable ();
! 	}
      }
  
    gcc_assert (slot < MAX_386_STACK_LOCALS);
--- 19811,19846 ----
    emit_insn (gen_x86_fnstcw_1 (stored_mode));
    emit_move_insn (reg, copy_rtx (stored_mode));
  
!   switch (mode)
      {
!     case I387_CW_TRUNC:
!       /* round toward zero (truncate) */
!       emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0c00)));
!       slot = SLOT_CW_TRUNC;
!       break;
  
!     case I387_CW_FLOOR:
!       /* round down toward -oo */
!       emit_insn (gen_andhi3 (reg, reg, GEN_INT (~0x0c00)));
!       emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0400)));
!       slot = SLOT_CW_FLOOR;
!       break;
  
!     case I387_CW_CEIL:
!       /* round up toward +oo */
!       emit_insn (gen_andhi3 (reg, reg, GEN_INT (~0x0c00)));
!       emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0800)));
!       slot = SLOT_CW_CEIL;
!       break;
  
!     case I387_CW_MASK_PM:
!       /* mask precision exception for nearbyint() */
!       emit_insn (gen_iorhi3 (reg, reg, GEN_INT (0x0020)));
!       slot = SLOT_CW_MASK_PM;
!       break;
  
!     default:
!       gcc_unreachable ();
      }
  
    gcc_assert (slot < MAX_386_STACK_LOCALS);
*************** ix86_output_indirect_branch (rtx call_op
*** 29109,29126 ****
    else
      ix86_output_indirect_branch_via_push (call_op, xasm, sibcall_p);
  }
! /* Output indirect jump.  CALL_OP is the jump target.  Jump is a
!    function return if RET_P is true.  */
  
  const char *
! ix86_output_indirect_jmp (rtx call_op, bool ret_p)
  {
    if (cfun->machine->indirect_branch_type != indirect_branch_keep)
      {
!       /* We can't have red-zone if this isn't a function return since
! 	 "call" in the indirect thunk pushes the return address onto
! 	 stack, destroying red-zone.  */
!       if (!ret_p && ix86_red_zone_size != 0)
  	gcc_unreachable ();
  
        ix86_output_indirect_branch (call_op, "%0", true);
--- 29077,29093 ----
    else
      ix86_output_indirect_branch_via_push (call_op, xasm, sibcall_p);
  }
! 
! /* Output indirect jump.  CALL_OP is the jump target.  */
  
  const char *
! ix86_output_indirect_jmp (rtx call_op)
  {
    if (cfun->machine->indirect_branch_type != indirect_branch_keep)
      {
!       /* We can't have red-zone since "call" in the indirect thunk
!          pushes the return address onto stack, destroying red-zone.  */
!       if (ix86_red_zone_size != 0)
  	gcc_unreachable ();
  
        ix86_output_indirect_branch (call_op, "%0", true);
*************** ix86_output_function_return (bool long_p
*** 29146,29165 ****
  	{
  	  bool need_thunk = (cfun->machine->function_return_type
  			     == indirect_branch_thunk);
! 	  indirect_thunk_name (thunk_name, -1, need_bnd_p, true);
  	  if (need_bnd_p)
  	    {
! 	      indirect_thunk_bnd_needed |= need_thunk;
  	      fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name);
  	    }
  	  else
  	    {
! 	      indirect_thunk_needed |= need_thunk;
  	      fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name);
  	    }
  	}
        else
! 	output_indirect_thunk (need_bnd_p, -1);
  
        return "";
      }
--- 29113,29133 ----
  	{
  	  bool need_thunk = (cfun->machine->function_return_type
  			     == indirect_branch_thunk);
! 	  indirect_thunk_name (thunk_name, INVALID_REGNUM, need_bnd_p,
! 			       true);
  	  if (need_bnd_p)
  	    {
! 	      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_bnd_p, INVALID_REGNUM);
  
        return "";
      }
*************** ix86_output_function_return (bool long_p
*** 29170,29175 ****
--- 29138,29223 ----
    return "rep%; ret";
  }
  
+ /* Output indirect function return.  RET_OP is the function return
+    target.  */
+ 
+ const char *
+ ix86_output_indirect_function_return (rtx ret_op)
+ {
+   if (cfun->machine->function_return_type != indirect_branch_keep)
+     {
+       char thunk_name[32];
+       bool need_bnd_p = ix86_bnd_prefixed_insn_p (current_output_insn);
+       unsigned int regno = REGNO (ret_op);
+       gcc_assert (regno == CX_REG);
+ 
+       if (cfun->machine->function_return_type
+ 	  != indirect_branch_thunk_inline)
+ 	{
+ 	  bool need_thunk = (cfun->machine->function_return_type
+ 			     == indirect_branch_thunk);
+ 	  indirect_thunk_name (thunk_name, regno, need_bnd_p, true);
+ 	  if (need_bnd_p)
+ 	    {
+ 	      if (need_thunk)
+ 		{
+ 		  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
+ 	    {
+ 	      if (need_thunk)
+ 		{
+ 		  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_bnd_p, regno);
+ 
+       return "";
+     }
+   else
+     return "%!jmp\t%A0";
+ }
+ 
+ /* Split simple return with popping POPC bytes from stack to indirect
+    branch with stack adjustment .  */
+ 
+ void
+ ix86_split_simple_return_pop_internal (rtx popc)
+ {
+   struct machine_function *m = cfun->machine;
+   rtx ecx = gen_rtx_REG (SImode, CX_REG);
+   rtx_insn *insn;
+ 
+   /* There is no "pascal" calling convention in any 64bit ABI.  */
+   gcc_assert (!TARGET_64BIT);
+ 
+   insn = emit_insn (gen_pop (ecx));
+   m->fs.cfa_offset -= UNITS_PER_WORD;
+   m->fs.sp_offset -= UNITS_PER_WORD;
+ 
+   rtx x = plus_constant (Pmode, stack_pointer_rtx, UNITS_PER_WORD);
+   x = gen_rtx_SET (stack_pointer_rtx, x);
+   add_reg_note (insn, REG_CFA_ADJUST_CFA, x);
+   add_reg_note (insn, REG_CFA_REGISTER, gen_rtx_SET (ecx, pc_rtx));
+   RTX_FRAME_RELATED_P (insn) = 1;
+ 
+   x = gen_rtx_PLUS (Pmode, stack_pointer_rtx, popc);
+   x = gen_rtx_SET (stack_pointer_rtx, x);
+   insn = emit_insn (x);
+   add_reg_note (insn, REG_CFA_ADJUST_CFA, x);
+   RTX_FRAME_RELATED_P (insn) = 1;
+ 
+   /* Now return address is in ECX.  */
+   emit_jump_insn (gen_simple_return_indirect_internal (ecx));
+ }
+ 
  /* Output the assembly for a call instruction.  */
  
  const char *
diff -Nrcpad gcc-7.3.0/gcc/config/i386/i386.h gcc-7.4.0/gcc/config/i386/i386.h
*** gcc-7.3.0/gcc/config/i386/i386.h	Tue Jan 16 11:10:44 2018
--- gcc-7.4.0/gcc/config/i386/i386.h	Sun Nov 18 21:36:30 2018
*************** extern const char *host_detect_local_cpu
*** 759,766 ****
  #define PARM_BOUNDARY BITS_PER_WORD
  
  /* Boundary (in *bits*) on which stack pointer should be aligned.  */
! #define STACK_BOUNDARY \
!  (TARGET_64BIT && ix86_abi == MS_ABI ? 128 : BITS_PER_WORD)
  
  /* Stack boundary of the main function guaranteed by OS.  */
  #define MAIN_STACK_BOUNDARY (TARGET_64BIT ? 128 : 32)
--- 759,765 ----
  #define PARM_BOUNDARY BITS_PER_WORD
  
  /* Boundary (in *bits*) on which stack pointer should be aligned.  */
! #define STACK_BOUNDARY (TARGET_64BIT_MS_ABI ? 128 : BITS_PER_WORD)
  
  /* Stack boundary of the main function guaranteed by OS.  */
  #define MAIN_STACK_BOUNDARY (TARGET_64BIT ? 128 : 32)
*************** enum reg_class
*** 1557,1566 ****
  #define FIRST_FLOAT_REG FIRST_STACK_REG
  #define STACK_TOP_P(X) (REG_P (X) && REGNO (X) == FIRST_FLOAT_REG)
  
! #define SSE_REGNO(N) \
!   ((N) < 8 ? FIRST_SSE_REG + (N) \
!          : (N) <= LAST_REX_SSE_REG ? (FIRST_REX_SSE_REG + (N) - 8) \
!                                    : (FIRST_EXT_REX_SSE_REG + (N) - 16))
  
  /* The class value for index registers, and the one for base regs.  */
  
--- 1556,1565 ----
  #define FIRST_FLOAT_REG FIRST_STACK_REG
  #define STACK_TOP_P(X) (REG_P (X) && REGNO (X) == FIRST_FLOAT_REG)
  
! #define GET_SSE_REGNO(N)			\
!   ((N) < 8 ? FIRST_SSE_REG + (N)		\
!    : (N) < 16 ? FIRST_REX_SSE_REG + (N) - 8	\
!    : FIRST_EXT_REX_SSE_REG + (N) - 16)
  
  /* The class value for index registers, and the one for base regs.  */
  
*************** extern void debug_dispatch_window (int);
*** 2719,2724 ****
--- 2718,2728 ----
  #define TARGET_RECIP_VEC_DIV	((recip_mask & RECIP_MASK_VEC_DIV) != 0)
  #define TARGET_RECIP_VEC_SQRT	((recip_mask & RECIP_MASK_VEC_SQRT) != 0)
  
+ 
+ #define TARGET_INDIRECT_BRANCH_REGISTER \
+   (ix86_indirect_branch_register \
+    || cfun->machine->indirect_branch_type != indirect_branch_keep)
+ 
  #define IX86_HLE_ACQUIRE (1 << 16)
  #define IX86_HLE_RELEASE (1 << 17)
  
diff -Nrcpad gcc-7.3.0/gcc/config/i386/i386.md gcc-7.4.0/gcc/config/i386/i386.md
*** gcc-7.3.0/gcc/config/i386/i386.md	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/config/i386/i386.md	Tue Aug 21 16:27:22 2018
***************
*** 739,745 ****
  	   (if_then_else (match_operand 1 "constant_call_address_operand")
  	     (const_string "none")
  	     (const_string "load"))
! 	 (and (eq_attr "type" "alu1,negnot,ishift1,sselog1,sseshuf1")
  	      (match_operand 1 "memory_operand"))
  	   (const_string "both")
  	 (and (match_operand 0 "memory_operand")
--- 739,745 ----
  	   (if_then_else (match_operand 1 "constant_call_address_operand")
  	     (const_string "none")
  	     (const_string "load"))
! 	 (and (eq_attr "type" "alu1,negnot,ishift1,rotate1,sselog1,sseshuf1")
  	      (match_operand 1 "memory_operand"))
  	   (const_string "both")
  	 (and (match_operand 0 "memory_operand")
***************
*** 750,756 ****
  	 (match_operand 1 "memory_operand")
  	   (const_string "load")
  	 (and (eq_attr "type"
! 		 "!alu1,negnot,ishift1,
  		   imov,imovx,icmp,test,bitmanip,
  		   fmov,fcmp,fsgn,
  		   sse,ssemov,ssecmp,ssecomi,ssecvt,ssecvt1,sseicvt,
--- 750,756 ----
  	 (match_operand 1 "memory_operand")
  	   (const_string "load")
  	 (and (eq_attr "type"
! 		 "!alu1,negnot,ishift1,rotate1,
  		   imov,imovx,icmp,test,bitmanip,
  		   fmov,fcmp,fsgn,
  		   sse,ssemov,ssecmp,ssecomi,ssecvt,ssecvt1,sseicvt,
***************
*** 6685,6690 ****
--- 6685,6704 ----
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "<MODE>")])
  
+ (define_insn "*add<mode>3_carry_0"
+   [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m")
+ 	(plus:SWI
+ 	  (match_operator:SWI 3 "ix86_carry_flag_operator"
+ 	    [(match_operand 2 "flags_reg_operand") (const_int 0)])
+ 	  (match_operand:SWI 1 "nonimmediate_operand" "0")))
+    (clobber (reg:CC FLAGS_REG))]
+   "ix86_unary_operator_ok (PLUS, <MODE>mode, operands)"
+   "adc{<imodesuffix>}\t{$0, %0|%0, 0}"
+   [(set_attr "type" "alu")
+    (set_attr "use_carry" "1")
+    (set_attr "pent_pair" "pu")
+    (set_attr "mode" "<MODE>")])
+ 
  (define_insn "*addsi3_carry_zext"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(zero_extend:DI
***************
*** 6701,6706 ****
--- 6715,6734 ----
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "SI")])
  
+ (define_insn "*addsi3_carry_zext_0"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(zero_extend:DI
+ 	  (plus:SI (match_operator:SI 2 "ix86_carry_flag_operator"
+ 		    [(reg FLAGS_REG) (const_int 0)])
+ 		   (match_operand:SI 1 "register_operand" "0"))))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_64BIT"
+   "adc{l}\t{$0, %k0|%k0, 0}"
+   [(set_attr "type" "alu")
+    (set_attr "use_carry" "1")
+    (set_attr "pent_pair" "pu")
+    (set_attr "mode" "SI")])
+ 
  ;; There is no point to generate ADCX instruction. ADC is shorter and faster.
  
  (define_insn "addcarry<mode>"
***************
*** 6741,6746 ****
--- 6769,6788 ----
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "<MODE>")])
  
+ (define_insn "*sub<mode>3_carry_0"
+   [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m")
+ 	(minus:SWI
+ 	  (match_operand:SWI 1 "nonimmediate_operand" "0")
+ 	  (match_operator:SWI 3 "ix86_carry_flag_operator"
+ 	    [(match_operand 2 "flags_reg_operand") (const_int 0)])))
+    (clobber (reg:CC FLAGS_REG))]
+   "ix86_unary_operator_ok (MINUS, <MODE>mode, operands)"
+   "sbb{<imodesuffix>}\t{$0, %0|%0, 0}"
+   [(set_attr "type" "alu")
+    (set_attr "use_carry" "1")
+    (set_attr "pent_pair" "pu")
+    (set_attr "mode" "<MODE>")])
+ 
  (define_insn "*subsi3_carry_zext"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(zero_extend:DI
***************
*** 6758,6763 ****
--- 6800,6820 ----
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "SI")])
  
+ (define_insn "*subsi3_carry_zext_0"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(zero_extend:DI
+ 	  (minus:SI
+ 	    (match_operand:SI 1 "register_operand" "0")
+ 	    (match_operator:SI 2 "ix86_carry_flag_operator"
+ 	      [(reg FLAGS_REG) (const_int 0)]))))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_64BIT"
+   "sbb{l}\t{$0, %k0|%k0, 0}"
+   [(set_attr "type" "alu")
+    (set_attr "use_carry" "1")
+    (set_attr "pent_pair" "pu")
+    (set_attr "mode" "SI")])
+ 
  (define_insn "subborrow<mode>"
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
***************
*** 8584,8597 ****
  })
  
  (define_insn "*andndi3_doubleword"
!   [(set (match_operand:DI 0 "register_operand" "=r,&r")
  	(and:DI
! 	  (not:DI (match_operand:DI 1 "register_operand" "r,0"))
! 	  (match_operand:DI 2 "nonimmediate_operand" "rm,rm")))
     (clobber (reg:CC FLAGS_REG))]
    "!TARGET_64BIT && TARGET_STV && TARGET_SSE2"
    "#"
!   [(set_attr "isa" "bmi,*")])
  
  (define_split
    [(set (match_operand:DI 0 "register_operand")
--- 8641,8654 ----
  })
  
  (define_insn "*andndi3_doubleword"
!   [(set (match_operand:DI 0 "register_operand" "=&r,r,r,&r")
  	(and:DI
! 	  (not:DI (match_operand:DI 1 "register_operand" "r,0,r,0"))
! 	  (match_operand:DI 2 "nonimmediate_operand" "rm,rm,0,rm")))
     (clobber (reg:CC FLAGS_REG))]
    "!TARGET_64BIT && TARGET_STV && TARGET_SSE2"
    "#"
!   [(set_attr "isa" "bmi,bmi,bmi,*")])
  
  (define_split
    [(set (match_operand:DI 0 "register_operand")
***************
*** 9916,9922 ****
  {
    switch (get_attr_type (insn))
      {
!     case TYPE_ALU:
        gcc_assert (operands[1] == const1_rtx);
        return "add{b}\t%0, %0";
  
--- 9973,9979 ----
  {
    switch (get_attr_type (insn))
      {
!     case TYPE_ALU1:
        gcc_assert (operands[1] == const1_rtx);
        return "add{b}\t%0, %0";
  
***************
*** 9932,9943 ****
       (cond [(and (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		      (match_operand 0 "register_operand"))
  		 (match_operand 1 "const1_operand"))
! 	      (const_string "alu")
  	   ]
  	   (const_string "ishift1")))
     (set (attr "length_immediate")
       (if_then_else
!        (ior (eq_attr "type" "alu")
  	    (and (eq_attr "type" "ishift1")
  		 (and (match_operand 1 "const1_operand")
  		      (ior (match_test "TARGET_SHIFT1")
--- 9989,10000 ----
       (cond [(and (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		      (match_operand 0 "register_operand"))
  		 (match_operand 1 "const1_operand"))
! 	      (const_string "alu1")
  	   ]
  	   (const_string "ishift1")))
     (set (attr "length_immediate")
       (if_then_else
!        (ior (eq_attr "type" "alu1")
  	    (and (eq_attr "type" "ishift1")
  		 (and (match_operand 1 "const1_operand")
  		      (ior (match_test "TARGET_SHIFT1")
***************
*** 11625,11631 ****
    [(set (pc) (match_operand 0 "indirect_branch_operand"))]
    ""
  {
!   if (TARGET_X32 || ix86_indirect_branch_register)
      operands[0] = convert_memory_address (word_mode, operands[0]);
    cfun->machine->has_local_indirect_jump = true;
  })
--- 11682,11688 ----
    [(set (pc) (match_operand 0 "indirect_branch_operand"))]
    ""
  {
!   if (TARGET_X32 || TARGET_INDIRECT_BRANCH_REGISTER)
      operands[0] = convert_memory_address (word_mode, operands[0]);
    cfun->machine->has_local_indirect_jump = true;
  })
***************
*** 11633,11639 ****
  (define_insn "*indirect_jump"
    [(set (pc) (match_operand:W 0 "indirect_branch_operand" "rBw"))]
    ""
!   "* return ix86_output_indirect_jmp (operands[0], false);"
    [(set (attr "type")
       (if_then_else (match_test "(cfun->machine->indirect_branch_type
  				 != indirect_branch_keep)")
--- 11690,11696 ----
  (define_insn "*indirect_jump"
    [(set (pc) (match_operand:W 0 "indirect_branch_operand" "rBw"))]
    ""
!   "* return ix86_output_indirect_jmp (operands[0]);"
    [(set (attr "type")
       (if_then_else (match_test "(cfun->machine->indirect_branch_type
  				 != indirect_branch_keep)")
***************
*** 11679,11685 ****
  					 OPTAB_DIRECT);
      }
  
!   if (TARGET_X32 || ix86_indirect_branch_register)
      operands[0] = convert_memory_address (word_mode, operands[0]);
    cfun->machine->has_local_indirect_jump = true;
  })
--- 11736,11742 ----
  					 OPTAB_DIRECT);
      }
  
!   if (TARGET_X32 || TARGET_INDIRECT_BRANCH_REGISTER)
      operands[0] = convert_memory_address (word_mode, operands[0]);
    cfun->machine->has_local_indirect_jump = true;
  })
***************
*** 11688,11694 ****
    [(set (pc) (match_operand:W 0 "indirect_branch_operand" "rBw"))
     (use (label_ref (match_operand 1)))]
    ""
!   "* return ix86_output_indirect_jmp (operands[0], false);"
    [(set (attr "type")
       (if_then_else (match_test "(cfun->machine->indirect_branch_type
  				 != indirect_branch_keep)")
--- 11745,11751 ----
    [(set (pc) (match_operand:W 0 "indirect_branch_operand" "rBw"))
     (use (label_ref (match_operand 1)))]
    ""
!   "* return ix86_output_indirect_jmp (operands[0]);"
    [(set (attr "type")
       (if_then_else (match_test "(cfun->machine->indirect_branch_type
  				 != indirect_branch_keep)")
***************
*** 11730,11735 ****
--- 11787,11793 ----
    "(peep2_reg_dead_p (3, operands[1])
      || operands_match_p (operands[1], operands[3]))
     && ! reg_overlap_mentioned_p (operands[3], operands[0])
+    && ! reg_overlap_mentioned_p (operands[3], operands[4])
     && ! reg_set_p (operands[3], operands[4])
     && peep2_regno_dead_p (0, FLAGS_REG)"
    [(parallel [(set (match_dup 5) (match_dup 0))
***************
*** 11776,11781 ****
--- 11834,11840 ----
    "(peep2_reg_dead_p (3, operands[1])
      || operands_match_p (operands[1], operands[3]))
     && ! reg_overlap_mentioned_p (operands[3], operands[0])
+    && ! reg_overlap_mentioned_p (operands[3], operands[4])
     && ! reg_set_p (operands[3], operands[4])
     && peep2_regno_dead_p (0, FLAGS_REG)"
    [(parallel [(set (match_dup 5) (match_dup 0))
***************
*** 11852,11858 ****
  		     (match_operand:SI 0 "register_no_elim_operand" "U")
  		     (match_operand:SI 1 "GOT32_symbol_operand"))))
  	 (match_operand 2))]
!   "!TARGET_MACHO && !TARGET_64BIT && SIBLING_CALL_P (insn)"
  {
    rtx fnaddr = gen_rtx_PLUS (SImode, operands[0], operands[1]);
    fnaddr = gen_const_mem (SImode, fnaddr);
--- 11911,11920 ----
  		     (match_operand:SI 0 "register_no_elim_operand" "U")
  		     (match_operand:SI 1 "GOT32_symbol_operand"))))
  	 (match_operand 2))]
!   "!TARGET_MACHO
!   && !TARGET_64BIT
!   && !TARGET_INDIRECT_BRANCH_REGISTER
!   && SIBLING_CALL_P (insn)"
  {
    rtx fnaddr = gen_rtx_PLUS (SImode, operands[0], operands[1]);
    fnaddr = gen_const_mem (SImode, fnaddr);
***************
*** 11871,11877 ****
    [(call (mem:QI (match_operand:W 0 "memory_operand" "m"))
  	 (match_operand 1))
     (unspec [(const_int 0)] UNSPEC_PEEPSIB)]
!   "!TARGET_X32 && !ix86_indirect_branch_register"
    "* return ix86_output_call_insn (insn, operands[0]);"
    [(set_attr "type" "call")])
  
--- 11933,11939 ----
    [(call (mem:QI (match_operand:W 0 "memory_operand" "m"))
  	 (match_operand 1))
     (unspec [(const_int 0)] UNSPEC_PEEPSIB)]
!   "!TARGET_X32 && !TARGET_INDIRECT_BRANCH_REGISTER"
    "* return ix86_output_call_insn (insn, operands[0]);"
    [(set_attr "type" "call")])
  
***************
*** 11881,11887 ****
     (call (mem:QI (match_dup 0))
  	 (match_operand 3))]
    "!TARGET_X32
!    && !ix86_indirect_branch_register
     && SIBLING_CALL_P (peep2_next_insn (1))
     && !reg_mentioned_p (operands[0],
  			CALL_INSN_FUNCTION_USAGE (peep2_next_insn (1)))"
--- 11943,11949 ----
     (call (mem:QI (match_dup 0))
  	 (match_operand 3))]
    "!TARGET_X32
!    && !TARGET_INDIRECT_BRANCH_REGISTER
     && SIBLING_CALL_P (peep2_next_insn (1))
     && !reg_mentioned_p (operands[0],
  			CALL_INSN_FUNCTION_USAGE (peep2_next_insn (1)))"
***************
*** 11896,11902 ****
     (call (mem:QI (match_dup 0))
  	 (match_operand 3))]
    "!TARGET_X32
!    && !ix86_indirect_branch_register
     && SIBLING_CALL_P (peep2_next_insn (2))
     && !reg_mentioned_p (operands[0],
  			CALL_INSN_FUNCTION_USAGE (peep2_next_insn (2)))"
--- 11958,11964 ----
     (call (mem:QI (match_dup 0))
  	 (match_operand 3))]
    "!TARGET_X32
!    && !TARGET_INDIRECT_BRANCH_REGISTER
     && SIBLING_CALL_P (peep2_next_insn (2))
     && !reg_mentioned_p (operands[0],
  			CALL_INSN_FUNCTION_USAGE (peep2_next_insn (2)))"
***************
*** 11994,12000 ****
          (match_operand:W 1 "memory_operand"))
     (set (pc) (match_dup 0))]
    "!TARGET_X32
!    && !ix86_indirect_branch_register
     && peep2_reg_dead_p (2, operands[0])"
    [(set (pc) (match_dup 1))])
  
--- 12056,12062 ----
          (match_operand:W 1 "memory_operand"))
     (set (pc) (match_dup 0))]
    "!TARGET_X32
!    && !TARGET_INDIRECT_BRANCH_REGISTER
     && peep2_reg_dead_p (2, operands[0])"
    [(set (pc) (match_dup 1))])
  
***************
*** 12055,12061 ****
  			  (match_operand:SI 1 "register_no_elim_operand" "U")
  			  (match_operand:SI 2 "GOT32_symbol_operand"))))
  	 (match_operand 3)))]
!   "!TARGET_MACHO && !TARGET_64BIT && SIBLING_CALL_P (insn)"
  {
    rtx fnaddr = gen_rtx_PLUS (SImode, operands[1], operands[2]);
    fnaddr = gen_const_mem (SImode, fnaddr);
--- 12117,12126 ----
  			  (match_operand:SI 1 "register_no_elim_operand" "U")
  			  (match_operand:SI 2 "GOT32_symbol_operand"))))
  	 (match_operand 3)))]
!   "!TARGET_MACHO
!    && !TARGET_64BIT
!    && !TARGET_INDIRECT_BRANCH_REGISTER
!    && SIBLING_CALL_P (insn)"
  {
    rtx fnaddr = gen_rtx_PLUS (SImode, operands[1], operands[2]);
    fnaddr = gen_const_mem (SImode, fnaddr);
***************
*** 12076,12082 ****
   	(call (mem:QI (match_operand:W 1 "memory_operand" "m"))
  	      (match_operand 2)))
     (unspec [(const_int 0)] UNSPEC_PEEPSIB)]
!   "!TARGET_X32 && !ix86_indirect_branch_register"
    "* return ix86_output_call_insn (insn, operands[1]);"
    [(set_attr "type" "callv")])
  
--- 12141,12147 ----
   	(call (mem:QI (match_operand:W 1 "memory_operand" "m"))
  	      (match_operand 2)))
     (unspec [(const_int 0)] UNSPEC_PEEPSIB)]
!   "!TARGET_X32 && !TARGET_INDIRECT_BRANCH_REGISTER"
    "* return ix86_output_call_insn (insn, operands[1]);"
    [(set_attr "type" "callv")])
  
***************
*** 12087,12093 ****
     (call (mem:QI (match_dup 0))
  		 (match_operand 3)))]
    "!TARGET_X32
!    && !ix86_indirect_branch_register
     && SIBLING_CALL_P (peep2_next_insn (1))
     && !reg_mentioned_p (operands[0],
  			CALL_INSN_FUNCTION_USAGE (peep2_next_insn (1)))"
--- 12152,12158 ----
     (call (mem:QI (match_dup 0))
  		 (match_operand 3)))]
    "!TARGET_X32
!    && !TARGET_INDIRECT_BRANCH_REGISTER
     && SIBLING_CALL_P (peep2_next_insn (1))
     && !reg_mentioned_p (operands[0],
  			CALL_INSN_FUNCTION_USAGE (peep2_next_insn (1)))"
***************
*** 12104,12110 ****
  	(call (mem:QI (match_dup 0))
  	      (match_operand 3)))]
    "!TARGET_X32
!    && !ix86_indirect_branch_register
     && SIBLING_CALL_P (peep2_next_insn (2))
     && !reg_mentioned_p (operands[0],
  			CALL_INSN_FUNCTION_USAGE (peep2_next_insn (2)))"
--- 12169,12175 ----
  	(call (mem:QI (match_dup 0))
  	      (match_operand 3)))]
    "!TARGET_X32
!    && !TARGET_INDIRECT_BRANCH_REGISTER
     && SIBLING_CALL_P (peep2_next_insn (2))
     && !reg_mentioned_p (operands[0],
  			CALL_INSN_FUNCTION_USAGE (peep2_next_insn (2)))"
***************
*** 12354,12364 ****
     (set_attr "prefix_rep" "1")
     (set_attr "modrm" "0")])
  
! (define_insn "simple_return_pop_internal"
    [(simple_return)
     (use (match_operand:SI 0 "const_int_operand"))]
    "reload_completed"
    "%!ret\t%0"
    [(set_attr "length" "3")
     (set_attr "atom_unit" "jeu")
     (set_attr "length_immediate" "2")
--- 12419,12432 ----
     (set_attr "prefix_rep" "1")
     (set_attr "modrm" "0")])
  
! (define_insn_and_split "simple_return_pop_internal"
    [(simple_return)
     (use (match_operand:SI 0 "const_int_operand"))]
    "reload_completed"
    "%!ret\t%0"
+   "&& cfun->machine->function_return_type != indirect_branch_keep"
+   [(const_int 0)]
+   "ix86_split_simple_return_pop_internal (operands[0]); DONE;"
    [(set_attr "length" "3")
     (set_attr "atom_unit" "jeu")
     (set_attr "length_immediate" "2")
***************
*** 12369,12375 ****
    [(simple_return)
     (use (match_operand:SI 0 "register_operand" "r"))]
    "reload_completed"
!   "* return ix86_output_indirect_jmp (operands[0], true);"
    [(set (attr "type")
       (if_then_else (match_test "(cfun->machine->indirect_branch_type
  				 != indirect_branch_keep)")
--- 12437,12443 ----
    [(simple_return)
     (use (match_operand:SI 0 "register_operand" "r"))]
    "reload_completed"
!   "* return ix86_output_indirect_function_return (operands[0]);"
    [(set (attr "type")
       (if_then_else (match_test "(cfun->machine->indirect_branch_type
  				 != indirect_branch_keep)")
***************
*** 12524,12530 ****
       stack address we wish to restore.  */
    tmp = gen_rtx_PLUS (Pmode, arg_pointer_rtx, sa);
    tmp = plus_constant (Pmode, tmp, -UNITS_PER_WORD);
!   tmp = gen_rtx_MEM (Pmode, tmp);
    emit_move_insn (tmp, ra);
  
    emit_jump_insn (gen_eh_return_internal ());
--- 12592,12601 ----
       stack address we wish to restore.  */
    tmp = gen_rtx_PLUS (Pmode, arg_pointer_rtx, sa);
    tmp = plus_constant (Pmode, tmp, -UNITS_PER_WORD);
!   /* Return address is always in word_mode.  */
!   tmp = gen_rtx_MEM (word_mode, tmp);
!   if (GET_MODE (ra) != word_mode)
!     ra = convert_to_mode (word_mode, ra, 1);
    emit_move_insn (tmp, ra);
  
    emit_jump_insn (gen_eh_return_internal ());
***************
*** 15527,15533 ****
    "(TARGET_USE_FANCY_MATH_387
      && (!(SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)
  	|| TARGET_MIX_SSE_I387)
!     && flag_unsafe_math_optimizations)
     || (SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH
         && !flag_trapping_math && !flag_rounding_math)"
  {
--- 15598,15605 ----
    "(TARGET_USE_FANCY_MATH_387
      && (!(SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)
  	|| TARGET_MIX_SSE_I387)
!     && flag_unsafe_math_optimizations
!     && (flag_fp_int_builtin_inexact || !flag_trapping_math))
     || (SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH
         && !flag_trapping_math && !flag_rounding_math)"
  {
diff -Nrcpad gcc-7.3.0/gcc/config/i386/predicates.md gcc-7.4.0/gcc/config/i386/predicates.md
*** gcc-7.3.0/gcc/config/i386/predicates.md	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/config/i386/predicates.md	Wed Oct  3 21:49:11 2018
***************
*** 635,641 ****
  ;; Test for a valid operand for indirect branch.
  (define_predicate "indirect_branch_operand"
    (ior (match_operand 0 "register_operand")
!        (and (not (match_test "ix86_indirect_branch_register"))
  	    (not (match_test "TARGET_X32"))
  	    (match_operand 0 "memory_operand"))))
  
--- 635,641 ----
  ;; Test for a valid operand for indirect branch.
  (define_predicate "indirect_branch_operand"
    (ior (match_operand 0 "register_operand")
!        (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
  	    (not (match_test "TARGET_X32"))
  	    (match_operand 0 "memory_operand"))))
  
***************
*** 679,685 ****
    (ior (match_test "constant_call_address_operand
  		     (op, mode == VOIDmode ? mode : Pmode)")
         (match_operand 0 "call_register_no_elim_operand")
!        (and (not (match_test "ix86_indirect_branch_register"))
  	    (ior (and (not (match_test "TARGET_X32"))
  		      (match_operand 0 "memory_operand"))
  		 (and (match_test "TARGET_X32 && Pmode == DImode")
--- 679,685 ----
    (ior (match_test "constant_call_address_operand
  		     (op, mode == VOIDmode ? mode : Pmode)")
         (match_operand 0 "call_register_no_elim_operand")
!        (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
  	    (ior (and (not (match_test "TARGET_X32"))
  		      (match_operand 0 "memory_operand"))
  		 (and (match_test "TARGET_X32 && Pmode == DImode")
***************
*** 690,696 ****
    (ior (match_test "constant_call_address_operand
  		     (op, mode == VOIDmode ? mode : Pmode)")
         (match_operand 0 "register_no_elim_operand")
!        (and (not (match_test "ix86_indirect_branch_register"))
  	    (ior (and (not (match_test "TARGET_X32"))
  		      (match_operand 0 "sibcall_memory_operand"))
  		 (and (match_test "TARGET_X32 && Pmode == DImode")
--- 690,696 ----
    (ior (match_test "constant_call_address_operand
  		     (op, mode == VOIDmode ? mode : Pmode)")
         (match_operand 0 "register_no_elim_operand")
!        (and (not (match_test "TARGET_INDIRECT_BRANCH_REGISTER"))
  	    (ior (and (not (match_test "TARGET_X32"))
  		      (match_operand 0 "sibcall_memory_operand"))
  		 (and (match_test "TARGET_X32 && Pmode == DImode")
***************
*** 1499,1505 ****
        if (GET_CODE (elt) != SET
  	  || GET_CODE (SET_DEST (elt)) != REG
  	  || GET_MODE (SET_DEST (elt)) != V8SImode
! 	  || REGNO (SET_DEST (elt)) != SSE_REGNO (i)
  	  || SET_SRC (elt) != CONST0_RTX (V8SImode))
  	return false;
      }
--- 1499,1505 ----
        if (GET_CODE (elt) != SET
  	  || GET_CODE (SET_DEST (elt)) != REG
  	  || GET_MODE (SET_DEST (elt)) != V8SImode
! 	  || REGNO (SET_DEST (elt)) != GET_SSE_REGNO (i)
  	  || SET_SRC (elt) != CONST0_RTX (V8SImode))
  	return false;
      }
diff -Nrcpad gcc-7.3.0/gcc/config/i386/sse.md gcc-7.4.0/gcc/config/i386/sse.md
*** gcc-7.3.0/gcc/config/i386/sse.md	Fri Dec 15 22:08:20 2017
--- gcc-7.4.0/gcc/config/i386/sse.md	Thu Nov 22 22:46:54 2018
***************
*** 21,26 ****
--- 21,29 ----
    ;; SSE
    UNSPEC_MOVNT
  
+   ;; SSE2
+   UNSPEC_MOVDI_TO_SSE
+ 
    ;; SSE3
    UNSPEC_LDDQU
  
***************
*** 1113,1122 ****
  ;; from there.
  
  (define_insn_and_split "movdi_to_sse"
!   [(parallel
!     [(set (match_operand:V4SI 0 "register_operand" "=?x,x")
! 	  (subreg:V4SI (match_operand:DI 1 "nonimmediate_operand" "r,m") 0))
!      (clobber (match_scratch:V4SI 2 "=&x,X"))])]
    "!TARGET_64BIT && TARGET_SSE2 && TARGET_INTER_UNIT_MOVES_TO_VEC"
    "#"
    "&& reload_completed"
--- 1116,1125 ----
  ;; from there.
  
  (define_insn_and_split "movdi_to_sse"
!   [(set (match_operand:V4SI 0 "register_operand" "=?x,x")
! 	(unspec:V4SI [(match_operand:DI 1 "nonimmediate_operand" "r,m")]
! 		     UNSPEC_MOVDI_TO_SSE))
!      (clobber (match_scratch:V4SI 2 "=&x,X"))]
    "!TARGET_64BIT && TARGET_SSE2 && TARGET_INTER_UNIT_MOVES_TO_VEC"
    "#"
    "&& reload_completed"
***************
*** 1134,1144 ****
  					     operands[2]));
     }
   else if (memory_operand (operands[1], DImode))
!    {
!      rtx tmp = gen_reg_rtx (V2DImode);
!      emit_insn (gen_vec_concatv2di (tmp, operands[1], const0_rtx));
!      emit_move_insn (operands[0], gen_lowpart (V4SImode, tmp));
!    }
   else
     gcc_unreachable ();
   DONE;
--- 1137,1144 ----
  					     operands[2]));
     }
   else if (memory_operand (operands[1], DImode))
!    emit_insn (gen_vec_concatv2di (gen_lowpart (V2DImode, operands[0]),
! 				  operands[1], const0_rtx));
   else
     gcc_unreachable ();
   DONE;
***************
*** 4398,4404 ****
  	  (match_operand:VF_128 1 "register_operand" "v")
  	  (const_int 1)))]
    "TARGET_AVX512F && TARGET_64BIT"
!   "vcvtusi2<ssescalarmodesuffix>\t{%2, <round_op3>%1, %0|%0, %1<round_op3>, %2}"
    [(set_attr "type" "sseicvt")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<ssescalarmode>")])
--- 4398,4404 ----
  	  (match_operand:VF_128 1 "register_operand" "v")
  	  (const_int 1)))]
    "TARGET_AVX512F && TARGET_64BIT"
!   "vcvtusi2<ssescalarmodesuffix>{q}\t{%2, <round_op3>%1, %0|%0, %1<round_op3>, %2}"
    [(set_attr "type" "sseicvt")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<ssescalarmode>")])
***************
*** 8883,8896 ****
  ;; see comment above inline_secondary_memory_needed function in i386.c
  (define_insn "sse2_loadhpd"
    [(set (match_operand:V2DF 0 "nonimmediate_operand"
! 	  "=x,v,x,v,o,o ,o")
  	(vec_concat:V2DF
  	  (vec_select:DF
  	    (match_operand:V2DF 1 "nonimmediate_operand"
! 	  " 0,v,0,v,0,0 ,0")
  	    (parallel [(const_int 0)]))
  	  (match_operand:DF 2 "nonimmediate_operand"
! 	  " m,m,x,v,x,*f,r")))]
    "TARGET_SSE2 && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
     movhpd\t{%2, %0|%0, %2}
--- 8883,8896 ----
  ;; see comment above inline_secondary_memory_needed function in i386.c
  (define_insn "sse2_loadhpd"
    [(set (match_operand:V2DF 0 "nonimmediate_operand"
! 	  "=x,v,x,v ,o,o ,o")
  	(vec_concat:V2DF
  	  (vec_select:DF
  	    (match_operand:V2DF 1 "nonimmediate_operand"
! 	  " 0,v,0,v ,0,0 ,0")
  	    (parallel [(const_int 0)]))
  	  (match_operand:DF 2 "nonimmediate_operand"
! 	  " m,m,x,Yv,x,*f,r")))]
    "TARGET_SSE2 && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
     movhpd\t{%2, %0|%0, %2}
***************
*** 9938,9948 ****
     && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
    "@
     p<plusminus_mnemonic><ssemodesuffix>\t{%2, %0|%0, %2}
!    vp<plusminus_mnemonic><ssemodesuffix>\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
    [(set_attr "isa" "noavx,avx")
     (set_attr "type" "sseiadd")
     (set_attr "prefix_data16" "1,*")
!    (set_attr "prefix" "<mask_prefix3>")
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "*<plusminus_insn><mode>3_mask"
--- 9938,9948 ----
     && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
    "@
     p<plusminus_mnemonic><ssemodesuffix>\t{%2, %0|%0, %2}
!    vp<plusminus_mnemonic><ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "isa" "noavx,avx")
     (set_attr "type" "sseiadd")
     (set_attr "prefix_data16" "1,*")
!    (set_attr "prefix" "orig,vex")
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "*<plusminus_insn><mode>3_mask"
***************
*** 10683,10693 ****
         (const_string "0")))
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "<shift_insn><mode>3<mask_name>"
    [(set (match_operand:VI2_AVX2_AVX512BW 0 "register_operand" "=x,v")
  	(any_lshift:VI2_AVX2_AVX512BW
  	  (match_operand:VI2_AVX2_AVX512BW 1 "register_operand" "0,v")
! 	  (match_operand:DI 2 "nonmemory_operand" "xN,vN")))]
    "TARGET_SSE2 && <mask_mode512bit_condition> && <mask_avx512bw_condition>"
    "@
     p<vshift><ssemodesuffix>\t{%2, %0|%0, %2}
--- 10683,10696 ----
         (const_string "0")))
     (set_attr "mode" "<sseinsnmode>")])
  
+ (define_mode_attr vshift_count
+   [(V32HI "v") (V16HI "Yv") (V8HI "Yv")])
+ 
  (define_insn "<shift_insn><mode>3<mask_name>"
    [(set (match_operand:VI2_AVX2_AVX512BW 0 "register_operand" "=x,v")
  	(any_lshift:VI2_AVX2_AVX512BW
  	  (match_operand:VI2_AVX2_AVX512BW 1 "register_operand" "0,v")
! 	  (match_operand:DI 2 "nonmemory_operand" "xN,<vshift_count>N")))]
    "TARGET_SSE2 && <mask_mode512bit_condition> && <mask_avx512bw_condition>"
    "@
     p<vshift><ssemodesuffix>\t{%2, %0|%0, %2}
***************
*** 10706,10712 ****
    [(set (match_operand:VI48_AVX2 0 "register_operand" "=x,x,v")
  	(any_lshift:VI48_AVX2
  	  (match_operand:VI48_AVX2 1 "register_operand" "0,x,v")
! 	  (match_operand:DI 2 "nonmemory_operand" "xN,xN,vN")))]
    "TARGET_SSE2 && <mask_mode512bit_condition>"
    "@
     p<vshift><ssemodesuffix>\t{%2, %0|%0, %2}
--- 10709,10715 ----
    [(set (match_operand:VI48_AVX2 0 "register_operand" "=x,x,v")
  	(any_lshift:VI48_AVX2
  	  (match_operand:VI48_AVX2 1 "register_operand" "0,x,v")
! 	  (match_operand:DI 2 "nonmemory_operand" "xN,xN,YvN")))]
    "TARGET_SSE2 && <mask_mode512bit_condition>"
    "@
     p<vshift><ssemodesuffix>\t{%2, %0|%0, %2}
***************
*** 11822,11828 ****
  	    (eq_attr "mode" "TI"))
         (const_string "1")
         (const_string "*")))
!    (set_attr "prefix" "<mask_prefix3>")
     (set (attr "mode")
  	(cond [(and (match_test "<MODE_SIZE> == 16")
  		    (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL"))
--- 11825,11831 ----
  	    (eq_attr "mode" "TI"))
         (const_string "1")
         (const_string "*")))
!    (set_attr "prefix" "orig,vex")
     (set (attr "mode")
  	(cond [(and (match_test "<MODE_SIZE> == 16")
  		    (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL"))
***************
*** 17245,17251 ****
  
    for (regno = 0; regno < nregs; regno++)
      XVECEXP (operands[0], 0, regno + 1)
!       = gen_rtx_SET (gen_rtx_REG (V8SImode, SSE_REGNO (regno)),
  		     CONST0_RTX (V8SImode));
  })
  
--- 17248,17254 ----
  
    for (regno = 0; regno < nregs; regno++)
      XVECEXP (operands[0], 0, regno + 1)
!       = gen_rtx_SET (gen_rtx_REG (V8SImode, GET_SSE_REGNO (regno)),
  		     CONST0_RTX (V8SImode));
  })
  
diff -Nrcpad gcc-7.3.0/gcc/config/m68k/m68k.c gcc-7.4.0/gcc/config/m68k/m68k.c
*** gcc-7.3.0/gcc/config/m68k/m68k.c	Mon Apr  3 22:30:56 2017
--- gcc-7.4.0/gcc/config/m68k/m68k.c	Mon Jan 29 21:00:52 2018
*************** static bool m68k_output_addr_const_extra
*** 185,190 ****
--- 185,192 ----
  static void m68k_init_sync_libfuncs (void) ATTRIBUTE_UNUSED;
  static enum flt_eval_method
  m68k_excess_precision (enum excess_precision_type);
+ static machine_mode m68k_promote_function_mode (const_tree, machine_mode,
+ 						int *, const_tree, int);
  
  /* Initialize the GCC target structure.  */
  
*************** m68k_excess_precision (enum excess_preci
*** 332,337 ****
--- 334,342 ----
  #undef TARGET_ATOMIC_TEST_AND_SET_TRUEVAL
  #define TARGET_ATOMIC_TEST_AND_SET_TRUEVAL 128
  
+ #undef TARGET_PROMOTE_FUNCTION_MODE
+ #define TARGET_PROMOTE_FUNCTION_MODE m68k_promote_function_mode
+ 
  static const struct attribute_spec m68k_attribute_table[] =
  {
    /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler,
*************** m68k_excess_precision (enum excess_preci
*** 6571,6574 ****
--- 6576,6595 ----
    return FLT_EVAL_METHOD_UNPREDICTABLE;
  }
  
+ /* Implement TARGET_PROMOTE_FUNCTION_MODE.  */
+ 
+ static machine_mode
+ m68k_promote_function_mode (const_tree type, machine_mode mode,
+                             int *punsignedp ATTRIBUTE_UNUSED,
+                             const_tree fntype ATTRIBUTE_UNUSED,
+                             int for_return)
+ {
+   /* Promote libcall arguments narrower than int to match the normal C
+      ABI (for which promotions are handled via
+      TARGET_PROMOTE_PROTOTYPES).  */
+   if (type == NULL_TREE && !for_return && (mode == QImode || mode == HImode))
+     return SImode;
+   return mode;
+ }
+ 
  #include "gt-m68k.h"
diff -Nrcpad gcc-7.3.0/gcc/config/msp430/msp430.c gcc-7.4.0/gcc/config/msp430/msp430.c
*** gcc-7.3.0/gcc/config/msp430/msp430.c	Sat Mar 11 01:43:48 2017
--- gcc-7.4.0/gcc/config/msp430/msp430.c	Sat Feb 17 00:25:15 2018
*************** msp430_hard_regno_nregs (int regno ATTRI
*** 905,910 ****
--- 905,912 ----
  {
    if (mode == PSImode && msp430x)
      return 1;
+   if (mode == CPSImode && msp430x)
+     return 2;
    return ((GET_MODE_SIZE (mode) + UNITS_PER_WORD - 1)
  	  / UNITS_PER_WORD);
  }
*************** msp430_hard_regno_nregs_with_padding (in
*** 927,932 ****
--- 929,936 ----
  {
    if (mode == PSImode)
      return 2;
+   if (mode == CPSImode)
+     return 4;
    return msp430_hard_regno_nregs (regno, mode);
  }
  
diff -Nrcpad gcc-7.3.0/gcc/config/nvptx/nvptx.c gcc-7.4.0/gcc/config/nvptx/nvptx.c
*** gcc-7.3.0/gcc/config/nvptx/nvptx.c	Tue Jul 18 13:06:07 2017
--- gcc-7.4.0/gcc/config/nvptx/nvptx.c	Tue Apr  3 14:04:22 2018
*************** output_init_frag (rtx sym)
*** 1875,1883 ****
    
    if (sym)
      {
!       fprintf (asm_out_file, "generic(");
        output_address (VOIDmode, sym);
!       fprintf (asm_out_file, val ? ") + " : ")");
      }
  
    if (!sym || val)
--- 1875,1889 ----
    
    if (sym)
      {
!       bool function = (SYMBOL_REF_DECL (sym)
! 		       && (TREE_CODE (SYMBOL_REF_DECL (sym)) == FUNCTION_DECL));
!       if (!function)
! 	fprintf (asm_out_file, "generic(");
        output_address (VOIDmode, sym);
!       if (!function)
! 	fprintf (asm_out_file, ")");
!       if (val)
! 	fprintf (asm_out_file, " + ");
      }
  
    if (!sym || val)
*************** static void
*** 2002,2007 ****
--- 2008,2016 ----
  nvptx_assemble_decl_begin (FILE *file, const char *name, const char *section,
  			   const_tree type, HOST_WIDE_INT size, unsigned align)
  {
+   bool atype = (TREE_CODE (type) == ARRAY_TYPE)
+     && (TYPE_DOMAIN (type) == NULL_TREE);
+ 
    while (TREE_CODE (type) == ARRAY_TYPE)
      type = TREE_TYPE (type);
  
*************** nvptx_assemble_decl_begin (FILE *file, c
*** 2041,2046 ****
--- 2050,2057 ----
      /* We make everything an array, to simplify any initialization
         emission.  */
      fprintf (file, "[" HOST_WIDE_INT_PRINT_DEC "]", init_frag.remaining);
+   else if (atype)
+     fprintf (file, "[]");
  }
  
  /* Called when the initializer for a decl has been completely output through
diff -Nrcpad gcc-7.3.0/gcc/config/pa/pa.c gcc-7.4.0/gcc/config/pa/pa.c
*** gcc-7.3.0/gcc/config/pa/pa.c	Sun Dec 17 17:02:10 2017
--- gcc-7.4.0/gcc/config/pa/pa.c	Sun Jul 29 16:03:58 2018
*************** pa_emit_move_sequence (rtx *operands, ma
*** 1725,1733 ****
  		}
  	      else
  		emit_move_insn (scratch_reg, XEXP (op1, 0));
! 	      emit_insn (gen_rtx_SET (operand0,
! 				  replace_equiv_address (op1, scratch_reg)));
! 	      return 1;
  	    }
  	}
        else if ((!INT14_OK_STRICT && symbolic_memory_operand (op1, VOIDmode))
--- 1725,1731 ----
  		}
  	      else
  		emit_move_insn (scratch_reg, XEXP (op1, 0));
! 	      op1 = replace_equiv_address (op1, scratch_reg);
  	    }
  	}
        else if ((!INT14_OK_STRICT && symbolic_memory_operand (op1, VOIDmode))
*************** pa_emit_move_sequence (rtx *operands, ma
*** 1737,1746 ****
  	  /* Load memory address into SCRATCH_REG.  */
  	  scratch_reg = force_mode (word_mode, scratch_reg);
  	  emit_move_insn (scratch_reg, XEXP (op1, 0));
! 	  emit_insn (gen_rtx_SET (operand0,
! 				  replace_equiv_address (op1, scratch_reg)));
! 	  return 1;
  	}
      }
    else if (scratch_reg
  	   && FP_REG_P (operand1)
--- 1735,1744 ----
  	  /* Load memory address into SCRATCH_REG.  */
  	  scratch_reg = force_mode (word_mode, scratch_reg);
  	  emit_move_insn (scratch_reg, XEXP (op1, 0));
! 	  op1 = replace_equiv_address (op1, scratch_reg);
  	}
+       emit_insn (gen_rtx_SET (operand0, op1));
+       return 1;
      }
    else if (scratch_reg
  	   && FP_REG_P (operand1)
*************** pa_emit_move_sequence (rtx *operands, ma
*** 1778,1786 ****
  		}
  	      else
  		emit_move_insn (scratch_reg, XEXP (op0, 0));
! 	      emit_insn (gen_rtx_SET (replace_equiv_address (op0, scratch_reg),
! 				      operand1));
! 	      return 1;
  	    }
  	}
        else if ((!INT14_OK_STRICT && symbolic_memory_operand (op0, VOIDmode))
--- 1776,1782 ----
  		}
  	      else
  		emit_move_insn (scratch_reg, XEXP (op0, 0));
! 	      op0 = replace_equiv_address (op0, scratch_reg);
  	    }
  	}
        else if ((!INT14_OK_STRICT && symbolic_memory_operand (op0, VOIDmode))
*************** pa_emit_move_sequence (rtx *operands, ma
*** 1790,1799 ****
  	  /* Load memory address into SCRATCH_REG.  */
  	  scratch_reg = force_mode (word_mode, scratch_reg);
  	  emit_move_insn (scratch_reg, XEXP (op0, 0));
! 	  emit_insn (gen_rtx_SET (replace_equiv_address (op0, scratch_reg),
! 				  operand1));
! 	  return 1;
  	}
      }
    /* Handle secondary reloads for loads of FP registers from constant
       expressions by forcing the constant into memory.  For the most part,
--- 1786,1795 ----
  	  /* Load memory address into SCRATCH_REG.  */
  	  scratch_reg = force_mode (word_mode, scratch_reg);
  	  emit_move_insn (scratch_reg, XEXP (op0, 0));
! 	  op0 = replace_equiv_address (op0, scratch_reg);
  	}
+       emit_insn (gen_rtx_SET (op0, operand1));
+       return 1;
      }
    /* Handle secondary reloads for loads of FP registers from constant
       expressions by forcing the constant into memory.  For the most part,
*************** hppa_profile_hook (int label_no)
*** 4562,4574 ****
       lcla2 and load_offset_label_address insn patterns.  */
    rtx reg = gen_reg_rtx (SImode);
    rtx_code_label *label_rtx = gen_label_rtx ();
-   rtx mcount = gen_rtx_MEM (Pmode, gen_rtx_SYMBOL_REF (Pmode, "_mcount"));
    int reg_parm_stack_space = REG_PARM_STACK_SPACE (NULL_TREE);
!   rtx arg_bytes, begin_label_rtx;
    rtx_insn *call_insn;
    char begin_label_name[16];
    bool use_mcount_pcrel_call;
  
    /* If we can reach _mcount with a pc-relative call, we can optimize
       loading the address of the current function.  This requires linker
       long branch stub support.  */
--- 4558,4574 ----
       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;
    rtx_insn *call_insn;
    char begin_label_name[16];
    bool use_mcount_pcrel_call;
  
+   /* Set up call destination.  */
+   sym = gen_rtx_SYMBOL_REF (Pmode, "_mcount");
+   pa_encode_label (sym);
+   mcount = gen_rtx_MEM (Pmode, sym);
+ 
    /* If we can reach _mcount with a pc-relative call, we can optimize
       loading the address of the current function.  This requires linker
       long branch stub support.  */
*************** pa_output_addr_vec (rtx lab, rtx body)
*** 10645,10650 ****
--- 10645,10652 ----
  {
    int idx, vlen = XVECLEN (body, 0);
  
+   if (!TARGET_SOM)
+     fputs ("\t.align 4\n", asm_out_file);
    targetm.asm_out.internal_label (asm_out_file, "L", CODE_LABEL_NUMBER (lab));
    if (TARGET_GAS)
      fputs ("\t.begin_brtab\n", asm_out_file);
diff -Nrcpad gcc-7.3.0/gcc/config/pa/pa.h gcc-7.4.0/gcc/config/pa/pa.h
*** gcc-7.3.0/gcc/config/pa/pa.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/pa/pa.h	Sun Jul 29 16:03:58 2018
*************** do {									     \
*** 1153,1160 ****
     PREFIX is the class of label and NUM is the number within the class.
     This is suitable for output with `assemble_name'.  */
  
! #define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM)	\
!   sprintf (LABEL, "*%c$%s%04ld", (PREFIX)[0], (PREFIX) + 1, (long)(NUM))
  
  /* Output the definition of a compiler-generated label named NAME.  */
  
--- 1153,1170 ----
     PREFIX is the class of label and NUM is the number within the class.
     This is suitable for output with `assemble_name'.  */
  
! #define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM)		\
!   do								\
!     {								\
!       char *__p;						\
!       (LABEL)[0] = '*';						\
!       (LABEL)[1] = (PREFIX)[0];					\
!       (LABEL)[2] = '$';						\
!       __p = stpcpy (&(LABEL)[3], &(PREFIX)[1]);			\
!       sprint_ul (__p, (unsigned long) (NUM));			\
!     }								\
!   while (0)
! 
  
  /* Output the definition of a compiler-generated label named NAME.  */
  
*************** do {									     \
*** 1172,1206 ****
  #define ASM_OUTPUT_ASCII(FILE, P, SIZE)  \
    pa_output_ascii ((FILE), (P), (SIZE))
  
! /* Jump tables are always placed in the text section.  Technically, it
!    is possible to put them in the readonly data section.  This has the
!    benefit of getting the table out of .text and reducing branch lengths
!    as a result.
  
!    The downside is that an additional insn (addil) is needed to access
     the table when generating PIC code.  The address difference table
!    also has to use 32-bit pc-relative relocations.  Currently, GAS does
!    not support these relocations, although it is easily modified to do
!    this operation.
  
     The table entries need to look like "$L1+(.+8-$L0)-$PIC_pcrel$0"
     when using ELF GAS.  A simple difference can be used when using
!    SOM GAS or the HP assembler.  The final downside is GDB complains
!    about the nesting of the label for the table when debugging.  */
  
  #define JUMP_TABLES_IN_TEXT_SECTION 1
  
  /* This is how to output an element of a case-vector that is absolute.  */
  
  #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE)  \
!   fprintf (FILE, "\t.word L$%04d\n", VALUE)
  
  /* This is how to output an element of a case-vector that is relative. 
     Since we always place jump tables in the text section, the difference
     is absolute and requires no relocation.  */
  
  #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL)  \
!   fprintf (FILE, "\t.word L$%04d-L$%04d\n", VALUE, REL)
  
  /* This is how to output an absolute case-vector.  */
  
--- 1182,1218 ----
  #define ASM_OUTPUT_ASCII(FILE, P, SIZE)  \
    pa_output_ascii ((FILE), (P), (SIZE))
  
! /* Jump tables are always placed in the text section.  We have to do
!    this for the HP-UX SOM target as we can't switch sections in the
!    middle of a function.
  
!    On ELF targets, it is possible to put them in the readonly-data section.
!    This would get the table out of .text and reduce branch lengths.
! 
!    A downside is that an additional insn (addil) is needed to access
     the table when generating PIC code.  The address difference table
!    also has to use 32-bit pc-relative relocations.
  
     The table entries need to look like "$L1+(.+8-$L0)-$PIC_pcrel$0"
     when using ELF GAS.  A simple difference can be used when using
!    the HP assembler.
! 
!    The final downside is GDB complains about the nesting of the label
!    for the table.  */
  
  #define JUMP_TABLES_IN_TEXT_SECTION 1
  
  /* This is how to output an element of a case-vector that is absolute.  */
  
  #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE)  \
!   fprintf (FILE, "\t.word L$%d\n", VALUE)
  
  /* This is how to output an element of a case-vector that is relative. 
     Since we always place jump tables in the text section, the difference
     is absolute and requires no relocation.  */
  
  #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL)  \
!   fprintf (FILE, "\t.word L$%d-L$%d\n", VALUE, REL)
  
  /* This is how to output an absolute case-vector.  */
  
diff -Nrcpad gcc-7.3.0/gcc/config/pa/pa.md gcc-7.4.0/gcc/config/pa/pa.md
*** gcc-7.3.0/gcc/config/pa/pa.md	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/pa/pa.md	Thu Sep 20 01:10:47 2018
***************
*** 84,89 ****
--- 84,90 ----
     UNSPEC_TLSGD_PIC
     UNSPEC_TLSLDM_PIC
     UNSPEC_TLSIE_PIC
+    UNSPEC_MEMORY_BARRIER
    ])
  
  ;; UNSPEC_VOLATILE:
***************
*** 2536,2559 ****
  
    xoperands[0] = operands[0];
    xoperands[1] = operands[1];
-   xoperands[2] = gen_label_rtx ();
  
-   (*targetm.asm_out.internal_label) (asm_out_file, \"L\",
- 				     CODE_LABEL_NUMBER (xoperands[2]));
-   output_asm_insn (\"mfia %0\", xoperands);
- 
-   /* If we're trying to load the address of a label that happens to be
-      close, then we can use a shorter sequence.  */
    if (GET_CODE (operands[1]) == LABEL_REF
!       && !LABEL_REF_NONLOCAL_P (operands[1])
!       && INSN_ADDRESSES_SET_P ()
!       && abs (INSN_ADDRESSES (INSN_UID (XEXP (operands[1], 0)))
! 	        - INSN_ADDRESSES (INSN_UID (insn))) < 8100)
!     output_asm_insn (\"ldo %1-%2(%0),%0\", xoperands);
    else
      {
!       output_asm_insn (\"addil L%%%1-%2,%0\", xoperands);
!       output_asm_insn (\"ldo R%%%1-%2(%0),%0\", xoperands);
      }
    return \"\";
  }"
--- 2537,2576 ----
  
    xoperands[0] = operands[0];
    xoperands[1] = operands[1];
  
    if (GET_CODE (operands[1]) == LABEL_REF
!       && !LABEL_REF_NONLOCAL_P (operands[1]))
!     {
!       xoperands[2] = gen_label_rtx ();
!       (*targetm.asm_out.internal_label) (asm_out_file, \"L\",
! 					 CODE_LABEL_NUMBER (xoperands[2]));
!       output_asm_insn (\"mfia %0\", xoperands);
! 
!       /* If we're trying to load the address of a label that happens to be
! 	 close, then we can use a shorter sequence.  */
!       if (INSN_ADDRESSES_SET_P ()
! 	  && abs (INSN_ADDRESSES (INSN_UID (XEXP (operands[1], 0)))
! 		  - INSN_ADDRESSES (INSN_UID (insn))) < 8100)
! 	output_asm_insn (\"ldo %1-%2(%0),%0\", xoperands);
!       else
! 	{
! 	  output_asm_insn (\"addil L%%%1-%2,%0\", xoperands);
! 	  output_asm_insn (\"ldo R%%%1-%2(%0),%0\", xoperands);
! 	}
!     }
    else
      {
!       /* Load using linkage table.  */
!       if (TARGET_64BIT)
! 	{
! 	  output_asm_insn (\"addil LT%%%1,%%r27\", xoperands);
! 	  output_asm_insn (\"ldd RT%%%1(%0),%0\", xoperands);
! 	}
!       else
! 	{
! 	  output_asm_insn (\"addil LT%%%1,%%r19\", xoperands);
! 	  output_asm_insn (\"ldw RT%%%1(%0),%0\", xoperands);
! 	}
      }
    return \"\";
  }"
***************
*** 2570,2594 ****
  
    xoperands[0] = operands[0];
    xoperands[1] = operands[1];
-   xoperands[2] = gen_label_rtx ();
- 
-   output_asm_insn (\"bl .+8,%0\", xoperands);
-   output_asm_insn (\"depi 0,31,2,%0\", xoperands);
-   (*targetm.asm_out.internal_label) (asm_out_file, \"L\",
- 				     CODE_LABEL_NUMBER (xoperands[2]));
  
-   /* If we're trying to load the address of a label that happens to be
-      close, then we can use a shorter sequence.  */
    if (GET_CODE (operands[1]) == LABEL_REF
!       && !LABEL_REF_NONLOCAL_P (operands[1])
!       && INSN_ADDRESSES_SET_P ()
!       && abs (INSN_ADDRESSES (INSN_UID (XEXP (operands[1], 0)))
! 	        - INSN_ADDRESSES (INSN_UID (insn))) < 8100)
!     output_asm_insn (\"ldo %1-%2(%0),%0\", xoperands);
    else
      {
!       output_asm_insn (\"addil L%%%1-%2,%0\", xoperands);
!       output_asm_insn (\"ldo R%%%1-%2(%0),%0\", xoperands);
      }
    return \"\";
  }"
--- 2587,2619 ----
  
    xoperands[0] = operands[0];
    xoperands[1] = operands[1];
  
    if (GET_CODE (operands[1]) == LABEL_REF
!       && !LABEL_REF_NONLOCAL_P (operands[1]))
!     {
!       xoperands[2] = gen_label_rtx ();
!       output_asm_insn (\"bl .+8,%0\", xoperands);
!       output_asm_insn (\"depi 0,31,2,%0\", xoperands);
!       (*targetm.asm_out.internal_label) (asm_out_file, \"L\",
! 					 CODE_LABEL_NUMBER (xoperands[2]));
! 
!       /* If we're trying to load the address of a label that happens to be
! 	 close, then we can use a shorter sequence.  */
!       if (INSN_ADDRESSES_SET_P ()
! 	  && abs (INSN_ADDRESSES (INSN_UID (XEXP (operands[1], 0)))
! 		  - INSN_ADDRESSES (INSN_UID (insn))) < 8100)
! 	output_asm_insn (\"ldo %1-%2(%0),%0\", xoperands);
!       else
! 	{
! 	  output_asm_insn (\"addil L%%%1-%2,%0\", xoperands);
! 	  output_asm_insn (\"ldo R%%%1-%2(%0),%0\", xoperands);
! 	}
!     }
    else
      {
!       /* Load using linkage table.  */
!       output_asm_insn (\"addil LT%%%1,%%r19\", xoperands);
!       output_asm_insn (\"ldw RT%%%1(%0),%0\", xoperands);
      }
    return \"\";
  }"
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 9931,9944 ****
  ;; doubleword loads and stores are not guaranteed to be atomic
  ;; when referencing the I/O address space.
  
- ;; The kernel cmpxchg operation on linux is not atomic with respect to
- ;; memory stores on SMP machines, so we must do stores using a cmpxchg
- ;; operation.
- 
  ;; These patterns are at the bottom so the non atomic versions are preferred.
  
- ;; Implement atomic QImode store using exchange.
- 
  (define_expand "atomic_storeqi"
    [(match_operand:QI 0 "memory_operand")                ;; memory
     (match_operand:QI 1 "register_operand")              ;; val out
--- 9956,9963 ----
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 9991,10015 ****
    FAIL;
  })
  
! ;; Implement atomic SFmode store using exchange.
! 
! (define_expand "atomic_storesf"
!   [(match_operand:SF 0 "memory_operand")                ;; memory
!    (match_operand:SF 1 "register_operand")              ;; val out
!    (match_operand:SI 2 "const_int_operand")]            ;; model
!   ""
! {
!   if (TARGET_SYNC_LIBCALL)
!     {
!       rtx mem = operands[0];
!       rtx val = operands[1];
!       if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val))
! 	DONE;
!     }
!   FAIL;
! })
! 
! ;; Implement atomic DImode load using 64-bit floating point load.
  
  (define_expand "atomic_loaddi"
    [(match_operand:DI 0 "register_operand")              ;; val out
--- 10010,10016 ----
    FAIL;
  })
  
! ;; Implement atomic DImode load.
  
  (define_expand "atomic_loaddi"
    [(match_operand:DI 0 "register_operand")              ;; val out
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 10024,10052 ****
  
    model = memmodel_from_int (INTVAL (operands[2]));
    operands[1] = force_reg (SImode, XEXP (operands[1], 0));
-   expand_mem_thread_fence (model);
-   emit_insn (gen_atomic_loaddi_1 (operands[0], operands[1]));
    if (is_mm_seq_cst (model))
      expand_mem_thread_fence (model);
    DONE;
  })
  
  (define_insn "atomic_loaddi_1"
!   [(set (match_operand:DI 0 "register_operand" "=f,r")
!         (mem:DI (match_operand:SI 1 "register_operand" "r,r")))
!    (clobber (match_scratch:DI 2 "=X,f"))]
    "!TARGET_64BIT && !TARGET_DISABLE_FPREGS && !TARGET_SOFT_FLOAT"
!   "@
!    {fldds|fldd} 0(%1),%0
!    {fldds|fldd} 0(%1),%2\n\t{fstds|fstd} %2,-16(%%sp)\n\t{ldws|ldw} -16(%%sp),%0\n\t{ldws|ldw} -12(%%sp),%R0"
!   [(set_attr "type" "move,move")
!    (set_attr "length" "4,16")])
  
  ;; Implement atomic DImode store.
  
  (define_expand "atomic_storedi"
    [(match_operand:DI 0 "memory_operand")                ;; memory
!    (match_operand:DI 1 "register_operand")              ;; val out
     (match_operand:SI 2 "const_int_operand")]            ;; model
    ""
  {
--- 10025,10051 ----
  
    model = memmodel_from_int (INTVAL (operands[2]));
    operands[1] = force_reg (SImode, XEXP (operands[1], 0));
    if (is_mm_seq_cst (model))
      expand_mem_thread_fence (model);
+   emit_insn (gen_atomic_loaddi_1 (operands[0], operands[1]));
+   expand_mem_thread_fence (model);
    DONE;
  })
  
  (define_insn "atomic_loaddi_1"
!   [(set (match_operand:DI 0 "register_operand" "=r")
!         (mem:DI (match_operand:SI 1 "register_operand" "r")))
!    (clobber (match_scratch:DI 2 "=f"))]
    "!TARGET_64BIT && !TARGET_DISABLE_FPREGS && !TARGET_SOFT_FLOAT"
!   "{fldds|fldd} 0(%1),%2\n\t{fstds|fstd} %2,-16(%%sp)\n\t{ldws|ldw} -16(%%sp),%0\n\t{ldws|ldw} -12(%%sp),%R0"
!   [(set_attr "type" "move")
!    (set_attr "length" "16")])
  
  ;; Implement atomic DImode store.
  
  (define_expand "atomic_storedi"
    [(match_operand:DI 0 "memory_operand")                ;; memory
!    (match_operand:DI 1 "reg_or_cint_move_operand")      ;; val out
     (match_operand:SI 2 "const_int_operand")]            ;; model
    ""
  {
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 10065,10070 ****
--- 10064,10071 ----
  
    model = memmodel_from_int (INTVAL (operands[2]));
    operands[0] = force_reg (SImode, XEXP (operands[0], 0));
+   if (operands[1] != CONST0_RTX (DImode))
+     operands[1] = force_reg (DImode, operands[1]);
    expand_mem_thread_fence (model);
    emit_insn (gen_atomic_storedi_1 (operands[0], operands[1]));
    if (is_mm_seq_cst (model))
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 10074,10160 ****
  
  (define_insn "atomic_storedi_1"
    [(set (mem:DI (match_operand:SI 0 "register_operand" "r,r"))
!         (match_operand:DI 1 "register_operand" "f,r"))
     (clobber (match_scratch:DI 2 "=X,f"))]
!   "!TARGET_64BIT && !TARGET_DISABLE_FPREGS
!    && !TARGET_SOFT_FLOAT && !TARGET_SYNC_LIBCALL"
    "@
!    {fstds|fstd} %1,0(%0)
     {stws|stw} %1,-16(%%sp)\n\t{stws|stw} %R1,-12(%%sp)\n\t{fldds|fldd} -16(%%sp),%2\n\t{fstds|fstd} %2,0(%0)"
    [(set_attr "type" "move,move")
     (set_attr "length" "4,16")])
  
! ;; Implement atomic DFmode load using 64-bit floating point load.
  
! (define_expand "atomic_loaddf"
!   [(match_operand:DF 0 "register_operand")              ;; val out
!    (match_operand:DF 1 "memory_operand")                ;; memory
!    (match_operand:SI 2 "const_int_operand")]            ;; model
    ""
  {
!   enum memmodel model;
! 
!   if (TARGET_64BIT || TARGET_DISABLE_FPREGS || TARGET_SOFT_FLOAT)
!     FAIL;
! 
!   model = memmodel_from_int (INTVAL (operands[2]));
!   operands[1] = force_reg (SImode, XEXP (operands[1], 0));
!   expand_mem_thread_fence (model);
!   emit_insn (gen_atomic_loaddf_1 (operands[0], operands[1]));
!   if (is_mm_seq_cst (model))
!     expand_mem_thread_fence (model);
!   DONE;
  })
  
! (define_insn "atomic_loaddf_1"
!   [(set (match_operand:DF 0 "register_operand" "=f,r")
!         (mem:DF (match_operand:SI 1 "register_operand" "r,r")))
!    (clobber (match_scratch:DF 2 "=X,f"))]
!   "!TARGET_64BIT && !TARGET_DISABLE_FPREGS && !TARGET_SOFT_FLOAT"
!   "@
!    {fldds|fldd} 0(%1),%0
!    {fldds|fldd} 0(%1),%2\n\t{fstds|fstd} %2,-16(%%sp)\n\t{ldws|ldw} -16(%%sp),%0\n\t{ldws|ldw} -12(%%sp),%R0"
!   [(set_attr "type" "move,move")
!    (set_attr "length" "4,16")])
! 
! ;; Implement atomic DFmode store using 64-bit floating point store.
! 
! (define_expand "atomic_storedf"
!   [(match_operand:DF 0 "memory_operand")                ;; memory
!    (match_operand:DF 1 "register_operand")              ;; val out
!    (match_operand:SI 2 "const_int_operand")]            ;; model
    ""
! {
!   enum memmodel model;
! 
!   if (TARGET_SYNC_LIBCALL)
!     {
!       rtx mem = operands[0];
!       rtx val = operands[1];
!       if (pa_maybe_emit_compare_and_swap_exchange_loop (NULL_RTX, mem, val))
! 	DONE;
!     }
! 
!   if (TARGET_64BIT || TARGET_DISABLE_FPREGS || TARGET_SOFT_FLOAT)
!     FAIL;
! 
!   model = memmodel_from_int (INTVAL (operands[2]));
!   operands[0] = force_reg (SImode, XEXP (operands[0], 0));
!   expand_mem_thread_fence (model);
!   emit_insn (gen_atomic_storedf_1 (operands[0], operands[1]));
!   if (is_mm_seq_cst (model))
!     expand_mem_thread_fence (model);
!   DONE;
! })
! 
! (define_insn "atomic_storedf_1"
!   [(set (mem:DF (match_operand:SI 0 "register_operand" "r,r"))
!         (match_operand:DF 1 "register_operand" "f,r"))
!    (clobber (match_scratch:DF 2 "=X,f"))]
!   "!TARGET_64BIT && !TARGET_DISABLE_FPREGS
!    && !TARGET_SOFT_FLOAT && !TARGET_SYNC_LIBCALL"
!   "@
!    {fstds|fstd} %1,0(%0)
!    {stws|stw} %1,-16(%%sp)\n\t{stws|stw} %R1,-12(%%sp)\n\t{fldds|fldd} -16(%%sp),%2\n\t{fstds|fstd} %2,0(%0)"
!   [(set_attr "type" "move,move")
!    (set_attr "length" "4,16")])
--- 10075,10107 ----
  
  (define_insn "atomic_storedi_1"
    [(set (mem:DI (match_operand:SI 0 "register_operand" "r,r"))
!         (match_operand:DI 1 "reg_or_0_operand" "M,r"))
     (clobber (match_scratch:DI 2 "=X,f"))]
!   "!TARGET_64BIT && !TARGET_DISABLE_FPREGS && !TARGET_SOFT_FLOAT"
    "@
!    {fstds|fstd} %%fr0,0(%0)
     {stws|stw} %1,-16(%%sp)\n\t{stws|stw} %R1,-12(%%sp)\n\t{fldds|fldd} -16(%%sp),%2\n\t{fstds|fstd} %2,0(%0)"
    [(set_attr "type" "move,move")
     (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")])
diff -Nrcpad gcc-7.3.0/gcc/config/pa/pa32-linux.h gcc-7.4.0/gcc/config/pa/pa32-linux.h
*** gcc-7.3.0/gcc/config/pa/pa32-linux.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/pa/pa32-linux.h	Sun Jul 29 16:03:58 2018
*************** call_ ## FUNC (void)					\
*** 62,64 ****
--- 62,73 ----
  
  #undef  WCHAR_TYPE_SIZE
  #define WCHAR_TYPE_SIZE BITS_PER_WORD
+ 
+ /* Place jump tables in the text section except when generating non-PIC
+    code.  When generating non-PIC code, the relocations needed to load the
+    address of the jump table result in a text label in the final executable
+    if the jump table is placed in the text section.  This breaks the unwind
+    data for the function.  Thus, the jump table needs to be placed in
+    rodata when generating non-PIC code.  */
+ #undef JUMP_TABLES_IN_TEXT_SECTION
+ #define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
diff -Nrcpad gcc-7.3.0/gcc/config/pa/pa64-hpux.h gcc-7.4.0/gcc/config/pa/pa64-hpux.h
*** gcc-7.3.0/gcc/config/pa/pa64-hpux.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/pa/pa64-hpux.h	Sun Mar 11 14:32:16 2018
*************** do {								\
*** 245,252 ****
  
  /* We need to use the HP style for internal labels.  */
  #undef ASM_GENERATE_INTERNAL_LABEL
! #define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM)	\
!   sprintf (LABEL, "*%c$%s%04ld", (PREFIX)[0], (PREFIX) + 1, (long)(NUM))
  
  #else /* USING_ELFOS_H */
  
--- 245,262 ----
  
  /* We need to use the HP style for internal labels.  */
  #undef ASM_GENERATE_INTERNAL_LABEL
! #define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM)		\
!   do								\
!     {								\
!       char *__p;						\
!       (LABEL)[0] = '*';						\
!       (LABEL)[1] = (PREFIX)[0];					\
!       (LABEL)[2] = '$';						\
!       __p = stpcpy (&(LABEL)[3], &(PREFIX)[1]);			\
!       sprint_ul (__p, (unsigned long) (NUM));			\
!     }								\
!   while (0)
! 
  
  #else /* USING_ELFOS_H */
  
diff -Nrcpad gcc-7.3.0/gcc/config/pa/predicates.md gcc-7.4.0/gcc/config/pa/predicates.md
*** gcc-7.3.0/gcc/config/pa/predicates.md	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/pa/predicates.md	Sat Feb 10 19:55:06 2018
***************
*** 277,282 ****
--- 277,285 ----
      case HImode:
        return true;
  
+     case VOIDmode:
+       return false;
+ 
      default:
        return (INTVAL (op) % GET_MODE_SIZE (mode)) == 0;
      }
diff -Nrcpad gcc-7.3.0/gcc/config/riscv/t-rtems gcc-7.4.0/gcc/config/riscv/t-rtems
*** gcc-7.3.0/gcc/config/riscv/t-rtems	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/config/riscv/t-rtems	Thu Jun 21 09:36:40 2018
***************
*** 0 ****
--- 1,25 ----
+ MULTILIB_OPTIONS	=
+ MULTILIB_DIRNAMES	=
+ 
+ MULTILIB_OPTIONS	+= march=rv32i/march=rv32im/march=rv32imafd/march=rv32iac/march=rv32imac/march=rv32imafc/march=rv64imafd/march=rv64imac/march=rv64imafdc
+ MULTILIB_DIRNAMES	+= rv32i       rv32im       rv32imafd       rv32iac       rv32imac       rv32imafc       rv64imafd       rv64imac       rv64imafdc
+ 
+ MULTILIB_OPTIONS	+= mabi=ilp32/mabi=ilp32f/mabi=ilp32d/mabi=lp64/mabi=lp64d
+ MULTILIB_DIRNAMES	+= ilp32      ilp32f      ilp32d      lp64      lp64d
+ 
+ MULTILIB_OPTIONS	+= mcmodel=medany
+ MULTILIB_DIRNAMES	+= medany
+ 
+ MULTILIB_REQUIRED	=
+ MULTILIB_REQUIRED	+= march=rv32i/mabi=ilp32
+ MULTILIB_REQUIRED	+= march=rv32im/mabi=ilp32
+ MULTILIB_REQUIRED	+= march=rv32imafd/mabi=ilp32d
+ MULTILIB_REQUIRED	+= march=rv32iac/mabi=ilp32
+ MULTILIB_REQUIRED	+= march=rv32imac/mabi=ilp32
+ MULTILIB_REQUIRED	+= march=rv32imafc/mabi=ilp32f
+ MULTILIB_REQUIRED	+= march=rv64imafd/mabi=lp64d
+ MULTILIB_REQUIRED	+= march=rv64imafd/mabi=lp64d/mcmodel=medany
+ MULTILIB_REQUIRED	+= march=rv64imac/mabi=lp64
+ MULTILIB_REQUIRED	+= march=rv64imac/mabi=lp64/mcmodel=medany
+ MULTILIB_REQUIRED	+= march=rv64imafdc/mabi=lp64d
+ MULTILIB_REQUIRED	+= march=rv64imafdc/mabi=lp64d/mcmodel=medany
diff -Nrcpad gcc-7.3.0/gcc/config/rs6000/altivec.h gcc-7.4.0/gcc/config/rs6000/altivec.h
*** gcc-7.3.0/gcc/config/rs6000/altivec.h	Mon Mar 20 18:05:00 2017
--- gcc-7.4.0/gcc/config/rs6000/altivec.h	Tue Mar  6 23:52:59 2018
***************
*** 398,405 ****
  #define vec_vctzd __builtin_vec_vctzd
  #define vec_vctzh __builtin_vec_vctzh
  #define vec_vctzw __builtin_vec_vctzw
! #define vec_vextract4b __builtin_vec_vextract4b
! #define vec_vinsert4b __builtin_vec_vinsert4b
  #define vec_vprtyb __builtin_vec_vprtyb
  #define vec_vprtybd __builtin_vec_vprtybd
  #define vec_vprtybw __builtin_vec_vprtybw
--- 398,405 ----
  #define vec_vctzd __builtin_vec_vctzd
  #define vec_vctzh __builtin_vec_vctzh
  #define vec_vctzw __builtin_vec_vctzw
! #define vec_extract4b __builtin_vec_extract4b
! #define vec_insert4b __builtin_vec_insert4b
  #define vec_vprtyb __builtin_vec_vprtyb
  #define vec_vprtybd __builtin_vec_vprtybd
  #define vec_vprtybw __builtin_vec_vprtybw
diff -Nrcpad gcc-7.3.0/gcc/config/rs6000/altivec.md gcc-7.4.0/gcc/config/rs6000/altivec.md
*** gcc-7.3.0/gcc/config/rs6000/altivec.md	Sun Jan 14 17:47:30 2018
--- gcc-7.4.0/gcc/config/rs6000/altivec.md	Fri Mar 23 17:48:58 2018
***************
*** 414,420 ****
  (define_insn "*restore_world"
   [(match_parallel 0 "restore_world_operation"
                    [(return)
- 		   (use (reg:SI LR_REGNO))
                     (use (match_operand:SI 1 "call_operand" "s"))
                     (clobber (match_operand:SI 2 "gpc_reg_operand" "=r"))])]
   "TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN) && TARGET_32BIT"
--- 414,419 ----
***************
*** 2616,2654 ****
    "lvx %0,%y1"
    [(set_attr "type" "vecload")])
  
! ; The next two patterns embody what lvx should usually look like.
! (define_insn "altivec_lvx_<mode>_2op"
!   [(set (match_operand:VM2 0 "register_operand" "=v")
!         (mem:VM2 (and:DI (plus:DI (match_operand:DI 1 "register_operand" "b")
!                                   (match_operand:DI 2 "register_operand" "r"))
! 		         (const_int -16))))]
!   "TARGET_ALTIVEC && TARGET_64BIT"
!   "lvx %0,%1,%2"
!   [(set_attr "type" "vecload")])
! 
! (define_insn "altivec_lvx_<mode>_1op"
!   [(set (match_operand:VM2 0 "register_operand" "=v")
!         (mem:VM2 (and:DI (match_operand:DI 1 "register_operand" "r")
! 			 (const_int -16))))]
!   "TARGET_ALTIVEC && TARGET_64BIT"
!   "lvx %0,0,%1"
!   [(set_attr "type" "vecload")])
  
! ; 32-bit versions of the above.
! (define_insn "altivec_lvx_<mode>_2op_si"
    [(set (match_operand:VM2 0 "register_operand" "=v")
!         (mem:VM2 (and:SI (plus:SI (match_operand:SI 1 "register_operand" "b")
!                                   (match_operand:SI 2 "register_operand" "r"))
! 		         (const_int -16))))]
!   "TARGET_ALTIVEC && TARGET_32BIT"
    "lvx %0,%1,%2"
    [(set_attr "type" "vecload")])
  
! (define_insn "altivec_lvx_<mode>_1op_si"
    [(set (match_operand:VM2 0 "register_operand" "=v")
!         (mem:VM2 (and:SI (match_operand:SI 1 "register_operand" "r")
! 			 (const_int -16))))]
!   "TARGET_ALTIVEC && TARGET_32BIT"
    "lvx %0,0,%1"
    [(set_attr "type" "vecload")])
  
--- 2615,2663 ----
    "lvx %0,%y1"
    [(set_attr "type" "vecload")])
  
! ; The following patterns embody what lvx should usually look like.
! (define_expand "altivec_lvx_<VM2:mode>"
!   [(set (match_operand:VM2 0 "register_operand")
! 	(match_operand:VM2 1 "altivec_indexed_or_indirect_operand"))]
!   "TARGET_ALTIVEC"
! {
!   rtx addr = XEXP (operand1, 0);
!   if (GET_CODE (addr) == PLUS
!       && REG_P (XEXP (addr, 0))
!       && REG_P (XEXP (addr, 1)))
!     {
!       rtx op1 = XEXP (addr, 0);
!       rtx op2 = XEXP (addr, 1);
!       if (TARGET_64BIT)
! 	emit_insn (gen_altivec_lvx_<VM2:mode>_2op_di (operand0, op1, op2));
!       else
! 	emit_insn (gen_altivec_lvx_<VM2:mode>_2op_si (operand0, op1, op2));
!     }
!   else
!     {
!       if (TARGET_64BIT)
! 	emit_insn (gen_altivec_lvx_<VM2:mode>_1op_di (operand0, addr));
!       else
! 	emit_insn (gen_altivec_lvx_<VM2:mode>_1op_si (operand0, addr));
!     }
!   DONE;
! })
  
! ; The next two patterns embody what lvx should usually look like.
! (define_insn "altivec_lvx_<VM2:mode>_2op_<P:mptrsize>"
    [(set (match_operand:VM2 0 "register_operand" "=v")
! 	(mem:VM2 (and:P (plus:P (match_operand:P 1 "register_operand" "b")
! 				(match_operand:P 2 "register_operand" "r"))
! 			(const_int -16))))]
!   "TARGET_ALTIVEC"
    "lvx %0,%1,%2"
    [(set_attr "type" "vecload")])
  
! (define_insn "altivec_lvx_<VM2:mode>_1op_<P:mptrsize>"
    [(set (match_operand:VM2 0 "register_operand" "=v")
! 	(mem:VM2 (and:P (match_operand:P 1 "register_operand" "r")
! 			(const_int -16))))]
!   "TARGET_ALTIVEC"
    "lvx %0,0,%1"
    [(set_attr "type" "vecload")])
  
***************
*** 2664,2702 ****
    "stvx %1,%y0"
    [(set_attr "type" "vecstore")])
  
! ; The next two patterns embody what stvx should usually look like.
! (define_insn "altivec_stvx_<mode>_2op"
!   [(set (mem:VM2 (and:DI (plus:DI (match_operand:DI 1 "register_operand" "b")
!   	                          (match_operand:DI 2 "register_operand" "r"))
! 	                 (const_int -16)))
!         (match_operand:VM2 0 "register_operand" "v"))]
!   "TARGET_ALTIVEC && TARGET_64BIT"
!   "stvx %0,%1,%2"
!   [(set_attr "type" "vecstore")])
! 
! (define_insn "altivec_stvx_<mode>_1op"
!   [(set (mem:VM2 (and:DI (match_operand:DI 1 "register_operand" "r")
! 	                 (const_int -16)))
!         (match_operand:VM2 0 "register_operand" "v"))]
!   "TARGET_ALTIVEC && TARGET_64BIT"
!   "stvx %0,0,%1"
!   [(set_attr "type" "vecstore")])
  
! ; 32-bit versions of the above.
! (define_insn "altivec_stvx_<mode>_2op_si"
!   [(set (mem:VM2 (and:SI (plus:SI (match_operand:SI 1 "register_operand" "b")
!   	                          (match_operand:SI 2 "register_operand" "r"))
! 	                 (const_int -16)))
!         (match_operand:VM2 0 "register_operand" "v"))]
!   "TARGET_ALTIVEC && TARGET_32BIT"
    "stvx %0,%1,%2"
    [(set_attr "type" "vecstore")])
  
! (define_insn "altivec_stvx_<mode>_1op_si"
!   [(set (mem:VM2 (and:SI (match_operand:SI 1 "register_operand" "r")
! 	                 (const_int -16)))
!         (match_operand:VM2 0 "register_operand" "v"))]
!   "TARGET_ALTIVEC && TARGET_32BIT"
    "stvx %0,0,%1"
    [(set_attr "type" "vecstore")])
  
--- 2673,2721 ----
    "stvx %1,%y0"
    [(set_attr "type" "vecstore")])
  
! ; The following patterns embody what stvx should usually look like.
! (define_expand "altivec_stvx_<VM2:mode>"
!   [(set (match_operand:VM2 1 "altivec_indexed_or_indirect_operand")
! 	(match_operand:VM2 0 "register_operand"))]
!   "TARGET_ALTIVEC"
! {
!   rtx addr = XEXP (operand1, 0);
!   if (GET_CODE (addr) == PLUS
!       && REG_P (XEXP (addr, 0))
!       && REG_P (XEXP (addr, 1)))
!     {
!       rtx op1 = XEXP (addr, 0);
!       rtx op2 = XEXP (addr, 1);
!       if (TARGET_64BIT)
! 	emit_insn (gen_altivec_stvx_<VM2:mode>_2op_di (operand0, op1, op2));
!       else
! 	emit_insn (gen_altivec_stvx_<VM2:mode>_2op_si (operand0, op1, op2));
!     }
!   else
!     {
!       if (TARGET_64BIT)
! 	emit_insn (gen_altivec_stvx_<VM2:mode>_1op_di (operand0, addr));
!       else
! 	emit_insn (gen_altivec_stvx_<VM2:mode>_1op_si (operand0, addr));
!     }
!   DONE;
! })
  
! ; The next two patterns embody what stvx should usually look like.
! (define_insn "altivec_stvx_<VM2:mode>_2op_<P:mptrsize>"
!   [(set (mem:VM2 (and:P (plus:P (match_operand:P 1 "register_operand" "b")
! 				(match_operand:P 2 "register_operand" "r"))
! 			(const_int -16)))
! 	(match_operand:VM2 0 "register_operand" "v"))]
!   "TARGET_ALTIVEC"
    "stvx %0,%1,%2"
    [(set_attr "type" "vecstore")])
  
! (define_insn "altivec_stvx_<VM2:mode>_1op_<P:mptrsize>"
!   [(set (mem:VM2 (and:P (match_operand:P 1 "register_operand" "r")
! 			(const_int -16)))
! 	(match_operand:VM2 0 "register_operand" "v"))]
!   "TARGET_ALTIVEC"
    "stvx %0,0,%1"
    [(set_attr "type" "vecstore")])
  
diff -Nrcpad gcc-7.3.0/gcc/config/rs6000/driver-rs6000.c gcc-7.4.0/gcc/config/rs6000/driver-rs6000.c
*** gcc-7.3.0/gcc/config/rs6000/driver-rs6000.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/rs6000/driver-rs6000.c	Mon Feb  5 19:17:37 2018
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,28 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
+ #include "diagnostic.h"
+ #include "opts.h"
  #include <stdlib.h>
  
  #ifdef _AIX
*************** along with GCC; see the file COPYING3.
*** 36,41 ****
--- 38,81 ----
  # include <sys/sysctl.h>
  #endif
  
+ #ifdef __linux__
+ /* Canonical GCC cpu name table.  */
+ static const char *rs6000_supported_cpu_names[] =
+ {
+ #define RS6000_CPU(NAME, CPU, FLAGS) NAME,
+ #include "rs6000-cpus.def"
+ #undef RS6000_CPU
+ };
+ 
+ /* This table holds a list of cpus where their Linux AT_PLATFORM name differs
+    from their GCC canonical name.  The first column in a row contains the GCC
+    canonical cpu name and the other columns in that row contain AT_PLATFORM
+    names that should be mapped to the canonical name.  */
+ 
+ static const char *linux_cpu_translation_table[][4] = {
+   { "403", "ppc403", NULL },
+   { "405", "ppc405", NULL },
+   { "440", "ppc440", "ppc440gp", NULL },
+   { "476", "ppc470", NULL },
+   { "601", "ppc601", NULL },
+   { "603", "ppc603", NULL },
+   { "604", "ppc604", NULL },
+   { "7400", "ppc7400", NULL },
+   { "7450", "ppc7450", NULL },
+   { "750", "ppc750", NULL },
+   { "823", "ppc823", NULL },
+   { "8540", "ppc8540", NULL },
+   { "8548", "ppc8548", NULL },
+   { "970", "ppc970", NULL },
+   { "cell", "ppc-cell-be", NULL },
+   { "e500mc", "ppce500mc", NULL },
+   { "e5500", "ppce5500", NULL },
+   { "e6500", "ppce6500", NULL },
+   { "power7", "power7+", NULL },
+   { NULL } /* End of table sentinel.  */
+ };
+ #endif
+ 
  const char *host_detect_local_cpu (int argc, const char **argv);
  
  #if GCC_VERSION >= 0
*************** detect_processor_freebsd (void)
*** 156,169 ****
  
  #ifdef __linux__
  
! /* Returns AT_PLATFORM if present, otherwise generic PowerPC.  */
  
  static const char *
  elf_platform (void)
  {
!   int fd;
  
!   fd = open ("/proc/self/auxv", O_RDONLY);
  
    if (fd != -1)
      {
--- 196,214 ----
  
  #ifdef __linux__
  
! /* Returns the canonical AT_PLATFORM if present, otherwise NULL.  */
  
  static const char *
  elf_platform (void)
  {
!   /* Used to cache the result we determine below.  */
!   static const char *cpu = NULL;
  
!   /* Use the cached AT_PLATFORM cpu name if we've already determined it.  */
!   if (cpu != NULL)
!     return cpu;
! 
!   int fd = open ("/proc/self/auxv", O_RDONLY);
  
    if (fd != -1)
      {
*************** elf_platform (void)
*** 177,191 ****
        if (n > 0)
  	{
  	  for (av = (ElfW(auxv_t) *) buf; av->a_type != AT_NULL; ++av)
! 	    switch (av->a_type)
  	      {
! 	      case AT_PLATFORM:
! 		return (const char *) av->a_un.a_val;
! 
! 	      default:
  		break;
  	      }
  	}
      }
    return NULL;
  }
--- 222,272 ----
        if (n > 0)
  	{
  	  for (av = (ElfW(auxv_t) *) buf; av->a_type != AT_NULL; ++av)
! 	    if (av->a_type == AT_PLATFORM)
  	      {
! 		/* Cache the result.  */
! 		cpu = (const char *) av->a_un.a_val;
  		break;
  	      }
  	}
+ 
+       /* Verify that CPU is either a valid -mcpu=<cpu> option name, or is a
+ 	 valid alternative name.  If it is a valid alternative name, then use
+ 	 the canonical name.  */
+       if (cpu != NULL)
+ 	{
+ 	  size_t i, j;
+ 	  char *s;
+ 
+ 	  /* Check if AT_PLATFORM is a GCC canonical cpu name.  */
+ 	  for (i = 0; i < ARRAY_SIZE (rs6000_supported_cpu_names); i++)
+ 	    if (!strcmp (cpu, rs6000_supported_cpu_names[i]))
+ 	      return cpu;
+ 
+ 	  /* Check if AT_PLATFORM can be translated to a canonical cpu name.  */
+ 	  for (i = 0; linux_cpu_translation_table[i][0] != NULL; i++)
+ 	    {
+ 	      const char *canonical = linux_cpu_translation_table[i][0];
+ 	      for (j = 1; linux_cpu_translation_table[i][j] != NULL; j++)
+ 		if (!strcmp (cpu, linux_cpu_translation_table[i][j]))
+ 		  {
+ 		    /* Cache the result.  */
+ 		    cpu = canonical;
+ 		    return cpu;
+ 		  }
+ 	    }
+ 
+ 	  /* The kernel returned an AT_PLATFORM name we do not support.  */
+ 	  auto_vec <const char *> candidates;
+ 	  for (i = 0; i < ARRAY_SIZE (rs6000_supported_cpu_names); i++)
+ 	    candidates.safe_push (rs6000_supported_cpu_names[i]);
+ 	  candidates_list_and_hint (cpu, s, candidates);
+ 	  fatal_error (
+ 	    input_location,
+ 	    "Unsupported cpu name returned from kernel for -mcpu=native: %s\n"
+ 	    "Please use an explicit cpu name.  Valid cpu names are: %s",
+ 	    cpu, s);
+ 	}
      }
    return NULL;
  }
diff -Nrcpad gcc-7.3.0/gcc/config/rs6000/predicates.md gcc-7.4.0/gcc/config/rs6000/predicates.md
*** gcc-7.3.0/gcc/config/rs6000/predicates.md	Fri May 26 01:52:24 2017
--- gcc-7.4.0/gcc/config/rs6000/predicates.md	Thu Feb  8 18:48:37 2018
***************
*** 1468,1480 ****
    rtx elt;
    int count = XVECLEN (op, 0);
  
!   if (count != 59)
      return 0;
  
    index = 0;
    if (GET_CODE (XVECEXP (op, 0, index++)) != RETURN
        || GET_CODE (XVECEXP (op, 0, index++)) != USE
-       || GET_CODE (XVECEXP (op, 0, index++)) != USE
        || GET_CODE (XVECEXP (op, 0, index++)) != CLOBBER)
      return 0;
  
--- 1468,1479 ----
    rtx elt;
    int count = XVECLEN (op, 0);
  
!   if (count != 58)
      return 0;
  
    index = 0;
    if (GET_CODE (XVECEXP (op, 0, index++)) != RETURN
        || GET_CODE (XVECEXP (op, 0, index++)) != USE
        || GET_CODE (XVECEXP (op, 0, index++)) != CLOBBER)
      return 0;
  
diff -Nrcpad gcc-7.3.0/gcc/config/rs6000/rs6000-builtin.def gcc-7.4.0/gcc/config/rs6000/rs6000-builtin.def
*** gcc-7.3.0/gcc/config/rs6000/rs6000-builtin.def	Fri Mar 10 19:16:04 2017
--- gcc-7.4.0/gcc/config/rs6000/rs6000-builtin.def	Mon Apr  2 19:19:37 2018
***************
*** 1,5 ****
  /* Builtin functions for rs6000/powerpc.
!    Copyright (C) 2009-2017 Free Software Foundation, Inc.
     Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
  
     This file is part of GCC.
--- 1,5 ----
  /* Builtin functions for rs6000/powerpc.
!    Copyright (C) 2009-2018 Free Software Foundation, Inc.
     Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
  
     This file is part of GCC.
***************
*** 659,664 ****
--- 659,672 ----
  		     | RS6000_BTC_BINARY),				\
  		    CODE_FOR_ ## ICODE)			/* ICODE */
  
+ #define BU_P7_POWERPC64_MISC_2(ENUM, NAME, ATTR, ICODE)			\
+   RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM,		/* ENUM */      \
+ 		    "__builtin_" NAME,			/* NAME */      \
+ 		    RS6000_BTM_POPCNTD			/* MASK */	\
+ 		    | RS6000_BTM_POWERPC64,				\
+ 		    (RS6000_BTC_ ## ATTR		/* ATTR */      \
+ 		    | RS6000_BTC_BINARY),				\
+ 		    CODE_FOR_ ## ICODE)			/* ICODE */
  
  /* Miscellaneous builtins for instructions added in ISA 2.07.  These
     instructions do require the ISA 2.07 vector support, but they aren't vector
*************** BU_P9V_AV_2 (VEXTUWRX, "vextuwrx",		CONS
*** 2034,2041 ****
  
  /* Insert/extract 4 byte word into a vector.  */
  BU_P9V_VSX_2 (VEXTRACT4B,   "vextract4b",	CONST,	vextract4b)
! BU_P9V_VSX_3 (VINSERT4B,    "vinsert4b",	CONST,	vinsert4b)
! BU_P9V_VSX_3 (VINSERT4B_DI, "vinsert4b_di",	CONST,	vinsert4b_di)
  
  /* 3 argument vector functions returning void, treated as SPECIAL,
     added in ISA 3.0 (power9).  */
--- 2042,2049 ----
  
  /* Insert/extract 4 byte word into a vector.  */
  BU_P9V_VSX_2 (VEXTRACT4B,   "vextract4b",	CONST,	vextract4b)
! BU_P9V_VSX_3 (INSERT4B,    "insert4b",		CONST,  insert4b)
! BU_P9V_VSX_2 (EXTRACT4B,   "extract4b", 	CONST,  extract4b)
  
  /* 3 argument vector functions returning void, treated as SPECIAL,
     added in ISA 3.0 (power9).  */
*************** BU_P9V_OVERLOAD_2 (LXVL,	"lxvl")
*** 2084,2093 ****
  BU_P9V_OVERLOAD_2 (VEXTULX,	"vextulx")
  BU_P9V_OVERLOAD_2 (VEXTURX,	"vexturx")
  BU_P9V_OVERLOAD_2 (VEXTRACT4B,	"vextract4b")
  
  /* ISA 3.0 Vector scalar overloaded 3 argument functions */
  BU_P9V_OVERLOAD_3 (STXVL,	"stxvl")
! BU_P9V_OVERLOAD_3 (VINSERT4B,	"vinsert4b")
  
  /* Overloaded CMPNE support was implemented prior to Power 9,
     so is not mentioned here.  */
--- 2092,2102 ----
  BU_P9V_OVERLOAD_2 (VEXTULX,	"vextulx")
  BU_P9V_OVERLOAD_2 (VEXTURX,	"vexturx")
  BU_P9V_OVERLOAD_2 (VEXTRACT4B,	"vextract4b")
+ BU_P9V_OVERLOAD_2 (EXTRACT4B,  "extract4b")
  
  /* ISA 3.0 Vector scalar overloaded 3 argument functions */
  BU_P9V_OVERLOAD_3 (STXVL,	"stxvl")
! BU_P9V_OVERLOAD_3 (INSERT4B,    "insert4b")
  
  /* Overloaded CMPNE support was implemented prior to Power 9,
     so is not mentioned here.  */
*************** BU_P9V_OVERLOAD_1 (VCTZLSBB,	"vctzlsbb")
*** 2103,2115 ****
  
  /* 2 argument extended divide functions added in ISA 2.06.  */
  BU_P7_MISC_2 (DIVWE,		"divwe",	CONST,	dive_si)
- BU_P7_MISC_2 (DIVWEO,		"divweo",	CONST,	diveo_si)
  BU_P7_MISC_2 (DIVWEU,		"divweu",	CONST,	diveu_si)
! BU_P7_MISC_2 (DIVWEUO,		"divweuo",	CONST,	diveuo_si)
! BU_P7_MISC_2 (DIVDE,		"divde",	CONST,	dive_di)
! BU_P7_MISC_2 (DIVDEO,		"divdeo",	CONST,	diveo_di)
! BU_P7_MISC_2 (DIVDEU,		"divdeu",	CONST,	diveu_di)
! BU_P7_MISC_2 (DIVDEUO,		"divdeuo",	CONST,	diveuo_di)
  
  /* 1 argument DFP (decimal floating point) functions added in ISA 2.05.  */
  BU_DFP_MISC_1 (DXEX,		"dxex",		CONST,	dfp_dxex_dd)
--- 2112,2120 ----
  
  /* 2 argument extended divide functions added in ISA 2.06.  */
  BU_P7_MISC_2 (DIVWE,		"divwe",	CONST,	dive_si)
  BU_P7_MISC_2 (DIVWEU,		"divweu",	CONST,	diveu_si)
! BU_P7_POWERPC64_MISC_2 (DIVDE,	"divde",	CONST,	dive_di)
! BU_P7_POWERPC64_MISC_2 (DIVDEU,	"divdeu",	CONST,	diveu_di)
  
  /* 1 argument DFP (decimal floating point) functions added in ISA 2.05.  */
  BU_DFP_MISC_1 (DXEX,		"dxex",		CONST,	dfp_dxex_dd)
diff -Nrcpad gcc-7.3.0/gcc/config/rs6000/rs6000-c.c gcc-7.4.0/gcc/config/rs6000/rs6000-c.c
*** gcc-7.3.0/gcc/config/rs6000/rs6000-c.c	Fri Sep 15 11:24:49 2017
--- gcc-7.4.0/gcc/config/rs6000/rs6000-c.c	Tue Jun 26 19:45:01 2018
*************** const struct altivec_builtin_types altiv
*** 2393,2399 ****
      RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
    { ALTIVEC_BUILTIN_VEC_PACKSU, P8V_BUILTIN_VPKSDUS,
      RS6000_BTI_unsigned_V4SI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
!   { ALTIVEC_BUILTIN_VEC_PACKSU, P8V_BUILTIN_VPKSDUS,
      RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
    { ALTIVEC_BUILTIN_VEC_VPKSWUS, ALTIVEC_BUILTIN_VPKSWUS,
      RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
--- 2393,2399 ----
      RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
    { ALTIVEC_BUILTIN_VEC_PACKSU, P8V_BUILTIN_VPKSDUS,
      RS6000_BTI_unsigned_V4SI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, 0 },
!   { ALTIVEC_BUILTIN_VEC_PACKSU, P8V_BUILTIN_VPKUDUS,
      RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
    { ALTIVEC_BUILTIN_VEC_VPKSWUS, ALTIVEC_BUILTIN_VPKSWUS,
      RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SI, RS6000_BTI_V4SI, 0 },
*************** const struct altivec_builtin_types altiv
*** 5047,5052 ****
--- 5047,5054 ----
      RS6000_BTI_INTDI, RS6000_BTI_V16QI, RS6000_BTI_UINTSI, 0 },
    { P9V_BUILTIN_VEC_VEXTRACT4B, P9V_BUILTIN_VEXTRACT4B,
      RS6000_BTI_INTDI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTSI, 0 },
+   { P9V_BUILTIN_VEC_EXTRACT4B, P9V_BUILTIN_EXTRACT4B,
+     RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI, 0 },
  
    { P9V_BUILTIN_VEC_VEXTULX, P9V_BUILTIN_VEXTUBLX,
      RS6000_BTI_INTQI, RS6000_BTI_UINTSI,
*************** const struct altivec_builtin_types altiv
*** 5101,5127 ****
    { P8V_BUILTIN_VEC_VGBBD, P8V_BUILTIN_VGBBD,
      RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0, 0 },
  
!   { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B,
!     RS6000_BTI_V16QI, RS6000_BTI_V4SI,
!     RS6000_BTI_V16QI, RS6000_BTI_UINTSI },
!   { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B,
!     RS6000_BTI_V16QI, RS6000_BTI_unsigned_V4SI,
!     RS6000_BTI_V16QI, RS6000_BTI_UINTSI },
!   { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B,
      RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V4SI,
!     RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTSI },
!   { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
!     RS6000_BTI_V16QI, RS6000_BTI_INTDI,
!     RS6000_BTI_V16QI, RS6000_BTI_UINTDI },
!   { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
!     RS6000_BTI_V16QI, RS6000_BTI_UINTDI,
!     RS6000_BTI_V16QI, RS6000_BTI_UINTDI },
!   { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
!     RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTDI,
!     RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTDI },
!   { P9V_BUILTIN_VEC_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
!     RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTDI,
!     RS6000_BTI_unsigned_V16QI, RS6000_BTI_UINTDI },
  
    { P8V_BUILTIN_VEC_VADDECUQ, P8V_BUILTIN_VADDECUQ,
      RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI },
--- 5103,5114 ----
    { P8V_BUILTIN_VEC_VGBBD, P8V_BUILTIN_VGBBD,
      RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V16QI, 0, 0 },
  
!   { P9V_BUILTIN_VEC_INSERT4B, P9V_BUILTIN_INSERT4B,
!     RS6000_BTI_unsigned_V16QI, RS6000_BTI_V4SI,
!     RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI },
!   { P9V_BUILTIN_VEC_INSERT4B, P9V_BUILTIN_INSERT4B,
      RS6000_BTI_unsigned_V16QI, RS6000_BTI_unsigned_V4SI,
!     RS6000_BTI_unsigned_V16QI, RS6000_BTI_INTSI },
  
    { P8V_BUILTIN_VEC_VADDECUQ, P8V_BUILTIN_VADDECUQ,
      RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI, RS6000_BTI_V1TI },
*************** altivec_resolve_overloaded_builtin (loca
*** 6088,6093 ****
--- 6075,6089 ----
        stmt = build_binary_op (loc, PLUS_EXPR, stmt, arg2, 1);
        stmt = build_indirect_ref (loc, stmt, RO_NULL);
  
+       /* PR83660: We mark this as having side effects so that
+ 	 downstream in fold_build_cleanup_point_expr () it will get a
+ 	 CLEANUP_POINT_EXPR.  If it does not we can run into an ICE
+ 	 later in gimplify_cleanup_point_expr ().  Potentially this
+ 	 causes missed optimization because the actually is no side
+ 	 effect.  */
+       if (c_dialect_cxx ())
+ 	TREE_SIDE_EFFECTS (stmt) = 1;
+ 
        return stmt;
      }
  
diff -Nrcpad gcc-7.3.0/gcc/config/rs6000/rs6000-protos.h gcc-7.4.0/gcc/config/rs6000/rs6000-protos.h
*** gcc-7.3.0/gcc/config/rs6000/rs6000-protos.h	Thu Dec 14 17:43:32 2017
--- gcc-7.4.0/gcc/config/rs6000/rs6000-protos.h	Thu Jan 25 17:36:47 2018
*************** extern bool rs6000_emit_set_const (rtx,
*** 139,145 ****
  extern int rs6000_emit_cmove (rtx, rtx, rtx, rtx);
  extern int rs6000_emit_vector_cond_expr (rtx, rtx, rtx, rtx, rtx, rtx);
  extern void rs6000_emit_minmax (rtx, enum rtx_code, rtx, rtx);
- extern void rs6000_split_signbit (rtx, rtx);
  extern void rs6000_expand_atomic_compare_and_swap (rtx op[]);
  extern void rs6000_expand_atomic_exchange (rtx op[]);
  extern void rs6000_expand_atomic_op (enum rtx_code, rtx, rtx, rtx, rtx, rtx);
--- 139,144 ----
diff -Nrcpad gcc-7.3.0/gcc/config/rs6000/rs6000.c gcc-7.4.0/gcc/config/rs6000/rs6000.c
*** gcc-7.3.0/gcc/config/rs6000/rs6000.c	Thu Jan 18 01:34:10 2018
--- gcc-7.4.0/gcc/config/rs6000/rs6000.c	Fri Sep 21 10:06:25 2018
***************
*** 1,5 ****
  /* Subroutines used for code generation on IBM RS/6000.
!    Copyright (C) 1991-2017 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines used for code generation on IBM RS/6000.
!    Copyright (C) 1991-2018 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
*************** static rtx rs6000_debug_legitimize_reloa
*** 1372,1377 ****
--- 1372,1378 ----
  						   int, int, int *);
  static bool rs6000_mode_dependent_address (const_rtx);
  static bool rs6000_debug_mode_dependent_address (const_rtx);
+ static bool rs6000_offsettable_memref_p (rtx, machine_mode, bool);
  static enum reg_class rs6000_secondary_reload_class (enum reg_class,
  						     machine_mode, rtx);
  static enum reg_class rs6000_debug_secondary_reload_class (enum reg_class,
*************** rs6000_builtin_mask_calculate (void)
*** 3890,3895 ****
--- 3891,3897 ----
  	  | ((TARGET_P9_MISC)		    ? RS6000_BTM_P9_MISC   : 0)
  	  | ((TARGET_MODULO)		    ? RS6000_BTM_MODULO    : 0)
  	  | ((TARGET_64BIT)		    ? RS6000_BTM_64BIT     : 0)
+ 	  | ((TARGET_POWERPC64)		    ? RS6000_BTM_POWERPC64 : 0)
  	  | ((TARGET_CRYPTO)		    ? RS6000_BTM_CRYPTO	   : 0)
  	  | ((TARGET_HTM)		    ? RS6000_BTM_HTM	   : 0)
  	  | ((TARGET_DFP)		    ? RS6000_BTM_DFP	   : 0)
*************** rs6000_option_override_internal (bool gl
*** 5563,5568 ****
--- 5565,5575 ----
    if (TARGET_LINK_STACK == -1)
      SET_TARGET_LINK_STACK (rs6000_cpu == PROCESSOR_PPC476 && flag_pic);
  
+   /* Deprecate use of -mno-speculate-indirect-jumps.  */
+   if (!rs6000_speculate_indirect_jumps)
+     warning (0, "%qs is deprecated and not recommended in any circumstances",
+ 	     "-mno-speculate-indirect-jumps");
+ 
    return ret;
  }
  
*************** mem_operand_gpr (rtx op, machine_mode mo
*** 8558,8563 ****
--- 8565,8581 ----
    int extra;
    rtx addr = XEXP (op, 0);
  
+   /* PR85755: Allow PRE_INC and PRE_DEC addresses.  */
+   if (TARGET_UPDATE
+       && (GET_CODE (addr) == PRE_INC || GET_CODE (addr) == PRE_DEC)
+       && mode_supports_pre_incdec_p (mode)
+       && 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;
+ 
    op = address_offset (addr);
    if (op == NULL_RTX)
      return true;
*************** toc_relative_expr_p (const_rtx op, bool
*** 8822,8828 ****
      }
  
    return (GET_CODE (tocrel_base) == UNSPEC
! 	  && XINT (tocrel_base, 1) == UNSPEC_TOCREL);
  }
  
  /* Return true if X is a constant pool address, and also for cmodel=medium
--- 8840,8848 ----
      }
  
    return (GET_CODE (tocrel_base) == UNSPEC
! 	  && XINT (tocrel_base, 1) == UNSPEC_TOCREL
! 	  && REG_P (XVECEXP (tocrel_base, 0, 1))
! 	  && REGNO (XVECEXP (tocrel_base, 0, 1)) == TOC_REGISTER);
  }
  
  /* Return true if X is a constant pool address, and also for cmodel=medium
*************** rs6000_find_base_term (rtx op)
*** 10328,10334 ****
     in 32-bit mode, that the recog predicate rejects.  */
  
  static bool
! rs6000_offsettable_memref_p (rtx op, machine_mode reg_mode)
  {
    bool worst_case;
  
--- 10348,10354 ----
     in 32-bit mode, that the recog predicate rejects.  */
  
  static bool
! rs6000_offsettable_memref_p (rtx op, machine_mode reg_mode, bool strict)
  {
    bool worst_case;
  
*************** rs6000_offsettable_memref_p (rtx op, mac
*** 10336,10342 ****
      return false;
  
    /* First mimic offsettable_memref_p.  */
!   if (offsettable_address_p (true, GET_MODE (op), XEXP (op, 0)))
      return true;
  
    /* offsettable_address_p invokes rs6000_mode_dependent_address, but
--- 10356,10362 ----
      return false;
  
    /* First mimic offsettable_memref_p.  */
!   if (offsettable_address_p (strict, GET_MODE (op), XEXP (op, 0)))
      return true;
  
    /* offsettable_address_p invokes rs6000_mode_dependent_address, but
*************** rs6000_offsettable_memref_p (rtx op, mac
*** 10350,10356 ****
    worst_case = ((TARGET_POWERPC64 && GET_MODE_CLASS (reg_mode) == MODE_INT)
  		|| GET_MODE_SIZE (reg_mode) == 4);
    return rs6000_legitimate_offset_address_p (GET_MODE (op), XEXP (op, 0),
! 					     true, worst_case);
  }
  
  /* Determine the reassociation width to be used in reassociate_bb.
--- 10370,10376 ----
    worst_case = ((TARGET_POWERPC64 && GET_MODE_CLASS (reg_mode) == MODE_INT)
  		|| GET_MODE_SIZE (reg_mode) == 4);
    return rs6000_legitimate_offset_address_p (GET_MODE (op), XEXP (op, 0),
! 					     strict, worst_case);
  }
  
  /* Determine the reassociation width to be used in reassociate_bb.
*************** rs6000_discover_homogeneous_aggregate (m
*** 11574,11585 ****
  
        if (field_count > 0)
  	{
! 	  int n_regs = (SCALAR_FLOAT_MODE_P (field_mode) ?
! 			(GET_MODE_SIZE (field_mode) + 7) >> 3 : 1);
  
  	  /* The ELFv2 ABI allows homogeneous aggregates to occupy
  	     up to AGGR_ARG_NUM_REG registers.  */
! 	  if (field_count * n_regs <= AGGR_ARG_NUM_REG)
  	    {
  	      if (elt_mode)
  		*elt_mode = field_mode;
--- 11594,11605 ----
  
        if (field_count > 0)
  	{
! 	  int reg_size = ALTIVEC_OR_VSX_VECTOR_MODE (field_mode) ? 16 : 8;
! 	  int field_size = ROUND_UP (GET_MODE_SIZE (field_mode), reg_size);
  
  	  /* The ELFv2 ABI allows homogeneous aggregates to occupy
  	     up to AGGR_ARG_NUM_REG registers.  */
! 	  if (field_count * field_size <= AGGR_ARG_NUM_REG * reg_size)
  	    {
  	      if (elt_mode)
  		*elt_mode = field_mode;
*************** rs6000_gimplify_va_arg (tree valist, tre
*** 14106,14111 ****
--- 14126,14132 ----
  
        tree copy = build_call_expr (builtin_decl_implicit (BUILT_IN_MEMCPY),
  				   3, dest_addr, addr, size_int (rsize * 4));
+       TREE_ADDRESSABLE (tmp) = 1;
  
        gimplify_and_add (copy, pre_p);
        addr = dest_addr;
*************** altivec_expand_lv_builtin (enum insn_cod
*** 15087,15098 ****
    /* For LVX, express the RTL accurately by ANDing the address with -16.
       LVXL and LVE*X expand to use UNSPECs to hide their special behavior,
       so the raw address is fine.  */
!   if (icode == CODE_FOR_altivec_lvx_v2df_2op
!       || icode == CODE_FOR_altivec_lvx_v2di_2op
!       || icode == CODE_FOR_altivec_lvx_v4sf_2op
!       || icode == CODE_FOR_altivec_lvx_v4si_2op
!       || icode == CODE_FOR_altivec_lvx_v8hi_2op
!       || icode == CODE_FOR_altivec_lvx_v16qi_2op)
      {
        rtx rawaddr;
        if (op0 == const0_rtx)
--- 15108,15119 ----
    /* For LVX, express the RTL accurately by ANDing the address with -16.
       LVXL and LVE*X expand to use UNSPECs to hide their special behavior,
       so the raw address is fine.  */
!   if (icode == CODE_FOR_altivec_lvx_v2df
!       || icode == CODE_FOR_altivec_lvx_v2di
!       || icode == CODE_FOR_altivec_lvx_v4sf
!       || icode == CODE_FOR_altivec_lvx_v4si
!       || icode == CODE_FOR_altivec_lvx_v8hi
!       || icode == CODE_FOR_altivec_lvx_v16qi)
      {
        rtx rawaddr;
        if (op0 == const0_rtx)
*************** altivec_expand_stv_builtin (enum insn_co
*** 15278,15289 ****
    /* For STVX, express the RTL accurately by ANDing the address with -16.
       STVXL and STVE*X expand to use UNSPECs to hide their special behavior,
       so the raw address is fine.  */
!   if (icode == CODE_FOR_altivec_stvx_v2df_2op
!       || icode == CODE_FOR_altivec_stvx_v2di_2op
!       || icode == CODE_FOR_altivec_stvx_v4sf_2op
!       || icode == CODE_FOR_altivec_stvx_v4si_2op
!       || icode == CODE_FOR_altivec_stvx_v8hi_2op
!       || icode == CODE_FOR_altivec_stvx_v16qi_2op)
      {
        if (op1 == const0_rtx)
  	rawaddr = op2;
--- 15299,15310 ----
    /* For STVX, express the RTL accurately by ANDing the address with -16.
       STVXL and STVE*X expand to use UNSPECs to hide their special behavior,
       so the raw address is fine.  */
!   if (icode == CODE_FOR_altivec_stvx_v2df
!       || icode == CODE_FOR_altivec_stvx_v2di
!       || icode == CODE_FOR_altivec_stvx_v4sf
!       || icode == CODE_FOR_altivec_stvx_v4si
!       || icode == CODE_FOR_altivec_stvx_v8hi
!       || icode == CODE_FOR_altivec_stvx_v16qi)
      {
        if (op1 == const0_rtx)
  	rawaddr = op2;
*************** altivec_expand_builtin (tree exp, rtx ta
*** 16184,16201 ****
    switch (fcode)
      {
      case ALTIVEC_BUILTIN_STVX_V2DF:
!       return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v2df_2op, exp);
      case ALTIVEC_BUILTIN_STVX_V2DI:
!       return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v2di_2op, exp);
      case ALTIVEC_BUILTIN_STVX_V4SF:
!       return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v4sf_2op, exp);
      case ALTIVEC_BUILTIN_STVX:
      case ALTIVEC_BUILTIN_STVX_V4SI:
!       return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v4si_2op, exp);
      case ALTIVEC_BUILTIN_STVX_V8HI:
!       return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v8hi_2op, exp);
      case ALTIVEC_BUILTIN_STVX_V16QI:
!       return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v16qi_2op, exp);
      case ALTIVEC_BUILTIN_STVEBX:
        return altivec_expand_stv_builtin (CODE_FOR_altivec_stvebx, exp);
      case ALTIVEC_BUILTIN_STVEHX:
--- 16205,16222 ----
    switch (fcode)
      {
      case ALTIVEC_BUILTIN_STVX_V2DF:
!       return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v2df, exp);
      case ALTIVEC_BUILTIN_STVX_V2DI:
!       return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v2di, exp);
      case ALTIVEC_BUILTIN_STVX_V4SF:
!       return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v4sf, exp);
      case ALTIVEC_BUILTIN_STVX:
      case ALTIVEC_BUILTIN_STVX_V4SI:
!       return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v4si, exp);
      case ALTIVEC_BUILTIN_STVX_V8HI:
!       return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v8hi, exp);
      case ALTIVEC_BUILTIN_STVX_V16QI:
!       return altivec_expand_stv_builtin (CODE_FOR_altivec_stvx_v16qi, exp);
      case ALTIVEC_BUILTIN_STVEBX:
        return altivec_expand_stv_builtin (CODE_FOR_altivec_stvebx, exp);
      case ALTIVEC_BUILTIN_STVEHX:
*************** altivec_expand_builtin (tree exp, rtx ta
*** 16374,16379 ****
--- 16395,16401 ----
  
      case P9V_BUILTIN_VEXTRACT4B:
      case P9V_BUILTIN_VEC_VEXTRACT4B:
+     case P9V_BUILTIN_VEC_EXTRACT4B:
        arg1 = CALL_EXPR_ARG (exp, 1);
        STRIP_NOPS (arg1);
  
*************** altivec_expand_builtin (tree exp, rtx ta
*** 16388,16396 ****
  	}
        break;
  
!     case P9V_BUILTIN_VINSERT4B:
!     case P9V_BUILTIN_VINSERT4B_DI:
!     case P9V_BUILTIN_VEC_VINSERT4B:
        arg2 = CALL_EXPR_ARG (exp, 2);
        STRIP_NOPS (arg2);
  
--- 16410,16416 ----
  	}
        break;
  
!     case P9V_BUILTIN_VEC_INSERT4B:
        arg2 = CALL_EXPR_ARG (exp, 2);
        STRIP_NOPS (arg2);
  
*************** altivec_expand_builtin (tree exp, rtx ta
*** 16400,16406 ****
  
        if (TREE_CODE (arg2) != INTEGER_CST || TREE_INT_CST_LOW (arg2) > 12)
  	{
! 	  error ("third argument to vec_vinsert4b must be 0..12");
  	  return expand_call (exp, target, false);
  	}
        break;
--- 16420,16426 ----
  
        if (TREE_CODE (arg2) != INTEGER_CST || TREE_INT_CST_LOW (arg2) > 12)
  	{
! 	  error ("third argument to vec_insert4b must be 0..12");
  	  return expand_call (exp, target, false);
  	}
        break;
*************** altivec_expand_builtin (tree exp, rtx ta
*** 16460,16482 ****
        return altivec_expand_lv_builtin (CODE_FOR_altivec_lvxl_v16qi,
  					exp, target, false);
      case ALTIVEC_BUILTIN_LVX_V2DF:
!       return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v2df_2op,
  					exp, target, false);
      case ALTIVEC_BUILTIN_LVX_V2DI:
!       return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v2di_2op,
  					exp, target, false);
      case ALTIVEC_BUILTIN_LVX_V4SF:
!       return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v4sf_2op,
  					exp, target, false);
      case ALTIVEC_BUILTIN_LVX:
      case ALTIVEC_BUILTIN_LVX_V4SI:
!       return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v4si_2op,
  					exp, target, false);
      case ALTIVEC_BUILTIN_LVX_V8HI:
!       return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v8hi_2op,
  					exp, target, false);
      case ALTIVEC_BUILTIN_LVX_V16QI:
!       return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v16qi_2op,
  					exp, target, false);
      case ALTIVEC_BUILTIN_LVLX:
        return altivec_expand_lv_builtin (CODE_FOR_altivec_lvlx,
--- 16480,16502 ----
        return altivec_expand_lv_builtin (CODE_FOR_altivec_lvxl_v16qi,
  					exp, target, false);
      case ALTIVEC_BUILTIN_LVX_V2DF:
!       return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v2df,
  					exp, target, false);
      case ALTIVEC_BUILTIN_LVX_V2DI:
!       return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v2di,
  					exp, target, false);
      case ALTIVEC_BUILTIN_LVX_V4SF:
!       return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v4sf,
  					exp, target, false);
      case ALTIVEC_BUILTIN_LVX:
      case ALTIVEC_BUILTIN_LVX_V4SI:
!       return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v4si,
  					exp, target, false);
      case ALTIVEC_BUILTIN_LVX_V8HI:
!       return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v8hi,
  					exp, target, false);
      case ALTIVEC_BUILTIN_LVX_V16QI:
!       return altivec_expand_lv_builtin (CODE_FOR_altivec_lvx_v16qi,
  					exp, target, false);
      case ALTIVEC_BUILTIN_LVLX:
        return altivec_expand_lv_builtin (CODE_FOR_altivec_lvlx,
*************** rs6000_invalid_builtin (enum rs6000_buil
*** 17040,17045 ****
--- 17060,17070 ----
      error ("Builtin function %s requires the -mhard-float option", name);
    else if ((fnmask & RS6000_BTM_FLOAT128) != 0)
      error ("Builtin function %s requires the -mfloat128 option", name);
+   else if ((fnmask & (RS6000_BTM_POPCNTD | RS6000_BTM_POWERPC64))
+ 	   == (RS6000_BTM_POPCNTD | RS6000_BTM_POWERPC64))
+     error ("builtin function %qs requires the %qs (or newer), and "
+ 	   "%qs or %qs options",
+ 	   name, "-mcpu=power7", "-m64", "-mpowerpc64");
    else
      error ("Builtin function %s is not supported with the current options",
  	   name);
*************** builtin_function_type (machine_mode mode
*** 18804,18812 ****
      case CRYPTO_BUILTIN_VPMSUM:
      case MISC_BUILTIN_ADDG6S:
      case MISC_BUILTIN_DIVWEU:
-     case MISC_BUILTIN_DIVWEUO:
      case MISC_BUILTIN_DIVDEU:
-     case MISC_BUILTIN_DIVDEUO:
        h.uns_p[0] = 1;
        h.uns_p[1] = 1;
        h.uns_p[2] = 1;
--- 18829,18835 ----
*************** rs6000_output_move_128bit (rtx operands[
*** 23267,23273 ****
  	}
  
        else if (TARGET_ALTIVEC && src_vmx_p
! 	       && altivec_indexed_or_indirect_operand (src, mode))
  	return "stvx %1,%y0";
  
        else if (TARGET_VSX && src_vsx_p)
--- 23290,23296 ----
  	}
  
        else if (TARGET_ALTIVEC && src_vmx_p
! 	       && altivec_indexed_or_indirect_operand (dest, mode))
  	return "stvx %1,%y0";
  
        else if (TARGET_VSX && src_vsx_p)
*************** print_operand (FILE *file, rtx x, int co
*** 23980,23986 ****
  
  	    /* Fall through.  Must be [reg+reg].  */
  	  }
! 	if (VECTOR_MEM_ALTIVEC_P (GET_MODE (x))
  	    && GET_CODE (tmp) == AND
  	    && GET_CODE (XEXP (tmp, 1)) == CONST_INT
  	    && INTVAL (XEXP (tmp, 1)) == -16)
--- 24003,24009 ----
  
  	    /* Fall through.  Must be [reg+reg].  */
  	  }
! 	if (VECTOR_MEM_ALTIVEC_OR_VSX_P (GET_MODE (x))
  	    && GET_CODE (tmp) == AND
  	    && GET_CODE (XEXP (tmp, 1)) == CONST_INT
  	    && INTVAL (XEXP (tmp, 1)) == -16)
*************** rs6000_emit_minmax (rtx dest, enum rtx_c
*** 25907,25955 ****
      emit_move_insn (dest, target);
  }
  
- /* Split a signbit operation on 64-bit machines with direct move.  Also allow
-    for the value to come from memory or if it is already loaded into a GPR.  */
- 
- void
- rs6000_split_signbit (rtx dest, rtx src)
- {
-   machine_mode d_mode = GET_MODE (dest);
-   machine_mode s_mode = GET_MODE (src);
-   rtx dest_di = (d_mode == DImode) ? dest : gen_lowpart (DImode, dest);
-   rtx shift_reg = dest_di;
- 
-   gcc_assert (FLOAT128_IEEE_P (s_mode) && TARGET_POWERPC64);
- 
-   if (MEM_P (src))
-     {
-       rtx mem = (WORDS_BIG_ENDIAN
- 		 ? adjust_address (src, DImode, 0)
- 		 : adjust_address (src, DImode, 8));
-       emit_insn (gen_rtx_SET (dest_di, mem));
-     }
- 
-   else
-     {
-       unsigned int r = reg_or_subregno (src);
- 
-       if (INT_REGNO_P (r))
- 	shift_reg = gen_rtx_REG (DImode, r + (BYTES_BIG_ENDIAN == 0));
- 
-       else
- 	{
- 	  /* Generate the special mfvsrd instruction to get it in a GPR.  */
- 	  gcc_assert (VSX_REGNO_P (r));
- 	  if (s_mode == KFmode)
- 	    emit_insn (gen_signbitkf2_dm2 (dest_di, src));
- 	  else
- 	    emit_insn (gen_signbittf2_dm2 (dest_di, src));
- 	}
-     }
- 
-   emit_insn (gen_lshrdi3 (dest_di, shift_reg, GEN_INT (63)));
-   return;
- }
- 
  /* A subroutine of the atomic operation splitters.  Jump to LABEL if
     COND is true.  Mark the jump as unlikely to be taken.  */
  
--- 25930,25935 ----
*************** rs6000_split_multireg_move (rtx dst, rtx
*** 26588,26594 ****
  	      emit_insn (gen_add3_insn (breg, breg, delta_rtx));
  	      src = replace_equiv_address (src, breg);
  	    }
! 	  else if (! rs6000_offsettable_memref_p (src, reg_mode))
  	    {
  	      if (GET_CODE (XEXP (src, 0)) == PRE_MODIFY)
  		{
--- 26568,26574 ----
  	      emit_insn (gen_add3_insn (breg, breg, delta_rtx));
  	      src = replace_equiv_address (src, breg);
  	    }
! 	  else if (! rs6000_offsettable_memref_p (src, reg_mode, true))
  	    {
  	      if (GET_CODE (XEXP (src, 0)) == PRE_MODIFY)
  		{
*************** rs6000_split_multireg_move (rtx dst, rtx
*** 26655,26661 ****
  		emit_insn (gen_add3_insn (breg, breg, delta_rtx));
  	      dst = replace_equiv_address (dst, breg);
  	    }
! 	  else if (!rs6000_offsettable_memref_p (dst, reg_mode)
  		   && GET_CODE (XEXP (dst, 0)) != LO_SUM)
  	    {
  	      if (GET_CODE (XEXP (dst, 0)) == PRE_MODIFY)
--- 26635,26641 ----
  		emit_insn (gen_add3_insn (breg, breg, delta_rtx));
  	      dst = replace_equiv_address (dst, breg);
  	    }
! 	  else if (!rs6000_offsettable_memref_p (dst, reg_mode, true)
  		   && GET_CODE (XEXP (dst, 0)) != LO_SUM)
  	    {
  	      if (GET_CODE (XEXP (dst, 0)) == PRE_MODIFY)
*************** rs6000_split_multireg_move (rtx dst, rtx
*** 26694,26700 ****
  		}
  	    }
  	  else if (GET_CODE (XEXP (dst, 0)) != LO_SUM)
! 	    gcc_assert (rs6000_offsettable_memref_p (dst, reg_mode));
  	}
  
        for (i = 0; i < nregs; i++)
--- 26674,26680 ----
  		}
  	    }
  	  else if (GET_CODE (XEXP (dst, 0)) != LO_SUM)
! 	    gcc_assert (rs6000_offsettable_memref_p (dst, reg_mode, true));
  	}
  
        for (i = 0; i < nregs; i++)
*************** rs6000_function_ok_for_sibcall (tree dec
*** 27813,27818 ****
--- 27793,27804 ----
  {
    tree fntype;
  
+   /* The sibcall epilogue may clobber the static chain register.
+      ??? We could work harder and avoid that, but it's probably
+      not worth the hassle in practice.  */
+   if (CALL_EXPR_STATIC_CHAIN (exp))
+     return false;
+ 
    if (decl)
      fntype = TREE_TYPE (decl);
    else
*************** rs6000_internal_arg_pointer (void)
*** 31988,31995 ****
  	  emit_insn_after (pat, get_insns ());
  	  pop_topmost_sequence ();
  	}
!       return plus_constant (Pmode, cfun->machine->split_stack_arg_pointer,
! 			    FIRST_PARM_OFFSET (current_function_decl));
      }
    return virtual_incoming_args_rtx;
  }
--- 31974,31982 ----
  	  emit_insn_after (pat, get_insns ());
  	  pop_topmost_sequence ();
  	}
!       rtx ret = plus_constant (Pmode, cfun->machine->split_stack_arg_pointer,
! 			       FIRST_PARM_OFFSET (current_function_decl));
!       return copy_to_reg (ret);
      }
    return virtual_incoming_args_rtx;
  }
*************** rs6000_elf_in_small_data_p (const_tree d
*** 35647,35652 ****
--- 35634,35644 ----
      }
    else
      {
+       /* If we are told not to put readonly data in sdata, then don't.  */
+       if (TREE_READONLY (decl) && rs6000_sdata != SDATA_EABI
+ 	  && !rs6000_readonly_in_sdata)
+ 	return false;
+ 
        HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (decl));
  
        if (size > 0
*************** static struct rs6000_opt_mask const rs60
*** 39167,39172 ****
--- 39159,39165 ----
    { "hard-dfp",		 RS6000_BTM_DFP,	false, false },
    { "hard-float",	 RS6000_BTM_HARD_FLOAT,	false, false },
    { "long-double-128",	 RS6000_BTM_LDBL128,	false, false },
+   { "powerpc64",	 RS6000_BTM_POWERPC64,  false, false },
    { "float128",		 RS6000_BTM_FLOAT128,   false, false },
  };
  
*************** insn_is_swap_p (rtx insn)
*** 41657,41662 ****
--- 41650,41687 ----
    return 1;
  }
  
+ /* Return 1 iff UID, known to reference a swap, is both fed by a load
+    and a feeder of a store.  */
+ static unsigned int
+ swap_feeds_both_load_and_store (swap_web_entry *insn_entry)
+ {
+   rtx insn = insn_entry->insn;
+   struct df_insn_info *insn_info = DF_INSN_INFO_GET (insn);
+   df_ref def, use;
+   struct df_link *link = 0;
+   rtx_insn *load = 0, *store = 0;
+   bool fed_by_load = 0;
+   bool feeds_store = 0;
+ 
+   FOR_EACH_INSN_INFO_USE (use, insn_info)
+     {
+       link = DF_REF_CHAIN (use);
+       load = DF_REF_INSN (link->ref);
+       if (insn_is_load_p (load) && insn_is_swap_p (load))
+ 	fed_by_load = 1;
+     }
+ 
+   FOR_EACH_INSN_INFO_DEF (def, insn_info)
+     {
+       link = DF_REF_CHAIN (def);
+       store = DF_REF_INSN (link->ref);
+       if (insn_is_store_p (store) && insn_is_swap_p (store))
+ 	feeds_store = 1;
+     }
+ 
+   return fed_by_load && feeds_store;
+ }
+ 
  /* Return TRUE if insn is a swap fed by a load from the constant pool.  */
  static bool
  const_load_sequence_p (swap_web_entry *insn_entry, rtx insn)
*************** rtx_is_swappable_p (rtx op, unsigned int
*** 41860,41865 ****
--- 41885,41891 ----
  	  {
  	  default:
  	    break;
+ 	  case UNSPEC_VBPERMQ:
  	  case UNSPEC_VMRGH_DIRECT:
  	  case UNSPEC_VMRGL_DIRECT:
  	  case UNSPEC_VPACK_SIGN_SIGN_SAT:
*************** rtx_is_swappable_p (rtx op, unsigned int
*** 41871,41876 ****
--- 41897,41903 ----
  	  case UNSPEC_VPERM_UNS:
  	  case UNSPEC_VPERMHI:
  	  case UNSPEC_VPERMSI:
+ 	  case UNSPEC_VPERMXOR:
  	  case UNSPEC_VPKPX:
  	  case UNSPEC_VSLDOI:
  	  case UNSPEC_VSLO:
*************** rs6000_analyze_swaps (function *fun)
*** 43129,43134 ****
--- 43156,43169 ----
  	  && !insn_entry[i].is_swap && !insn_entry[i].is_swappable)
  	root->web_not_optimizable = 1;
  
+       /* If we have a swap that is both fed by a permuting load
+ 	 and a feeder of a permuting store, then the optimization
+ 	 isn't appropriate.  (Consider vec_xl followed by vec_xst_be.)  */
+       else if (insn_entry[i].is_swap && !insn_entry[i].is_load
+ 	       && !insn_entry[i].is_store
+ 	       && swap_feeds_both_load_and_store (&insn_entry[i]))
+ 	root->web_not_optimizable = 1;
+ 
        /* If we have permuting loads or stores that are not accompanied
  	 by a register swap, the optimization isn't appropriate.  */
        else if (insn_entry[i].is_load && insn_entry[i].is_swap)
diff -Nrcpad gcc-7.3.0/gcc/config/rs6000/rs6000.h gcc-7.4.0/gcc/config/rs6000/rs6000.h
*** gcc-7.3.0/gcc/config/rs6000/rs6000.h	Wed Mar 22 17:47:55 2017
--- gcc-7.4.0/gcc/config/rs6000/rs6000.h	Thu Jun  7 14:01:57 2018
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for IBM RS/6000.
!    Copyright (C) 1992-2017 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for IBM RS/6000.
!    Copyright (C) 1992-2018 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
***************
*** 110,116 ****
  /* Common ASM definitions used by ASM_SPEC among the various targets for
     handling -mcpu=xxx switches.  There is a parallel list in driver-rs6000.c to
     provide the default assembler options if the user uses -mcpu=native, so if
!    you make changes here, make them also there.  */
  #define ASM_CPU_SPEC \
  "%{!mcpu*: \
    %{mpowerpc64*: -mppc64} \
--- 110,117 ----
  /* Common ASM definitions used by ASM_SPEC among the various targets for
     handling -mcpu=xxx switches.  There is a parallel list in driver-rs6000.c to
     provide the default assembler options if the user uses -mcpu=native, so if
!    you make changes here, make them also there.  PR63177: Do not pass -mpower8
!    to the assembler if -mpower9-vector was also used.  */
  #define ASM_CPU_SPEC \
  "%{!mcpu*: \
    %{mpowerpc64*: -mppc64} \
***************
*** 124,130 ****
  %{mcpu=power6: %(asm_cpu_power6) -maltivec} \
  %{mcpu=power6x: %(asm_cpu_power6) -maltivec} \
  %{mcpu=power7: %(asm_cpu_power7)} \
! %{mcpu=power8: %(asm_cpu_power8)} \
  %{mcpu=power9: %(asm_cpu_power9)} \
  %{mcpu=a2: -ma2} \
  %{mcpu=powerpc: -mppc} \
--- 125,131 ----
  %{mcpu=power6: %(asm_cpu_power6) -maltivec} \
  %{mcpu=power6x: %(asm_cpu_power6) -maltivec} \
  %{mcpu=power7: %(asm_cpu_power7)} \
! %{mcpu=power8: %{!mpower9-vector: %(asm_cpu_power8)}} \
  %{mcpu=power9: %(asm_cpu_power9)} \
  %{mcpu=a2: -ma2} \
  %{mcpu=powerpc: -mppc} \
***************
*** 173,178 ****
--- 174,180 ----
  %{maltivec: -maltivec} \
  %{mvsx: -mvsx %{!maltivec: -maltivec} %{!mcpu*: %(asm_cpu_power7)}} \
  %{mpower8-vector|mcrypto|mdirect-move|mhtm: %{!mcpu*: %(asm_cpu_power8)}} \
+ %{mpower9-vector: %{!mcpu*|mcpu=power8: %(asm_cpu_power9)}} \
  -many"
  
  #define CPP_DEFAULT_SPEC ""
*************** extern int frame_pointer_needed;
*** 2735,2740 ****
--- 2737,2743 ----
  #define RS6000_BTM_HARD_FLOAT	MASK_SOFT_FLOAT	/* Hardware floating point.  */
  #define RS6000_BTM_LDBL128	MASK_MULTIPLE	/* 128-bit long double.  */
  #define RS6000_BTM_64BIT	MASK_64BIT	/* 64-bit addressing.  */
+ #define RS6000_BTM_POWERPC64	MASK_POWERPC64	/* 64-bit registers.  */
  #define RS6000_BTM_FLOAT128	MASK_FLOAT128_TYPE /* IEEE 128-bit float.  */
  
  #define RS6000_BTM_COMMON	(RS6000_BTM_ALTIVEC			\
*************** extern int frame_pointer_needed;
*** 2754,2759 ****
--- 2757,2763 ----
  				 | RS6000_BTM_DFP			\
  				 | RS6000_BTM_HARD_FLOAT		\
  				 | RS6000_BTM_LDBL128			\
+ 				 | RS6000_BTM_POWERPC64			\
  				 | RS6000_BTM_FLOAT128)
  
  /* Define builtin enum index.  */
diff -Nrcpad gcc-7.3.0/gcc/config/rs6000/rs6000.md gcc-7.4.0/gcc/config/rs6000/rs6000.md
*** gcc-7.3.0/gcc/config/rs6000/rs6000.md	Sun Jan 21 13:32:58 2018
--- gcc-7.4.0/gcc/config/rs6000/rs6000.md	Fri Sep 28 00:32:46 2018
***************
*** 1,5 ****
  ;; Machine description for IBM RISC System 6000 (POWER) for GNU C compiler
! ;; Copyright (C) 1990-2017 Free Software Foundation, Inc.
  ;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for IBM RISC System 6000 (POWER) for GNU C compiler
! ;; Copyright (C) 1990-2018 Free Software Foundation, Inc.
  ;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
  ;; This file is part of GCC.
***************
*** 135,143 ****
     UNSPEC_CDTBCD
     UNSPEC_CBCDTD
     UNSPEC_DIVE
-    UNSPEC_DIVEO
     UNSPEC_DIVEU
-    UNSPEC_DIVEUO
     UNSPEC_UNPACK_128BIT
     UNSPEC_PACK_128BIT
     UNSPEC_LSQ
--- 135,141 ----
***************
*** 544,550 ****
  (define_code_attr su [(sign_extend	"s")
  		      (zero_extend	"u")
  		      (fix		"s")
! 		      (unsigned_fix	"s")
  		      (float		"s")
  		      (unsigned_float	"u")])
  
--- 542,548 ----
  (define_code_attr su [(sign_extend	"s")
  		      (zero_extend	"u")
  		      (fix		"s")
! 		      (unsigned_fix	"u")
  		      (float		"s")
  		      (unsigned_float	"u")])
  
***************
*** 1008,1014 ****
  
  (define_insn "extendsi<mode>2"
    [(set (match_operand:EXTSI 0 "gpc_reg_operand" "=r,r,wl,wu,wj,wK,wH")
! 	(sign_extend:EXTSI (match_operand:SI 1 "lwa_operand" "Y,r,Z,Z,r,wK,wH")))]
    ""
    "@
     lwa%U1%X1 %0,%1
--- 1006,1012 ----
  
  (define_insn "extendsi<mode>2"
    [(set (match_operand:EXTSI 0 "gpc_reg_operand" "=r,r,wl,wu,wj,wK,wH")
! 	(sign_extend:EXTSI (match_operand:SI 1 "lwa_operand" "YZ,r,Z,Z,r,wK,wH")))]
    ""
    "@
     lwa%U1%X1 %0,%1
***************
*** 4757,4768 ****
  {
    if (FLOAT128_IEEE_P (<MODE>mode))
      {
        if (<MODE>mode == KFmode)
! 	emit_insn (gen_signbitkf2_dm (operands[0], operands[1]));
        else if (<MODE>mode == TFmode)
! 	emit_insn (gen_signbittf2_dm (operands[0], operands[1]));
        else
  	gcc_unreachable ();
        DONE;
      }
    operands[2] = gen_reg_rtx (DFmode);
--- 4755,4773 ----
  {
    if (FLOAT128_IEEE_P (<MODE>mode))
      {
+       rtx dest = operands[0];
+       rtx src = operands[1];
+       rtx tmp = gen_reg_rtx (DImode);
+       rtx dest_di = gen_lowpart (DImode, dest);
+ 
        if (<MODE>mode == KFmode)
! 	emit_insn (gen_signbitkf2_dm (tmp, src));
        else if (<MODE>mode == TFmode)
! 	emit_insn (gen_signbittf2_dm (tmp, src));
        else
  	gcc_unreachable ();
+ 
+       emit_insn (gen_lshrdi3 (dest_di, tmp, GEN_INT (63)));
        DONE;
      }
    operands[2] = gen_reg_rtx (DFmode);
***************
*** 4783,4788 ****
--- 4788,4853 ----
      }
  })
  
+ ;; Optimize IEEE 128-bit signbit on 64-bit systems with direct move to avoid
+ ;; multiple direct moves.  If we used a SUBREG:DI of the Floa128 type, the
+ ;; register allocator would typically move the entire _Float128 item to GPRs (2
+ ;; instructions on ISA 3.0, 3-4 instructions on ISA 2.07).
+ ;;
+ ;; After register allocation, if the _Float128 had originally been in GPRs, the
+ ;; split allows the post reload phases to eliminate the move, and do the shift
+ ;; directly with the register that contains the signbit.
+ (define_insn_and_split "signbit<mode>2_dm"
+   [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
+ 	(unspec:DI [(match_operand:SIGNBIT 1 "gpc_reg_operand" "wa,r")]
+ 		   UNSPEC_SIGNBIT))]
+   "TARGET_POWERPC64 && TARGET_DIRECT_MOVE"
+   "@
+    mfvsrd %0,%x1
+    #"
+   "&& reload_completed && int_reg_operand (operands[1], <MODE>mode)"
+   [(set (match_dup 0)
+ 	(match_dup 2))]
+ {
+   operands[2] = gen_highpart (DImode, operands[1]);
+ }
+  [(set_attr "type" "mftgpr,*")])
+ 
+ ;; Optimize IEEE 128-bit signbit on to avoid loading the value into a vector
+ ;; register and then doing a direct move if the value comes from memory.  On
+ ;; little endian, we have to load the 2nd double-word to get the sign bit.
+ (define_insn_and_split "*signbit<mode>2_dm_mem"
+   [(set (match_operand:DI 0 "gpc_reg_operand" "=b")
+ 	(unspec:DI [(match_operand:SIGNBIT 1 "memory_operand" "m")]
+ 		   UNSPEC_SIGNBIT))]
+   "TARGET_POWERPC64 && TARGET_DIRECT_MOVE"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(match_dup 2))]
+ {
+   rtx dest = operands[0];
+   rtx src = operands[1];
+   rtx addr = XEXP (src, 0);
+ 
+   if (WORDS_BIG_ENDIAN)
+     operands[2] = adjust_address (src, DImode, 0);
+ 
+   else if (REG_P (addr) || SUBREG_P (addr))
+     operands[2] = adjust_address (src, DImode, 8);
+ 
+   else if (GET_CODE (addr) == PLUS && REG_P (XEXP (addr, 0))
+ 	   && CONST_INT_P (XEXP (addr, 1)) && mem_operand_gpr (src, DImode))
+     operands[2] = adjust_address (src, DImode, 8);
+ 
+   else
+     {
+       rtx tmp = can_create_pseudo_p () ? gen_reg_rtx (DImode) : dest;
+       emit_insn (gen_rtx_SET (tmp, addr));
+       operands[2] = change_address (src, DImode,
+ 				    gen_rtx_PLUS (DImode, tmp, GEN_INT (8)));
+     }
+ })
+ 
  (define_expand "copysign<mode>3"
    [(set (match_dup 3)
          (abs:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "")))
***************
*** 4812,4865 ****
     operands[5] = CONST0_RTX (<MODE>mode);
    })
  
- ;; Optimize signbit on 64-bit systems with direct move to avoid doing the store
- ;; and load.
- (define_insn_and_split "signbit<mode>2_dm"
-   [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r")
- 	(unspec:SI
- 	 [(match_operand:SIGNBIT 1 "input_operand" "wa,m,r")]
- 	 UNSPEC_SIGNBIT))]
-   "TARGET_POWERPC64 && TARGET_DIRECT_MOVE"
-   "#"
-   "&& reload_completed"
-   [(const_int 0)]
- {
-   rs6000_split_signbit (operands[0], operands[1]);
-   DONE;
- }
-  [(set_attr "length" "8,8,4")
-   (set_attr "type" "mftgpr,load,integer")])
- 
- (define_insn_and_split "*signbit<mode>2_dm_<su>ext"
-   [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r")
- 	(any_extend:DI
- 	 (unspec:SI
- 	  [(match_operand:SIGNBIT 1 "input_operand" "wa,m,r")]
- 	  UNSPEC_SIGNBIT)))]
-   "TARGET_POWERPC64 && TARGET_DIRECT_MOVE"
-   "#"
-   "&& reload_completed"
-   [(const_int 0)]
- {
-   rs6000_split_signbit (operands[0], operands[1]);
-   DONE;
- }
-  [(set_attr "length" "8,8,4")
-   (set_attr "type" "mftgpr,load,integer")])
- 
- ;; MODES_TIEABLE_P doesn't allow DImode to be tied with the various floating
- ;; point types, which makes normal SUBREG's problematical. Instead use a
- ;; special pattern to avoid using a normal movdi.
- (define_insn "signbit<mode>2_dm2"
-   [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
- 	(unspec:DI [(match_operand:SIGNBIT 1 "gpc_reg_operand" "wa")
- 		    (const_int 0)]
- 		   UNSPEC_SIGNBIT))]
-   "TARGET_POWERPC64 && TARGET_DIRECT_MOVE"
-   "mfvsrd %0,%x1"
-  [(set_attr "type" "mftgpr")])
- 
- 
  ;; Use an unspec rather providing an if-then-else in RTL, to prevent the
  ;; compiler from optimizing -0.0
  (define_insn "copysign<mode>3_fcpsgn"
--- 4877,4882 ----
***************
*** 5694,5738 ****
     xscvdpsxds %x0,%x1"
    [(set_attr "type" "fp")])
  
! (define_expand "fix_trunc<SFDF:mode><QHI:mode>2"
!   [(parallel [(set (match_operand:<QHI:MODE> 0 "nonimmediate_operand")
! 		   (fix:QHI (match_operand:SFDF 1 "gpc_reg_operand")))
! 	      (clobber (match_scratch:DI 2))])]
!   "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT
!    && TARGET_VSX_SMALL_INTEGER"
  {
!   if (MEM_P (operands[0]))
!     operands[0] = rs6000_address_for_fpconvert (operands[0]);
! })
  
! (define_insn_and_split "*fix_trunc<SFDF:mode><QHI:mode>2_internal"
!   [(set (match_operand:<QHI:MODE> 0 "reg_or_indexed_operand" "=wIwJ,rZ")
! 	(fix:QHI
! 	 (match_operand:SFDF 1 "gpc_reg_operand" "<SFDF:Fv>,<SFDF:Fv>")))
!    (clobber (match_scratch:DI 2 "=X,wi"))]
!   "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT
!    && TARGET_VSX_SMALL_INTEGER"
    "#"
    "&& reload_completed"
!   [(const_int 0)]
  {
!   rtx dest = operands[0];
!   rtx src = operands[1];
! 
!   if (vsx_register_operand (dest, <QHI:MODE>mode))
!     {
!       rtx di_dest = gen_rtx_REG (DImode, REGNO (dest));
!       emit_insn (gen_fix_trunc<SFDF:mode>di2 (di_dest, src));
!     }
!   else
!     {
!       rtx tmp = operands[2];
!       rtx tmp2 = gen_rtx_REG (<QHI:MODE>mode, REGNO (tmp));
! 
!       emit_insn (gen_fix_trunc<SFDF:mode>di2 (tmp, src));
!       emit_move_insn (dest, tmp2);
!     }
!   DONE;
  })
  
  (define_expand "fixuns_trunc<mode>si2"
--- 5711,5769 ----
     xscvdpsxds %x0,%x1"
    [(set_attr "type" "fp")])
  
! ;; If we have ISA 3.0, QI/HImode values can go in both VSX registers and GPR
! ;; registers.  If we have ISA 2.07, we don't allow QI/HImode values in the
! ;; vector registers, so we need to do direct moves to the GPRs, but SImode
! ;; values can go in VSX registers.  Keeping the direct move part through
! ;; register allocation prevents the register allocator from doing a direct move
! ;; of the SImode value to a GPR, and then a store/load.
! (define_insn_and_split "fix<uns>_trunc<SFDF:mode><QHI:mode>2"
!   [(set (match_operand:<QHI:MODE> 0 "gpc_reg_operand" "=wJ,wJwK,r")
! 	(any_fix:QHI (match_operand:SFDF 1 "gpc_reg_operand" "wJ,wJwK,wa")))
!    (clobber (match_scratch:SI 2 "=X,X,wi"))]
!   "TARGET_DIRECT_MOVE"
!   "@
!    fctiw<u>z %0,%1
!    xscvdp<su>xws %x0,%x1
!    #"
!   "&& reload_completed && int_reg_operand (operands[0], <QHI:MODE>mode)"
!   [(set (match_dup 2)
! 	(any_fix:SI (match_dup 1)))
!    (set (match_dup 3)
! 	(match_dup 2))]
  {
!   operands[3] = gen_rtx_REG (SImode, REGNO (operands[0]));
! }
!   [(set_attr "length" "4,4,8")
!    (set_attr "type" "fp")])
  
! (define_insn "*fix<uns>_trunc<SFDF:mode>si2_p8"
!   [(set (match_operand:SI 0 "gpc_reg_operand" "=d,wa")
! 	(any_fix:SI (match_operand:SFDF 1 "gpc_reg_operand" "d,wa")))]
!   "TARGET_DIRECT_MOVE"
!   "@
!    fctiw<u>z %0,%1
!    xscvdp<su>xws %x0,%x1"
!   [(set_attr "type" "fp")])
! 
! ;; Keep the convert and store together through register allocation to prevent
! ;; the register allocator from getting clever and doing a direct move to a GPR
! ;; and then store for reg+offset stores.
! (define_insn_and_split "*fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem"
!   [(set (match_operand:QHSI 0 "memory_operand" "=Z")
! 	(any_fix:QHSI (match_operand:SFDF 1 "gpc_reg_operand" "wa")))
!    (clobber (match_scratch:SI 2 "=wa"))]
!     "(<QHSI:MODE>mode == SImode && TARGET_P8_VECTOR) || TARGET_P9_VECTOR"
    "#"
    "&& reload_completed"
!   [(set (match_dup 2)
! 	(any_fix:SI (match_dup 1)))
!    (set (match_dup 0)
! 	(match_dup 3))]
  {
!   operands[3] = (<QHSI:MODE>mode == SImode
! 		 ? operands[2]
! 		 : gen_rtx_REG (<QHSI:MODE>mode, REGNO (operands[2])));
  })
  
  (define_expand "fixuns_trunc<mode>si2"
***************
*** 5801,5875 ****
     xscvdpuxds %x0,%x1"
    [(set_attr "type" "fp")])
  
- (define_expand "fixuns_trunc<SFDF:mode><QHI:mode>2"
-   [(parallel [(set (match_operand:<QHI:MODE> 0 "nonimmediate_operand")
- 		   (unsigned_fix:QHI (match_operand:SFDF 1 "gpc_reg_operand")))
- 	      (clobber (match_scratch:DI 2))])]
-   "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT
-    && TARGET_VSX_SMALL_INTEGER"
- {
-   if (MEM_P (operands[0]))
-     operands[0] = rs6000_address_for_fpconvert (operands[0]);
- })
- 
- (define_insn_and_split "*fixuns_trunc<SFDF:mode><QHI:mode>2_internal"
-   [(set (match_operand:<QHI:MODE> 0 "reg_or_indexed_operand" "=wIwJ,rZ")
- 	(unsigned_fix:QHI
- 	 (match_operand:SFDF 1 "gpc_reg_operand" "<SFDF:Fv>,<SFDF:Fv>")))
-    (clobber (match_scratch:DI 2 "=X,wi"))]
-   "TARGET_P9_VECTOR && TARGET_DIRECT_MOVE_64BIT
-    && TARGET_VSX_SMALL_INTEGER"
-   "#"
-   "&& reload_completed"
-   [(const_int 0)]
- {
-   rtx dest = operands[0];
-   rtx src = operands[1];
- 
-   if (vsx_register_operand (dest, <QHI:MODE>mode))
-     {
-       rtx di_dest = gen_rtx_REG (DImode, REGNO (dest));
-       emit_insn (gen_fixuns_trunc<SFDF:mode>di2 (di_dest, src));
-     }
-   else
-     {
-       rtx tmp = operands[2];
-       rtx tmp2 = gen_rtx_REG (<QHI:MODE>mode, REGNO (tmp));
- 
-       emit_insn (gen_fixuns_trunc<SFDF:mode>di2 (tmp, src));
-       emit_move_insn (dest, tmp2);
-     }
-   DONE;
- })
- 
- ;; If -mvsx-small-integer, we can represent the FIX operation directly.  On
- ;; older machines, we have to use an UNSPEC to produce a SImode and move it
- ;; to another location, since SImode is not allowed in vector registers.
- (define_insn "*fctiw<u>z_<mode>_smallint"
-   [(set (match_operand:SI 0 "vsx_register_operand" "=d,wi")
- 	(any_fix:SI (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>")))]
-   "TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
-    && TARGET_VSX_SMALL_INTEGER"
-   "@
-    fctiw<u>z %0,%1
-    xscvdp<su>xws %x0,%x1"
-   [(set_attr "type" "fp")])
- 
- ;; Combiner pattern to prevent moving the result of converting a floating point
- ;; value to 32-bit integer to GPR in order to save it.
- (define_insn_and_split "*fctiw<u>z_<mode>_mem"
-   [(set (match_operand:SI 0 "memory_operand" "=Z")
- 	(any_fix:SI (match_operand:SFDF 1 "gpc_reg_operand" "wa")))
-    (clobber (match_scratch:SI 2 "=wa"))]
-   "TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
-    && TARGET_VSX_SMALL_INTEGER"
-   "#"
-   "&& reload_completed"
-   [(set (match_dup 2)
- 	(any_fix:SI (match_dup 1)))
-    (set (match_dup 0)
- 	(match_dup 2))])
- 
  ;; Here, we use (set (reg) (unspec:DI [(fix:SI ...)] UNSPEC_FCTIWZ))
  ;; rather than (set (subreg:SI (reg)) (fix:SI ...))
  ;; because the first makes it clear that operand 0 is not live
--- 5832,5837 ----
***************
*** 8678,8691 ****
  ;;              FPR->GPR   GPR->FPR   VSX->GPR   GPR->VSX
  (define_insn "*movdi_internal64"
    [(set (match_operand:DI 0 "nonimmediate_operand"
!                "=Y,        r,         r,         r,         r,          r,
                  ^m,        ^d,        ^d,        ^wY,       $Z,         $wb,
                  $wv,       ^wi,       *wo,       *wo,       *wv,        *wi,
                  *wi,       *wv,       *wv,       r,         *h,         *h,
                  ?*r,       ?*wg,      ?*r,       ?*wj")
  
  	(match_operand:DI 1 "input_operand"
!                 "r,        Y,         r,         I,         L,          nF,
                   d,        m,         d,         wb,        wv,         wY,
                   Z,        wi,        Oj,        wM,        OjwM,       Oj,
                   wM,       wS,        wB,        *h,        r,          0,
--- 8640,8653 ----
  ;;              FPR->GPR   GPR->FPR   VSX->GPR   GPR->VSX
  (define_insn "*movdi_internal64"
    [(set (match_operand:DI 0 "nonimmediate_operand"
!                "=YZ,       r,         r,         r,         r,          r,
                  ^m,        ^d,        ^d,        ^wY,       $Z,         $wb,
                  $wv,       ^wi,       *wo,       *wo,       *wv,        *wi,
                  *wi,       *wv,       *wv,       r,         *h,         *h,
                  ?*r,       ?*wg,      ?*r,       ?*wj")
  
  	(match_operand:DI 1 "input_operand"
!                 "r,        YZ,        r,         I,         L,          nF,
                   d,        m,         d,         wb,        wv,         wY,
                   Z,        wi,        Oj,        wM,        OjwM,       Oj,
                   wM,       wS,        wB,        *h,        r,          0,
***************
*** 14419,14432 ****
     (set_attr "length" "4")])
  
  (define_int_iterator UNSPEC_DIV_EXTEND [UNSPEC_DIVE
! 					UNSPEC_DIVEO
! 					UNSPEC_DIVEU
! 					UNSPEC_DIVEUO])
  
  (define_int_attr div_extend [(UNSPEC_DIVE	"e")
! 			     (UNSPEC_DIVEO	"eo")
! 			     (UNSPEC_DIVEU	"eu")
! 			     (UNSPEC_DIVEUO	"euo")])
  
  (define_insn "div<div_extend>_<mode>"
    [(set (match_operand:GPR 0 "register_operand" "=r")
--- 14381,14390 ----
     (set_attr "length" "4")])
  
  (define_int_iterator UNSPEC_DIV_EXTEND [UNSPEC_DIVE
! 					UNSPEC_DIVEU])
  
  (define_int_attr div_extend [(UNSPEC_DIVE	"e")
! 			     (UNSPEC_DIVEU	"eu")])
  
  (define_insn "div<div_extend>_<mode>"
    [(set (match_operand:GPR 0 "register_operand" "=r")
***************
*** 14505,14520 ****
     (set_attr "length" "4")])
  
  (define_insn_and_split "pack<mode>"
!   [(set (match_operand:FMOVE128 0 "register_operand" "=d,&d")
  	(unspec:FMOVE128
! 	 [(match_operand:<FP128_64> 1 "register_operand" "0,d")
! 	  (match_operand:<FP128_64> 2 "register_operand" "d,d")]
  	 UNSPEC_PACK_128BIT))]
    "FLOAT128_2REG_P (<MODE>mode)"
!   "@
!    fmr %L0,%2
!    #"
!   "&& reload_completed && REGNO (operands[0]) != REGNO (operands[1])"
    [(set (match_dup 3) (match_dup 1))
     (set (match_dup 4) (match_dup 2))]
  {
--- 14463,14476 ----
     (set_attr "length" "4")])
  
  (define_insn_and_split "pack<mode>"
!   [(set (match_operand:FMOVE128 0 "register_operand" "=&d")
  	(unspec:FMOVE128
! 	 [(match_operand:<FP128_64> 1 "register_operand" "d")
! 	  (match_operand:<FP128_64> 2 "register_operand" "d")]
  	 UNSPEC_PACK_128BIT))]
    "FLOAT128_2REG_P (<MODE>mode)"
!   "#"
!   "&& reload_completed"
    [(set (match_dup 3) (match_dup 1))
     (set (match_dup 4) (match_dup 2))]
  {
***************
*** 14527,14534 ****
    operands[3] = gen_rtx_REG (<FP128_64>mode, dest_hi);
    operands[4] = gen_rtx_REG (<FP128_64>mode, dest_lo);
  }
!   [(set_attr "type" "fpsimple,fp")
!    (set_attr "length" "4,8")])
  
  (define_insn "unpack<mode>"
    [(set (match_operand:DI 0 "register_operand" "=d,d")
--- 14483,14490 ----
    operands[3] = gen_rtx_REG (<FP128_64>mode, dest_hi);
    operands[4] = gen_rtx_REG (<FP128_64>mode, dest_lo);
  }
!   [(set_attr "type" "fp")
!    (set_attr "length" "8")])
  
  (define_insn "unpack<mode>"
    [(set (match_operand:DI 0 "register_operand" "=d,d")
***************
*** 14803,14851 ****
     (set_attr "length" "8")])
  
  ;; Conversion between IEEE 128-bit and integer types
- (define_insn "fix_<mode>di2_hw"
-   [(set (match_operand:DI 0 "altivec_register_operand" "=v")
- 	(fix:DI (match_operand:IEEE128 1 "altivec_register_operand" "v")))]
-   "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (<MODE>mode)"
-   "xscvqpsdz %0,%1"
-   [(set_attr "type" "vecfloat")
-    (set_attr "size" "128")])
- 
- (define_insn "fixuns_<mode>di2_hw"
-   [(set (match_operand:DI 0 "altivec_register_operand" "=v")
- 	(unsigned_fix:DI (match_operand:IEEE128 1 "altivec_register_operand" "v")))]
-   "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (<MODE>mode)"
-   "xscvqpudz %0,%1"
-   [(set_attr "type" "vecfloat")
-    (set_attr "size" "128")])
  
! (define_insn "fix_<mode>si2_hw"
!   [(set (match_operand:SI 0 "altivec_register_operand" "=v")
! 	(fix:SI (match_operand:IEEE128 1 "altivec_register_operand" "v")))]
!   "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (<MODE>mode)"
!   "xscvqpswz %0,%1"
    [(set_attr "type" "vecfloat")
     (set_attr "size" "128")])
  
! (define_insn "fixuns_<mode>si2_hw"
!   [(set (match_operand:SI 0 "altivec_register_operand" "=v")
! 	(unsigned_fix:SI (match_operand:IEEE128 1 "altivec_register_operand" "v")))]
!   "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (<MODE>mode)"
!   "xscvqpuwz %0,%1"
    [(set_attr "type" "vecfloat")
     (set_attr "size" "128")])
  
! ;; Combiner pattern to prevent moving the result of converting an IEEE 128-bit
! ;; floating point value to 32-bit integer to GPR in order to save it.
! (define_insn_and_split "*fix<uns>_<mode>_mem"
!   [(set (match_operand:SI 0 "memory_operand" "=Z")
! 	(any_fix:SI (match_operand:IEEE128 1 "altivec_register_operand" "v")))
!    (clobber (match_scratch:SI 2 "=v"))]
    "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (<MODE>mode)"
    "#"
    "&& reload_completed"
    [(set (match_dup 2)
! 	(any_fix:SI (match_dup 1)))
     (set (match_dup 0)
  	(match_dup 2))])
  
--- 14759,14803 ----
     (set_attr "length" "8")])
  
  ;; Conversion between IEEE 128-bit and integer types
  
! ;; The fix function for DImode and SImode was declared earlier as a
! ;; define_expand.  It calls into rs6000_expand_float128_convert if we don't
! ;; have IEEE 128-bit hardware support.  QImode and HImode are not provided
! ;; unless we have the IEEE 128-bit hardware.
! ;;
! ;; Unlike the code for converting SFmode/DFmode to QImode/HImode, we don't have
! ;; to provide a GPR target that used direct move and a conversion in the GPR
! ;; which works around QImode/HImode not being allowed in vector registers in
! ;; ISA 2.07 (power8).
! (define_insn "fix<uns>_<IEEE128:mode><SDI:mode>2_hw"
!   [(set (match_operand:SDI 0 "altivec_register_operand" "=v")
! 	(any_fix:SDI (match_operand:IEEE128 1 "altivec_register_operand" "v")))]
!   "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (<IEEE128:MODE>mode)"
!   "xscvqp<su><wd>z %0,%1"
    [(set_attr "type" "vecfloat")
     (set_attr "size" "128")])
  
! (define_insn "fix<uns>_trunc<IEEE128:mode><QHI:mode>2"
!   [(set (match_operand:QHI 0 "altivec_register_operand" "=v")
! 	(any_fix:QHI
! 	 (match_operand:IEEE128 1 "altivec_register_operand" "v")))]
!   "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (<IEEE128:MODE>mode)"
!   "xscvqp<su>wz %0,%1"
    [(set_attr "type" "vecfloat")
     (set_attr "size" "128")])
  
! ;; Combiner patterns to prevent moving the result of converting an IEEE 128-bit
! ;; floating point value to 8/16/32-bit integer to GPR in order to save it.
! (define_insn_and_split "*fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem"
!   [(set (match_operand:QHSI 0 "memory_operand" "=Z")
! 	(any_fix:QHSI
! 	 (match_operand:IEEE128 1 "altivec_register_operand" "v")))
!    (clobber (match_scratch:QHSI 2 "=v"))]
    "TARGET_FLOAT128_HW && FLOAT128_IEEE_P (<MODE>mode)"
    "#"
    "&& reload_completed"
    [(set (match_dup 2)
! 	(any_fix:QHSI (match_dup 1)))
     (set (match_dup 0)
  	(match_dup 2))])
  
diff -Nrcpad gcc-7.3.0/gcc/config/rs6000/sysv4.opt gcc-7.4.0/gcc/config/rs6000/sysv4.opt
*** gcc-7.3.0/gcc/config/rs6000/sysv4.opt	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/rs6000/sysv4.opt	Tue Mar 27 23:13:02 2018
*************** msdata=
*** 27,32 ****
--- 27,36 ----
  Target RejectNegative Joined Var(rs6000_sdata_name)
  Select method for sdata handling.
  
+ mreadonly-in-sdata
+ Target Report Var(rs6000_readonly_in_sdata) Init(1) Save
+ Allow readonly data in sdata.
+ 
  mtls-size=
  Target RejectNegative Joined Var(rs6000_tls_size) Enum(rs6000_tls_size)
  Specify bit size of immediate TLS offsets.
diff -Nrcpad gcc-7.3.0/gcc/config/rs6000/vector.md gcc-7.4.0/gcc/config/rs6000/vector.md
*** gcc-7.3.0/gcc/config/rs6000/vector.md	Tue Jun 27 16:43:35 2017
--- gcc-7.4.0/gcc/config/rs6000/vector.md	Fri Mar 23 17:48:58 2018
***************
*** 180,191 ****
        operands[1] = rs6000_address_for_altivec (operands[1]);
        rtx and_op = XEXP (operands[1], 0);
        gcc_assert (GET_CODE (and_op) == AND);
!       rtx addr = XEXP (and_op, 0);
!       if (GET_CODE (addr) == PLUS)
!         emit_insn (gen_altivec_lvx_<mode>_2op (operands[0], XEXP (addr, 0),
! 	                                       XEXP (addr, 1)));
!       else
!         emit_insn (gen_altivec_lvx_<mode>_1op (operands[0], operands[1]));
        DONE;
      }
  }")
--- 180,186 ----
        operands[1] = rs6000_address_for_altivec (operands[1]);
        rtx and_op = XEXP (operands[1], 0);
        gcc_assert (GET_CODE (and_op) == AND);
!       emit_insn (gen_altivec_lvx_<mode> (operands[0], operands[1]));
        DONE;
      }
  }")
***************
*** 203,214 ****
        operands[0] = rs6000_address_for_altivec (operands[0]);
        rtx and_op = XEXP (operands[0], 0);
        gcc_assert (GET_CODE (and_op) == AND);
!       rtx addr = XEXP (and_op, 0);
!       if (GET_CODE (addr) == PLUS)
!         emit_insn (gen_altivec_stvx_<mode>_2op (operands[1], XEXP (addr, 0),
! 	                                        XEXP (addr, 1)));
!       else
!         emit_insn (gen_altivec_stvx_<mode>_1op (operands[1], operands[0]));
        DONE;
      }
  }")
--- 198,204 ----
        operands[0] = rs6000_address_for_altivec (operands[0]);
        rtx and_op = XEXP (operands[0], 0);
        gcc_assert (GET_CODE (and_op) == AND);
!       emit_insn (gen_altivec_stvx_<mode> (operands[1], operands[0]));
        DONE;
      }
  }")
diff -Nrcpad gcc-7.3.0/gcc/config/rs6000/vsx.md gcc-7.4.0/gcc/config/rs6000/vsx.md
*** gcc-7.3.0/gcc/config/rs6000/vsx.md	Wed Aug 30 01:12:21 2017
--- gcc-7.4.0/gcc/config/rs6000/vsx.md	Tue Jul 10 17:33:40 2018
***************
*** 157,162 ****
--- 157,178 ----
  			 (TF	"wp")
  			 (KF	"wq")])
  
+ ;; A mode attribute to disparage use of GPR registers, except for scalar
+ ;; interger modes.
+ (define_mode_attr ??r	[(V16QI "??r")
+ 			 (V8HI  "??r")
+ 			 (V4SI  "??r")
+ 			 (V4SF  "??r")
+ 			 (V2DI  "??r")
+ 			 (V2DF  "??r")
+ 			 (DI    "r")
+ 			 (DF    "??r")
+ 			 (SF    "??r")
+ 			 (V1TI  "??r")
+ 			 (TI    "r")
+ 			 (TF    "??r")
+ 			 (KF    "??r")])
+ 
  ;; Same size integer type for floating point data
  (define_mode_attr VSi [(V4SF  "v4si")
  		       (V2DF  "v2di")
***************
*** 385,391 ****
  ;; VSX moves so they match first.
  (define_insn_and_split "*vsx_le_perm_load_<mode>"
    [(set (match_operand:VSX_D 0 "vsx_register_operand" "=<VSa>")
!         (match_operand:VSX_D 1 "memory_operand" "Z"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
--- 401,407 ----
  ;; VSX moves so they match first.
  (define_insn_and_split "*vsx_le_perm_load_<mode>"
    [(set (match_operand:VSX_D 0 "vsx_register_operand" "=<VSa>")
!         (match_operand:VSX_D 1 "indexed_or_indirect_operand" "Z"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
***************
*** 408,414 ****
  
  (define_insn_and_split "*vsx_le_perm_load_<mode>"
    [(set (match_operand:VSX_W 0 "vsx_register_operand" "=<VSa>")
!         (match_operand:VSX_W 1 "memory_operand" "Z"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
--- 424,430 ----
  
  (define_insn_and_split "*vsx_le_perm_load_<mode>"
    [(set (match_operand:VSX_W 0 "vsx_register_operand" "=<VSa>")
!         (match_operand:VSX_W 1 "indexed_or_indirect_operand" "Z"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
***************
*** 433,439 ****
  
  (define_insn_and_split "*vsx_le_perm_load_v8hi"
    [(set (match_operand:V8HI 0 "vsx_register_operand" "=wa")
!         (match_operand:V8HI 1 "memory_operand" "Z"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
--- 449,455 ----
  
  (define_insn_and_split "*vsx_le_perm_load_v8hi"
    [(set (match_operand:V8HI 0 "vsx_register_operand" "=wa")
!         (match_operand:V8HI 1 "indexed_or_indirect_operand" "Z"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
***************
*** 462,468 ****
  
  (define_insn_and_split "*vsx_le_perm_load_v16qi"
    [(set (match_operand:V16QI 0 "vsx_register_operand" "=wa")
!         (match_operand:V16QI 1 "memory_operand" "Z"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
--- 478,484 ----
  
  (define_insn_and_split "*vsx_le_perm_load_v16qi"
    [(set (match_operand:V16QI 0 "vsx_register_operand" "=wa")
!         (match_operand:V16QI 1 "indexed_or_indirect_operand" "Z"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
***************
*** 498,504 ****
     (set_attr "length" "8")])
  
  (define_insn "*vsx_le_perm_store_<mode>"
!   [(set (match_operand:VSX_D 0 "memory_operand" "=Z")
          (match_operand:VSX_D 1 "vsx_register_operand" "+<VSa>"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
--- 514,520 ----
     (set_attr "length" "8")])
  
  (define_insn "*vsx_le_perm_store_<mode>"
!   [(set (match_operand:VSX_D 0 "indexed_or_indirect_operand" "=Z")
          (match_operand:VSX_D 1 "vsx_register_operand" "+<VSa>"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
***************
*** 506,512 ****
     (set_attr "length" "12")])
  
  (define_split
!   [(set (match_operand:VSX_D 0 "memory_operand" "")
          (match_operand:VSX_D 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && !reload_completed"
    [(set (match_dup 2)
--- 522,528 ----
     (set_attr "length" "12")])
  
  (define_split
!   [(set (match_operand:VSX_D 0 "indexed_or_indirect_operand" "")
          (match_operand:VSX_D 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && !reload_completed"
    [(set (match_dup 2)
***************
*** 525,531 ****
  ;; The post-reload split requires that we re-permute the source
  ;; register in case it is still live.
  (define_split
!   [(set (match_operand:VSX_D 0 "memory_operand" "")
          (match_operand:VSX_D 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && reload_completed"
    [(set (match_dup 1)
--- 541,547 ----
  ;; The post-reload split requires that we re-permute the source
  ;; register in case it is still live.
  (define_split
!   [(set (match_operand:VSX_D 0 "indexed_or_indirect_operand" "")
          (match_operand:VSX_D 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && reload_completed"
    [(set (match_dup 1)
***************
*** 543,549 ****
    "")
  
  (define_insn "*vsx_le_perm_store_<mode>"
!   [(set (match_operand:VSX_W 0 "memory_operand" "=Z")
          (match_operand:VSX_W 1 "vsx_register_operand" "+<VSa>"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
--- 559,565 ----
    "")
  
  (define_insn "*vsx_le_perm_store_<mode>"
!   [(set (match_operand:VSX_W 0 "indexed_or_indirect_operand" "=Z")
          (match_operand:VSX_W 1 "vsx_register_operand" "+<VSa>"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
***************
*** 551,557 ****
     (set_attr "length" "12")])
  
  (define_split
!   [(set (match_operand:VSX_W 0 "memory_operand" "")
          (match_operand:VSX_W 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && !reload_completed"
    [(set (match_dup 2)
--- 567,573 ----
     (set_attr "length" "12")])
  
  (define_split
!   [(set (match_operand:VSX_W 0 "indexed_or_indirect_operand" "")
          (match_operand:VSX_W 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && !reload_completed"
    [(set (match_dup 2)
***************
*** 572,578 ****
  ;; The post-reload split requires that we re-permute the source
  ;; register in case it is still live.
  (define_split
!   [(set (match_operand:VSX_W 0 "memory_operand" "")
          (match_operand:VSX_W 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && reload_completed"
    [(set (match_dup 1)
--- 588,594 ----
  ;; The post-reload split requires that we re-permute the source
  ;; register in case it is still live.
  (define_split
!   [(set (match_operand:VSX_W 0 "indexed_or_indirect_operand" "")
          (match_operand:VSX_W 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && reload_completed"
    [(set (match_dup 1)
***************
*** 593,599 ****
    "")
  
  (define_insn "*vsx_le_perm_store_v8hi"
!   [(set (match_operand:V8HI 0 "memory_operand" "=Z")
          (match_operand:V8HI 1 "vsx_register_operand" "+wa"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
--- 609,615 ----
    "")
  
  (define_insn "*vsx_le_perm_store_v8hi"
!   [(set (match_operand:V8HI 0 "indexed_or_indirect_operand" "=Z")
          (match_operand:V8HI 1 "vsx_register_operand" "+wa"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
***************
*** 601,607 ****
     (set_attr "length" "12")])
  
  (define_split
!   [(set (match_operand:V8HI 0 "memory_operand" "")
          (match_operand:V8HI 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && !reload_completed"
    [(set (match_dup 2)
--- 617,623 ----
     (set_attr "length" "12")])
  
  (define_split
!   [(set (match_operand:V8HI 0 "indexed_or_indirect_operand" "")
          (match_operand:V8HI 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && !reload_completed"
    [(set (match_dup 2)
***************
*** 626,632 ****
  ;; The post-reload split requires that we re-permute the source
  ;; register in case it is still live.
  (define_split
!   [(set (match_operand:V8HI 0 "memory_operand" "")
          (match_operand:V8HI 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && reload_completed"
    [(set (match_dup 1)
--- 642,648 ----
  ;; The post-reload split requires that we re-permute the source
  ;; register in case it is still live.
  (define_split
!   [(set (match_operand:V8HI 0 "indexed_or_indirect_operand" "")
          (match_operand:V8HI 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && reload_completed"
    [(set (match_dup 1)
***************
*** 653,659 ****
    "")
  
  (define_insn "*vsx_le_perm_store_v16qi"
!   [(set (match_operand:V16QI 0 "memory_operand" "=Z")
          (match_operand:V16QI 1 "vsx_register_operand" "+wa"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
--- 669,675 ----
    "")
  
  (define_insn "*vsx_le_perm_store_v16qi"
!   [(set (match_operand:V16QI 0 "indexed_or_indirect_operand" "=Z")
          (match_operand:V16QI 1 "vsx_register_operand" "+wa"))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR"
    "#"
***************
*** 661,667 ****
     (set_attr "length" "12")])
  
  (define_split
!   [(set (match_operand:V16QI 0 "memory_operand" "")
          (match_operand:V16QI 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && !reload_completed"
    [(set (match_dup 2)
--- 677,683 ----
     (set_attr "length" "12")])
  
  (define_split
!   [(set (match_operand:V16QI 0 "indexed_or_indirect_operand" "")
          (match_operand:V16QI 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && !reload_completed"
    [(set (match_dup 2)
***************
*** 694,700 ****
  ;; The post-reload split requires that we re-permute the source
  ;; register in case it is still live.
  (define_split
!   [(set (match_operand:V16QI 0 "memory_operand" "")
          (match_operand:V16QI 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && reload_completed"
    [(set (match_dup 1)
--- 710,716 ----
  ;; The post-reload split requires that we re-permute the source
  ;; register in case it is still live.
  (define_split
!   [(set (match_operand:V16QI 0 "indexed_or_indirect_operand" "")
          (match_operand:V16QI 1 "vsx_register_operand" ""))]
    "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR && reload_completed"
    [(set (match_dup 1)
***************
*** 961,967 ****
  (define_insn "*vsx_mov<mode>_64bit"
    [(set (match_operand:VSX_M 0 "nonimmediate_operand"
                 "=ZwO,      <VSa>,     <VSa>,     r,         we,        ?wQ,
!                 ?&r,       ??r,       ??Y,       ??r,       wo,        v,
                  ?<VSa>,    *r,        v,         ??r,       wZ,        v")
  
  	(match_operand:VSX_M 1 "input_operand" 
--- 977,983 ----
  (define_insn "*vsx_mov<mode>_64bit"
    [(set (match_operand:VSX_M 0 "nonimmediate_operand"
                 "=ZwO,      <VSa>,     <VSa>,     r,         we,        ?wQ,
!                 ?&r,       ??r,       ??Y,       <??r>,     wo,        v,
                  ?<VSa>,    *r,        v,         ??r,       wZ,        v")
  
  	(match_operand:VSX_M 1 "input_operand" 
***************
*** 990,996 ****
  ;;              LVX (VMX)  STVX (VMX)
  (define_insn "*vsx_mov<mode>_32bit"
    [(set (match_operand:VSX_M 0 "nonimmediate_operand"
!                "=ZwO,      <VSa>,     <VSa>,     ??r,       ??Y,       ??r,
                  wo,        v,         ?<VSa>,    *r,        v,         ??r,
                  wZ,        v")
  
--- 1006,1012 ----
  ;;              LVX (VMX)  STVX (VMX)
  (define_insn "*vsx_mov<mode>_32bit"
    [(set (match_operand:VSX_M 0 "nonimmediate_operand"
!                "=ZwO,      <VSa>,     <VSa>,     ??r,       ??Y,       <??r>,
                  wo,        v,         ?<VSa>,    *r,        v,         ??r,
                  wZ,        v")
  
***************
*** 3930,3936 ****
  	  (match_operand:DI 2 "register_operand" "+r")]
  	 UNSPEC_STXVL))]
    "TARGET_P9_VECTOR && TARGET_64BIT"
!   "sldi %2,%2\;stxvl %x0,%1,%2"
    [(set_attr "length" "8")
     (set_attr "type" "vecstore")])
  
--- 3946,3952 ----
  	  (match_operand:DI 2 "register_operand" "+r")]
  	 UNSPEC_STXVL))]
    "TARGET_P9_VECTOR && TARGET_64BIT"
!   "sldi %2,%2,56\;stxvl %x0,%1,%2"
    [(set_attr "length" "8")
     (set_attr "type" "vecstore")])
  
***************
*** 4084,4129 ****
  
  ;; Vector insert/extract word at arbitrary byte values.  Note, the little
  ;; endian version needs to adjust the byte number, and the V4SI element in
! ;; vinsert4b.
! (define_expand "vextract4b"
!   [(set (match_operand:DI 0 "gpc_reg_operand")
! 	(unspec:DI [(match_operand:V16QI 1 "vsx_register_operand")
! 		    (match_operand:QI 2 "const_0_to_12_operand")]
! 		   UNSPEC_XXEXTRACTUW))]
    "TARGET_P9_VECTOR"
  {
    if (!VECTOR_ELT_ORDER_BIG)
      operands[2] = GEN_INT (12 - INTVAL (operands[2]));
- })
  
! (define_insn_and_split "*vextract4b_internal"
!   [(set (match_operand:DI 0 "gpc_reg_operand" "=wj,r")
! 	(unspec:DI [(match_operand:V16QI 1 "vsx_register_operand" "wa,v")
! 		    (match_operand:QI 2 "const_0_to_12_operand" "n,n")]
! 		   UNSPEC_XXEXTRACTUW))]
!   "TARGET_P9_VECTOR"
!   "@
!    xxextractuw %x0,%x1,%2
!    #"
!   "&& reload_completed && int_reg_operand (operands[0], DImode)"
!   [(const_int 0)]
! {
!   rtx op0 = operands[0];
!   rtx op1 = operands[1];
!   rtx op2 = operands[2];
!   rtx op0_si = gen_rtx_REG (SImode, REGNO (op0));
!   rtx op1_v4si = gen_rtx_REG (V4SImode, REGNO (op1));
! 
!   emit_move_insn (op0, op2);
!   if (VECTOR_ELT_ORDER_BIG)
!     emit_insn (gen_vextuwlx (op0_si, op0_si, op1_v4si));
!   else
!     emit_insn (gen_vextuwrx (op0_si, op0_si, op1_v4si));
!   DONE;
! }
!   [(set_attr "type" "vecperm")])
  
! (define_expand "vinsert4b"
    [(set (match_operand:V16QI 0 "vsx_register_operand")
  	(unspec:V16QI [(match_operand:V4SI 1 "vsx_register_operand")
  		       (match_operand:V16QI 2 "vsx_register_operand")
--- 4100,4120 ----
  
  ;; Vector insert/extract word at arbitrary byte values.  Note, the little
  ;; endian version needs to adjust the byte number, and the V4SI element in
! ;; insert4b.
! (define_insn "extract4b"
!   [(set (match_operand:V2DI 0 "vsx_register_operand")
!        (unspec:V2DI [(match_operand:V16QI 1 "vsx_register_operand" "wa")
!                      (match_operand:QI 2 "const_0_to_12_operand" "n")]
!                     UNSPEC_XXEXTRACTUW))]
    "TARGET_P9_VECTOR"
  {
    if (!VECTOR_ELT_ORDER_BIG)
      operands[2] = GEN_INT (12 - INTVAL (operands[2]));
  
!   return "xxextractuw %x0,%x1,%2";
! })
  
! (define_expand "insert4b"
    [(set (match_operand:V16QI 0 "vsx_register_operand")
  	(unspec:V16QI [(match_operand:V4SI 1 "vsx_register_operand")
  		       (match_operand:V16QI 2 "vsx_register_operand")
***************
*** 4141,4147 ****
      }
  })
  
! (define_insn "*vinsert4b_internal"
    [(set (match_operand:V16QI 0 "vsx_register_operand" "=wa")
  	(unspec:V16QI [(match_operand:V4SI 1 "vsx_register_operand" "wa")
  		       (match_operand:V16QI 2 "vsx_register_operand" "0")
--- 4132,4138 ----
      }
  })
  
! (define_insn "*insert4b_internal"
    [(set (match_operand:V16QI 0 "vsx_register_operand" "=wa")
  	(unspec:V16QI [(match_operand:V4SI 1 "vsx_register_operand" "wa")
  		       (match_operand:V16QI 2 "vsx_register_operand" "0")
***************
*** 4151,4176 ****
    "xxinsertw %x0,%x1,%3"
    [(set_attr "type" "vecperm")])
  
! (define_expand "vinsert4b_di"
!   [(set (match_operand:V16QI 0 "vsx_register_operand")
! 	(unspec:V16QI [(match_operand:DI 1 "vsx_register_operand")
! 		       (match_operand:V16QI 2 "vsx_register_operand")
! 		       (match_operand:QI 3 "const_0_to_12_operand")]
! 		   UNSPEC_XXINSERTW))]
    "TARGET_P9_VECTOR"
  {
    if (!VECTOR_ELT_ORDER_BIG)
!     operands[3] = GEN_INT (12 - INTVAL (operands[3]));
  })
  
! (define_insn "*vinsert4b_di_internal"
!   [(set (match_operand:V16QI 0 "vsx_register_operand" "=wa")
! 	(unspec:V16QI [(match_operand:DI 1 "vsx_register_operand" "wj")
! 		       (match_operand:V16QI 2 "vsx_register_operand" "0")
! 		       (match_operand:QI 3 "const_0_to_12_operand" "n")]
! 		   UNSPEC_XXINSERTW))]
    "TARGET_P9_VECTOR"
!   "xxinsertw %x0,%x1,%3"
    [(set_attr "type" "vecperm")])
  
  
--- 4142,4183 ----
    "xxinsertw %x0,%x1,%3"
    [(set_attr "type" "vecperm")])
  
! (define_expand "vextract4b"
!   [(set (match_operand:DI 0 "gpc_reg_operand")
! 	(unspec:DI [(match_operand:V16QI 1 "vsx_register_operand")
! 		    (match_operand:QI 2 "const_0_to_12_operand")]
! 		   UNSPEC_XXEXTRACTUW))]
    "TARGET_P9_VECTOR"
  {
    if (!VECTOR_ELT_ORDER_BIG)
!     operands[2] = GEN_INT (12 - INTVAL (operands[2]));
  })
  
! (define_insn_and_split "*vextract4b_internal"
!   [(set (match_operand:DI 0 "gpc_reg_operand" "=wj,r")
! 	(unspec:DI [(match_operand:V16QI 1 "vsx_register_operand" "wa,v")
! 		    (match_operand:QI 2 "const_0_to_12_operand" "n,n")]
! 		   UNSPEC_XXEXTRACTUW))]
    "TARGET_P9_VECTOR"
!   "@
!    xxextractuw %x0,%x1,%2
!    #"
!   "&& reload_completed && int_reg_operand (operands[0], DImode)"
!   [(const_int 0)]
! {
!   rtx op0 = operands[0];
!   rtx op1 = operands[1];
!   rtx op2 = operands[2];
!   rtx op0_si = gen_rtx_REG (SImode, REGNO (op0));
!   rtx op1_v4si = gen_rtx_REG (V4SImode, REGNO (op1));
! 
!   emit_move_insn (op0, op2);
!   if (VECTOR_ELT_ORDER_BIG)
!     emit_insn (gen_vextuwlx (op0_si, op0_si, op1_v4si));
!   else
!     emit_insn (gen_vextuwrx (op0_si, op0_si, op1_v4si));
!   DONE;
! }
    [(set_attr "type" "vecperm")])
  
  
diff -Nrcpad gcc-7.3.0/gcc/config/rtems.h gcc-7.4.0/gcc/config/rtems.h
*** gcc-7.3.0/gcc/config/rtems.h	Wed Jul 26 08:31:09 2017
--- gcc-7.4.0/gcc/config/rtems.h	Thu Jun 14 05:19:35 2018
***************
*** 48,50 ****
--- 48,54 ----
   -latomic -lc -lgcc --end-group %{!qnolinkcmds: -T linkcmds%s}}}"
  
  #define TARGET_POSIX_IO
+ 
+ /* Prefer int for int32_t (see stdint-newlib.h).  */
+ #undef STDINT_LONG32
+ #define STDINT_LONG32 (INT_TYPE_SIZE != 32 && LONG_TYPE_SIZE == 32)
diff -Nrcpad gcc-7.3.0/gcc/config/s390/s390-builtin-types.def gcc-7.4.0/gcc/config/s390/s390-builtin-types.def
*** gcc-7.3.0/gcc/config/s390/s390-builtin-types.def	Fri Mar 24 14:04:12 2017
--- gcc-7.4.0/gcc/config/s390/s390-builtin-types.def	Tue Jun  5 08:21:57 2018
*************** DEF_OPAQUE_VECTOR_TYPE (BT_OUV4SI, BT_UI
*** 124,129 ****
--- 124,130 ----
  DEF_OPAQUE_VECTOR_TYPE (BT_BV4SI, BT_BINT, 4)
  DEF_FN_TYPE_0 (BT_FN_INT, BT_INT)
  DEF_FN_TYPE_0 (BT_FN_UINT, BT_UINT)
+ DEF_FN_TYPE_0 (BT_FN_VOID, BT_VOID)
  DEF_FN_TYPE_1 (BT_FN_INT_INT, BT_INT, BT_INT)
  DEF_FN_TYPE_1 (BT_FN_INT_VOIDPTR, BT_INT, BT_VOIDPTR)
  DEF_FN_TYPE_1 (BT_FN_OV4SI_INT, BT_OV4SI, BT_INT)
diff -Nrcpad gcc-7.3.0/gcc/config/s390/s390-builtins.def gcc-7.4.0/gcc/config/s390/s390-builtins.def
*** gcc-7.3.0/gcc/config/s390/s390-builtins.def	Fri Mar 24 14:04:12 2017
--- gcc-7.4.0/gcc/config/s390/s390-builtins.def	Tue Jun  5 08:21:57 2018
***************
*** 294,300 ****
     flags: Flags applying to all its variants should be mentioned in the OB_DEF line instead.  */
  
  
! B_DEF      (tbeginc,                    tbeginc,            0,                  B_HTM,              0,                  BT_FN_INT)
  B_DEF      (tbegin,                     tbegin,             returns_twice_attr, B_HTM,              0,                  BT_FN_INT_VOIDPTR)
  B_DEF      (tbegin_nofloat,             tbegin_nofloat,     returns_twice_attr, B_HTM,              0,                  BT_FN_INT_VOIDPTR)
  B_DEF      (tbegin_retry,               tbegin_retry,       returns_twice_attr, B_HTM,              0,                  BT_FN_INT_VOIDPTR_INT)
--- 294,300 ----
     flags: Flags applying to all its variants should be mentioned in the OB_DEF line instead.  */
  
  
! B_DEF      (tbeginc,                    tbeginc,            0,                  B_HTM,              0,                  BT_FN_VOID)
  B_DEF      (tbegin,                     tbegin,             returns_twice_attr, B_HTM,              0,                  BT_FN_INT_VOIDPTR)
  B_DEF      (tbegin_nofloat,             tbegin_nofloat,     returns_twice_attr, B_HTM,              0,                  BT_FN_INT_VOIDPTR)
  B_DEF      (tbegin_retry,               tbegin_retry,       returns_twice_attr, B_HTM,              0,                  BT_FN_INT_VOIDPTR_INT)
diff -Nrcpad gcc-7.3.0/gcc/config/s390/s390-opts.h gcc-7.4.0/gcc/config/s390/s390-opts.h
*** gcc-7.3.0/gcc/config/s390/s390-opts.h	Mon Jul 31 11:33:18 2017
--- gcc-7.4.0/gcc/config/s390/s390-opts.h	Thu Feb  8 17:00:48 2018
*************** enum processor_type
*** 43,46 ****
--- 43,55 ----
    PROCESSOR_max
  };
  
+ 
+ /* Values for -mindirect-branch and -mfunction-return options.  */
+ enum indirect_branch {
+   indirect_branch_unset = 0,
+   indirect_branch_keep,
+   indirect_branch_thunk,
+   indirect_branch_thunk_inline,
+   indirect_branch_thunk_extern
+ };
  #endif
diff -Nrcpad gcc-7.3.0/gcc/config/s390/s390-protos.h gcc-7.4.0/gcc/config/s390/s390-protos.h
*** gcc-7.3.0/gcc/config/s390/s390-protos.h	Tue Apr 25 11:11:48 2017
--- gcc-7.4.0/gcc/config/s390/s390-protos.h	Thu Feb  8 17:00:48 2018
*************** extern int s390_class_max_nregs (enum re
*** 53,58 ****
--- 53,59 ----
  extern int s390_cannot_change_mode_class (machine_mode, machine_mode,
  					  enum reg_class);
  extern bool s390_function_arg_vector (machine_mode, const_tree);
+ extern bool s390_return_addr_from_memory(void);
  #if S390_USE_TARGET_ATTRIBUTE
  extern tree s390_valid_target_attribute_tree (tree args,
  					      struct gcc_options *opts,
*************** extern int s390_compare_and_branch_condi
*** 147,152 ****
--- 148,164 ----
  extern bool s390_extzv_shift_ok (int, int, unsigned HOST_WIDE_INT);
  extern void s390_asm_output_function_label (FILE *, const char *, tree);
  
+ enum s390_indirect_branch_type
+   {
+     s390_indirect_branch_type_jump = 0,
+     s390_indirect_branch_type_call,
+     s390_indirect_branch_type_return
+   };
+ extern void s390_indirect_branch_via_thunk (unsigned int regno,
+ 					    unsigned int return_addr_regno,
+ 					    rtx comparison_operator,
+ 					    enum s390_indirect_branch_type type);
+ extern void s390_indirect_branch_via_inline_thunk (rtx execute_target);
  #endif /* RTX_CODE */
  
  /* s390-c.c routines */
diff -Nrcpad gcc-7.3.0/gcc/config/s390/s390.c gcc-7.4.0/gcc/config/s390/s390.c
*** gcc-7.3.0/gcc/config/s390/s390.c	Mon Jul 31 11:33:18 2017
--- gcc-7.4.0/gcc/config/s390/s390.c	Fri Oct 19 08:55:27 2018
*************** struct s390_address
*** 377,460 ****
    bool literal_pool;
  };
  
- /* The following structure is embedded in the machine
-    specific part of struct function.  */
- 
- struct GTY (()) s390_frame_layout
- {
-   /* Offset within stack frame.  */
-   HOST_WIDE_INT gprs_offset;
-   HOST_WIDE_INT f0_offset;
-   HOST_WIDE_INT f4_offset;
-   HOST_WIDE_INT f8_offset;
-   HOST_WIDE_INT backchain_offset;
- 
-   /* Number of first and last gpr where slots in the register
-      save area are reserved for.  */
-   int first_save_gpr_slot;
-   int last_save_gpr_slot;
- 
-   /* Location (FP register number) where GPRs (r0-r15) should
-      be saved to.
-       0 - does not need to be saved at all
-      -1 - stack slot  */
- #define SAVE_SLOT_NONE   0
- #define SAVE_SLOT_STACK -1
-   signed char gpr_save_slots[16];
- 
-   /* Number of first and last gpr to be saved, restored.  */
-   int first_save_gpr;
-   int first_restore_gpr;
-   int last_save_gpr;
-   int last_restore_gpr;
- 
-   /* Bits standing for floating point registers. Set, if the
-      respective register has to be saved. Starting with reg 16 (f0)
-      at the rightmost bit.
-      Bit 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
-      fpr 15 13 11  9 14 12 10  8  7  5  3  1  6  4  2  0
-      reg 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16  */
-   unsigned int fpr_bitmap;
- 
-   /* Number of floating point registers f8-f15 which must be saved.  */
-   int high_fprs;
- 
-   /* Set if return address needs to be saved.
-      This flag is set by s390_return_addr_rtx if it could not use
-      the initial value of r14 and therefore depends on r14 saved
-      to the stack.  */
-   bool save_return_addr_p;
- 
-   /* Size of stack frame.  */
-   HOST_WIDE_INT frame_size;
- };
- 
- /* Define the structure for the machine field in struct function.  */
- 
- struct GTY(()) machine_function
- {
-   struct s390_frame_layout frame_layout;
- 
-   /* Literal pool base register.  */
-   rtx base_reg;
- 
-   /* True if we may need to perform branch splitting.  */
-   bool split_branches_pending_p;
- 
-   bool has_landing_pad_p;
- 
-   /* True if the current function may contain a tbegin clobbering
-      FPRs.  */
-   bool tbegin_p;
- 
-   /* For -fsplit-stack support: A stack local which holds a pointer to
-      the stack arguments for a function with a variable number of
-      arguments.  This is set at the start of the function and is used
-      to initialize the overflow_arg_area field of the va_list
-      structure.  */
-   rtx split_stack_varargs_pointer;
- };
- 
  /* Few accessor macros for struct cfun->machine->s390_frame_layout.  */
  
  #define cfun_frame_layout (cfun->machine->frame_layout)
--- 377,382 ----
*************** struct GTY(()) machine_function
*** 495,500 ****
--- 417,449 ----
     bytes on a z10 (or higher) CPU.  */
  #define PREDICT_DISTANCE (TARGET_Z10 ? 384 : 2048)
  
+ /* Masks per jump target register indicating which thunk need to be
+    generated.  */
+ static GTY(()) int indirect_branch_prez10thunk_mask = 0;
+ static GTY(()) int indirect_branch_z10thunk_mask = 0;
+ 
+ #define INDIRECT_BRANCH_NUM_OPTIONS 4
+ 
+ enum s390_indirect_branch_option
+   {
+     s390_opt_indirect_branch_jump = 0,
+     s390_opt_indirect_branch_call,
+     s390_opt_function_return_reg,
+     s390_opt_function_return_mem
+   };
+ 
+ static GTY(()) int indirect_branch_table_label_no[INDIRECT_BRANCH_NUM_OPTIONS] = { 0 };
+ const char *indirect_branch_table_label[INDIRECT_BRANCH_NUM_OPTIONS] = \
+   { "LJUMP", "LCALL", "LRETREG", "LRETMEM" };
+ const char *indirect_branch_table_name[INDIRECT_BRANCH_NUM_OPTIONS] =	\
+   { ".s390_indirect_jump", ".s390_indirect_call",
+     ".s390_return_reg", ".s390_return_mem" };
+ 
+ bool
+ s390_return_addr_from_memory ()
+ {
+   return cfun_gpr_save_slot(RETURN_REGNUM) == SAVE_SLOT_STACK;
+ }
  
  /* Indicate which ABI has been used for passing vector args.
     0 - no vector type arguments have been passed where the ABI is relevant
*************** s390_handle_vectorbool_attribute (tree *
*** 1148,1156 ****
    return NULL_TREE;
  }
  
  static const struct attribute_spec s390_attribute_table[] = {
!   { "hotpatch", 2, 2, true, false, false, s390_handle_hotpatch_attribute, false },
!   { "s390_vector_bool", 0, 0, false, true, false, s390_handle_vectorbool_attribute, true },
    /* End element.  */
    { NULL,        0, 0, false, false, false, NULL, false }
  };
--- 1097,1179 ----
    return NULL_TREE;
  }
  
+ /* Check syntax of function decl attributes having a string type value.  */
+ 
+ static tree
+ s390_handle_string_attribute (tree *node, tree name ATTRIBUTE_UNUSED,
+ 			      tree args ATTRIBUTE_UNUSED,
+ 			      int flags ATTRIBUTE_UNUSED,
+ 			      bool *no_add_attrs)
+ {
+   tree cst;
+ 
+   if (TREE_CODE (*node) != FUNCTION_DECL)
+     {
+       warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ 	       name);
+       *no_add_attrs = true;
+     }
+ 
+   cst = TREE_VALUE (args);
+ 
+   if (TREE_CODE (cst) != STRING_CST)
+     {
+       warning (OPT_Wattributes,
+ 	       "%qE attribute requires a string constant argument",
+ 	       name);
+       *no_add_attrs = true;
+     }
+ 
+   if (is_attribute_p ("indirect_branch", name)
+       || is_attribute_p ("indirect_branch_call", name)
+       || is_attribute_p ("function_return", name)
+       || is_attribute_p ("function_return_reg", name)
+       || is_attribute_p ("function_return_mem", name))
+     {
+       if (strcmp (TREE_STRING_POINTER (cst), "keep") != 0
+ 	  && strcmp (TREE_STRING_POINTER (cst), "thunk") != 0
+ 	  && strcmp (TREE_STRING_POINTER (cst), "thunk-extern") != 0)
+       {
+ 	warning (OPT_Wattributes,
+ 		 "argument to %qE attribute is not "
+ 		 "(keep|thunk|thunk-extern)", name);
+ 	*no_add_attrs = true;
+       }
+     }
+ 
+   if (is_attribute_p ("indirect_branch_jump", name)
+       && strcmp (TREE_STRING_POINTER (cst), "keep") != 0
+       && strcmp (TREE_STRING_POINTER (cst), "thunk") != 0
+       && strcmp (TREE_STRING_POINTER (cst), "thunk-inline") != 0
+       && strcmp (TREE_STRING_POINTER (cst), "thunk-extern") != 0)
+     {
+       warning (OPT_Wattributes,
+ 	       "argument to %qE attribute is not "
+ 	       "(keep|thunk|thunk-inline|thunk-extern)", name);
+       *no_add_attrs = true;
+     }
+ 
+   return NULL_TREE;
+ }
+ 
  static const struct attribute_spec s390_attribute_table[] = {
!   { "hotpatch", 2, 2, true, false, false,
!     s390_handle_hotpatch_attribute, false },
!   { "s390_vector_bool", 0, 0, false, true, false,
!     s390_handle_vectorbool_attribute, true },
!   { "indirect_branch", 1, 1, true, false, false,
!     s390_handle_string_attribute, false },
!   { "indirect_branch_jump", 1, 1, true, false, false,
!     s390_handle_string_attribute, false },
!   { "indirect_branch_call", 1, 1, true, false, false,
!     s390_handle_string_attribute, false },
!   { "function_return", 1, 1, true, false, false,
!     s390_handle_string_attribute, false },
!   { "function_return_reg", 1, 1, true, false, false,
!     s390_handle_string_attribute, false },
!   { "function_return_mem", 1, 1, true, false, false,
!     s390_handle_string_attribute, false },
! 
    /* End element.  */
    { NULL,        0, 0, false, false, false, NULL, false }
  };
*************** s390_expand_vec_init (rtx target, rtx va
*** 6573,6583 ****
        return;
      }
  
    if (all_same)
      {
!       emit_insn (gen_rtx_SET (target,
! 			      gen_rtx_VEC_DUPLICATE (mode,
! 						     XVECEXP (vals, 0, 0))));
        return;
      }
  
--- 6596,6611 ----
        return;
      }
  
+   /* Use vector replicate instructions.  vlrep/vrepi/vrep  */
    if (all_same)
      {
!       rtx elem = XVECEXP (vals, 0, 0);
! 
!       /* vec_splats accepts general_operand as source.  */
!       if (!general_operand (elem, GET_MODE (elem)))
! 	elem = force_reg (inner_mode, elem);
! 
!       emit_insn (gen_rtx_SET (target, gen_rtx_VEC_DUPLICATE (mode, elem)));
        return;
      }
  
*************** s390_find_constant (struct constant_pool
*** 8583,8593 ****
  static rtx
  s390_execute_label (rtx insn)
  {
!   if (NONJUMP_INSN_P (insn)
        && GET_CODE (PATTERN (insn)) == PARALLEL
        && GET_CODE (XVECEXP (PATTERN (insn), 0, 0)) == UNSPEC
!       && XINT (XVECEXP (PATTERN (insn), 0, 0), 1) == UNSPEC_EXECUTE)
!     return XVECEXP (XVECEXP (PATTERN (insn), 0, 0), 0, 2);
  
    return NULL_RTX;
  }
--- 8611,8635 ----
  static rtx
  s390_execute_label (rtx insn)
  {
!   if (INSN_P (insn)
        && GET_CODE (PATTERN (insn)) == PARALLEL
        && GET_CODE (XVECEXP (PATTERN (insn), 0, 0)) == UNSPEC
!       && (XINT (XVECEXP (PATTERN (insn), 0, 0), 1) == UNSPEC_EXECUTE
! 	  || XINT (XVECEXP (PATTERN (insn), 0, 0), 1) == UNSPEC_EXECUTE_JUMP))
!     {
!       if (XINT (XVECEXP (PATTERN (insn), 0, 0), 1) == UNSPEC_EXECUTE)
! 	return XVECEXP (XVECEXP (PATTERN (insn), 0, 0), 0, 2);
!       else
! 	{
! 	  gcc_assert (JUMP_P (insn));
! 	  /* For jump insns as execute target:
! 	     - There is one operand less in the parallel (the
! 	       modification register of the execute is always 0).
! 	     - The execute target label is wrapped into an
! 	       if_then_else in order to hide it from jump analysis.  */
! 	  return XEXP (XVECEXP (XVECEXP (PATTERN (insn), 0, 0), 0, 0), 0);
! 	}
!     }
  
    return NULL_RTX;
  }
*************** s390_emit_epilogue (bool sibcall)
*** 11273,11279 ****
    rtx frame_pointer, return_reg, cfa_restores = NULL_RTX;
    int area_bottom, area_top, offset = 0;
    int next_offset;
-   rtvec p;
    int i;
  
    if (TARGET_TPF_PROFILING)
--- 11315,11320 ----
*************** s390_emit_epilogue (bool sibcall)
*** 11427,11436 ****
  	  if (cfun_gpr_save_slot (RETURN_REGNUM) == SAVE_SLOT_STACK)
  	    {
  	      int return_regnum = find_unused_clobbered_reg();
! 	      if (!return_regnum)
! 		return_regnum = 4;
  	      return_reg = gen_rtx_REG (Pmode, return_regnum);
- 
  	      addr = plus_constant (Pmode, frame_pointer,
  				    offset + cfun_frame_layout.gprs_offset
  				    + (RETURN_REGNUM
--- 11468,11482 ----
  	  if (cfun_gpr_save_slot (RETURN_REGNUM) == SAVE_SLOT_STACK)
  	    {
  	      int return_regnum = find_unused_clobbered_reg();
! 	      if (!return_regnum
! 		  || (TARGET_INDIRECT_BRANCH_NOBP_RET_OPTION
! 		      && !TARGET_CPU_Z10
! 		      && return_regnum == INDIRECT_BRANCH_THUNK_REGNUM))
! 		{
! 		  gcc_assert (INDIRECT_BRANCH_THUNK_REGNUM != 4);
! 		  return_regnum = 4;
! 		}
  	      return_reg = gen_rtx_REG (Pmode, return_regnum);
  	      addr = plus_constant (Pmode, frame_pointer,
  				    offset + cfun_frame_layout.gprs_offset
  				    + (RETURN_REGNUM
*************** s390_emit_epilogue (bool sibcall)
*** 11466,11481 ****
    s390_restore_gprs_from_fprs ();
  
    if (! sibcall)
!     {
! 
!       /* Return to caller.  */
! 
!       p = rtvec_alloc (2);
! 
!       RTVEC_ELT (p, 0) = ret_rtx;
!       RTVEC_ELT (p, 1) = gen_rtx_USE (VOIDmode, return_reg);
!       emit_jump_insn (gen_rtx_PARALLEL (VOIDmode, p));
!     }
  }
  
  /* Implement TARGET_SET_UP_BY_PROLOGUE.  */
--- 11512,11518 ----
    s390_restore_gprs_from_fprs ();
  
    if (! sibcall)
!     emit_jump_insn (gen_return_use (return_reg));
  }
  
  /* Implement TARGET_SET_UP_BY_PROLOGUE.  */
*************** s390_output_mi_thunk (FILE *file, tree t
*** 13053,13058 ****
--- 13090,13201 ----
    final_end_function ();
  }
  
+ /* Output either an indirect jump or a an indirect call
+    (RETURN_ADDR_REGNO != INVALID_REGNUM) with target register REGNO
+    using a branch trampoline disabling branch target prediction.  */
+ 
+ void
+ s390_indirect_branch_via_thunk (unsigned int regno,
+ 				unsigned int return_addr_regno,
+ 				rtx comparison_operator,
+ 				enum s390_indirect_branch_type type)
+ {
+   enum s390_indirect_branch_option option;
+ 
+   if (type == s390_indirect_branch_type_return)
+     {
+       if (s390_return_addr_from_memory ())
+ 	option = s390_opt_function_return_mem;
+       else
+ 	option = s390_opt_function_return_reg;
+     }
+   else if (type == s390_indirect_branch_type_jump)
+     option = s390_opt_indirect_branch_jump;
+   else if (type == s390_indirect_branch_type_call)
+     option = s390_opt_indirect_branch_call;
+   else
+     gcc_unreachable ();
+ 
+   if (TARGET_INDIRECT_BRANCH_TABLE)
+     {
+       char label[32];
+ 
+       ASM_GENERATE_INTERNAL_LABEL (label,
+ 				   indirect_branch_table_label[option],
+ 				   indirect_branch_table_label_no[option]++);
+       ASM_OUTPUT_LABEL (asm_out_file, label);
+     }
+ 
+   if (return_addr_regno != INVALID_REGNUM)
+     {
+       gcc_assert (comparison_operator == NULL_RTX);
+       fprintf (asm_out_file, " \tbrasl\t%%r%d,", return_addr_regno);
+     }
+   else
+     {
+       fputs (" \tjg", asm_out_file);
+       if (comparison_operator != NULL_RTX)
+ 	print_operand (asm_out_file, comparison_operator, 'C');
+ 
+       fputs ("\t", asm_out_file);
+     }
+ 
+   if (TARGET_CPU_Z10)
+     fprintf (asm_out_file,
+ 	     TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL "\n",
+ 	     regno);
+   else
+     fprintf (asm_out_file,
+ 	     TARGET_INDIRECT_BRANCH_THUNK_NAME_EX "\n",
+ 	     INDIRECT_BRANCH_THUNK_REGNUM, regno);
+ 
+   if ((option == s390_opt_indirect_branch_jump
+        && cfun->machine->indirect_branch_jump == indirect_branch_thunk)
+       || (option == s390_opt_indirect_branch_call
+ 	  && cfun->machine->indirect_branch_call == indirect_branch_thunk)
+       || (option == s390_opt_function_return_reg
+ 	  && cfun->machine->function_return_reg == indirect_branch_thunk)
+       || (option == s390_opt_function_return_mem
+ 	  && cfun->machine->function_return_mem == indirect_branch_thunk))
+     {
+       if (TARGET_CPU_Z10)
+ 	indirect_branch_z10thunk_mask |= (1 << regno);
+       else
+ 	indirect_branch_prez10thunk_mask |= (1 << regno);
+     }
+ }
+ 
+ /* Output an inline thunk for indirect jumps.  EXECUTE_TARGET can
+    either be an address register or a label pointing to the location
+    of the jump instruction.  */
+ 
+ void
+ s390_indirect_branch_via_inline_thunk (rtx execute_target)
+ {
+   if (TARGET_INDIRECT_BRANCH_TABLE)
+     {
+       char label[32];
+ 
+       ASM_GENERATE_INTERNAL_LABEL (label,
+ 				   indirect_branch_table_label[s390_opt_indirect_branch_jump],
+ 				   indirect_branch_table_label_no[s390_opt_indirect_branch_jump]++);
+       ASM_OUTPUT_LABEL (asm_out_file, label);
+     }
+ 
+   if (!TARGET_ZARCH)
+     fputs ("\t.machinemode zarch\n", asm_out_file);
+ 
+   if (REG_P (execute_target))
+     fprintf (asm_out_file, "\tex\t%%r0,0(%%r%d)\n", REGNO (execute_target));
+   else
+     output_asm_insn ("exrl\t%%r0,%0", &execute_target);
+ 
+   if (!TARGET_ZARCH)
+     fputs ("\t.machinemode esa\n", asm_out_file);
+ 
+   fputs ("0:\tj\t0b\n", asm_out_file);
+ }
+ 
  static bool
  s390_valid_pointer_mode (machine_mode mode)
  {
*************** s390_function_ok_for_sibcall (tree decl,
*** 13158,13163 ****
--- 13301,13314 ----
    if (!TARGET_64BIT && flag_pic && decl && !targetm.binds_local_p (decl))
      return false;
  
+   /* The thunks for indirect branches require r1 if no exrl is
+      available.  r1 might not be available when doing a sibling
+      call.  */
+   if (TARGET_INDIRECT_BRANCH_NOBP_CALL
+       && !TARGET_CPU_Z10
+       && !decl)
+     return false;
+ 
    /* Register 6 on s390 is available as an argument register but unfortunately
       "caller saved". This makes functions needing this register for arguments
       not suitable for sibcalls.  */
*************** s390_emit_call (rtx addr_location, rtx t
*** 13191,13199 ****
  {
    bool plt_call = false;
    rtx_insn *insn;
!   rtx call;
!   rtx clobber;
!   rtvec vec;
  
    /* Direct function calls need special treatment.  */
    if (GET_CODE (addr_location) == SYMBOL_REF)
--- 13342,13354 ----
  {
    bool plt_call = false;
    rtx_insn *insn;
!   rtx vec[4] = { NULL_RTX };
!   int elts = 0;
!   rtx *call = &vec[0];
!   rtx *clobber_ret_reg = &vec[1];
!   rtx *use = &vec[2];
!   rtx *clobber_thunk_reg = &vec[3];
!   int i;
  
    /* Direct function calls need special treatment.  */
    if (GET_CODE (addr_location) == SYMBOL_REF)
*************** s390_emit_call (rtx addr_location, rtx t
*** 13245,13270 ****
        addr_location = gen_rtx_REG (Pmode, SIBCALL_REGNUM);
      }
  
    addr_location = gen_rtx_MEM (QImode, addr_location);
!   call = gen_rtx_CALL (VOIDmode, addr_location, const0_rtx);
  
    if (result_reg != NULL_RTX)
!     call = gen_rtx_SET (result_reg, call);
  
    if (retaddr_reg != NULL_RTX)
      {
!       clobber = gen_rtx_CLOBBER (VOIDmode, retaddr_reg);
  
        if (tls_call != NULL_RTX)
! 	vec = gen_rtvec (3, call, clobber,
! 			 gen_rtx_USE (VOIDmode, tls_call));
!       else
! 	vec = gen_rtvec (2, call, clobber);
  
!       call = gen_rtx_PARALLEL (VOIDmode, vec);
      }
  
!   insn = emit_call_insn (call);
  
    /* 31-bit PLT stubs and tls calls use the GOT register implicitly.  */
    if ((!TARGET_64BIT && plt_call) || tls_call != NULL_RTX)
--- 13400,13457 ----
        addr_location = gen_rtx_REG (Pmode, SIBCALL_REGNUM);
      }
  
+   if (TARGET_INDIRECT_BRANCH_NOBP_CALL
+       && GET_CODE (addr_location) != SYMBOL_REF
+       && !plt_call)
+     {
+       /* Indirect branch thunks require the target to be a single GPR.  */
+       addr_location = force_reg (Pmode, addr_location);
+ 
+       /* Without exrl the indirect branch thunks need an additional
+ 	 register for larl;ex */
+       if (!TARGET_CPU_Z10)
+ 	{
+ 	  *clobber_thunk_reg = gen_rtx_REG (Pmode, INDIRECT_BRANCH_THUNK_REGNUM);
+ 	  *clobber_thunk_reg = gen_rtx_CLOBBER (VOIDmode, *clobber_thunk_reg);
+ 	}
+     }
+ 
    addr_location = gen_rtx_MEM (QImode, addr_location);
!   *call = gen_rtx_CALL (VOIDmode, addr_location, const0_rtx);
  
    if (result_reg != NULL_RTX)
!     *call = gen_rtx_SET (result_reg, *call);
  
    if (retaddr_reg != NULL_RTX)
      {
!       *clobber_ret_reg = gen_rtx_CLOBBER (VOIDmode, retaddr_reg);
  
        if (tls_call != NULL_RTX)
! 	*use = gen_rtx_USE (VOIDmode, tls_call);
!     }
  
! 
!   for (i = 0; i < 4; i++)
!     if (vec[i] != NULL_RTX)
!       elts++;
! 
!   if (elts > 1)
!     {
!       rtvec v;
!       int e = 0;
! 
!       v = rtvec_alloc (elts);
!       for (i = 0; i < 4; i++)
! 	if (vec[i] != NULL_RTX)
! 	  {
! 	    RTVEC_ELT (v, e) = vec[i];
! 	    e++;
! 	  }
! 
!       *call = gen_rtx_PARALLEL (VOIDmode, v);
      }
  
!   insn = emit_call_insn (*call);
  
    /* 31-bit PLT stubs and tls calls use the GOT register implicitly.  */
    if ((!TARGET_64BIT && plt_call) || tls_call != NULL_RTX)
*************** s390_reorg (void)
*** 14046,14052 ****
  	  target = emit_label (XEXP (label, 0));
  	  INSN_ADDRESSES_NEW (target, -1);
  
! 	  target = emit_insn (s390_execute_target (insn));
  	  INSN_ADDRESSES_NEW (target, -1);
  	}
      }
--- 14233,14248 ----
  	  target = emit_label (XEXP (label, 0));
  	  INSN_ADDRESSES_NEW (target, -1);
  
! 	  if (JUMP_P (insn))
! 	    {
! 	      target = emit_jump_insn (s390_execute_target (insn));
! 	      /* This is important in order to keep a table jump
! 		 pointing at the jump table label.  Only this makes it
! 		 being recognized as table jump.  */
! 	      JUMP_LABEL (target) = JUMP_LABEL (insn);
! 	    }
! 	  else
! 	    target = emit_insn (s390_execute_target (insn));
  	  INSN_ADDRESSES_NEW (target, -1);
  	}
      }
*************** s390_option_override_internal (bool main
*** 14699,14704 ****
--- 14895,14936 ----
    if (TARGET_64BIT && !TARGET_ZARCH_P (opts->x_target_flags))
      error ("64-bit ABI not supported in ESA/390 mode");
  
+   if (opts->x_s390_indirect_branch == indirect_branch_thunk_inline
+       || opts->x_s390_indirect_branch_call == indirect_branch_thunk_inline
+       || opts->x_s390_function_return == indirect_branch_thunk_inline
+       || opts->x_s390_function_return_reg == indirect_branch_thunk_inline
+       || opts->x_s390_function_return_mem == indirect_branch_thunk_inline)
+     error ("thunk-inline is only supported with -mindirect-branch-jump");
+ 
+   if (opts->x_s390_indirect_branch != indirect_branch_keep)
+     {
+       if (!opts_set->x_s390_indirect_branch_call)
+ 	opts->x_s390_indirect_branch_call = opts->x_s390_indirect_branch;
+ 
+       if (!opts_set->x_s390_indirect_branch_jump)
+ 	opts->x_s390_indirect_branch_jump = opts->x_s390_indirect_branch;
+     }
+ 
+   if (opts->x_s390_function_return != indirect_branch_keep)
+     {
+       if (!opts_set->x_s390_function_return_reg)
+ 	opts->x_s390_function_return_reg = opts->x_s390_function_return;
+ 
+       if (!opts_set->x_s390_function_return_mem)
+ 	opts->x_s390_function_return_mem = opts->x_s390_function_return;
+     }
+ 
+   if (!TARGET_CPU_ZARCH)
+     {
+       if (opts->x_s390_indirect_branch_call != indirect_branch_keep
+ 	  || opts->x_s390_indirect_branch_jump != indirect_branch_keep)
+ 	error ("-mindirect-branch* options require -march=z900 or higher");
+       if (opts->x_s390_function_return_reg != indirect_branch_keep
+ 	  || opts->x_s390_function_return_mem != indirect_branch_keep)
+ 	error ("-mfunction-return* options require -march=z900 or higher");
+     }
+ 
+ 
    /* Enable hardware transactions if available and not explicitly
       disabled by user.  E.g. with -m31 -march=zEC12 -mzarch */
    if (!TARGET_OPT_HTM_P (opts_set->x_target_flags))
*************** s390_valid_target_attribute_p (tree fnde
*** 15267,15272 ****
--- 15499,15577 ----
    return ret;
  }
  
+ /* Set VAL to correct enum value according to the indirect-branch or
+    function-return attribute in ATTR.  */
+ 
+ static inline void
+ s390_indirect_branch_attrvalue (tree attr, enum indirect_branch *val)
+ {
+   const char *str = TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr)));
+   if (strcmp (str, "keep") == 0)
+     *val = indirect_branch_keep;
+   else if (strcmp (str, "thunk") == 0)
+     *val = indirect_branch_thunk;
+   else if (strcmp (str, "thunk-inline") == 0)
+     *val = indirect_branch_thunk_inline;
+   else if (strcmp (str, "thunk-extern") == 0)
+     *val = indirect_branch_thunk_extern;
+ }
+ 
+ /* Memorize the setting for -mindirect-branch* and -mfunction-return*
+    from either the cmdline or the function attributes in
+    cfun->machine.  */
+ 
+ static void
+ s390_indirect_branch_settings (tree fndecl)
+ {
+   tree attr;
+ 
+   if (!fndecl)
+     return;
+ 
+   /* Initialize with the cmdline options and let the attributes
+      override it.  */
+   cfun->machine->indirect_branch_jump = s390_indirect_branch_jump;
+   cfun->machine->indirect_branch_call = s390_indirect_branch_call;
+ 
+   cfun->machine->function_return_reg = s390_function_return_reg;
+   cfun->machine->function_return_mem = s390_function_return_mem;
+ 
+   if ((attr = lookup_attribute ("indirect_branch",
+ 				DECL_ATTRIBUTES (fndecl))))
+     {
+       s390_indirect_branch_attrvalue (attr,
+ 				      &cfun->machine->indirect_branch_jump);
+       s390_indirect_branch_attrvalue (attr,
+ 				      &cfun->machine->indirect_branch_call);
+     }
+ 
+   if ((attr = lookup_attribute ("indirect_branch_jump",
+ 				DECL_ATTRIBUTES (fndecl))))
+     s390_indirect_branch_attrvalue (attr, &cfun->machine->indirect_branch_jump);
+ 
+   if ((attr = lookup_attribute ("indirect_branch_call",
+ 				DECL_ATTRIBUTES (fndecl))))
+     s390_indirect_branch_attrvalue (attr, &cfun->machine->indirect_branch_call);
+ 
+   if ((attr = lookup_attribute ("function_return",
+ 				DECL_ATTRIBUTES (fndecl))))
+     {
+       s390_indirect_branch_attrvalue (attr,
+ 				      &cfun->machine->function_return_reg);
+       s390_indirect_branch_attrvalue (attr,
+ 				      &cfun->machine->function_return_mem);
+     }
+ 
+   if ((attr = lookup_attribute ("function_return_reg",
+ 				DECL_ATTRIBUTES (fndecl))))
+     s390_indirect_branch_attrvalue (attr, &cfun->machine->function_return_reg);
+ 
+   if ((attr = lookup_attribute ("function_return_mem",
+ 				DECL_ATTRIBUTES (fndecl))))
+     s390_indirect_branch_attrvalue (attr, &cfun->machine->function_return_mem);
+ }
+ 
+ 
  /* Restore targets globals from NEW_TREE and invalidate s390_previous_fndecl
     cache.  */
  
*************** s390_set_current_function (tree fndecl)
*** 15293,15299 ****
       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.  */
    if (fndecl == s390_previous_fndecl)
!     return;
  
    tree old_tree;
    if (s390_previous_fndecl == NULL_TREE)
--- 15598,15607 ----
       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.  */
    if (fndecl == s390_previous_fndecl)
!     {
!       s390_indirect_branch_settings (fndecl);
!       return;
!     }
  
    tree old_tree;
    if (s390_previous_fndecl == NULL_TREE)
*************** s390_set_current_function (tree fndecl)
*** 15317,15322 ****
--- 15625,15632 ----
    if (old_tree != new_tree)
      s390_activate_target_options (new_tree);
    s390_previous_fndecl = fndecl;
+ 
+   s390_indirect_branch_settings (fndecl);
  }
  #endif
  
*************** s390_asan_shadow_offset (void)
*** 15598,15603 ****
--- 15908,16093 ----
    return TARGET_64BIT ? HOST_WIDE_INT_1U << 52 : HOST_WIDE_INT_UC (0x20000000);
  }
  
+ #ifdef HAVE_GAS_HIDDEN
+ # define USE_HIDDEN_LINKONCE 1
+ #else
+ # define USE_HIDDEN_LINKONCE 0
+ #endif
+ 
+ /* Output an indirect branch trampoline for target register REGNO.  */
+ 
+ static void
+ s390_output_indirect_thunk_function (unsigned int regno, bool z10_p)
+ {
+   tree decl;
+   char thunk_label[32];
+   int i;
+ 
+   if (z10_p)
+     sprintf (thunk_label, TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL, regno);
+   else
+     sprintf (thunk_label, TARGET_INDIRECT_BRANCH_THUNK_NAME_EX,
+ 	     INDIRECT_BRANCH_THUNK_REGNUM, regno);
+ 
+   decl = build_decl (BUILTINS_LOCATION, FUNCTION_DECL,
+ 		     get_identifier (thunk_label),
+ 		     build_function_type_list (void_type_node, NULL_TREE));
+   DECL_RESULT (decl) = build_decl (BUILTINS_LOCATION, RESULT_DECL,
+ 				   NULL_TREE, void_type_node);
+   TREE_PUBLIC (decl) = 1;
+   TREE_STATIC (decl) = 1;
+   DECL_IGNORED_P (decl) = 1;
+ 
+   if (USE_HIDDEN_LINKONCE)
+     {
+       cgraph_node::create (decl)->set_comdat_group (DECL_ASSEMBLER_NAME (decl));
+ 
+       targetm.asm_out.unique_section (decl, 0);
+       switch_to_section (get_named_section (decl, NULL, 0));
+ 
+       targetm.asm_out.globalize_label (asm_out_file, thunk_label);
+       fputs ("\t.hidden\t", asm_out_file);
+       assemble_name (asm_out_file, thunk_label);
+       putc ('\n', asm_out_file);
+       ASM_DECLARE_FUNCTION_NAME (asm_out_file, thunk_label, decl);
+     }
+   else
+     {
+       switch_to_section (text_section);
+       ASM_OUTPUT_LABEL (asm_out_file, thunk_label);
+     }
+ 
+   DECL_INITIAL (decl) = make_node (BLOCK);
+   current_function_decl = decl;
+   allocate_struct_function (decl, false);
+   init_function_start (decl);
+   cfun->is_thunk = true;
+   first_function_block_is_cold = false;
+   final_start_function (emit_barrier (), asm_out_file, 1);
+ 
+   /* This makes CFI at least usable for indirect jumps.
+ 
+      Stopping in the thunk: backtrace will point to the thunk target
+      is if it was interrupted by a signal.  For a call this means that
+      the call chain will be: caller->callee->thunk   */
+   if (flag_asynchronous_unwind_tables && flag_dwarf2_cfi_asm)
+     {
+       fputs ("\t.cfi_signal_frame\n", asm_out_file);
+       fprintf (asm_out_file, "\t.cfi_return_column %d\n", regno);
+       for (i = 0; i < FPR15_REGNUM; i++)
+ 	fprintf (asm_out_file, "\t.cfi_same_value %s\n", reg_names[i]);
+     }
+ 
+   if (z10_p)
+     {
+       /* exrl  0,1f  */
+ 
+       /* We generate a thunk for z10 compiled code although z10 is
+ 	 currently not enabled.  Tell the assembler to accept the
+ 	 instruction.  */
+       if (!TARGET_CPU_Z10)
+ 	{
+ 	  fputs ("\t.machine push\n", asm_out_file);
+ 	  fputs ("\t.machine z10\n", asm_out_file);
+ 	}
+       /* We use exrl even if -mzarch hasn't been specified on the
+ 	 command line so we have to tell the assembler to accept
+ 	 it.  */
+       if (!TARGET_ZARCH)
+ 	fputs ("\t.machinemode zarch\n", asm_out_file);
+ 
+       fputs ("\texrl\t0,1f\n", asm_out_file);
+ 
+       if (!TARGET_ZARCH)
+ 	fputs ("\t.machinemode esa\n", asm_out_file);
+ 
+       if (!TARGET_CPU_Z10)
+ 	fputs ("\t.machine pop\n", asm_out_file);
+     }
+   else if (TARGET_CPU_ZARCH)
+     {
+       /* larl %r1,1f  */
+       fprintf (asm_out_file, "\tlarl\t%%r%d,1f\n",
+ 	       INDIRECT_BRANCH_THUNK_REGNUM);
+ 
+       /* ex 0,0(%r1)  */
+       fprintf (asm_out_file, "\tex\t0,0(%%r%d)\n",
+ 	       INDIRECT_BRANCH_THUNK_REGNUM);
+     }
+   else
+     gcc_unreachable ();
+ 
+   /* 0:    j 0b  */
+   fputs ("0:\tj\t0b\n", asm_out_file);
+ 
+   /* 1:    br <regno>  */
+   fprintf (asm_out_file, "1:\tbr\t%%r%d\n", regno);
+ 
+   final_end_function ();
+   init_insn_lengths ();
+   free_after_compilation (cfun);
+   set_cfun (NULL);
+   current_function_decl = NULL;
+ }
+ 
+ /* Implement the asm.code_end target hook.  */
+ 
+ static void
+ s390_code_end (void)
+ {
+   int i;
+ 
+   for (i = 1; i < 16; i++)
+     {
+       if (indirect_branch_z10thunk_mask & (1 << i))
+ 	s390_output_indirect_thunk_function (i, true);
+ 
+       if (indirect_branch_prez10thunk_mask & (1 << i))
+ 	s390_output_indirect_thunk_function (i, false);
+     }
+ 
+   if (TARGET_INDIRECT_BRANCH_TABLE)
+     {
+       int o;
+       int i;
+ 
+       for (o = 0; o < INDIRECT_BRANCH_NUM_OPTIONS; o++)
+ 	{
+ 	  if (indirect_branch_table_label_no[o] == 0)
+ 	    continue;
+ 
+ 	  switch_to_section (get_section (indirect_branch_table_name[o],
+ 					  0,
+ 					  NULL_TREE));
+ 	  for (i = 0; i < indirect_branch_table_label_no[o]; i++)
+ 	    {
+ 	      char label_start[32];
+ 
+ 	      ASM_GENERATE_INTERNAL_LABEL (label_start,
+ 					   indirect_branch_table_label[o], i);
+ 
+ 	      fputs ("\t.long\t", asm_out_file);
+ 	      assemble_name_raw (asm_out_file, label_start);
+ 	      fputs ("-.\n", asm_out_file);
+ 	    }
+ 	  switch_to_section (current_function_section ());
+ 	}
+     }
+ }
+ 
+ /* Implement the TARGET_CASE_VALUES_THRESHOLD target hook.  */
+ 
+ unsigned int
+ s390_case_values_threshold (void)
+ {
+   /* Disabling branch prediction for indirect jumps makes jump tables
+      much more expensive.  */
+   if (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
+     return 20;
+ 
+   return default_case_values_threshold ();
+ }
+ 
  /* Initialize GCC target structure.  */
  
  #undef  TARGET_ASM_ALIGNED_HI_OP
*************** s390_asan_shadow_offset (void)
*** 15854,15859 ****
--- 16344,16355 ----
  #undef TARGET_OPTION_RESTORE
  #define TARGET_OPTION_RESTORE s390_function_specific_restore
  
+ #undef TARGET_ASM_CODE_END
+ #define TARGET_ASM_CODE_END s390_code_end
+ 
+ #undef TARGET_CASE_VALUES_THRESHOLD
+ #define TARGET_CASE_VALUES_THRESHOLD s390_case_values_threshold
+ 
  struct gcc_target targetm = TARGET_INITIALIZER;
  
  #include "gt-s390.h"
diff -Nrcpad gcc-7.3.0/gcc/config/s390/s390.h gcc-7.4.0/gcc/config/s390/s390.h
*** gcc-7.3.0/gcc/config/s390/s390.h	Fri Mar 24 13:59:51 2017
--- gcc-7.4.0/gcc/config/s390/s390.h	Tue Jun 26 12:23:02 2018
*************** enum processor_flags
*** 205,211 ****
  #define OPTION_DEFAULT_SPECS 					\
    { "mode", "%{!mesa:%{!mzarch:-m%(VALUE)}}" },			\
    { "arch", "%{!march=*:-march=%(VALUE)}" },			\
!   { "tune", "%{!mtune=*:-mtune=%(VALUE)}" }
  
  #ifdef __s390__
  extern const char *s390_host_detect_local_cpu (int argc, const char **argv);
--- 205,211 ----
  #define OPTION_DEFAULT_SPECS 					\
    { "mode", "%{!mesa:%{!mzarch:-m%(VALUE)}}" },			\
    { "arch", "%{!march=*:-march=%(VALUE)}" },			\
!   { "tune", "%{!mtune=*:%{!march=*:-mtune=%(VALUE)}}" }
  
  #ifdef __s390__
  extern const char *s390_host_detect_local_cpu (int argc, const char **argv);
*************** extern const int processor_flags_table[]
*** 1120,1123 ****
--- 1120,1243 ----
      s390_register_target_pragmas ();		\
    } while (0)
  
+ #ifndef USED_FOR_TARGET
+ /* The following structure is embedded in the machine
+    specific part of struct function.  */
+ 
+ struct GTY (()) s390_frame_layout
+ {
+   /* Offset within stack frame.  */
+   HOST_WIDE_INT gprs_offset;
+   HOST_WIDE_INT f0_offset;
+   HOST_WIDE_INT f4_offset;
+   HOST_WIDE_INT f8_offset;
+   HOST_WIDE_INT backchain_offset;
+ 
+   /* Number of first and last gpr where slots in the register
+      save area are reserved for.  */
+   int first_save_gpr_slot;
+   int last_save_gpr_slot;
+ 
+   /* Location (FP register number) where GPRs (r0-r15) should
+      be saved to.
+       0 - does not need to be saved at all
+      -1 - stack slot  */
+ #define SAVE_SLOT_NONE   0
+ #define SAVE_SLOT_STACK -1
+   signed char gpr_save_slots[16];
+ 
+   /* Number of first and last gpr to be saved, restored.  */
+   int first_save_gpr;
+   int first_restore_gpr;
+   int last_save_gpr;
+   int last_restore_gpr;
+ 
+   /* Bits standing for floating point registers. Set, if the
+      respective register has to be saved. Starting with reg 16 (f0)
+      at the rightmost bit.
+      Bit 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
+      fpr 15 13 11  9 14 12 10  8  7  5  3  1  6  4  2  0
+      reg 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16  */
+   unsigned int fpr_bitmap;
+ 
+   /* Number of floating point registers f8-f15 which must be saved.  */
+   int high_fprs;
+ 
+   /* Set if return address needs to be saved.
+      This flag is set by s390_return_addr_rtx if it could not use
+      the initial value of r14 and therefore depends on r14 saved
+      to the stack.  */
+   bool save_return_addr_p;
+ 
+   /* Size of stack frame.  */
+   HOST_WIDE_INT frame_size;
+ };
+ 
+ 
+ /* Define the structure for the machine field in struct function.  */
+ 
+ struct GTY(()) machine_function
+ {
+   struct s390_frame_layout frame_layout;
+ 
+   /* Literal pool base register.  */
+   rtx base_reg;
+ 
+   /* True if we may need to perform branch splitting.  */
+   bool split_branches_pending_p;
+ 
+   bool has_landing_pad_p;
+ 
+   /* True if the current function may contain a tbegin clobbering
+      FPRs.  */
+   bool tbegin_p;
+ 
+   /* For -fsplit-stack support: A stack local which holds a pointer to
+      the stack arguments for a function with a variable number of
+      arguments.  This is set at the start of the function and is used
+      to initialize the overflow_arg_area field of the va_list
+      structure.  */
+   rtx split_stack_varargs_pointer;
+ 
+   enum indirect_branch indirect_branch_jump;
+   enum indirect_branch indirect_branch_call;
+ 
+   enum indirect_branch function_return_mem;
+   enum indirect_branch function_return_reg;
+ };
+ #endif
+ 
+ #define TARGET_INDIRECT_BRANCH_NOBP_RET_OPTION				\
+   (cfun->machine->function_return_reg != indirect_branch_keep		\
+    || cfun->machine->function_return_mem != indirect_branch_keep)
+ 
+ #define TARGET_INDIRECT_BRANCH_NOBP_RET					\
+   ((cfun->machine->function_return_reg != indirect_branch_keep		\
+     && !s390_return_addr_from_memory ())				\
+    || (cfun->machine->function_return_mem != indirect_branch_keep	\
+        && s390_return_addr_from_memory ()))
+ 
+ #define TARGET_INDIRECT_BRANCH_NOBP_JUMP				\
+   (cfun->machine->indirect_branch_jump != indirect_branch_keep)
+ 
+ #define TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK				\
+   (cfun->machine->indirect_branch_jump == indirect_branch_thunk		\
+    || cfun->machine->indirect_branch_jump == indirect_branch_thunk_extern)
+ 
+ #define TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK			\
+   (cfun->machine->indirect_branch_jump == indirect_branch_thunk_inline)
+ 
+ #define TARGET_INDIRECT_BRANCH_NOBP_CALL			\
+   (cfun->machine->indirect_branch_call != indirect_branch_keep)
+ 
+ #ifndef TARGET_DEFAULT_INDIRECT_BRANCH_TABLE
+ #define TARGET_DEFAULT_INDIRECT_BRANCH_TABLE 0
+ #endif
+ 
+ #define TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL "__s390_indirect_jump_r%d"
+ #define TARGET_INDIRECT_BRANCH_THUNK_NAME_EX   "__s390_indirect_jump_r%duse_r%d"
+ 
+ #define TARGET_INDIRECT_BRANCH_TABLE s390_indirect_branch_table
+ 
+ 
  #endif /* S390_H */
diff -Nrcpad gcc-7.3.0/gcc/config/s390/s390.md gcc-7.4.0/gcc/config/s390/s390.md
*** gcc-7.3.0/gcc/config/s390/s390.md	Thu Jul 27 10:42:22 2017
--- gcc-7.4.0/gcc/config/s390/s390.md	Mon Nov 26 15:29:27 2018
***************
*** 89,94 ****
--- 89,95 ----
     UNSPEC_LTREF
     UNSPEC_INSN
     UNSPEC_EXECUTE
+    UNSPEC_EXECUTE_JUMP
  
     ; Atomic Support
     UNSPEC_MB
***************
*** 302,307 ****
--- 303,310 ----
    [
     ; Sibling call register.
     (SIBCALL_REGNUM		 1)
+    ; A call-clobbered reg which can be used in indirect branch thunks
+    (INDIRECT_BRANCH_THUNK_REGNUM 1)
     ; Literal pool base register.
     (BASE_REGNUM			13)
     ; Return address register.
***************
*** 398,403 ****
--- 401,410 ----
     ; Bitposition of operand types
     (PFPO_OP0_TYPE_SHIFT          16)
     (PFPO_OP1_TYPE_SHIFT           8)
+    ; Decide whether current DFP or BFD rounding mode should be used
+    ; for the conversion.
+    (PFPO_RND_MODE_DFP             0)
+    (PFPO_RND_MODE_BFP             1)
    ])
  
  ; Immediate operands for tbegin and tbeginc
***************
*** 471,477 ****
                           z196_cracked"
               (const_string "none"))
  
! (define_attr "mnemonic" "bcr_flush,unknown" (const_string "unknown"))
  
  ;; Length in bytes.
  
--- 478,487 ----
                           z196_cracked"
               (const_string "none"))
  
! ; mnemonics which only get defined through if_then_else currently
! ; don't get added to the list values automatically and hence need to
! ; be listed here.
! (define_attr "mnemonic" "b,bas,bc,bcr_flush,unknown" (const_string "unknown"))
  
  ;; Length in bytes.
  
***************
*** 5348,5356 ****
  {
    HOST_WIDE_INT flags;
  
    flags = (PFPO_CONVERT |
             PFPO_OP_TYPE_<DFP_ALL:MODE> << PFPO_OP0_TYPE_SHIFT |
!            PFPO_OP_TYPE_<BFP:MODE> << PFPO_OP1_TYPE_SHIFT);
  
    operands[2] = GEN_INT (flags);
  })
--- 5358,5370 ----
  {
    HOST_WIDE_INT flags;
  
+   /* According to IEEE 754 2008 4.3 'Rounding-direction attributes' the
+      rounding mode of the target format needs to be used.  */
+ 
    flags = (PFPO_CONVERT |
             PFPO_OP_TYPE_<DFP_ALL:MODE> << PFPO_OP0_TYPE_SHIFT |
!            PFPO_OP_TYPE_<BFP:MODE> << PFPO_OP1_TYPE_SHIFT |
! 	   PFPO_RND_MODE_DFP);
  
    operands[2] = GEN_INT (flags);
  })
***************
*** 5370,5378 ****
  {
    HOST_WIDE_INT flags;
  
    flags = (PFPO_CONVERT |
             PFPO_OP_TYPE_<BFP:MODE> << PFPO_OP0_TYPE_SHIFT |
!            PFPO_OP_TYPE_<DFP_ALL:MODE> << PFPO_OP1_TYPE_SHIFT);
  
    operands[2] = GEN_INT (flags);
  })
--- 5384,5396 ----
  {
    HOST_WIDE_INT flags;
  
+   /* According to IEEE 754 2008 4.3 'Rounding-direction attributes' the
+      rounding mode of the target format needs to be used.  */
+ 
    flags = (PFPO_CONVERT |
             PFPO_OP_TYPE_<BFP:MODE> << PFPO_OP0_TYPE_SHIFT |
!            PFPO_OP_TYPE_<DFP_ALL:MODE> << PFPO_OP1_TYPE_SHIFT |
! 	   PFPO_RND_MODE_BFP);
  
    operands[2] = GEN_INT (flags);
  })
***************
*** 5413,5421 ****
  {
    HOST_WIDE_INT flags;
  
    flags = (PFPO_CONVERT |
             PFPO_OP_TYPE_<DFP_ALL:MODE> << PFPO_OP0_TYPE_SHIFT |
!            PFPO_OP_TYPE_<BFP:MODE> << PFPO_OP1_TYPE_SHIFT);
  
    operands[2] = GEN_INT (flags);
  })
--- 5431,5443 ----
  {
    HOST_WIDE_INT flags;
  
+   /* According to IEEE 754 2008 4.3 'Rounding-direction attributes' the
+      rounding mode of the target format needs to be used.  */
+ 
    flags = (PFPO_CONVERT |
             PFPO_OP_TYPE_<DFP_ALL:MODE> << PFPO_OP0_TYPE_SHIFT |
!            PFPO_OP_TYPE_<BFP:MODE> << PFPO_OP1_TYPE_SHIFT |
! 	   PFPO_RND_MODE_DFP);
  
    operands[2] = GEN_INT (flags);
  })
***************
*** 5435,5443 ****
  {
    HOST_WIDE_INT flags;
  
    flags = (PFPO_CONVERT |
             PFPO_OP_TYPE_<BFP:MODE> << PFPO_OP0_TYPE_SHIFT |
!            PFPO_OP_TYPE_<DFP_ALL:MODE> << PFPO_OP1_TYPE_SHIFT);
  
    operands[2] = GEN_INT (flags);
  })
--- 5457,5469 ----
  {
    HOST_WIDE_INT flags;
  
+   /* According to IEEE 754 2008 4.3 'Rounding-direction attributes' the
+      rounding mode of the target format needs to be used.  */
+ 
    flags = (PFPO_CONVERT |
             PFPO_OP_TYPE_<BFP:MODE> << PFPO_OP0_TYPE_SHIFT |
!            PFPO_OP_TYPE_<DFP_ALL:MODE> << PFPO_OP1_TYPE_SHIFT |
! 	   PFPO_RND_MODE_BFP);
  
    operands[2] = GEN_INT (flags);
  })
***************
*** 8845,8861 ****
    DONE;
  })
  
  (define_insn "clztidi2"
    [(set (match_operand:TI 0 "register_operand" "=d")
  	(ior:TI
! 	  (ashift:TI
!             (zero_extend:TI
!    	      (xor:DI (match_operand:DI 1 "register_operand" "d")
!                       (lshiftrt (match_operand:DI 2 "const_int_operand" "")
! 				(subreg:SI (clz:DI (match_dup 1)) 4))))
! 
! 	    (const_int 64))
!           (zero_extend:TI (clz:DI (match_dup 1)))))
     (clobber (reg:CC CC_REGNUM))]
    "UINTVAL (operands[2]) == HOST_WIDE_INT_1U << 63
     && TARGET_EXTIMM && TARGET_ZARCH"
--- 8871,8887 ----
    DONE;
  })
  
+ ; CLZ result is in hard reg op0 - this is the high part of the target operand
+ ; The source with the left-most one bit cleared is in hard reg op0 + 1 - the low part
  (define_insn "clztidi2"
    [(set (match_operand:TI 0 "register_operand" "=d")
  	(ior:TI
! 	  (ashift:TI (zero_extend:TI (clz:DI (match_operand:DI 1 "register_operand" "d")))
! 		     (const_int 64))
! 	  (zero_extend:TI
! 	   (xor:DI (match_dup 1)
! 		   (lshiftrt (match_operand:DI 2 "const_int_operand" "")
! 			     (subreg:SI (clz:DI (match_dup 1)) 4))))))
     (clobber (reg:CC CC_REGNUM))]
    "UINTVAL (operands[2]) == HOST_WIDE_INT_1U << 63
     && TARGET_EXTIMM && TARGET_ZARCH"
***************
*** 9069,9075 ****
            (match_operator 1 "s390_comparison" [(reg CC_REGNUM) (const_int 0)])
            (match_operand 0 "address_operand" "ZQZR")
            (pc)))]
!   ""
  {
    if (get_attr_op_type (insn) == OP_TYPE_RR)
      return "b%C1r\t%0";
--- 9095,9101 ----
            (match_operator 1 "s390_comparison" [(reg CC_REGNUM) (const_int 0)])
            (match_operand 0 "address_operand" "ZQZR")
            (pc)))]
!   "!TARGET_INDIRECT_BRANCH_NOBP_JUMP"
  {
    if (get_attr_op_type (insn) == OP_TYPE_RR)
      return "b%C1r\t%0";
***************
*** 9079,9084 ****
--- 9105,9113 ----
    [(set (attr "op_type")
          (if_then_else (match_operand 0 "register_operand" "")
                        (const_string "RR") (const_string "RX")))
+    (set (attr "mnemonic")
+         (if_then_else (match_operand 0 "register_operand" "")
+                       (const_string "bcr") (const_string "bc")))
     (set_attr "type"  "branch")
     (set_attr "atype" "agen")])
  
***************
*** 9090,9097 ****
            (ANY_RETURN)
            (pc)))]
    "s390_can_use_<code>_insn ()"
!   "b%C0r\t%%r14"
!   [(set_attr "op_type" "RR")
     (set_attr "type"  "jsr")
     (set_attr "atype" "agen")])
  
--- 9119,9144 ----
            (ANY_RETURN)
            (pc)))]
    "s390_can_use_<code>_insn ()"
! {
!   if (TARGET_INDIRECT_BRANCH_NOBP_RET)
!     {
!       s390_indirect_branch_via_thunk (RETURN_REGNUM,
! 				      INVALID_REGNUM,
! 				      operands[0],
! 				      s390_indirect_branch_type_return);
!       return "";
!     }
!   else
!     return "b%C0r\t%%r14";
! }
!   [(set (attr "op_type")
! 	(if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET")
! 		      (const_string "RIL")
! 		      (const_string "RR")))
!    (set (attr "mnemonic")
! 	(if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET")
! 		      (const_string "brcl")
! 		      (const_string "bcr")))
     (set_attr "type"  "jsr")
     (set_attr "atype" "agen")])
  
***************
*** 9144,9150 ****
            (match_operator 1 "s390_comparison" [(reg CC_REGNUM) (const_int 0)])
            (pc)
            (match_operand 0 "address_operand" "ZQZR")))]
!   ""
  {
    if (get_attr_op_type (insn) == OP_TYPE_RR)
      return "b%D1r\t%0";
--- 9191,9197 ----
            (match_operator 1 "s390_comparison" [(reg CC_REGNUM) (const_int 0)])
            (pc)
            (match_operand 0 "address_operand" "ZQZR")))]
!   "!TARGET_INDIRECT_BRANCH_NOBP_JUMP"
  {
    if (get_attr_op_type (insn) == OP_TYPE_RR)
      return "b%D1r\t%0";
***************
*** 9154,9159 ****
--- 9201,9209 ----
    [(set (attr "op_type")
          (if_then_else (match_operand 0 "register_operand" "")
                        (const_string "RR") (const_string "RX")))
+    (set (attr "mnemonic")
+         (if_then_else (match_operand 0 "register_operand" "")
+                       (const_string "bcr") (const_string "bc")))
     (set_attr "type"  "branch")
     (set_attr "atype" "agen")])
  
***************
*** 9658,9678 ****
      ;
    else
      operands[0] = force_reg (Pmode, operands[0]);
  })
  
- ; The first constraint must be an "extra address constraint" in order
- ; to trigger address reloading in LRA/reload
  (define_insn "*indirect_jump"
    [(set (pc)
! 	(match_operand 0 "address_operand" "ZR,a"))]
!  ""
!  "@
!   b\t%a0
!   br\t%0"
!  [(set_attr "op_type" "RX,RR")
    (set_attr "type"  "branch")
!   (set_attr "atype" "agen")
!   (set_attr "cpu_facility" "*")])
  
  ; FIXME: LRA does not appear to be able to deal with MEMs being
  ; checked against address constraints like ZR above.  So make this a
--- 9708,9851 ----
      ;
    else
      operands[0] = force_reg (Pmode, operands[0]);
+ 
+   if (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
+     {
+       operands[0] = force_reg (Pmode, operands[0]);
+       if (TARGET_CPU_Z10)
+ 	{
+ 	  if (TARGET_64BIT)
+ 	    emit_jump_insn (gen_indirect_jump_via_thunkdi_z10 (operands[0]));
+ 	  else
+ 	    emit_jump_insn (gen_indirect_jump_via_thunksi_z10 (operands[0]));
+ 	}
+       else
+ 	{
+ 	  if (TARGET_64BIT)
+ 	    emit_jump_insn (gen_indirect_jump_via_thunkdi (operands[0]));
+ 	  else
+ 	    emit_jump_insn (gen_indirect_jump_via_thunksi (operands[0]));
+ 	}
+       DONE;
+     }
+ 
+   if (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
+     {
+       operands[0] = force_reg (Pmode, operands[0]);
+       rtx label_ref = gen_rtx_LABEL_REF (VOIDmode, gen_label_rtx ());
+       if (TARGET_CPU_Z10)
+ 	{
+ 	  if (TARGET_64BIT)
+ 	    emit_jump_insn (gen_indirect_jump_via_inlinethunkdi_z10 (operands[0],
+ 								     label_ref));
+ 	  else
+ 	    emit_jump_insn (gen_indirect_jump_via_inlinethunksi_z10 (operands[0],
+ 								     label_ref));
+ 	}
+       else
+ 	{
+ 	  if (TARGET_64BIT)
+ 	    emit_jump_insn (gen_indirect_jump_via_inlinethunkdi (operands[0],
+ 								 label_ref,
+ 								 force_reg (Pmode, label_ref)));
+ 	  else
+ 	    emit_jump_insn (gen_indirect_jump_via_inlinethunksi (operands[0],
+ 								 label_ref,
+ 								 force_reg (Pmode, label_ref)));
+ 	}
+       DONE;
+     }
  })
  
  (define_insn "*indirect_jump"
    [(set (pc)
! 	(match_operand 0 "address_operand" "ZR"))]
!  "!TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK"
! {
!   if (get_attr_op_type (insn) == OP_TYPE_RR)
!     return "br\t%0";
!   else
!     return "b\t%a0";
! }
!  [(set (attr "op_type")
!        (if_then_else (match_operand 0 "register_operand" "")
! 		     (const_string "RR") (const_string "RX")))
!   (set (attr "mnemonic")
!        (if_then_else (match_operand 0 "register_operand" "")
! 		     (const_string "br") (const_string "b")))
    (set_attr "type"  "branch")
!   (set_attr "atype" "agen")])
! 
! (define_insn "indirect_jump_via_thunk<mode>_z10"
!   [(set (pc)
! 	(match_operand:P 0 "register_operand" "a"))]
!  "TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK
!   && TARGET_CPU_Z10"
! {
!   s390_indirect_branch_via_thunk (REGNO (operands[0]),
! 				  INVALID_REGNUM,
! 				  NULL_RTX,
! 				  s390_indirect_branch_type_jump);
!   return "";
! }
!  [(set_attr "op_type"  "RIL")
!   (set_attr "mnemonic" "jg")
!   (set_attr "type"  "branch")
!   (set_attr "atype" "agen")])
! 
! (define_insn "indirect_jump_via_thunk<mode>"
!   [(set (pc)
! 	(match_operand:P 0 "register_operand" " a"))
!    (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))]
!  "TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK
!   && !TARGET_CPU_Z10"
! {
!   s390_indirect_branch_via_thunk (REGNO (operands[0]),
! 				  INVALID_REGNUM,
! 				  NULL_RTX,
! 				  s390_indirect_branch_type_jump);
!   return "";
! }
!  [(set_attr "op_type"  "RIL")
!   (set_attr "mnemonic" "jg")
!   (set_attr "type"  "branch")
!   (set_attr "atype" "agen")])
! 
! 
! ; The label_ref is wrapped into an if_then_else in order to hide it
! ; from mark_jump_label.  Without this the label_ref would become the
! ; ONLY jump target of that jump breaking the control flow graph.
! (define_insn "indirect_jump_via_inlinethunk<mode>_z10"
!   [(unspec [(if_then_else (match_operand:P 1 "larl_operand" "X")
! 			  (const_int 0)
! 			  (const_int 0))
! 	    (const_int 0)] UNSPEC_EXECUTE_JUMP)
!    (set (pc) (match_operand:P 0 "register_operand" "a"))]
!   "TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK
!    && TARGET_CPU_Z10"
! {
!   s390_indirect_branch_via_inline_thunk (operands[1]);
!   return "";
! }
!   [(set_attr "op_type" "RIL")
!    (set_attr "type"    "branch")
!    (set_attr "length"  "10")])
! 
! (define_insn "indirect_jump_via_inlinethunk<mode>"
!   [(unspec [(if_then_else (match_operand:P 1 "larl_operand" "X")
! 			  (const_int 0)
! 			  (const_int 0))
! 	    (match_operand:P 2 "register_operand" "a")] UNSPEC_EXECUTE_JUMP)
!    (set (pc) (match_operand:P 0 "register_operand" "a"))]
!   "TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK
!    && !TARGET_CPU_Z10"
! {
!   s390_indirect_branch_via_inline_thunk (operands[2]);
!   return "";
! }
!   [(set_attr "op_type" "RX")
!    (set_attr "type"    "branch")
!    (set_attr "length"  "8")])
  
  ; FIXME: LRA does not appear to be able to deal with MEMs being
  ; checked against address constraints like ZR above.  So make this a
***************
*** 9680,9686 ****
  (define_insn "*indirect2_jump"
    [(set (pc)
  	(match_operand 0 "nonimmediate_operand" "a,T"))]
!  ""
   "@
    br\t%0
    bi\t%0"
--- 9853,9859 ----
  (define_insn "*indirect2_jump"
    [(set (pc)
  	(match_operand 0 "nonimmediate_operand" "a,T"))]
!  "!TARGET_INDIRECT_BRANCH_NOBP_JUMP"
   "@
    br\t%0
    bi\t%0"
***************
*** 9693,9703 ****
  ; casesi instruction pattern(s).
  ;
  
! (define_insn "casesi_jump"
!  [(set (pc) (match_operand 0 "address_operand" "ZR"))
!    (use (label_ref (match_operand 1 "" "")))]
    ""
  {
    if (get_attr_op_type (insn) == OP_TYPE_RR)
      return "br\t%0";
    else
--- 9866,9939 ----
  ; casesi instruction pattern(s).
  ;
  
! (define_expand "casesi_jump"
!   [(parallel
!     [(set (pc) (match_operand 0 "address_operand"))
!      (use (label_ref (match_operand 1 "")))])]
    ""
  {
+   if (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
+     {
+       operands[0] = force_reg (GET_MODE (operands[0]), operands[0]);
+ 
+       if (TARGET_CPU_Z10)
+ 	{
+ 	  if (TARGET_64BIT)
+ 	    emit_jump_insn (gen_casesi_jump_via_thunkdi_z10 (operands[0],
+ 							     operands[1]));
+ 	  else
+ 	    emit_jump_insn (gen_casesi_jump_via_thunksi_z10 (operands[0],
+ 							     operands[1]));
+ 	}
+       else
+ 	{
+ 	  if (TARGET_64BIT)
+ 	    emit_jump_insn (gen_casesi_jump_via_thunkdi (operands[0],
+ 							 operands[1]));
+ 	  else
+ 	    emit_jump_insn (gen_casesi_jump_via_thunksi (operands[0],
+ 							 operands[1]));
+ 	}
+       DONE;
+     }
+ 
+     if (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
+     {
+       operands[0] = force_reg (Pmode, operands[0]);
+       rtx label_ref = gen_rtx_LABEL_REF (VOIDmode, gen_label_rtx ());
+       if (TARGET_CPU_Z10)
+ 	{
+ 	  if (TARGET_64BIT)
+ 	    emit_jump_insn (gen_casesi_jump_via_inlinethunkdi_z10 (operands[0],
+ 								   operands[1],
+ 								   label_ref));
+ 	  else
+ 	    emit_jump_insn (gen_casesi_jump_via_inlinethunksi_z10 (operands[0],
+ 								   operands[1],
+ 								   label_ref));
+ 	}
+       else
+ 	{
+ 	  if (TARGET_64BIT)
+ 	    emit_jump_insn (gen_casesi_jump_via_inlinethunkdi (operands[0],
+ 							       operands[1],
+ 							       label_ref,
+ 							       force_reg (Pmode, label_ref)));
+ 	  else
+ 	    emit_jump_insn (gen_casesi_jump_via_inlinethunksi (operands[0],
+ 							       operands[1],
+ 							       label_ref,
+ 							       force_reg (Pmode, label_ref)));
+ 	}
+       DONE;
+     }
+ })
+ 
+ (define_insn "*casesi_jump"
+  [(set (pc) (match_operand 0 "address_operand" "ZR"))
+   (use (label_ref (match_operand 1 "" "")))]
+  "!TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK"
+ {
    if (get_attr_op_type (insn) == OP_TYPE_RR)
      return "br\t%0";
    else
***************
*** 9706,9714 ****
--- 9942,10026 ----
    [(set (attr "op_type")
          (if_then_else (match_operand 0 "register_operand" "")
                        (const_string "RR") (const_string "RX")))
+    (set (attr "mnemonic")
+         (if_then_else (match_operand 0 "register_operand" "")
+                       (const_string "br") (const_string "b")))
+    (set_attr "type"  "branch")
+    (set_attr "atype" "agen")])
+ 
+ (define_insn "casesi_jump_via_thunk<mode>_z10"
+  [(set (pc) (match_operand:P 0 "register_operand" "a"))
+   (use (label_ref (match_operand 1 "" "")))]
+  "TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK
+   && TARGET_CPU_Z10"
+ {
+   s390_indirect_branch_via_thunk (REGNO (operands[0]),
+ 				  INVALID_REGNUM,
+ 				  NULL_RTX,
+ 				  s390_indirect_branch_type_jump);
+   return "";
+ }
+   [(set_attr "op_type" "RIL")
+    (set_attr "mnemonic" "jg")
     (set_attr "type"  "branch")
     (set_attr "atype" "agen")])
  
+ (define_insn "casesi_jump_via_thunk<mode>"
+  [(set (pc) (match_operand:P 0 "register_operand" "a"))
+   (use (label_ref (match_operand 1 "" "")))
+   (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))]
+  "TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK
+   && !TARGET_CPU_Z10"
+ {
+   s390_indirect_branch_via_thunk (REGNO (operands[0]),
+ 				  INVALID_REGNUM,
+ 				  NULL_RTX,
+ 				  s390_indirect_branch_type_jump);
+   return "";
+ }
+   [(set_attr "op_type" "RIL")
+    (set_attr "mnemonic" "jg")
+    (set_attr "type"  "branch")
+    (set_attr "atype" "agen")])
+ 
+ 
+ ; The label_ref is wrapped into an if_then_else in order to hide it
+ ; from mark_jump_label.  Without this the label_ref would become the
+ ; ONLY jump target of that jump breaking the control flow graph.
+ (define_insn "casesi_jump_via_inlinethunk<mode>_z10"
+   [(unspec [(if_then_else (match_operand:P 2 "larl_operand" "X")
+ 			  (const_int 0)
+ 			  (const_int 0))
+ 	    (const_int 0)] UNSPEC_EXECUTE_JUMP)
+    (set (pc) (match_operand:P 0 "register_operand" "a"))
+    (use (label_ref (match_operand 1 "" "")))]
+   "TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK
+    && TARGET_CPU_Z10"
+ {
+   s390_indirect_branch_via_inline_thunk (operands[2]);
+   return "";
+ }
+   [(set_attr "op_type" "RIL")
+    (set_attr "type"    "cs")
+    (set_attr "length"  "10")])
+ 
+ (define_insn "casesi_jump_via_inlinethunk<mode>"
+   [(unspec [(if_then_else (match_operand:P 2 "larl_operand" "X")
+ 			  (const_int 0)
+ 			  (const_int 0))
+ 	    (match_operand:P 3 "register_operand" "a")] UNSPEC_EXECUTE_JUMP)
+    (set (pc) (match_operand:P 0 "register_operand" "a"))
+    (use (label_ref (match_operand 1 "" "")))]
+   "TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK
+    && !TARGET_CPU_Z10"
+ {
+   s390_indirect_branch_via_inline_thunk (operands[3]);
+   return "";
+ }
+   [(set_attr "op_type" "RX")
+    (set_attr "type"    "cs")
+    (set_attr "length"  "8")])
+ 
  (define_expand "casesi"
    [(match_operand:SI 0 "general_operand" "")
     (match_operand:SI 1 "general_operand" "")
***************
*** 9813,9820 ****
           (match_operand 0 "const_int_operand" "n"))]
    "SIBLING_CALL_P (insn)
     && GET_MODE (XEXP (XEXP (PATTERN (insn), 0), 0)) == Pmode"
!   "br\t%%r1"
!   [(set_attr "op_type" "RR")
     (set_attr "type"  "branch")
     (set_attr "atype" "agen")])
  
--- 10125,10151 ----
           (match_operand 0 "const_int_operand" "n"))]
    "SIBLING_CALL_P (insn)
     && GET_MODE (XEXP (XEXP (PATTERN (insn), 0), 0)) == Pmode"
! {
!   if (TARGET_INDIRECT_BRANCH_NOBP_CALL)
!     {
!       gcc_assert (TARGET_CPU_Z10);
!       s390_indirect_branch_via_thunk (SIBCALL_REGNUM,
! 				      INVALID_REGNUM,
! 				      NULL_RTX,
! 				      s390_indirect_branch_type_call);
!       return "";
!     }
!   else
!     return "br\t%%r1";
! }
!  [(set (attr "op_type")
!        (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_CALL")
! 		     (const_string "RIL")
! 		     (const_string "RR")))
!   (set (attr "mnemonic")
!        (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_CALL")
! 		     (const_string "jg")
! 		     (const_string "br")))
     (set_attr "type"  "branch")
     (set_attr "atype" "agen")])
  
***************
*** 9854,9861 ****
  	      (match_operand 1 "const_int_operand" "n")))]
    "SIBLING_CALL_P (insn)
     && GET_MODE (XEXP (XEXP (XEXP (PATTERN (insn), 1), 0), 0)) == Pmode"
!   "br\t%%r1"
!   [(set_attr "op_type" "RR")
     (set_attr "type"  "branch")
     (set_attr "atype" "agen")])
  
--- 10185,10211 ----
  	      (match_operand 1 "const_int_operand" "n")))]
    "SIBLING_CALL_P (insn)
     && GET_MODE (XEXP (XEXP (XEXP (PATTERN (insn), 1), 0), 0)) == Pmode"
! {
!   if (TARGET_INDIRECT_BRANCH_NOBP_CALL)
!     {
!       gcc_assert (TARGET_CPU_Z10);
!       s390_indirect_branch_via_thunk (SIBCALL_REGNUM,
! 				      INVALID_REGNUM,
! 				      NULL_RTX,
! 				      s390_indirect_branch_type_call);
!       return "";
!     }
!   else
!     return "br\t%%r1";
! }
!   [(set (attr "op_type")
!        (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_CALL")
! 		     (const_string "RIL")
! 		     (const_string "RR")))
!    (set (attr "mnemonic")
!        (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_CALL")
! 		     (const_string "jg")
! 		     (const_string "br")))
     (set_attr "type"  "branch")
     (set_attr "atype" "agen")])
  
***************
*** 9921,9927 ****
    [(call (mem:QI (match_operand 0 "address_operand" "ZR"))
           (match_operand 1 "const_int_operand" "n"))
     (clobber (match_operand 2 "register_operand" "=r"))]
!   "!SIBLING_CALL_P (insn) && GET_MODE (operands[2]) == Pmode"
  {
    if (get_attr_op_type (insn) == OP_TYPE_RR)
      return "basr\t%2,%0";
--- 10271,10279 ----
    [(call (mem:QI (match_operand 0 "address_operand" "ZR"))
           (match_operand 1 "const_int_operand" "n"))
     (clobber (match_operand 2 "register_operand" "=r"))]
!   "!TARGET_INDIRECT_BRANCH_NOBP_CALL
!    && !SIBLING_CALL_P (insn)
!    && GET_MODE (operands[2]) == Pmode"
  {
    if (get_attr_op_type (insn) == OP_TYPE_RR)
      return "basr\t%2,%0";
***************
*** 9931,9936 ****
--- 10283,10332 ----
    [(set (attr "op_type")
          (if_then_else (match_operand 0 "register_operand" "")
                        (const_string "RR") (const_string "RX")))
+    (set (attr "mnemonic")
+         (if_then_else (match_operand 0 "register_operand" "")
+                       (const_string "basr") (const_string "bas")))
+    (set_attr "type"  "jsr")
+    (set_attr "atype" "agen")
+    (set_attr "z196prop" "z196_cracked")])
+ 
+ (define_insn "*basr_via_thunk<mode>_z10"
+   [(call (mem:QI (match_operand:P 0 "register_operand" "a"))
+          (match_operand 1 "const_int_operand"          "n"))
+    (clobber (match_operand:P 2 "register_operand"    "=&r"))]
+   "TARGET_INDIRECT_BRANCH_NOBP_CALL
+    && TARGET_CPU_Z10
+    && !SIBLING_CALL_P (insn)"
+ {
+   s390_indirect_branch_via_thunk (REGNO (operands[0]),
+ 				  REGNO (operands[2]),
+ 				  NULL_RTX,
+ 				  s390_indirect_branch_type_call);
+   return "";
+ }
+   [(set_attr "op_type" "RIL")
+    (set_attr "mnemonic" "brasl")
+    (set_attr "type"  "jsr")
+    (set_attr "atype" "agen")
+    (set_attr "z196prop" "z196_cracked")])
+ 
+ (define_insn "*basr_via_thunk<mode>"
+   [(call (mem:QI (match_operand:P 0 "register_operand" "a"))
+          (match_operand 1 "const_int_operand"          "n"))
+    (clobber (match_operand:P 2 "register_operand"    "=&r"))
+    (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))]
+   "TARGET_INDIRECT_BRANCH_NOBP_CALL
+    && !TARGET_CPU_Z10
+    && !SIBLING_CALL_P (insn)"
+ {
+   s390_indirect_branch_via_thunk (REGNO (operands[0]),
+ 				  REGNO (operands[2]),
+ 				  NULL_RTX,
+ 				  s390_indirect_branch_type_call);
+   return "";
+ }
+   [(set_attr "op_type" "RIL")
+    (set_attr "mnemonic" "brasl")
     (set_attr "type"  "jsr")
     (set_attr "atype" "agen")
     (set_attr "z196prop" "z196_cracked")])
***************
*** 9982,9988 ****
          (call (mem:QI (match_operand 1 "address_operand" "ZR"))
                (match_operand 2 "const_int_operand" "n")))
     (clobber (match_operand 3 "register_operand" "=r"))]
!   "!SIBLING_CALL_P (insn) && GET_MODE (operands[3]) == Pmode"
  {
    if (get_attr_op_type (insn) == OP_TYPE_RR)
      return "basr\t%3,%1";
--- 10378,10386 ----
          (call (mem:QI (match_operand 1 "address_operand" "ZR"))
                (match_operand 2 "const_int_operand" "n")))
     (clobber (match_operand 3 "register_operand" "=r"))]
!   "!TARGET_INDIRECT_BRANCH_NOBP_CALL
!    && !SIBLING_CALL_P (insn)
!    && GET_MODE (operands[3]) == Pmode"
  {
    if (get_attr_op_type (insn) == OP_TYPE_RR)
      return "basr\t%3,%1";
***************
*** 9992,9997 ****
--- 10390,10443 ----
    [(set (attr "op_type")
          (if_then_else (match_operand 1 "register_operand" "")
                        (const_string "RR") (const_string "RX")))
+    (set (attr "mnemonic")
+         (if_then_else (match_operand 1 "register_operand" "")
+                       (const_string "basr") (const_string "bas")))
+    (set_attr "type"  "jsr")
+    (set_attr "atype" "agen")
+    (set_attr "z196prop" "z196_cracked")])
+ 
+ (define_insn "*basr_r_via_thunk_z10"
+   [(set (match_operand 0 "" "")
+         (call (mem:QI (match_operand 1 "register_operand" "a"))
+               (match_operand 2 "const_int_operand"        "n")))
+    (clobber (match_operand 3 "register_operand"         "=&r"))]
+   "TARGET_INDIRECT_BRANCH_NOBP_CALL
+    && TARGET_CPU_Z10
+    && !SIBLING_CALL_P (insn)
+    && GET_MODE (operands[3]) == Pmode"
+ {
+   s390_indirect_branch_via_thunk (REGNO (operands[1]),
+ 				  REGNO (operands[3]),
+ 				  NULL_RTX,
+ 				  s390_indirect_branch_type_call);
+   return "";
+ }
+   [(set_attr "op_type" "RIL")
+    (set_attr "mnemonic" "brasl")
+    (set_attr "type"  "jsr")
+    (set_attr "atype" "agen")
+    (set_attr "z196prop" "z196_cracked")])
+ 
+ (define_insn "*basr_r_via_thunk"
+   [(set (match_operand 0 "" "")
+         (call (mem:QI (match_operand 1 "register_operand" "a"))
+               (match_operand 2 "const_int_operand"        "n")))
+    (clobber (match_operand 3 "register_operand"         "=&r"))
+    (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))]
+   "TARGET_INDIRECT_BRANCH_NOBP_CALL
+    && !TARGET_CPU_Z10
+    && !SIBLING_CALL_P (insn)
+    && GET_MODE (operands[3]) == Pmode"
+ {
+   s390_indirect_branch_via_thunk (REGNO (operands[1]),
+ 				  REGNO (operands[3]),
+ 				  NULL_RTX,
+ 				  s390_indirect_branch_type_call);
+   return "";
+ }
+   [(set_attr "op_type" "RIL")
+    (set_attr "mnemonic"  "brasl")
     (set_attr "type"  "jsr")
     (set_attr "atype" "agen")
     (set_attr "z196prop" "z196_cracked")])
***************
*** 10737,10753 ****
  (define_insn "<code>"
    [(ANY_RETURN)]
    "s390_can_use_<code>_insn ()"
!   "br\t%%r14"
!   [(set_attr "op_type" "RR")
     (set_attr "type"    "jsr")
     (set_attr "atype"   "agen")])
  
! (define_insn "*return"
    [(return)
!    (use (match_operand 0 "register_operand" "a"))]
!   "GET_MODE (operands[0]) == Pmode"
!   "br\t%0"
!   [(set_attr "op_type" "RR")
     (set_attr "type"    "jsr")
     (set_attr "atype"   "agen")])
  
--- 11183,11283 ----
  (define_insn "<code>"
    [(ANY_RETURN)]
    "s390_can_use_<code>_insn ()"
! {
!   if (TARGET_INDIRECT_BRANCH_NOBP_RET)
!     {
!       /* The target is always r14 so there is no clobber
! 	 of r1 needed for pre z10 targets.  */
!       s390_indirect_branch_via_thunk (RETURN_REGNUM,
! 				      INVALID_REGNUM,
! 				      NULL_RTX,
! 				      s390_indirect_branch_type_return);
!       return "";
!     }
!   else
!     return "br\t%%r14";
! }
!   [(set (attr "op_type")
! 	(if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET")
! 		      (const_string "RIL")
! 		      (const_string "RR")))
!    (set (attr "mnemonic")
! 	(if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET")
! 		      (const_string "jg")
! 		      (const_string "br")))
     (set_attr "type"    "jsr")
     (set_attr "atype"   "agen")])
  
! 
! (define_expand "return_use"
!   [(parallel
!     [(return)
!      (use (match_operand 0 "register_operand" "a"))])]
!   ""
! {
!   if (!TARGET_CPU_Z10
!       && TARGET_INDIRECT_BRANCH_NOBP_RET_OPTION)
!     {
!       if (TARGET_64BIT)
!         emit_jump_insn (gen_returndi_prez10 (operands[0]));
!       else
!         emit_jump_insn (gen_returnsi_prez10 (operands[0]));
!       DONE;
!     }
! })
! 
! (define_insn "*return<mode>"
    [(return)
!    (use (match_operand:P 0 "register_operand" "a"))]
!   "TARGET_CPU_Z10 || !TARGET_INDIRECT_BRANCH_NOBP_RET_OPTION"
! {
!   if (TARGET_INDIRECT_BRANCH_NOBP_RET)
!     {
!       s390_indirect_branch_via_thunk (REGNO (operands[0]),
!                                       INVALID_REGNUM,
!                                       NULL_RTX,
!                                       s390_indirect_branch_type_return);
!       return "";
!     }
!   else
!     return "br\t%0";
! }
!   [(set (attr "op_type")
!        (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET")
!                      (const_string "RIL")
!                      (const_string "RR")))
!    (set (attr "mnemonic")
!        (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET")
!                      (const_string "jg")
!                      (const_string "br")))
!    (set_attr "type"    "jsr")
!    (set_attr "atype"   "agen")])
! 
! (define_insn "return<mode>_prez10"
!   [(return)
!    (use (match_operand:P 0 "register_operand" "a"))
!    (clobber (reg:P INDIRECT_BRANCH_THUNK_REGNUM))]
!   "!TARGET_CPU_Z10 && TARGET_INDIRECT_BRANCH_NOBP_RET_OPTION"
! {
!   if (TARGET_INDIRECT_BRANCH_NOBP_RET)
!     {
!       s390_indirect_branch_via_thunk (REGNO (operands[0]),
!                                       INVALID_REGNUM,
!                                       NULL_RTX,
!                                       s390_indirect_branch_type_return);
!       return "";
!     }
!   else
!     return "br\t%0";
! }
!   [(set (attr "op_type")
!        (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET")
!                      (const_string "RIL")
!                      (const_string "RR")))
!    (set (attr "mnemonic")
!        (if_then_else (match_test "TARGET_INDIRECT_BRANCH_NOBP_RET")
!                      (const_string "jg")
!                      (const_string "br")))
     (set_attr "type"    "jsr")
     (set_attr "atype"   "agen")])
  
diff -Nrcpad gcc-7.3.0/gcc/config/s390/s390.opt gcc-7.4.0/gcc/config/s390/s390.opt
*** gcc-7.3.0/gcc/config/s390/s390.opt	Mon Jul 31 11:33:18 2017
--- gcc-7.4.0/gcc/config/s390/s390.opt	Thu Feb  8 17:00:48 2018
*************** values are small, non-negative integers.
*** 229,231 ****
--- 229,290 ----
  mlra
  Target Report Var(s390_lra_flag) Init(1) Save
  Use LRA instead of reload.
+ 
+ mindirect-branch=
+ Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch) Init(indirect_branch_keep)
+ Wrap all indirect branches into execute in order to disable branch
+ prediction.
+ 
+ mindirect-branch-jump=
+ Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch_jump) Init(indirect_branch_keep)
+ Wrap indirect table jumps and computed gotos into execute in order to
+ disable branch prediction.  Using thunk or thunk-extern with this
+ option requires the thunks to be considered signal handlers to order to
+ generate correct CFI.  For environments where unwinding (e.g. for
+ exceptions) is required please use thunk-inline instead.
+ 
+ mindirect-branch-call=
+ Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch_call) Init(indirect_branch_keep)
+ Wrap all indirect calls into execute in order to disable branch prediction.
+ 
+ mfunction-return=
+ Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return) Init(indirect_branch_keep)
+ Wrap all indirect return branches into execute in order to disable branch
+ prediction.
+ 
+ mfunction-return-mem=
+ Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return_mem) Init(indirect_branch_keep)
+ Wrap indirect return branches into execute in order to disable branch
+ prediction. This affects only branches where the return address is
+ going to be restored from memory.
+ 
+ mfunction-return-reg=
+ Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return_reg) Init(indirect_branch_keep)
+ Wrap indirect return branches into execute in order to disable branch
+ prediction. This affects only branches where the return address
+ doesn't need to be restored from memory.
+ 
+ Enum
+ Name(indirect_branch) Type(enum indirect_branch)
+ Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):
+ 
+ EnumValue
+ Enum(indirect_branch) String(keep) Value(indirect_branch_keep)
+ 
+ EnumValue
+ Enum(indirect_branch) String(thunk) Value(indirect_branch_thunk)
+ 
+ EnumValue
+ Enum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline)
+ 
+ EnumValue
+ Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern)
+ 
+ mindirect-branch-table
+ Target Report Var(s390_indirect_branch_table) Init(TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
+ Generate sections .s390_indirect_jump, .s390_indirect_call,
+ .s390_return_reg, and .s390_return_mem to contain the indirect branch
+ locations which have been patched as part of using one of the
+ -mindirect-branch* or -mfunction-return* options.  The sections
+ consist of an array of 32 bit elements. Each entry holds the offset
+ from the entry to the patched location.
diff -Nrcpad gcc-7.3.0/gcc/config/sparc/sparc.c gcc-7.4.0/gcc/config/sparc/sparc.c
*** gcc-7.3.0/gcc/config/sparc/sparc.c	Tue Dec 19 08:07:22 2017
--- gcc-7.4.0/gcc/config/sparc/sparc.c	Fri Apr  6 22:32:39 2018
*************** sparc_expand_move (machine_mode mode, rt
*** 2188,2194 ****
  	}
      }
  
!   /* Fixup TLS cases.  */
    if (TARGET_HAVE_TLS
        && CONSTANT_P (operands[1])
        && sparc_tls_referenced_p (operands [1]))
--- 2188,2194 ----
  	}
      }
  
!   /* Fix up TLS cases.  */
    if (TARGET_HAVE_TLS
        && CONSTANT_P (operands[1])
        && sparc_tls_referenced_p (operands [1]))
*************** sparc_expand_move (machine_mode mode, rt
*** 2197,2211 ****
        return false;
      }
  
!   /* Fixup PIC cases.  */
    if (flag_pic && CONSTANT_P (operands[1]))
      {
        if (pic_address_needs_scratch (operands[1]))
  	operands[1] = sparc_legitimize_pic_address (operands[1], NULL_RTX);
  
        /* We cannot use the mov{si,di}_pic_label_ref patterns in all cases.  */
!       if (GET_CODE (operands[1]) == LABEL_REF
! 	  && can_use_mov_pic_label_ref (operands[1]))
  	{
  	  if (mode == SImode)
  	    {
--- 2197,2216 ----
        return false;
      }
  
!   /* Fix up PIC cases.  */
    if (flag_pic && CONSTANT_P (operands[1]))
      {
        if (pic_address_needs_scratch (operands[1]))
  	operands[1] = sparc_legitimize_pic_address (operands[1], NULL_RTX);
  
        /* We cannot use the mov{si,di}_pic_label_ref patterns in all cases.  */
!       if ((GET_CODE (operands[1]) == LABEL_REF
! 	   && can_use_mov_pic_label_ref (operands[1]))
! 	  || (GET_CODE (operands[1]) == CONST
! 	      && GET_CODE (XEXP (operands[1], 0)) == PLUS
! 	      && GET_CODE (XEXP (XEXP (operands[1], 0), 0)) == LABEL_REF
! 	      && GET_CODE (XEXP (XEXP (operands[1], 0), 1)) == CONST_INT
! 	      && can_use_mov_pic_label_ref (XEXP (XEXP (operands[1], 0), 0))))
  	{
  	  if (mode == SImode)
  	    {
*************** sparc_expand_move (machine_mode mode, rt
*** 2215,2221 ****
  
  	  if (mode == DImode)
  	    {
- 	      gcc_assert (TARGET_ARCH64);
  	      emit_insn (gen_movdi_pic_label_ref (operands[0], operands[1]));
  	      return true;
  	    }
--- 2220,2225 ----
*************** int
*** 4216,4225 ****
  pic_address_needs_scratch (rtx x)
  {
    /* An address which is a symbolic plus a non SMALL_INT needs a temp reg.  */
!   if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS
        && GET_CODE (XEXP (XEXP (x, 0), 0)) == SYMBOL_REF
        && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT
!       && ! SMALL_INT (XEXP (XEXP (x, 0), 1)))
      return 1;
  
    return 0;
--- 4220,4230 ----
  pic_address_needs_scratch (rtx x)
  {
    /* An address which is a symbolic plus a non SMALL_INT needs a temp reg.  */
!   if (GET_CODE (x) == CONST
!       && GET_CODE (XEXP (x, 0)) == PLUS
        && GET_CODE (XEXP (XEXP (x, 0), 0)) == SYMBOL_REF
        && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT
!       && !SMALL_INT (XEXP (XEXP (x, 0), 1)))
      return 1;
  
    return 0;
*************** sparc_legitimize_tls_address (rtx addr)
*** 4667,4682 ****
  static rtx
  sparc_legitimize_pic_address (rtx orig, rtx reg)
  {
-   bool gotdata_op = false;
- 
    if (GET_CODE (orig) == SYMBOL_REF
        /* See the comment in sparc_expand_move.  */
        || (GET_CODE (orig) == LABEL_REF && !can_use_mov_pic_label_ref (orig)))
      {
        rtx pic_ref, address;
        rtx_insn *insn;
  
!       if (reg == 0)
  	{
  	  gcc_assert (can_create_pseudo_p ());
  	  reg = gen_reg_rtx (Pmode);
--- 4672,4686 ----
  static rtx
  sparc_legitimize_pic_address (rtx orig, rtx reg)
  {
    if (GET_CODE (orig) == SYMBOL_REF
        /* See the comment in sparc_expand_move.  */
        || (GET_CODE (orig) == LABEL_REF && !can_use_mov_pic_label_ref (orig)))
      {
+       bool gotdata_op = false;
        rtx pic_ref, address;
        rtx_insn *insn;
  
!       if (!reg)
  	{
  	  gcc_assert (can_create_pseudo_p ());
  	  reg = gen_reg_rtx (Pmode);
*************** sparc_legitimize_pic_address (rtx orig,
*** 4687,4694 ****
  	  /* If not during reload, allocate another temp reg here for loading
  	     in the address, so that these instructions can be optimized
  	     properly.  */
! 	  rtx temp_reg = (! can_create_pseudo_p ()
! 			  ? reg : gen_reg_rtx (Pmode));
  
  	  /* Must put the SYMBOL_REF inside an UNSPEC here so that cse
  	     won't get confused into thinking that these two instructions
--- 4691,4697 ----
  	  /* If not during reload, allocate another temp reg here for loading
  	     in the address, so that these instructions can be optimized
  	     properly.  */
! 	  rtx temp_reg = can_create_pseudo_p () ? gen_reg_rtx (Pmode) : reg;
  
  	  /* Must put the SYMBOL_REF inside an UNSPEC here so that cse
  	     won't get confused into thinking that these two instructions
*************** sparc_legitimize_pic_address (rtx orig,
*** 4704,4709 ****
--- 4707,4713 ----
  	      emit_insn (gen_movsi_high_pic (temp_reg, orig));
  	      emit_insn (gen_movsi_lo_sum_pic (temp_reg, temp_reg, orig));
  	    }
+ 
  	  address = temp_reg;
  	  gotdata_op = true;
  	}
*************** sparc_legitimize_pic_address (rtx orig,
*** 4744,4750 ****
  	  && XEXP (XEXP (orig, 0), 0) == pic_offset_table_rtx)
  	return orig;
  
!       if (reg == 0)
  	{
  	  gcc_assert (can_create_pseudo_p ());
  	  reg = gen_reg_rtx (Pmode);
--- 4748,4754 ----
  	  && XEXP (XEXP (orig, 0), 0) == pic_offset_table_rtx)
  	return orig;
  
!       if (!reg)
  	{
  	  gcc_assert (can_create_pseudo_p ());
  	  reg = gen_reg_rtx (Pmode);
*************** sparc_delegitimize_address (rtx x)
*** 4853,4859 ****
        && XINT (XEXP (XEXP (x, 1), 1), 1) == UNSPEC_MOVE_PIC_LABEL)
      {
        x = XVECEXP (XEXP (XEXP (x, 1), 1), 0, 0);
!       gcc_assert (GET_CODE (x) == LABEL_REF);
      }
  
    return x;
--- 4857,4867 ----
        && XINT (XEXP (XEXP (x, 1), 1), 1) == UNSPEC_MOVE_PIC_LABEL)
      {
        x = XVECEXP (XEXP (XEXP (x, 1), 1), 0, 0);
!       gcc_assert (GET_CODE (x) == LABEL_REF
! 		  || (GET_CODE (x) == CONST
! 		      && GET_CODE (XEXP (x, 0)) == PLUS
! 		      && GET_CODE (XEXP (XEXP (x, 0), 0)) == LABEL_REF
! 		      && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT));
      }
  
    return x;
diff -Nrcpad gcc-7.3.0/gcc/config/sparc/sparc.md gcc-7.4.0/gcc/config/sparc/sparc.md
*** gcc-7.3.0/gcc/config/sparc/sparc.md	Wed Dec  6 08:38:32 2017
--- gcc-7.4.0/gcc/config/sparc/sparc.md	Fri Apr  6 22:32:39 2018
***************
*** 1758,1764 ****
  
  (define_expand "movsi_pic_label_ref"
    [(set (match_dup 3) (high:SI
!      (unspec:SI [(match_operand:SI 1 "label_ref_operand" "")
  		 (match_dup 2)] UNSPEC_MOVE_PIC_LABEL)))
     (set (match_dup 4) (lo_sum:SI (match_dup 3)
       (unspec:SI [(match_dup 1) (match_dup 2)] UNSPEC_MOVE_PIC_LABEL)))
--- 1758,1764 ----
  
  (define_expand "movsi_pic_label_ref"
    [(set (match_dup 3) (high:SI
!      (unspec:SI [(match_operand:SI 1 "symbolic_operand" "")
  		 (match_dup 2)] UNSPEC_MOVE_PIC_LABEL)))
     (set (match_dup 4) (lo_sum:SI (match_dup 3)
       (unspec:SI [(match_dup 1) (match_dup 2)] UNSPEC_MOVE_PIC_LABEL)))
***************
*** 1784,1790 ****
  (define_insn "*movsi_high_pic_label_ref"
    [(set (match_operand:SI 0 "register_operand" "=r")
        (high:SI
!         (unspec:SI [(match_operand:SI 1 "label_ref_operand" "")
  		    (match_operand:SI 2 "" "")] UNSPEC_MOVE_PIC_LABEL)))]
    "flag_pic"
    "sethi\t%%hi(%a2-(%a1-.)), %0")
--- 1784,1790 ----
  (define_insn "*movsi_high_pic_label_ref"
    [(set (match_operand:SI 0 "register_operand" "=r")
        (high:SI
!         (unspec:SI [(match_operand:SI 1 "symbolic_operand" "")
  		    (match_operand:SI 2 "" "")] UNSPEC_MOVE_PIC_LABEL)))]
    "flag_pic"
    "sethi\t%%hi(%a2-(%a1-.)), %0")
***************
*** 1792,1798 ****
  (define_insn "*movsi_lo_sum_pic_label_ref"
    [(set (match_operand:SI 0 "register_operand" "=r")
        (lo_sum:SI (match_operand:SI 1 "register_operand" "r")
!         (unspec:SI [(match_operand:SI 2 "label_ref_operand" "")
  		    (match_operand:SI 3 "" "")] UNSPEC_MOVE_PIC_LABEL)))]
    "flag_pic"
    "or\t%1, %%lo(%a3-(%a2-.)), %0")
--- 1792,1798 ----
  (define_insn "*movsi_lo_sum_pic_label_ref"
    [(set (match_operand:SI 0 "register_operand" "=r")
        (lo_sum:SI (match_operand:SI 1 "register_operand" "r")
!         (unspec:SI [(match_operand:SI 2 "symbolic_operand" "")
  		    (match_operand:SI 3 "" "")] UNSPEC_MOVE_PIC_LABEL)))]
    "flag_pic"
    "or\t%1, %%lo(%a3-(%a2-.)), %0")
*************** visl")
*** 1896,1902 ****
  
  (define_expand "movdi_pic_label_ref"
    [(set (match_dup 3) (high:DI
!      (unspec:DI [(match_operand:DI 1 "label_ref_operand" "")
                   (match_dup 2)] UNSPEC_MOVE_PIC_LABEL)))
     (set (match_dup 4) (lo_sum:DI (match_dup 3)
       (unspec:DI [(match_dup 1) (match_dup 2)] UNSPEC_MOVE_PIC_LABEL)))
--- 1896,1902 ----
  
  (define_expand "movdi_pic_label_ref"
    [(set (match_dup 3) (high:DI
!      (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")
                   (match_dup 2)] UNSPEC_MOVE_PIC_LABEL)))
     (set (match_dup 4) (lo_sum:DI (match_dup 3)
       (unspec:DI [(match_dup 1) (match_dup 2)] UNSPEC_MOVE_PIC_LABEL)))
*************** visl")
*** 1922,1928 ****
  (define_insn "*movdi_high_pic_label_ref"
    [(set (match_operand:DI 0 "register_operand" "=r")
          (high:DI
!           (unspec:DI [(match_operand:DI 1 "label_ref_operand" "")
                        (match_operand:DI 2 "" "")] UNSPEC_MOVE_PIC_LABEL)))]
    "TARGET_ARCH64 && flag_pic"
    "sethi\t%%hi(%a2-(%a1-.)), %0")
--- 1922,1928 ----
  (define_insn "*movdi_high_pic_label_ref"
    [(set (match_operand:DI 0 "register_operand" "=r")
          (high:DI
!           (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")
                        (match_operand:DI 2 "" "")] UNSPEC_MOVE_PIC_LABEL)))]
    "TARGET_ARCH64 && flag_pic"
    "sethi\t%%hi(%a2-(%a1-.)), %0")
*************** visl")
*** 1930,1936 ****
  (define_insn "*movdi_lo_sum_pic_label_ref"
    [(set (match_operand:DI 0 "register_operand" "=r")
        (lo_sum:DI (match_operand:DI 1 "register_operand" "r")
!         (unspec:DI [(match_operand:DI 2 "label_ref_operand" "")
                      (match_operand:DI 3 "" "")] UNSPEC_MOVE_PIC_LABEL)))]
    "TARGET_ARCH64 && flag_pic"
    "or\t%1, %%lo(%a3-(%a2-.)), %0")
--- 1930,1936 ----
  (define_insn "*movdi_lo_sum_pic_label_ref"
    [(set (match_operand:DI 0 "register_operand" "=r")
        (lo_sum:DI (match_operand:DI 1 "register_operand" "r")
!         (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")
                      (match_operand:DI 3 "" "")] UNSPEC_MOVE_PIC_LABEL)))]
    "TARGET_ARCH64 && flag_pic"
    "or\t%1, %%lo(%a3-(%a2-.)), %0")
diff -Nrcpad gcc-7.3.0/gcc/config/xtensa/uclinux.h gcc-7.4.0/gcc/config/xtensa/uclinux.h
*** gcc-7.3.0/gcc/config/xtensa/uclinux.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/xtensa/uclinux.h	Wed Nov  7 20:52:29 2018
*************** along with GCC; see the file COPYING3.
*** 59,66 ****
  #undef LOCAL_LABEL_PREFIX
  #define LOCAL_LABEL_PREFIX	"."
  
! /* Always enable "-fpic" for Xtensa Linux.  */
! #define XTENSA_ALWAYS_PIC 1
  
  #undef TARGET_LIBC_HAS_FUNCTION
  #define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
--- 59,66 ----
  #undef LOCAL_LABEL_PREFIX
  #define LOCAL_LABEL_PREFIX	"."
  
! /* Don't enable "-fpic" for Xtensa uclinux.  */
! #define XTENSA_ALWAYS_PIC 0
  
  #undef TARGET_LIBC_HAS_FUNCTION
  #define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
diff -Nrcpad gcc-7.3.0/gcc/config/xtensa/xtensa.c gcc-7.4.0/gcc/config/xtensa/xtensa.c
*** gcc-7.3.0/gcc/config/xtensa/xtensa.c	Tue Dec  5 14:31:41 2017
--- gcc-7.4.0/gcc/config/xtensa/xtensa.c	Tue Sep  4 17:59:04 2018
*************** xtensa_expand_atomic (enum rtx_code code
*** 1591,1599 ****
        break;
  
      case MULT: /* NAND */
!       tmp = expand_simple_binop (SImode, XOR, old, ac.modemask,
  				 NULL_RTX, 1, OPTAB_DIRECT);
!       tmp = expand_simple_binop (SImode, AND, tmp, val,
  				 new_rtx, 1, OPTAB_DIRECT);
        break;
  
--- 1591,1599 ----
        break;
  
      case MULT: /* NAND */
!       tmp = expand_simple_binop (SImode, AND, old, val,
  				 NULL_RTX, 1, OPTAB_DIRECT);
!       tmp = expand_simple_binop (SImode, XOR, tmp, ac.modemask,
  				 new_rtx, 1, OPTAB_DIRECT);
        break;
  
diff -Nrcpad gcc-7.3.0/gcc/config/xtensa/xtensa.md gcc-7.4.0/gcc/config/xtensa/xtensa.md
*** gcc-7.3.0/gcc/config/xtensa/xtensa.md	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/config/xtensa/xtensa.md	Tue Jun 19 21:01:22 2018
***************
*** 38,43 ****
--- 38,44 ----
    (UNSPEC_MEMW		11)
    (UNSPEC_LSETUP_START  12)
    (UNSPEC_LSETUP_END    13)
+   (UNSPEC_FRAME_BLOCKAGE 14)
  
    (UNSPECV_SET_FP	1)
    (UNSPECV_ENTRY	2)
***************
*** 1676,1681 ****
--- 1677,1708 ----
  
  ;; Miscellaneous instructions.
  
+ ;; In windowed ABI stack pointer adjustment must happen before any access
+ ;; to the space allocated on stack is allowed, otherwise register spill
+ ;; area may be clobbered.  That's what frame blockage is supposed to enforce.
+ 
+ (define_expand "allocate_stack"
+   [(set (match_operand 0 "nonimmed_operand")
+         (minus (reg A1_REG) (match_operand 1 "add_operand")))
+    (set (reg A1_REG)
+         (minus (reg A1_REG) (match_dup 1)))]
+   "TARGET_WINDOWED_ABI"
+ {
+   if (CONST_INT_P (operands[1]))
+     {
+       rtx neg_op0 = GEN_INT (-INTVAL (operands[1]));
+       emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, neg_op0));
+     }
+   else
+     {
+       emit_insn (gen_subsi3 (stack_pointer_rtx, stack_pointer_rtx,
+ 			     operands[1]));
+     }
+   emit_move_insn (operands[0], virtual_stack_dynamic_rtx);
+   emit_insn (gen_frame_blockage ());
+   DONE;
+ })
+ 
  (define_expand "prologue"
    [(const_int 0)]
    ""
***************
*** 1767,1772 ****
--- 1794,1818 ----
    [(set_attr "length" "0")
     (set_attr "type" "nop")])
  
+ ;; Do not schedule instructions accessing memory before this point.
+ 
+ (define_expand "frame_blockage"
+   [(set (match_dup 0)
+         (unspec:BLK [(match_dup 1)] UNSPEC_FRAME_BLOCKAGE))]
+   ""
+ {
+   operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
+   MEM_VOLATILE_P (operands[0]) = 1;
+   operands[1] = stack_pointer_rtx;
+ })
+ 
+ (define_insn "*frame_blockage"
+   [(set (match_operand:BLK 0 "" "")
+         (unspec:BLK [(match_operand:SI 1 "" "")] UNSPEC_FRAME_BLOCKAGE))]
+   ""
+   ""
+   [(set_attr "length" "0")])
+ 
  (define_insn "trap"
    [(trap_if (const_int 1) (const_int 0))]
    ""
diff -Nrcpad gcc-7.3.0/gcc/config.gcc gcc-7.4.0/gcc/config.gcc
*** gcc-7.3.0/gcc/config.gcc	Mon Jan  8 13:39:11 2018
--- gcc-7.4.0/gcc/config.gcc	Thu Jun 21 09:36:40 2018
*************** x86_64-*-elf*)
*** 1461,1467 ****
  	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
  	;;
  x86_64-*-rtems*)
! 	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rtemself.h"
  	;;
  i[34567]86-*-rdos*)
      tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
--- 1461,1467 ----
  	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
  	;;
  x86_64-*-rtems*)
! 	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rtemself.h rtems.h"
  	;;
  i[34567]86-*-rdos*)
      tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
*************** riscv*-*-linux*)
*** 2046,2055 ****
  	;;
  riscv*-*-elf* | riscv*-*-rtems*)
  	tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
! 	case "x${enable_multilib}" in
! 	xno) ;;
! 	xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
! 	*) echo "Unknown value for enable_multilib"; exit 1
  	esac
  	tmake_file="${tmake_file} riscv/t-riscv"
  	gnu_ld=yes
--- 2046,2062 ----
  	;;
  riscv*-*-elf* | riscv*-*-rtems*)
  	tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
! 	case ${target} in
! 	*-*-rtems*)
! 	  tm_file="${tm_file} rtems.h riscv/rtems.h"
! 	  tmake_file="${tmake_file} riscv/t-rtems"
! 	  ;;
! 	*)
! 	  case "x${enable_multilib}" in
! 	  xno) ;;
! 	  xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
! 	  *) echo "Unknown value for enable_multilib"; exit 1
! 	  esac
  	esac
  	tmake_file="${tmake_file} riscv/t-riscv"
  	gnu_ld=yes
*************** riscv*-*-elf* | riscv*-*-rtems*)
*** 2057,2067 ****
  	# Force .init_array support.  The configure script cannot always
  	# automatically detect that GAS supports it, yet we require it.
  	gcc_cv_initfini_array=yes
- 	case ${target} in
- 	riscv*-*-rtems*)
- 	  tm_file="${tm_file} rtems.h riscv/rtems.h"
- 	  ;;
- 	esac
  	;;
  mips*-*-netbsd*)			# NetBSD/mips, either endian.
  	target_cpu_default="MASK_ABICALLS"
--- 2064,2069 ----
diff -Nrcpad gcc-7.3.0/gcc/configure gcc-7.4.0/gcc/configure
*** gcc-7.3.0/gcc/configure	Tue Nov 21 09:31:12 2017
--- gcc-7.4.0/gcc/configure	Fri Jun 22 21:16:41 2018
*************** EOF
*** 11871,11877 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 11871,11877 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
*************** $as_echo "$gcc_cv_as_shf_merge" >&6; }
*** 23571,23576 ****
--- 23571,23584 ----
  
  
  fi
+ case "$target" in
+   i?86-*-solaris2.10* | x86_64-*-solaris2.10*)
+     # SHF_MERGE support in Solaris 10/x86 ld is broken.
+     if test x"$gnu_ld" = xno; then
+       gcc_cv_as_shf_merge=no
+     fi
+     ;;
+ esac
  
  cat >>confdefs.h <<_ACEOF
  #define HAVE_GAS_SHF_MERGE `if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`
*************** $as_echo "#define HAVE_AS_SPARC5_VIS4 1"
*** 25217,25222 ****
--- 25225,25231 ----
  
  fi
  
+ 
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for SPARC6 instructions" >&5
  $as_echo_n "checking assembler for SPARC6 instructions... " >&6; }
  if test "${gcc_cv_as_sparc_sparc6+set}" = set; then :
*************** $as_echo "#define HAVE_AS_SPARC6 1" >>co
*** 25253,25258 ****
--- 25262,25268 ----
  
  fi
  
+ 
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for LEON instructions" >&5
  $as_echo_n "checking assembler for LEON instructions... " >&6; }
  if test "${gcc_cv_as_sparc_leon+set}" = set; then :
*************** _ACEOF
*** 29777,29784 ****
  
  # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
  # of jit/jit-playback.c.
  cat > gcc-driver-name.h <<EOF
! #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_BASEVER}${exeext}"
  EOF
  
  # Check whether --enable-default-pie was given.
--- 29787,29796 ----
  
  # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
  # of jit/jit-playback.c.
+ gcc_driver_version=`eval "${get_gcc_base_ver} $srcdir/BASE-VER"`
+ echo "gcc_driver_version: ${gcc_driver_version}"
  cat > gcc-driver-name.h <<EOF
! #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_driver_version}${exeext}"
  EOF
  
  # Check whether --enable-default-pie was given.
diff -Nrcpad gcc-7.3.0/gcc/configure.ac gcc-7.4.0/gcc/configure.ac
*** gcc-7.3.0/gcc/configure.ac	Tue Nov 21 09:31:12 2017
--- gcc-7.4.0/gcc/configure.ac	Fri Jun 22 21:16:41 2018
*************** if test $gcc_cv_as_shf_merge = no; then
*** 2946,2951 ****
--- 2946,2959 ----
      [elf,2,12,0], [--fatal-warnings],
      [.section .rodata.str, "aMS", %progbits, 1])
  fi
+ case "$target" in
+   i?86-*-solaris2.10* | x86_64-*-solaris2.10*)
+     # SHF_MERGE support in Solaris 10/x86 ld is broken.
+     if test x"$gnu_ld" = xno; then
+       gcc_cv_as_shf_merge=no
+     fi
+     ;;
+ esac
  AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
    [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
  [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
*************** AC_DEFINE_UNQUOTED(DIAGNOSTICS_COLOR_DEF
*** 6292,6299 ****
  
  # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
  # of jit/jit-playback.c.
  cat > gcc-driver-name.h <<EOF
! #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_BASEVER}${exeext}"
  EOF
  
  # Check whether --enable-default-pie was given.
--- 6300,6309 ----
  
  # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
  # of jit/jit-playback.c.
+ gcc_driver_version=`eval "${get_gcc_base_ver} $srcdir/BASE-VER"`
+ echo "gcc_driver_version: ${gcc_driver_version}"
  cat > gcc-driver-name.h <<EOF
! #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_driver_version}${exeext}"
  EOF
  
  # Check whether --enable-default-pie was given.
diff -Nrcpad gcc-7.3.0/gcc/cp/ChangeLog gcc-7.4.0/gcc/cp/ChangeLog
*** gcc-7.3.0/gcc/cp/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/cp/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,605 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-11-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c++/84281
+ 	* constexpr.c (cxx_eval_vec_init_1): Use a RANGE_EXPR to compact
+ 	uniform constructors and delay allocating them fully.
+ 
+ 2018-11-26  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/87075 - ICE with constexpr array initialization.
+ 	* constexpr.c (cxx_eval_vec_init_1): Handle trivial initialization.
+ 
+ 2018-10-23  Tom de Vries  <tdevries@suse.de>
+ 
+ 	backport from trunk:
+ 	2018-07-31  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR debug/86687
+ 	* optimize.c (update_cloned_parm): Copy DECL_BY_REFERENCE.
+ 
+ 2018-10-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-07-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/3698
+ 	PR c++/86208
+ 	* cp-gimplify.c (cp_genericize_r): When using extern_decl_map, or
+ 	in TREE_USED flag from stmt to h->to.
+ 
+ 2018-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-08-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c++/86763
+ 	* class.c (layout_class_type): Copy TYPE_TYPELESS_STORAGE
+ 	to the CLASSTYPE_AS_BASE.
+ 
+ 2018-08-10  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/86728 - C variadic generic lambda.
+ 	* parser.c (cp_parser_parameter_declaration): Don't turn 'auto' into
+ 	a pack if it's followed by a declarator-id.
+ 
+ 2018-07-03  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/86378 - functional cast in noexcept-specifier.
+ 	* tree.c (strip_typedefs_expr) [TREE_LIST]: Fix iteration.
+ 
+ 2018-06-26  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/80290 - memory-hog with std::pair.
+ 	* pt.c (type_unification_real): Skip non-dependent conversion
+ 	check for a nested list argument.
+ 	(braced_init_depth): New.
+ 
+ 2018-06-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/86291
+ 	* parser.c (cp_parser_omp_for_loop_init): Change for_block argument
+ 	type from vec<tree, va_gc> * to vec<tree, va_gc> *&.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-05-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85952
+ 	* init.c (build_aggr_init): For structured binding initialized from
+ 	array call mark_rvalue_use on the initializer.
+ 
+ 	2018-05-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/85696
+ 	* cp-tree.h (cxx_omp_predetermined_sharing_1): New prototype.
+ 	* cp-gimplify.c (cxx_omp_predetermined_sharing): New wrapper around
+ 	cxx_omp_predetermined_sharing_1.  Rename old function to ...
+ 	(cxx_omp_predetermined_sharing_1): ... this.
+ 	* semantics.c (finish_omp_clauses): Use cxx_omp_predetermined_sharing_1
+ 	instead of cxx_omp_predetermined_sharing.
+ 
+ 	2018-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85662
+ 	* cp-gimplify.c (cp_fold): Use fold_offsetof rather than
+ 	fold_offsetof_1, pass TREE_TYPE (x) as TYPE to it and drop the
+ 	fold_convert.
+ 
+ 	2018-04-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84463
+ 	* typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like
+ 	tricks from here to ...
+ 	* cp-gimplify.c (cp_fold) <case ADDR_EXPR>: ... here.  Only use it
+ 	if INDIRECT_REF's operand is INTEGER_CST cast to pointer type.
+ 
+ 	2018-04-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85210
+ 	* pt.c (tsubst_decomp_names): Return error_mark_node and assert
+ 	errorcount is set if tsubst doesn't return a VAR_DECL.
+ 
+ 	2018-04-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85208
+ 	* decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
+ 	maybe_apply_pragma_weak here...
+ 	(cp_maybe_mangle_decomp): ... but call it here instead.
+ 
+ 	2018-04-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/85172
+ 	* constexpr.c (cxx_eval_builtin_function_call): For calls to
+ 	builtin_valid_in_constant_expr_p functions, don't call
+ 	cxx_eval_constant_expression if argument is not
+ 	potential_constant_expression.
+ 
+ 	2018-04-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85147
+ 	* pt.c (fixed_parameter_pack_p_1): Punt if parm is error_mark_node.
+ 
+ 	PR c++/85140
+ 	* name-lookup.c (handle_namespace_attrs): Return early if attributes
+ 	is error_mark_node.
+ 
+ 	2018-03-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84791
+ 	* semantics.c (finish_omp_reduction_clause): If
+ 	OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
+ 	even if processing_template_decl.
+ 
+ 	2018-03-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85076
+ 	* tree.c (cp_build_reference_type): If to_type is error_mark_node,
+ 	return it right away.
+ 
+ 	PR c++/85068
+ 	* class.c (update_vtable_entry_for_fn): Don't ICE if base_binfo
+ 	is NULL.  Assert if thunk_binfo is NULL then errorcount is non-zero.
+ 
+ 	2018-03-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84961
+ 	* cp-tree.h (genericize_compound_lvalue): Declare.
+ 	* typeck.c (genericize_compound_lvalue): New function.
+ 	(unary_complex_lvalue, cp_build_modify_expr): Use it.
+ 	* semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
+ 	and PREDECREMENT_EXPR in output and "m" constrained input operands with
+ 	COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
+ 	COMPOUND_EXPR operand.
+ 
+ 	2018-03-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84874
+ 	* decl.c (reshape_init_class): Don't assert d->cur->index == field
+ 	if d->cur->index is a FIELD_DECL, instead set field to d->cur->index.
+ 
+ 	2018-03-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84222
+ 	* cp-tree.h (cp_warn_deprecated_use): Declare.
+ 	* tree.c (cp_warn_deprecated_use): New function.
+ 	* typeck2.c (build_functional_cast): Use it.
+ 	* decl.c (grokparms): Likewise.
+ 	(grokdeclarator): Likewise.  Temporarily push nested class scope
+ 	around grokparms call for out of class member definitions.
+ 
+ 	2018-03-09  Jason Merrill  <jason@redhat.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84076
+ 	* call.c (convert_arg_to_ellipsis): Instead of cp_build_addr_expr
+ 	build ADDR_EXPR with REFERENCE_TYPE.
+ 	(build_over_call): For purposes of check_function_arguments, if
+ 	argarray[j] is ADDR_EXPR with REFERENCE_TYPE created above, use
+ 	its operand rather than the argument itself.
+ 
+ 	2018-03-08  Jason Merrill  <jason@redhat.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/80598
+ 	* call.c (build_over_call): In templates set TREE_USED (first_fn) when
+ 	not calling mark_used for the benefit of -Wunused-function warning.
+ 
+ 	2018-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84662
+ 	* pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Use
+ 	RETURN instead of return.
+ 	<case POINTER_PLUS_EXPR>: Likewise.
+ 	<case CONVERT_EXPR>: If op0 is error_mark_node, just return
+ 	it instead of wrapping it into CONVERT_EXPR.
+ 
+ 2018-06-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/85815 - reference to member of enclosing template.
+ 	* parser.c (cp_parser_postfix_dot_deref_expression): Check
+ 	currently_open_class.
+ 
+ 	PR c++/86060 - ICE on range for with -std=c++98.
+ 	* parser.c (cp_parser_init_statement): Don't clobber *decl after
+ 	pedwarn.
+ 
+ 2018-05-07  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/85646 - lambda visibility.
+ 	* decl2.c (determine_visibility): Don't mess with template arguments
+ 	from the containing scope.
+ 	(vague_linkage_p): Check DECL_ABSTRACT_P before looking at a 'tor
+ 	thunk.
+ 
+ 2018-04-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
+ 
+ 	Implement P0969
+ 	* decl.c (find_decomp_class_base): Check accessibility instead
+ 	of declared access, adjust diagnostic.
+ 
+ 2018-04-23  Jakub Jelinek  <jakub@redhat.com>
+ 	    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/85470 - wrong error with static data member.
+ 	* decl.c (check_initializer): Check DECL_INITIALIZED_IN_CLASS_P.
+ 	* typeck2.c (store_init_value): Likewise.
+ 
+ 2018-04-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-04-05  Ville Voutilainen  <ville.voutilainen@gmail.com>
+ 
+ 	Implement P0961
+ 	* decl.c (get_tuple_decomp_init): Check the templatedness
+ 	of a member get.
+ 
+ 2018-04-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/85464 - missing location for -Wignored-qualifiers diagnostic
+ 	* decl.c (grokdeclarator): If declspecs->locations[ds_type_spec]
+ 	is UNKNOWN_LOCATION fall back to input_location.
+ 
+ 2018-04-09  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/85279 - dump_expr doesn't understand decltype.
+ 	* error.c (dump_expr): Handle DECLTYPE_TYPE.
+ 
+ 2018-04-05  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/82152 - ICE with class deduction and inherited ctor.
+ 	* pt.c (do_class_deduction): Ignore inherited ctors.
+ 
+ 	PR c++/84665 - ICE with array of empty class.
+ 	* decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.
+ 
+ 	PR c++/85006 - -fconcepts ICE with A<auto...> return type
+ 	* pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack.
+ 
+ 2018-04-04  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/85118 - wrong error with generic lambda and std::bind.
+ 	* call.c (add_template_conv_candidate): Disable if there are any
+ 	call operators.
+ 
+ 	PR c++/85148 - ICE with 'this' in array NSDMI.
+ 	* tree.c (replace_placeholders_r): Use handled_component_p.
+ 
+ 2018-04-03  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/85113 - ICE with constexpr and __builtin_constant_p.
+ 	* constexpr.c (cxx_eval_builtin_function_call): Only defer
+ 	__builtin_constant_p if ctx->quiet.
+ 
+ 	* typeck.c (merge_types): Limit matching attribute shortcut to
+ 	the default case.
+ 
+ 	PR c++/64095 - auto... parameter pack.
+ 	* parser.c (cp_parser_parameter_declaration): Handle turning autos
+ 	into packs here.
+ 	(cp_parser_parameter_declaration_list): Not here.
+ 
+ 	PR c++/85060 - wrong-code with call to base member in template.
+ 	* search.c (any_dependent_bases_p): Check uses_template_parms
+ 	rather than processing_template_decl.
+ 
+ 2018-03-29  Ville Voutilainen  <ville.voutilainen@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-03-23  Ville Voutilainen  <ville.voutilainen@gmail.com>
+ 
+ 	Implement P0962
+ 	* parser.c (cp_parser_perform_range_for_lookup): Change
+ 	the condition for deciding whether to use members.
+ 
+ 2018-03-23  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/78489 - Substitution in wrong order
+ 	PR c++/84489
+ 	* pt.c (type_unification_real): Revert last two changes.
+ 
+ 	PR c++/71834 - template-id with too few arguments.
+ 	* pt.c (coerce_template_parms): Make sure we gave an error.
+ 
+ 	PR c++/84937 - ICE with class deduction and auto.
+ 	* pt.c (rewrite_template_parm): Fix auto handling.
+ 
+ 	PR c++/80227 - SFINAE and negative array size.
+ 	* decl.c (compute_array_index_type): Convert to signed for negative
+ 	check.
+ 
+ 	PR c++/84839 - ICE with decltype of parameter pack.
+ 	* pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
+ 	instantiating dummy parms.
+ 
+ 	PR c++/84798 - ICE with auto in abstract function declarator.
+ 	* parser.c (cp_parser_parameter_declaration_clause): Check
+ 	parser->default_arg_ok_p.
+ 
+ 	PR c++/84355 - ICE with deduction for member class template.
+ 	* pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Always substitute into
+ 	CLASS_PLACEHOLDER_TEMPLATE.
+ 
+ 2018-03-23  Paolo Carlini  <paolo.carlini@oracle.com>
+ 	    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/82336 - link error with list-init default argument.
+ 	* decl.c (check_default_argument): Unshare an initializer list.
+ 
+ 2018-03-22  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-03-22  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/84854
+ 	* semantics.c (finish_if_stmt_cond): Check if the type of the condition
+ 	is boolean.
+ 
+ 	2018-03-19  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/84927
+ 	* constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
+ 	as we evaluate the elements.
+ 	(cxx_eval_constant_expression): Verify constructor's flags
+ 	unconditionally.
+ 
+ 	2018-03-21  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/71638, ICE with NSDMI and reference.
+ 	* constexpr.c (cxx_eval_bare_aggregate): Update constructor's flags
+ 	even when we replace an element.
+ 
+ 2018-03-09  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/84785 - ICE with alias template and default targs.
+ 	* pt.c (type_unification_real): Set processing_template_decl if
+ 	saw_undeduced == 1.
+ 
+ 2018-03-07  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-03-06  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/84684
+ 	* constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated
+ 	arguments.
+ 
+ 2018-03-03  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/84686 - missing volatile loads.
+ 	* cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.
+ 
+ 2018-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-02-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84558
+ 	* constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
+ 	a valid constant initializer.  Formatting fixes.
+ 
+ 	PR c++/84557
+ 	* parser.c (cp_parser_omp_var_list_no_open): Only call
+ 	cp_parser_lookup_name_simple on names satisfying identifier_p.
+ 	(cp_parser_oacc_routine): Likewise.
+ 
+ 	2018-02-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84445
+ 	* class.c (fixed_type_or_null) <case CALL_EXPR>: Only test
+ 	TREE_HAS_CONSTRUCTOR if instance is not an internal function call.
+ 
+ 	PR c++/84449
+ 	* tree.c (bot_manip): If build_cplus_new or break_out_target_exprs
+ 	returns error_mark_node, return it immediately.
+ 	(break_out_target_exprs): If cp_walk_tree with bot_manip returns
+ 	error_mark_node, return error_mark_node.
+ 
+ 	2018-02-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84448
+ 	* parser.c (cp_parser_binary_expression): For no_toplevel_fold_p, if
+ 	either operand is error_mark_node, set current.lhs to that instead of
+ 	creating a binary op with error_mark_node operands.
+ 
+ 	PR c++/84430
+ 	* constexpr.c (potential_constant_expression_1): Handle OMP_SIMD.
+ 
+ 	2018-02-16  Marek Polacek  <polacek@redhat.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84192
+ 	* constexpr.c (cxx_eval_constant_expression) <case RETURN_EXPR>: Don't
+ 	set *jump_target to anything if jump_target is NULL.
+ 
+ 	2018-02-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84341
+ 	* parser.c (cp_parser_binary_expression): Use build_min instead of
+ 	build2_loc to build the no_toplevel_fold_p toplevel binary expression.
+ 
+ 	2018-02-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/83987
+ 	* tree.c (cp_free_lang_data): Revert 2018-01-23 change.
+ 
+ 	2018-02-09  Marek Polacek  <polacek@redhat.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/83659
+ 	* constexpr.c (cxx_fold_indirect_ref): Sync some changes from
+ 	fold_indirect_ref_1.  Verify first that tree_fits_shwi_p (op01).
+ 	Formatting fixes.
+ 
+ 	2018-02-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84082
+ 	* parser.c (cp_parser_dot_deref_incomplete): New function.
+ 	(cp_parser_postfix_dot_deref_expression): Use it.
+ 
+ 	2018-01-31  Jason Merrill  <jason@redhat.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/83993
+ 	* constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
+ 	around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
+ 	on ADDR_EXPR.
+ 
+ 	2018-01-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84031
+ 	* decl.c (find_decomp_class_base): Ignore unnamed bitfields.  Ignore
+ 	recursive calls that return ret.
+ 	(cp_finish_decomp): Ignore unnamed bitfields.
+ 
+ 	2018-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/83987
+ 	* tree.c (cp_free_lang_data): Change DECL_VALUE_EXPR of
+ 	DECL_OMP_PRIVATIZED_MEMBER vars to error_mark_node.
+ 
+ 	PR c++/83958
+ 	* decl.c (cp_finish_decomp): Diagnose if reference structure binding
+ 	refers to incomplete type.
+ 
+ 	2018-01-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/83824
+ 	* parser.c (attr_chainon): New function.
+ 	(cp_parser_label_for_labeled_statement, cp_parser_decl_specifier_seq,
+ 	cp_parser_namespace_definition, cp_parser_init_declarator,
+ 	cp_parser_type_specifier_seq, cp_parser_parameter_declaration,
+ 	cp_parser_gnu_attributes_opt): Use it.
+ 	(cp_parser_member_declaration, cp_parser_objc_class_ivars,
+ 	cp_parser_objc_struct_declaration): Likewise.  Don't reset
+ 	prefix_attributes if attributes is error_mark_node.
+ 
+ 	2018-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/83817
+ 	* pt.c (tsubst_copy_and_build) <case CALL_EXPR>: If function
+ 	is AGGR_INIT_EXPR rather than CALL_EXPR, set AGGR_INIT_FROM_THUNK_P
+ 	instead of CALL_FROM_THUNK_P.
+ 
+ 2018-03-02  Jason Merrill  <jason@redhat.com>
+ 
+ 	Fix MIPS16 ICE.
+ 	* pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC.
+ 
+ 2018-02-27  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/84489 - dependent default template argument
+ 	* pt.c (type_unification_real): Handle early substitution failure.
+ 
+ 2018-03-01  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/71569 - decltype of template.
+ 	* parser.c (cp_parser_decltype_expr): Handle missing template args.
+ 
+ 2018-03-01  Jason Merrill  <jason@redhat.com>
+ 	    Alexandre Oliva <aoliva@redhat.com>
+ 
+ 	PR c++/71569 - ICE with redundant args on member variable template.
+ 	* decl.c (start_decl): Handle partial specialization of member
+ 	variable template.
+ 	* pt.c (determine_specialization): Allow partial specialization
+ 	of member variable template without specializing enclosing class.
+ 	(process_partial_specialization): Improve error message.
+ 
+ 2018-02-28  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/71784 - ICE with ref-qualifier and explicit specialization.
+ 	* pt.c (determine_specialization): Check ref-qualifier.
+ 
+ 2018-02-27  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/84496 - ICE with generic lambda in lambda.
+ 	* pt.c (type_dependent_expression_p): Fix dependency checking of
+ 	functions without DECL_TEMPLATE_INFO.
+ 
+ 2018-02-26  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/84441 - ICE with base initialized from ?:
+ 	* call.c (unsafe_copy_elision_p): Handle COND_EXPR.
+ 
+ 	PR c++/84520 - ICE with generic lambda in NSDMI.
+ 	* lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
+ 	'this' in a generic lambda instantiation.
+ 
+ 2018-02-26  Jason Merrill  <jason@redhat.com>
+ 	    Ville Voutilainen  <ville.voutilainen@gmail.com>
+ 
+ 	PR c++/81589 - error with is_trivially_constructible.
+ 	* method.c (constructible_expr): Set cp_unevaluated.
+ 
+ 2018-02-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/84015 - ICE with class deduction and auto template parm.
+ 	* pt.c (rewrite_template_parm): Use tf_partial in first tsubst.
+ 
+ 2018-02-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2017-08-29  Jason Merrill  <jason@redhat.com>
+ 
+ 	Fix lambdas in template default argument of inherited ctor.
+ 	* method.c (synthesized_method_base_walk): Replace an inherited
+ 	template with its specialization.
+ 	(synthesized_method_walk): Make inheriting_ctor a pointer.
+ 	(maybe_explain_implicit_delete, explain_implicit_non_constexpr)
+ 	(deduce_inheriting_ctor, implicitly_declare_fn): Adjust.
+ 
+ 2018-02-16  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/84151 - unnecessary volatile load with static member.
+ 	* call.c (build_new_method_call_1): Avoid loading from a volatile
+ 	lvalue used as the object argument for a static member function.
+ 
+ 	PR c++/81853 - using-directive and constexpr.
+ 	* constexpr.c (cxx_eval_constant_expression): Handle USING_STMT.
+ 
+ 	PR c++/84420 - ICE with structured binding in lambda.
+ 	* lambda.c (is_capture_proxy): Check DECL_DECOMPOSITION_P.
+ 
+ 	PR c++/83835 - C++17 error with constructor ctors.
+ 	* call.c (build_special_member_call): Set TARGET_EXPR_DIRECT_INIT_P.
+ 
+ 	PR c++/82664 - ICE with reference to function template parm.
+ 	* pt.c (convert_nontype_argument_function): Avoid obfuscationg
+ 	NOP_EXPRs.
+ 
+ 	PR c++/82764 - C++17 ICE with empty base
+ 	* class.c (build_base_field_1): Set DECL_SIZE to zero for empty base.
+ 
+ 	PR c++/83227 - C++17 ICE with init-list derived-to-base conversion.
+ 	* call.c (convert_like_real): Don't use the copy-list-initialization
+ 	shortcut for ck_base.
+ 
+ 	PR c++/84045 - ICE with typedef and noexcept.
+ 	* except.c (build_noexcept_spec): Use strip_typedefs_expr.
+ 
+ 2018-01-29  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/82461 - constexpr list-initialized member
+ 	* constexpr.c (potential_constant_expression_1): Check
+ 	TARGET_EXPR_DIRECT_INIT_P.
+ 
+ 2018-01-26  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR c++/82878
+ 	PR c++/78495
+ 	* call.c (build_call_a): Don't set CALL_FROM_THUNK_P for inherited
+ 	ctor.
+ 	* cp-gimplify.c	(cp_genericize_r): Restore THUNK dereference
+ 	inhibibition check removed in previous c++/78495 change.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/gcc/cp/call.c gcc-7.4.0/gcc/cp/call.c
*** gcc-7.3.0/gcc/cp/call.c	Wed Jan 17 18:07:45 2018
--- gcc-7.4.0/gcc/cp/call.c	Fri Jun 22 20:34:33 2018
*************** build_call_a (tree function, int n, tree
*** 375,392 ****
  
    TREE_HAS_CONSTRUCTOR (function) = (decl && DECL_CONSTRUCTOR_P (decl));
  
-   if (current_function_decl && decl
-       && flag_new_inheriting_ctors
-       && DECL_INHERITED_CTOR (current_function_decl)
-       && (DECL_INHERITED_CTOR (current_function_decl)
- 	  == DECL_CLONED_FUNCTION (decl)))
-     /* Pass arguments directly to the inherited constructor.  */
-     CALL_FROM_THUNK_P (function) = true;
- 
    /* Don't pass empty class objects by value.  This is useful
       for tags in STL, which are used to control overload resolution.
       We don't need to handle other cases of copying empty classes.  */
!   else if (! decl || ! DECL_BUILT_IN (decl))
      for (i = 0; i < n; i++)
        {
  	tree arg = CALL_EXPR_ARG (function, i);
--- 375,384 ----
  
    TREE_HAS_CONSTRUCTOR (function) = (decl && DECL_CONSTRUCTOR_P (decl));
  
    /* Don't pass empty class objects by value.  This is useful
       for tags in STL, which are used to control overload resolution.
       We don't need to handle other cases of copying empty classes.  */
!   if (! decl || ! DECL_BUILT_IN (decl))
      for (i = 0; i < n; i++)
        {
  	tree arg = CALL_EXPR_ARG (function, i);
*************** add_template_conv_candidate (struct z_ca
*** 3267,3276 ****
  			     tree return_type, tree access_path,
  			     tree conversion_path, tsubst_flags_t complain)
  {
!   /* Making this work broke PR 71117, so until the committee resolves core
!      issue 2189, let's disable this candidate if there are any viable call
       operators.  */
!   if (any_strictly_viable (*candidates))
      return NULL;
  
    return
--- 3259,3268 ----
  			     tree return_type, tree access_path,
  			     tree conversion_path, tsubst_flags_t complain)
  {
!   /* Making this work broke PR 71117 and 85118, so until the committee resolves
!      core issue 2189, let's disable this candidate if there are any call
       operators.  */
!   if (*candidates)
      return NULL;
  
    return
*************** convert_like_real (conversion *convs, tr
*** 6886,6891 ****
--- 6878,6888 ----
  	  && DECL_INHERITED_CTOR (current_function_decl))
  	return expr;
  
+       if (TREE_CODE (expr) == TARGET_EXPR
+ 	  && TARGET_EXPR_LIST_INIT_P (expr))
+ 	/* Copy-list-initialization doesn't actually involve a copy.  */
+ 	return expr;
+ 
        /* Fall through.  */
      case ck_base:
        if (convs->kind == ck_base && !convs->need_temporary_p)
*************** convert_like_real (conversion *convs, tr
*** 6911,6920 ****
  	flags |= LOOKUP_ONLYCONVERTING;
        if (convs->rvaluedness_matches_p)
  	flags |= LOOKUP_PREFER_RVALUE;
-       if (TREE_CODE (expr) == TARGET_EXPR
- 	  && TARGET_EXPR_LIST_INIT_P (expr))
- 	/* Copy-list-initialization doesn't actually involve a copy.  */
- 	return expr;
        expr = build_temp (expr, totype, flags, &diag_kind, complain);
        if (diag_kind && complain)
  	{
--- 6908,6913 ----
*************** convert_arg_to_ellipsis (tree arg, tsubs
*** 7151,7157 ****
  		     "passing objects of non-trivially-copyable "
  		     "type %q#T through %<...%> is conditionally supported",
  		     arg_type);
! 	  return cp_build_addr_expr (arg, complain);
  	}
        /* Build up a real lvalue-to-rvalue conversion in case the
  	 copy constructor is trivial but not callable.  */
--- 7144,7150 ----
  		     "passing objects of non-trivially-copyable "
  		     "type %q#T through %<...%> is conditionally supported",
  		     arg_type);
! 	  return build1 (ADDR_EXPR, build_reference_type (arg_type), arg);
  	}
        /* Build up a real lvalue-to-rvalue conversion in case the
  	 copy constructor is trivial but not callable.  */
*************** unsafe_copy_elision_p (tree target, tree
*** 7525,7530 ****
--- 7518,7532 ----
    /* build_compound_expr pushes COMPOUND_EXPR inside TARGET_EXPR.  */
    while (TREE_CODE (init) == COMPOUND_EXPR)
      init = TREE_OPERAND (init, 1);
+   if (TREE_CODE (init) == COND_EXPR)
+     {
+       /* We'll end up copying from each of the arms of the COND_EXPR directly
+ 	 into the target, so look at them. */
+       if (tree op = TREE_OPERAND (init, 1))
+ 	if (unsafe_copy_elision_p (target, op))
+ 	  return true;
+       return unsafe_copy_elision_p (target, TREE_OPERAND (init, 2));
+     }
    return (TREE_CODE (init) == AGGR_INIT_EXPR
  	  && !AGGR_INIT_VIA_CTOR_P (init));
  }
*************** build_over_call (struct z_candidate *can
*** 7566,7571 ****
--- 7568,7577 ----
  
        if (undeduced_auto_decl (fn))
  	mark_used (fn, complain);
+       else
+ 	/* Otherwise set TREE_USED for the benefit of -Wunused-function.
+ 	   See PR80598.  */
+ 	TREE_USED (fn) = 1;
  
        return_type = TREE_TYPE (TREE_TYPE (fn));
        nargs = vec_safe_length (args);
*************** build_over_call (struct z_candidate *can
*** 7929,7935 ****
        tree *fargs = (!nargs ? argarray
  			    : (tree *) alloca (nargs * sizeof (tree)));
        for (j = 0; j < nargs; j++)
! 	fargs[j] = maybe_constant_value (argarray[j]);
  
        warned_p = check_function_arguments (input_location, fn, TREE_TYPE (fn),
  					   nargs, fargs);
--- 7935,7949 ----
        tree *fargs = (!nargs ? argarray
  			    : (tree *) alloca (nargs * sizeof (tree)));
        for (j = 0; j < nargs; j++)
! 	{
! 	  /* For -Wformat undo the implicit passing by hidden reference
! 	     done by convert_arg_to_ellipsis.  */
! 	  if (TREE_CODE (argarray[j]) == ADDR_EXPR
! 	      && TREE_CODE (TREE_TYPE (argarray[j])) == REFERENCE_TYPE)
! 	    fargs[j] = TREE_OPERAND (argarray[j], 0);
! 	  else
! 	    fargs[j] = maybe_constant_value (argarray[j]);
! 	}
  
        warned_p = check_function_arguments (input_location, fn, TREE_TYPE (fn),
  					   nargs, fargs);
*************** build_special_member_call (tree instance
*** 8399,8404 ****
--- 8413,8421 ----
  	{
  	  if (is_dummy_object (instance))
  	    return arg;
+ 	  else if (TREE_CODE (arg) == TARGET_EXPR)
+ 	    TARGET_EXPR_DIRECT_INIT_P (arg) = true;
+ 
  	  if ((complain & tf_error)
  	      && (flags & LOOKUP_DELEGATING_CONS))
  	    check_self_delegation (arg);
*************** build_new_method_call_1 (tree instance,
*** 8851,8858 ****
  	      if (TREE_CODE (TREE_TYPE (fn)) != METHOD_TYPE
  		  && !is_dummy_object (instance)
  		  && TREE_SIDE_EFFECTS (instance))
! 		call = build2 (COMPOUND_EXPR, TREE_TYPE (call),
! 			       instance, call);
  	      else if (call != error_mark_node
  		       && DECL_DESTRUCTOR_P (cand->fn)
  		       && !VOID_TYPE_P (TREE_TYPE (call)))
--- 8868,8881 ----
  	      if (TREE_CODE (TREE_TYPE (fn)) != METHOD_TYPE
  		  && !is_dummy_object (instance)
  		  && TREE_SIDE_EFFECTS (instance))
! 		{
! 		  /* But avoid the implicit lvalue-rvalue conversion when 'a'
! 		     is volatile.  */
! 		  tree a = instance;
! 		  if (TREE_THIS_VOLATILE (a))
! 		    a = build_this (a);
! 		  call = build2 (COMPOUND_EXPR, TREE_TYPE (call), a, call);
! 		}
  	      else if (call != error_mark_node
  		       && DECL_DESTRUCTOR_P (cand->fn)
  		       && !VOID_TYPE_P (TREE_TYPE (call)))
diff -Nrcpad gcc-7.3.0/gcc/cp/class.c gcc-7.4.0/gcc/cp/class.c
*** gcc-7.3.0/gcc/cp/class.c	Wed May 31 17:53:06 2017
--- gcc-7.4.0/gcc/cp/class.c	Fri Aug 17 14:17:10 2018
*************** update_vtable_entry_for_fn (tree t, tree
*** 2732,2750 ****
  	     order.  Of course it is lame that we have to repeat the
  	     search here anyway -- we should really be caching pieces
  	     of the vtable and avoiding this repeated work.  */
! 	  tree thunk_binfo, base_binfo;
  
  	  /* Find the base binfo within the overriding function's
  	     return type.  We will always find a thunk_binfo, except
  	     when the covariancy is invalid (which we will have
  	     already diagnosed).  */
! 	  for (base_binfo = TYPE_BINFO (base_return),
! 	       thunk_binfo = TYPE_BINFO (over_return);
! 	       thunk_binfo;
! 	       thunk_binfo = TREE_CHAIN (thunk_binfo))
! 	    if (SAME_BINFO_TYPE_P (BINFO_TYPE (thunk_binfo),
! 				   BINFO_TYPE (base_binfo)))
! 	      break;
  
  	  /* See if virtual inheritance is involved.  */
  	  for (virtual_offset = thunk_binfo;
--- 2732,2751 ----
  	     order.  Of course it is lame that we have to repeat the
  	     search here anyway -- we should really be caching pieces
  	     of the vtable and avoiding this repeated work.  */
! 	  tree thunk_binfo = NULL_TREE;
! 	  tree base_binfo = TYPE_BINFO (base_return);
  
  	  /* Find the base binfo within the overriding function's
  	     return type.  We will always find a thunk_binfo, except
  	     when the covariancy is invalid (which we will have
  	     already diagnosed).  */
! 	  if (base_binfo)
! 	    for (thunk_binfo = TYPE_BINFO (over_return); thunk_binfo;
! 		 thunk_binfo = TREE_CHAIN (thunk_binfo))
! 	      if (SAME_BINFO_TYPE_P (BINFO_TYPE (thunk_binfo),
! 				     BINFO_TYPE (base_binfo)))
! 		break;
! 	  gcc_assert (thunk_binfo || errorcount);
  
  	  /* See if virtual inheritance is involved.  */
  	  for (virtual_offset = thunk_binfo;
*************** build_base_field_1 (tree t, tree basetyp
*** 4532,4539 ****
    DECL_ARTIFICIAL (decl) = 1;
    DECL_IGNORED_P (decl) = 1;
    DECL_FIELD_CONTEXT (decl) = t;
!   DECL_SIZE (decl) = CLASSTYPE_SIZE (basetype);
!   DECL_SIZE_UNIT (decl) = CLASSTYPE_SIZE_UNIT (basetype);
    SET_DECL_ALIGN (decl, CLASSTYPE_ALIGN (basetype));
    DECL_USER_ALIGN (decl) = CLASSTYPE_USER_ALIGN (basetype);
    SET_DECL_MODE (decl, TYPE_MODE (basetype));
--- 4533,4546 ----
    DECL_ARTIFICIAL (decl) = 1;
    DECL_IGNORED_P (decl) = 1;
    DECL_FIELD_CONTEXT (decl) = t;
!   if (is_empty_class (basetype))
!     /* CLASSTYPE_SIZE is one byte, but the field needs to have size zero.  */
!     DECL_SIZE (decl) = DECL_SIZE_UNIT (decl) = size_zero_node;
!   else
!     {
!       DECL_SIZE (decl) = CLASSTYPE_SIZE (basetype);
!       DECL_SIZE_UNIT (decl) = CLASSTYPE_SIZE_UNIT (basetype);
!     }
    SET_DECL_ALIGN (decl, CLASSTYPE_ALIGN (basetype));
    DECL_USER_ALIGN (decl) = CLASSTYPE_USER_ALIGN (basetype);
    SET_DECL_MODE (decl, TYPE_MODE (basetype));
*************** layout_class_type (tree t, tree *virtual
*** 6655,6660 ****
--- 6662,6668 ----
  				  bitsize_int (BITS_PER_UNIT)));
        SET_TYPE_ALIGN (base_t, rli->record_align);
        TYPE_USER_ALIGN (base_t) = TYPE_USER_ALIGN (t);
+       TYPE_TYPELESS_STORAGE (base_t) = TYPE_TYPELESS_STORAGE (t);
  
        /* Copy the fields from T.  */
        next_field = &TYPE_FIELDS (base_t);
*************** fixed_type_or_null (tree instance, int *
*** 7592,7598 ****
  
      case CALL_EXPR:
        /* This is a call to a constructor, hence it's never zero.  */
!       if (TREE_HAS_CONSTRUCTOR (instance))
  	{
  	  if (nonnull)
  	    *nonnull = 1;
--- 7600,7607 ----
  
      case CALL_EXPR:
        /* This is a call to a constructor, hence it's never zero.  */
!       if (CALL_EXPR_FN (instance)
! 	  && TREE_HAS_CONSTRUCTOR (instance))
  	{
  	  if (nonnull)
  	    *nonnull = 1;
diff -Nrcpad gcc-7.3.0/gcc/cp/constexpr.c gcc-7.4.0/gcc/cp/constexpr.c
*** gcc-7.3.0/gcc/cp/constexpr.c	Tue Dec 19 10:02:48 2017
--- gcc-7.4.0/gcc/cp/constexpr.c	Mon Nov 26 15:53:48 2018
*************** cxx_eval_builtin_function_call (const co
*** 1140,1146 ****
--- 1140,1149 ----
    /* Don't fold __builtin_constant_p within a constexpr function.  */
    bool bi_const_p = (DECL_FUNCTION_CODE (fun) == BUILT_IN_CONSTANT_P);
  
+   /* If we aren't requiring a constant expression, defer __builtin_constant_p
+      in a constexpr function until we have values for the parameters.  */
    if (bi_const_p
+       && ctx->quiet
        && current_function_decl
        && DECL_DECLARED_CONSTEXPR_P (current_function_decl))
      {
*************** cxx_eval_builtin_function_call (const co
*** 1155,1162 ****
    bool dummy1 = false, dummy2 = false;
    for (i = 0; i < nargs; ++i)
      {
!       args[i] = cxx_eval_constant_expression (&new_ctx, CALL_EXPR_ARG (t, i),
! 					      false, &dummy1, &dummy2);
        if (bi_const_p)
  	/* For __built_in_constant_p, fold all expressions with constant values
  	   even if they aren't C++ constant-expressions.  */
--- 1158,1171 ----
    bool dummy1 = false, dummy2 = false;
    for (i = 0; i < nargs; ++i)
      {
!       args[i] = CALL_EXPR_ARG (t, i);
!       /* If builtin_valid_in_constant_expr_p is true,
! 	 potential_constant_expression_1 has not recursed into the arguments
! 	 of the builtin, verify it here.  */
!       if (!builtin_valid_in_constant_expr_p (fun)
! 	  || potential_constant_expression (args[i]))
! 	args[i] = cxx_eval_constant_expression (&new_ctx, args[i], false,
! 						&dummy1, &dummy2);
        if (bi_const_p)
  	/* For __built_in_constant_p, fold all expressions with constant values
  	   even if they aren't C++ constant-expressions.  */
*************** cxx_bind_parameters_in_call (const const
*** 1274,1279 ****
--- 1283,1290 ----
  
        if (!*non_constant_p)
  	{
+ 	  /* Don't share a CONSTRUCTOR that might be changed.  */
+ 	  arg = unshare_constructor (arg);
  	  /* Make sure the binding has the same type as the parm.  But
  	     only for constant args.  */
  	  if (TREE_CODE (type) != REFERENCE_TYPE)
*************** cxx_eval_bare_aggregate (const constexpr
*** 2783,2796 ****
  	  gcc_assert (is_empty_class (TREE_TYPE (TREE_TYPE (index))));
  	  changed = true;
  	}
!       else if (new_ctx.ctor != ctx->ctor)
  	{
! 	  /* We appended this element above; update the value.  */
! 	  gcc_assert ((*p)->last().index == index);
! 	  (*p)->last().value = elt;
  	}
-       else
- 	CONSTRUCTOR_APPEND_ELT (*p, index, elt);
      }
    if (*non_constant_p || !changed)
      return t;
--- 2794,2813 ----
  	  gcc_assert (is_empty_class (TREE_TYPE (TREE_TYPE (index))));
  	  changed = true;
  	}
!       else
  	{
! 	  if (new_ctx.ctor != ctx->ctor)
! 	    {
! 	      /* We appended this element above; update the value.  */
! 	      gcc_assert ((*p)->last().index == index);
! 	      (*p)->last().value = elt;
! 	    }
! 	  else
! 	    CONSTRUCTOR_APPEND_ELT (*p, index, elt);
! 	  /* Adding or replacing an element might change the ctor's flags.  */
! 	  TREE_CONSTANT (ctx->ctor) = constant_p;
! 	  TREE_SIDE_EFFECTS (ctx->ctor) = side_effects_p;
  	}
      }
    if (*non_constant_p || !changed)
      return t;
*************** cxx_eval_vec_init_1 (const constexpr_ctx
*** 2826,2832 ****
    unsigned HOST_WIDE_INT max = tree_to_uhwi (array_type_nelts_top (atype));
    verify_ctor_sanity (ctx, atype);
    vec<constructor_elt, va_gc> **p = &CONSTRUCTOR_ELTS (ctx->ctor);
-   vec_alloc (*p, max + 1);
    bool pre_init = false;
    unsigned HOST_WIDE_INT i;
  
--- 2843,2848 ----
*************** cxx_eval_vec_init_1 (const constexpr_ctx
*** 2881,2886 ****
--- 2897,2905 ----
  	{
  	  /* Initializing an element using value or default initialization
  	     we just pre-built above.  */
+ 	  if (init == void_node)
+ 	    /* Trivial default-init, don't do anything to the CONSTRUCTOR.  */
+ 	    return ctx->ctor;
  	  eltinit = cxx_eval_constant_expression (&new_ctx, init, lval,
  						  non_constant_p, overflow_p);
  	  reuse = i == 0;
*************** cxx_eval_vec_init_1 (const constexpr_ctx
*** 2895,2903 ****
  	  if (!lvalue_p (init))
  	    eltinit = move (eltinit);
  	  eltinit = force_rvalue (eltinit, tf_warning_or_error);
! 	  eltinit = (cxx_eval_constant_expression
! 		     (&new_ctx, eltinit, lval,
! 		      non_constant_p, overflow_p));
  	}
        if (*non_constant_p && !ctx->quiet)
  	break;
--- 2914,2921 ----
  	  if (!lvalue_p (init))
  	    eltinit = move (eltinit);
  	  eltinit = force_rvalue (eltinit, tf_warning_or_error);
! 	  eltinit = cxx_eval_constant_expression (&new_ctx, eltinit, lval,
! 						  non_constant_p, overflow_p);
  	}
        if (*non_constant_p && !ctx->quiet)
  	break;
*************** cxx_eval_vec_init_1 (const constexpr_ctx
*** 2910,2931 ****
        else
  	CONSTRUCTOR_APPEND_ELT (*p, idx, eltinit);
        /* Reuse the result of cxx_eval_constant_expression call
! 	  from the first iteration to all others if it is a constant
! 	  initializer that doesn't require relocations.  */
        if (reuse
  	  && max > 1
! 	  && (initializer_constant_valid_p (eltinit, TREE_TYPE (eltinit))
! 	      == null_pointer_node))
  	{
  	  if (new_ctx.ctor != ctx->ctor)
  	    eltinit = new_ctx.ctor;
! 	  for (i = 1; i < max; ++i)
! 	    {
! 	      idx = build_int_cst (size_type_node, i);
! 	      CONSTRUCTOR_APPEND_ELT (*p, idx, unshare_constructor (eltinit));
! 	    }
  	  break;
  	}
      }
  
    if (!*non_constant_p)
--- 2928,2951 ----
        else
  	CONSTRUCTOR_APPEND_ELT (*p, idx, eltinit);
        /* Reuse the result of cxx_eval_constant_expression call
! 	 from the first iteration to all others if it is a constant
! 	 initializer that doesn't require relocations.  */
        if (reuse
  	  && max > 1
! 	  && (eltinit == NULL_TREE
! 	      || (initializer_constant_valid_p (eltinit, TREE_TYPE (eltinit))
! 		  == null_pointer_node)))
  	{
  	  if (new_ctx.ctor != ctx->ctor)
  	    eltinit = new_ctx.ctor;
! 	  tree range = build2 (RANGE_EXPR, size_type_node,
! 			       build_int_cst (size_type_node, 1),
! 			       build_int_cst (size_type_node, max - 1));
! 	  CONSTRUCTOR_APPEND_ELT (*p, range, unshare_constructor (eltinit));
  	  break;
  	}
+       else if (i == 0)
+ 	vec_safe_reserve (*p, max);
      }
  
    if (!*non_constant_p)
*************** cxx_eval_vec_init (const constexpr_ctx *
*** 2966,2974 ****
  static tree
  cxx_fold_indirect_ref (location_t loc, tree type, tree op0, bool *empty_base)
  {
!   tree sub, subtype;
  
-   sub = op0;
    STRIP_NOPS (sub);
    subtype = TREE_TYPE (sub);
    if (!POINTER_TYPE_P (subtype))
--- 2986,2994 ----
  static tree
  cxx_fold_indirect_ref (location_t loc, tree type, tree op0, bool *empty_base)
  {
!   tree sub = op0;
!   tree subtype;
  
    STRIP_NOPS (sub);
    subtype = TREE_TYPE (sub);
    if (!POINTER_TYPE_P (subtype))
*************** cxx_fold_indirect_ref (location_t loc, t
*** 3023,3029 ****
  	{
  	  tree part_width = TYPE_SIZE (type);
  	  tree index = bitsize_int (0);
! 	  return fold_build3_loc (loc, BIT_FIELD_REF, type, op, part_width, index);
  	}
        /* Also handle conversion to an empty base class, which
  	 is represented with a NOP_EXPR.  */
--- 3043,3050 ----
  	{
  	  tree part_width = TYPE_SIZE (type);
  	  tree index = bitsize_int (0);
! 	  return fold_build3_loc (loc, BIT_FIELD_REF, type, op, part_width,
! 				  index);
  	}
        /* Also handle conversion to an empty base class, which
  	 is represented with a NOP_EXPR.  */
*************** cxx_fold_indirect_ref (location_t loc, t
*** 3063,3081 ****
  	  /* ((foo*)&vectorfoo)[1] => BIT_FIELD_REF<vectorfoo,...> */
  	  if (VECTOR_TYPE_P (op00type)
  	      && (same_type_ignoring_top_level_qualifiers_p
! 		  (type, TREE_TYPE (op00type))))
  	    {
- 	      HOST_WIDE_INT offset = tree_to_shwi (op01);
  	      tree part_width = TYPE_SIZE (type);
! 	      unsigned HOST_WIDE_INT part_widthi = tree_to_shwi (part_width)/BITS_PER_UNIT;
! 	      unsigned HOST_WIDE_INT indexi = offset * BITS_PER_UNIT;
! 	      tree index = bitsize_int (indexi);
! 
! 	      if (offset / part_widthi < TYPE_VECTOR_SUBPARTS (op00type))
! 		return fold_build3_loc (loc,
! 					BIT_FIELD_REF, type, op00,
! 					part_width, index);
! 
  	    }
  	  /* ((foo*)&complexfoo)[1] => __imag__ complexfoo */
  	  else if (TREE_CODE (op00type) == COMPLEX_TYPE
--- 3084,3114 ----
  	  /* ((foo*)&vectorfoo)[1] => BIT_FIELD_REF<vectorfoo,...> */
  	  if (VECTOR_TYPE_P (op00type)
  	      && (same_type_ignoring_top_level_qualifiers_p
! 						(type, TREE_TYPE (op00type)))
! 	      /* POINTER_PLUS_EXPR second operand is sizetype, unsigned,
! 		 but we want to treat offsets with MSB set as negative.
! 		 For the code below negative offsets are invalid and
! 		 TYPE_SIZE of the element is something unsigned, so
! 		 check whether op01 fits into HOST_WIDE_INT, which
! 		 implies it is from 0 to INTTYPE_MAXIMUM (HOST_WIDE_INT), and
! 		 then just use unsigned HOST_WIDE_INT because we want to treat
! 		 the value as unsigned.  */
! 	      && tree_fits_shwi_p (op01))
  	    {
  	      tree part_width = TYPE_SIZE (type);
! 	      unsigned HOST_WIDE_INT max_offset
! 		= (tree_to_uhwi (part_width) / BITS_PER_UNIT
! 		   * TYPE_VECTOR_SUBPARTS (op00type));
! 	      if (tree_int_cst_sign_bit (op01) == 0
! 		  && compare_tree_int (op01, max_offset) == -1)
! 		{
! 		  unsigned HOST_WIDE_INT offset = tree_to_uhwi (op01);
! 		  unsigned HOST_WIDE_INT indexi = offset * BITS_PER_UNIT;
! 		  tree index = bitsize_int (indexi);
! 		  return fold_build3_loc (loc,
! 					  BIT_FIELD_REF, type, op00,
! 					  part_width, index);
! 		}
  	    }
  	  /* ((foo*)&complexfoo)[1] => __imag__ complexfoo */
  	  else if (TREE_CODE (op00type) == COMPLEX_TYPE
*************** cxx_fold_indirect_ref (location_t loc, t
*** 3132,3138 ****
      {
        tree type_domain;
        tree min_val = size_zero_node;
!       tree newsub = cxx_fold_indirect_ref (loc, TREE_TYPE (subtype), sub, NULL);
        if (newsub)
  	sub = newsub;
        else
--- 3165,3172 ----
      {
        tree type_domain;
        tree min_val = size_zero_node;
!       tree newsub
! 	= cxx_fold_indirect_ref (loc, TREE_TYPE (subtype), sub, NULL);
        if (newsub)
  	sub = newsub;
        else
*************** cxx_eval_constant_expression (const cons
*** 4170,4176 ****
  	r = cxx_eval_constant_expression (ctx, TREE_OPERAND (t, 0),
  					  lval,
  					  non_constant_p, overflow_p);
!       *jump_target = t;
        break;
  
      case SAVE_EXPR:
--- 4204,4219 ----
  	r = cxx_eval_constant_expression (ctx, TREE_OPERAND (t, 0),
  					  lval,
  					  non_constant_p, overflow_p);
!       if (jump_target)
! 	*jump_target = t;
!       else
! 	{
! 	  /* Can happen with ({ return true; }) && false; passed to
! 	     maybe_constant_value.  There is nothing to jump over in this
! 	     case, and the bug will be diagnosed later.  */
! 	  gcc_assert (ctx->quiet);
! 	  *non_constant_p = true;
! 	}
        break;
  
      case SAVE_EXPR:
*************** cxx_eval_constant_expression (const cons
*** 4414,4424 ****
  	{
  	  /* Don't re-process a constant CONSTRUCTOR, but do fold it to
  	     VECTOR_CST if applicable.  */
! 	  /* FIXME after GCC 6 branches, make the verify unconditional.  */
! 	  if (CHECKING_P)
! 	    verify_constructor_flags (t);
! 	  else
! 	    recompute_constructor_flags (t);
  	  if (TREE_CONSTANT (t))
  	    return fold (t);
  	}
--- 4457,4463 ----
  	{
  	  /* Don't re-process a constant CONSTRUCTOR, but do fold it to
  	     VECTOR_CST if applicable.  */
! 	  verify_constructor_flags (t);
  	  if (TREE_CONSTANT (t))
  	    return fold (t);
  	}
*************** cxx_eval_constant_expression (const cons
*** 4640,4645 ****
--- 4679,4688 ----
  					jump_target);
        break;
  
+     case USING_STMT:
+       r = void_node;
+       break;
+ 
      default:
        if (STATEMENT_CODE_P (TREE_CODE (t)))
  	{
*************** cxx_eval_outermost_constant_expr (tree t
*** 4763,4770 ****
      return error_mark_node;
    else if (non_constant_p && TREE_CONSTANT (r))
      {
!       /* This isn't actually constant, so unset TREE_CONSTANT.  */
!       if (EXPR_P (r))
  	r = copy_node (r);
        else if (TREE_CODE (r) == CONSTRUCTOR)
  	r = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (r), r);
--- 4806,4817 ----
      return error_mark_node;
    else if (non_constant_p && TREE_CONSTANT (r))
      {
!       /* This isn't actually constant, so unset TREE_CONSTANT.
! 	 Don't clear TREE_CONSTANT on ADDR_EXPR, as the middle-end requires
! 	 it to be set if it is invariant address, even when it is not
! 	 a valid C++ constant expression.  Wrap it with a NOP_EXPR
! 	 instead.  */
!       if (EXPR_P (r) && TREE_CODE (r) != ADDR_EXPR)
  	r = copy_node (r);
        else if (TREE_CODE (r) == CONSTRUCTOR)
  	r = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (r), r);
*************** potential_constant_expression_1 (tree t,
*** 5453,5458 ****
--- 5500,5506 ----
      case OMP_PARALLEL:
      case OMP_TASK:
      case OMP_FOR:
+     case OMP_SIMD:
      case OMP_DISTRIBUTE:
      case OMP_TASKLOOP:
      case OMP_TEAMS:
*************** potential_constant_expression_1 (tree t,
*** 5627,5633 ****
        return RECUR (TREE_OPERAND (t, 1), want_rval);
  
      case TARGET_EXPR:
!       if (!literal_type_p (TREE_TYPE (t)))
  	{
  	  if (flags & tf_error)
  	    {
--- 5675,5682 ----
        return RECUR (TREE_OPERAND (t, 1), want_rval);
  
      case TARGET_EXPR:
!       if (!TARGET_EXPR_DIRECT_INIT_P (t)
! 	  && !literal_type_p (TREE_TYPE (t)))
  	{
  	  if (flags & tf_error)
  	    {
diff -Nrcpad gcc-7.3.0/gcc/cp/cp-gimplify.c gcc-7.4.0/gcc/cp/cp-gimplify.c
*** gcc-7.3.0/gcc/cp/cp-gimplify.c	Fri Dec 15 22:06:16 2017
--- gcc-7.4.0/gcc/cp/cp-gimplify.c	Fri Oct 12 14:43:18 2018
*************** cp_genericize_r (tree *stmt_p, int *walk
*** 1107,1112 ****
--- 1107,1120 ----
        && omp_var_to_track (stmt))
      omp_cxx_notice_variable (wtd->omp_ctx, stmt);
  
+   /* Don't dereference parms in a thunk, pass the references through. */
+   if ((TREE_CODE (stmt) == CALL_EXPR && CALL_FROM_THUNK_P (stmt))
+       || (TREE_CODE (stmt) == AGGR_INIT_EXPR && AGGR_INIT_FROM_THUNK_P (stmt)))
+     {
+       *walk_subtrees = 0;
+       return NULL;
+     }
+ 
    /* Dereference invisible reference parms.  */
    if (wtd->handle_invisiref_parm_p && is_invisiref_parm (stmt))
      {
*************** cp_genericize_r (tree *stmt_p, int *walk
*** 1128,1133 ****
--- 1136,1142 ----
        if (h)
  	{
  	  *stmt_p = h->to;
+ 	  TREE_USED (h->to) |= TREE_USED (stmt);
  	  *walk_subtrees = 0;
  	  return NULL;
  	}
*************** cxx_omp_const_qual_no_mutable (tree decl
*** 1910,1916 ****
  /* True if OpenMP sharing attribute of DECL is predetermined.  */
  
  enum omp_clause_default_kind
! cxx_omp_predetermined_sharing (tree decl)
  {
    /* Static data members are predetermined shared.  */
    if (TREE_STATIC (decl))
--- 1919,1925 ----
  /* True if OpenMP sharing attribute of DECL is predetermined.  */
  
  enum omp_clause_default_kind
! cxx_omp_predetermined_sharing_1 (tree decl)
  {
    /* Static data members are predetermined shared.  */
    if (TREE_STATIC (decl))
*************** cxx_omp_predetermined_sharing (tree decl
*** 1928,1933 ****
--- 1937,1968 ----
    return OMP_CLAUSE_DEFAULT_UNSPECIFIED;
  }
  
+ /* Likewise, but also include the artificial vars.  We don't want to
+    disallow the artificial vars being mentioned in explicit clauses,
+    as we use artificial vars e.g. for loop constructs with random
+    access iterators other than pointers, but during gimplification
+    we want to treat them as predetermined.  */
+ 
+ enum omp_clause_default_kind
+ cxx_omp_predetermined_sharing (tree decl)
+ {
+   enum omp_clause_default_kind ret = cxx_omp_predetermined_sharing_1 (decl);
+   if (ret != OMP_CLAUSE_DEFAULT_UNSPECIFIED)
+     return ret;
+ 
+   /* Predetermine artificial variables holding integral values, those
+      are usually result of gimplify_one_sizepos or SAVE_EXPR
+      gimplification.  */
+   if (VAR_P (decl)
+       && DECL_ARTIFICIAL (decl)
+       && INTEGRAL_TYPE_P (TREE_TYPE (decl))
+       && !(DECL_LANG_SPECIFIC (decl)
+ 	   && DECL_OMP_PRIVATIZED_MEMBER (decl)))
+     return OMP_CLAUSE_DEFAULT_SHARED;
+ 
+   return OMP_CLAUSE_DEFAULT_UNSPECIFIED;
+ }
+ 
  /* Finalize an implicitly determined clause.  */
  
  void
*************** cp_fold (tree x)
*** 2148,2153 ****
--- 2183,2210 ----
        goto unary;
  
      case ADDR_EXPR:
+       loc = EXPR_LOCATION (x);
+       op0 = cp_fold_maybe_rvalue (TREE_OPERAND (x, 0), false);
+ 
+       /* Cope with user tricks that amount to offsetof.  */
+       if (op0 != error_mark_node
+ 	  && TREE_CODE (TREE_TYPE (op0)) != FUNCTION_TYPE
+ 	  && TREE_CODE (TREE_TYPE (op0)) != METHOD_TYPE)
+ 	{
+ 	  tree val = get_base_address (op0);
+ 	  if (val
+ 	      && INDIRECT_REF_P (val)
+ 	      && COMPLETE_TYPE_P (TREE_TYPE (val))
+ 	      && TREE_CONSTANT (TREE_OPERAND (val, 0)))
+ 	    {
+ 	      val = TREE_OPERAND (val, 0);
+ 	      STRIP_NOPS (val);
+ 	      if (TREE_CODE (val) == INTEGER_CST)
+ 		return fold_offsetof (op0, TREE_TYPE (x));
+ 	    }
+ 	}
+       goto finish_unary;
+ 
      case REALPART_EXPR:
      case IMAGPART_EXPR:
        rval_ops = false;
*************** cp_fold (tree x)
*** 2165,2170 ****
--- 2222,2228 ----
        loc = EXPR_LOCATION (x);
        op0 = cp_fold_maybe_rvalue (TREE_OPERAND (x, 0), rval_ops);
  
+     finish_unary:
        if (op0 != TREE_OPERAND (x, 0))
  	{
  	  if (op0 == error_mark_node)
diff -Nrcpad gcc-7.3.0/gcc/cp/cp-tree.h gcc-7.4.0/gcc/cp/cp-tree.h
*** gcc-7.3.0/gcc/cp/cp-tree.h	Sat Dec 16 00:40:14 2017
--- gcc-7.4.0/gcc/cp/cp-tree.h	Fri Jun 22 21:25:04 2018
*************** extern tree cxx_copy_lang_qualifiers		(c
*** 6708,6713 ****
--- 6708,6714 ----
  
  extern void cxx_print_statistics		(void);
  extern bool maybe_warn_zero_as_null_pointer_constant (tree, location_t);
+ extern void cp_warn_deprecated_use		(tree);
  
  /* in ptree.c */
  extern void cxx_print_xnode			(FILE *, tree, int);
*************** extern tree cp_build_addressof			(locati
*** 6777,6782 ****
--- 6778,6784 ----
  extern tree cp_build_addr_expr			(tree, tsubst_flags_t);
  extern tree cp_build_unary_op                   (enum tree_code, tree, bool,
                                                   tsubst_flags_t);
+ extern tree genericize_compound_lvalue		(tree);
  extern tree unary_complex_lvalue		(enum tree_code, tree);
  extern tree build_x_conditional_expr		(location_t, tree, tree, tree, 
                                                   tsubst_flags_t);
*************** extern int cp_gimplify_expr			(tree *, g
*** 6941,6946 ****
--- 6943,6949 ----
  						 gimple_seq *);
  extern void cp_genericize			(tree);
  extern bool cxx_omp_const_qual_no_mutable	(tree);
+ extern enum omp_clause_default_kind cxx_omp_predetermined_sharing_1 (tree);
  extern enum omp_clause_default_kind cxx_omp_predetermined_sharing (tree);
  extern tree cxx_omp_clause_default_ctor		(tree, tree, tree);
  extern tree cxx_omp_clause_copy_ctor		(tree, tree, tree);
diff -Nrcpad gcc-7.3.0/gcc/cp/cvt.c gcc-7.4.0/gcc/cp/cvt.c
*** gcc-7.3.0/gcc/cp/cvt.c	Fri Feb 10 16:33:45 2017
--- gcc-7.4.0/gcc/cp/cvt.c	Mon Mar  5 14:28:07 2018
*************** convert_to_void (tree expr, impl_conv_vo
*** 1053,1058 ****
--- 1053,1060 ----
        || TREE_TYPE (expr) == error_mark_node)
      return error_mark_node;
  
+   expr = maybe_undo_parenthesized_ref (expr);
+ 
    if (implicit == ICV_CAST)
      mark_exp_read (expr);
    else
diff -Nrcpad gcc-7.3.0/gcc/cp/decl.c gcc-7.4.0/gcc/cp/decl.c
*** gcc-7.3.0/gcc/cp/decl.c	Sat Dec 16 00:41:10 2017
--- gcc-7.4.0/gcc/cp/decl.c	Fri Jun 22 21:06:41 2018
*************** start_decl (const cp_declarator *declara
*** 5022,5028 ****
      }
  
    /* If #pragma weak was used, mark the decl weak now.  */
!   if (!processing_template_decl)
      maybe_apply_pragma_weak (decl);
  
    if (TREE_CODE (decl) == FUNCTION_DECL
--- 5022,5028 ----
      }
  
    /* If #pragma weak was used, mark the decl weak now.  */
!   if (!processing_template_decl && !DECL_DECOMPOSITION_P (decl))
      maybe_apply_pragma_weak (decl);
  
    if (TREE_CODE (decl) == FUNCTION_DECL
*************** start_decl (const cp_declarator *declara
*** 5042,5060 ****
  	  if (field == NULL_TREE
  	      || !(VAR_P (field) || variable_template_p (field)))
  	    error ("%q+#D is not a static data member of %q#T", decl, context);
  	  else if (variable_template_p (field) && !this_tmpl)
  	    {
! 	      if (DECL_LANG_SPECIFIC (decl)
! 		  && DECL_TEMPLATE_SPECIALIZATION (decl))
! 		/* OK, specialization was already checked.  */;
! 	      else
! 		{
! 		  error_at (DECL_SOURCE_LOCATION (decl),
! 			    "non-member-template declaration of %qD", decl);
! 		  inform (DECL_SOURCE_LOCATION (field), "does not match "
! 			  "member template declaration here");
! 		  return error_mark_node;
! 		}
  	    }
  	  else
  	    {
--- 5042,5058 ----
  	  if (field == NULL_TREE
  	      || !(VAR_P (field) || variable_template_p (field)))
  	    error ("%q+#D is not a static data member of %q#T", decl, context);
+ 	  else if (variable_template_p (field)
+ 		   && (DECL_LANG_SPECIFIC (decl)
+ 		       && DECL_TEMPLATE_SPECIALIZATION (decl)))
+ 	    /* OK, specialization was already checked.  */;
  	  else if (variable_template_p (field) && !this_tmpl)
  	    {
! 	      error_at (DECL_SOURCE_LOCATION (decl),
! 			"non-member-template declaration of %qD", decl);
! 	      inform (DECL_SOURCE_LOCATION (field), "does not match "
! 		      "member template declaration here");
! 	      return error_mark_node;
  	    }
  	  else
  	    {
*************** reshape_init_class (tree type, reshape_i
*** 5798,5805 ****
  	    return error_mark_node;
  
  	  if (TREE_CODE (d->cur->index) == FIELD_DECL)
! 	    /* We already reshaped this.  */
! 	    gcc_assert (d->cur->index == field);
  	  else if (TREE_CODE (d->cur->index) == IDENTIFIER_NODE)
  	    field = lookup_field_1 (type, d->cur->index, /*want_type=*/false);
  	  else
--- 5796,5813 ----
  	    return error_mark_node;
  
  	  if (TREE_CODE (d->cur->index) == FIELD_DECL)
! 	    {
! 	      /* We already reshaped this.  */
! 	      if (field != d->cur->index)
! 		{
! 		  tree id = DECL_NAME (d->cur->index);
! 		  gcc_assert (id);
! 		  gcc_checking_assert (lookup_field_1 (type, id,
! 						       /*want_type=*/false)
! 				       == d->cur->index);
! 		  field = d->cur->index;
! 		}
! 	    }
  	  else if (TREE_CODE (d->cur->index) == IDENTIFIER_NODE)
  	    field = lookup_field_1 (type, d->cur->index, /*want_type=*/false);
  	  else
*************** check_initializer (tree decl, tree init,
*** 6402,6408 ****
      }
  
    if (init_code
!       && (DECL_IN_AGGR_P (decl) && !DECL_VAR_DECLARED_INLINE_P (decl)))
      {
        static int explained = 0;
  
--- 6410,6418 ----
      }
  
    if (init_code
!       && (DECL_IN_AGGR_P (decl)
! 	  && DECL_INITIALIZED_IN_CLASS_P (decl)
! 	  && !DECL_VAR_DECLARED_INLINE_P (decl)))
      {
        static int explained = 0;
  
*************** find_decomp_class_base (location_t loc,
*** 7213,7219 ****
  {
    bool member_seen = false;
    for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
!     if (TREE_CODE (field) != FIELD_DECL || DECL_ARTIFICIAL (field))
        continue;
      else if (ret)
        return type;
--- 7223,7231 ----
  {
    bool member_seen = false;
    for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
!     if (TREE_CODE (field) != FIELD_DECL
! 	|| DECL_ARTIFICIAL (field)
! 	|| (DECL_C_BIT_FIELD (field) && !DECL_NAME (field)))
        continue;
      else if (ret)
        return type;
*************** find_decomp_class_base (location_t loc,
*** 7228,7236 ****
  	inform (DECL_SOURCE_LOCATION (field), "declared here");
  	return error_mark_node;
        }
!     else if (TREE_PRIVATE (field) || TREE_PROTECTED (field))
        {
! 	error_at (loc, "cannot decompose non-public member %qD of %qT",
  		  field, type);
  	inform (DECL_SOURCE_LOCATION (field),
  		TREE_PRIVATE (field)
--- 7240,7248 ----
  	inform (DECL_SOURCE_LOCATION (field), "declared here");
  	return error_mark_node;
        }
!     else if (!accessible_p (type, field, true))
        {
! 	error_at (loc, "cannot decompose inaccessible member %qD of %qT",
  		  field, type);
  	inform (DECL_SOURCE_LOCATION (field),
  		TREE_PRIVATE (field)
*************** find_decomp_class_base (location_t loc,
*** 7252,7258 ****
        tree t = find_decomp_class_base (loc, TREE_TYPE (base_binfo), ret);
        if (t == error_mark_node)
  	return error_mark_node;
!       if (t != NULL_TREE)
  	{
  	  if (ret == type)
  	    {
--- 7264,7270 ----
        tree t = find_decomp_class_base (loc, TREE_TYPE (base_binfo), ret);
        if (t == error_mark_node)
  	return error_mark_node;
!       if (t != NULL_TREE && t != ret)
  	{
  	  if (ret == type)
  	    {
*************** find_decomp_class_base (location_t loc,
*** 7263,7271 ****
  	    }
  	  else if (orig_ret != NULL_TREE)
  	    return t;
- 	  else if (ret == t)
- 	    /* OK, found the same base along another path.  We'll complain
- 	       in convert_to_base if it's ambiguous.  */;
  	  else if (ret != NULL_TREE)
  	    {
  	      error_at (loc, "cannot decompose class type %qT: its base "
--- 7275,7280 ----
*************** get_tuple_decomp_init (tree decl, unsign
*** 7341,7347 ****
  
    tree fns = lookup_qualified_name (TREE_TYPE (e), get_id,
  				    /*type*/false, /*complain*/false);
!   if (fns != error_mark_node)
      {
        fns = lookup_template_function (fns, targs);
        return build_new_method_call (e, fns, /*args*/NULL,
--- 7350,7378 ----
  
    tree fns = lookup_qualified_name (TREE_TYPE (e), get_id,
  				    /*type*/false, /*complain*/false);
!   bool use_member_get = false;
! 
!   /* To use a member get, member lookup must find at least one
!      declaration that is a function template
!      whose first template parameter is a non-type parameter.  */
!   for (tree iter = BASELINK_P (fns) ? BASELINK_FUNCTIONS (fns) : fns;
!        iter;
!        iter = OVL_NEXT (iter))
!     {
!       tree fn = OVL_CURRENT (iter);
!       if (TREE_CODE (fn) == TEMPLATE_DECL)
! 	{
! 	  tree tparms = DECL_TEMPLATE_PARMS (fn);
! 	  tree parm = TREE_VEC_ELT (INNERMOST_TEMPLATE_PARMS (tparms), 0);
! 	  if (TREE_CODE (TREE_VALUE (parm)) == PARM_DECL)
! 	    {
! 	      use_member_get = true;
! 	      break;
! 	    }
! 	}
!     }
! 
!   if (use_member_get)
      {
        fns = lookup_template_function (fns, targs);
        return build_new_method_call (e, fns, /*args*/NULL,
*************** cp_maybe_mangle_decomp (tree decl, tree
*** 7391,7396 ****
--- 7422,7428 ----
        for (unsigned int i = 0; i < count; i++, d = DECL_CHAIN (d))
  	v[count - i - 1] = d;
        SET_DECL_ASSEMBLER_NAME (decl, mangle_decomp (decl, v));
+       maybe_apply_pragma_weak (decl);
      }
  }
  
*************** cp_finish_decomp (tree decl, tree first,
*** 7466,7471 ****
--- 7498,7509 ----
        type = complete_type (TREE_TYPE (type));
        if (type == error_mark_node)
  	goto error_out;
+       if (!COMPLETE_TYPE_P (type))
+ 	{
+ 	  error_at (loc, "structured binding refers to incomplete type %qT",
+ 		    type);
+ 	  goto error_out;
+ 	}
      }
  
    tree eltype = NULL_TREE;
*************** cp_finish_decomp (tree decl, tree first,
*** 7640,7646 ****
  	  goto error_out;
  	}
        for (tree field = TYPE_FIELDS (btype); field; field = TREE_CHAIN (field))
! 	if (TREE_CODE (field) != FIELD_DECL || DECL_ARTIFICIAL (field))
  	  continue;
  	else
  	  eltscnt++;
--- 7678,7686 ----
  	  goto error_out;
  	}
        for (tree field = TYPE_FIELDS (btype); field; field = TREE_CHAIN (field))
! 	if (TREE_CODE (field) != FIELD_DECL
! 	    || DECL_ARTIFICIAL (field)
! 	    || (DECL_C_BIT_FIELD (field) && !DECL_NAME (field)))
  	  continue;
  	else
  	  eltscnt++;
*************** cp_finish_decomp (tree decl, tree first,
*** 7655,7661 ****
  	}
        unsigned int i = 0;
        for (tree field = TYPE_FIELDS (btype); field; field = TREE_CHAIN (field))
! 	if (TREE_CODE (field) != FIELD_DECL || DECL_ARTIFICIAL (field))
  	  continue;
  	else
  	  {
--- 7695,7703 ----
  	}
        unsigned int i = 0;
        for (tree field = TYPE_FIELDS (btype); field; field = TREE_CHAIN (field))
! 	if (TREE_CODE (field) != FIELD_DECL
! 	    || DECL_ARTIFICIAL (field)
! 	    || (DECL_C_BIT_FIELD (field) && !DECL_NAME (field)))
  	  continue;
  	else
  	  {
*************** compute_array_index_type (tree name, tre
*** 9517,9523 ****
        constant_expression_error (size);
  
        /* An array must have a positive number of elements.  */
!       if (tree_int_cst_lt (size, integer_zero_node))
  	{
  	  if (!(complain & tf_error))
  	    return error_mark_node;
--- 9559,9566 ----
        constant_expression_error (size);
  
        /* An array must have a positive number of elements.  */
!       tree signed_size = fold_convert (ssizetype, size);
!       if (tree_int_cst_lt (signed_size, integer_zero_node))
  	{
  	  if (!(complain & tf_error))
  	    return error_mark_node;
*************** grokdeclarator (const cp_declarator *dec
*** 10097,10102 ****
--- 10140,10147 ----
  						      declspecs->locations);
    if (typespec_loc == UNKNOWN_LOCATION)
      typespec_loc = declspecs->locations[ds_type_spec];
+   if (typespec_loc == UNKNOWN_LOCATION)
+     typespec_loc = input_location;
  
    /* Look inside a declarator for the name being declared
       and get it as a string, for an error message.  */
*************** grokdeclarator (const cp_declarator *dec
*** 10366,10372 ****
       suppress reports of deprecated items.  */
    if (type && TREE_DEPRECATED (type)
        && deprecated_state != DEPRECATED_SUPPRESS)
!     warn_deprecated_use (type, NULL_TREE);
    if (type && TREE_CODE (type) == TYPE_DECL)
      {
        typedef_decl = type;
--- 10411,10417 ----
       suppress reports of deprecated items.  */
    if (type && TREE_DEPRECATED (type)
        && deprecated_state != DEPRECATED_SUPPRESS)
!     cp_warn_deprecated_use (type);
    if (type && TREE_CODE (type) == TYPE_DECL)
      {
        typedef_decl = type;
*************** grokdeclarator (const cp_declarator *dec
*** 10374,10380 ****
        if (TREE_DEPRECATED (type)
  	  && DECL_ARTIFICIAL (typedef_decl)
  	  && deprecated_state != DEPRECATED_SUPPRESS)
! 	warn_deprecated_use (type, NULL_TREE);
      }
    /* No type at all: default to `int', and set DEFAULTED_INT
       because it was not a user-defined typedef.  */
--- 10419,10425 ----
        if (TREE_DEPRECATED (type)
  	  && DECL_ARTIFICIAL (typedef_decl)
  	  && deprecated_state != DEPRECATED_SUPPRESS)
! 	cp_warn_deprecated_use (type);
      }
    /* No type at all: default to `int', and set DEFAULTED_INT
       because it was not a user-defined typedef.  */
*************** grokdeclarator (const cp_declarator *dec
*** 11169,11176 ****
  		  explicitp = 2;
  	      }
  
! 	    arg_types = grokparms (declarator->u.function.parameters,
! 				   &parms);
  
  	    if (inner_declarator
  		&& inner_declarator->kind == cdk_id
--- 11214,11231 ----
  		  explicitp = 2;
  	      }
  
! 	    tree pushed_scope = NULL_TREE;
! 	    if (funcdecl_p
! 		&& decl_context != FIELD
! 		&& inner_declarator->u.id.qualifying_scope
! 		&& CLASS_TYPE_P (inner_declarator->u.id.qualifying_scope))
! 	      pushed_scope
! 		= push_scope (inner_declarator->u.id.qualifying_scope);
! 
! 	    arg_types = grokparms (declarator->u.function.parameters, &parms);
! 
! 	    if (pushed_scope)
! 	      pop_scope (pushed_scope);
  
  	    if (inner_declarator
  		&& inner_declarator->kind == cdk_id
*************** check_default_argument (tree decl, tree
*** 12556,12562 ****
       A default argument expression is implicitly converted to the
       parameter type.  */
    ++cp_unevaluated_operand;
!   perform_implicit_conversion_flags (decl_type, arg, complain,
  				     LOOKUP_IMPLICIT);
    --cp_unevaluated_operand;
  
--- 12611,12619 ----
       A default argument expression is implicitly converted to the
       parameter type.  */
    ++cp_unevaluated_operand;
!   /* Avoid digest_init clobbering the initializer.  */
!   tree carg = BRACE_ENCLOSED_INITIALIZER_P (arg) ? unshare_expr (arg): arg;
!   perform_implicit_conversion_flags (decl_type, carg, complain,
  				     LOOKUP_IMPLICIT);
    --cp_unevaluated_operand;
  
*************** grokparms (tree parmlist, tree *parms)
*** 12685,12691 ****
  	    {
  	      tree deptype = type_is_deprecated (type);
  	      if (deptype)
! 		warn_deprecated_use (deptype, NULL_TREE);
  	    }
  
  	  /* Top-level qualifiers on the parameters are
--- 12742,12748 ----
  	    {
  	      tree deptype = type_is_deprecated (type);
  	      if (deptype)
! 		cp_warn_deprecated_use (deptype);
  	    }
  
  	  /* Top-level qualifiers on the parameters are
diff -Nrcpad gcc-7.3.0/gcc/cp/decl2.c gcc-7.4.0/gcc/cp/decl2.c
*** gcc-7.3.0/gcc/cp/decl2.c	Fri Dec 15 22:10:40 2017
--- gcc-7.4.0/gcc/cp/decl2.c	Wed May  9 02:34:03 2018
*************** cp_check_const_attributes (tree attribut
*** 1360,1366 ****
  	{
  	  tree expr = TREE_VALUE (arg);
  	  if (EXPR_P (expr))
! 	    TREE_VALUE (arg) = maybe_constant_value (expr);
  	}
      }
  }
--- 1360,1366 ----
  	{
  	  tree expr = TREE_VALUE (arg);
  	  if (EXPR_P (expr))
! 	    TREE_VALUE (arg) = fold_non_dependent_expr (expr);
  	}
      }
  }
*************** vague_linkage_p (tree decl)
*** 1829,1838 ****
  {
    if (!TREE_PUBLIC (decl))
      {
!       /* maybe_thunk_body clears TREE_PUBLIC on the maybe-in-charge 'tor
! 	 variants, check one of the "clones" for the real linkage.  */
        if ((DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (decl)
  	   || DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (decl))
  	  && DECL_CHAIN (decl)
  	  && DECL_CLONED_FUNCTION (DECL_CHAIN (decl)))
  	return vague_linkage_p (DECL_CHAIN (decl));
--- 1829,1841 ----
  {
    if (!TREE_PUBLIC (decl))
      {
!       /* maybe_thunk_body clears TREE_PUBLIC and DECL_ABSTRACT_P on the
! 	 maybe-in-charge 'tor variants; in that case we need to check one of
! 	 the "clones" for the real linkage.  But only in that case; before
! 	 maybe_clone_body we haven't yet copied the linkage to the clones.  */
        if ((DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (decl)
  	   || DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (decl))
+ 	  && !DECL_ABSTRACT_P (decl)
  	  && DECL_CHAIN (decl)
  	  && DECL_CLONED_FUNCTION (DECL_CHAIN (decl)))
  	return vague_linkage_p (DECL_CHAIN (decl));
*************** determine_visibility (tree decl)
*** 2310,2320 ****
  	    }
  
  	  /* Local classes in templates have CLASSTYPE_USE_TEMPLATE set,
! 	     but have no TEMPLATE_INFO.  Their containing template
! 	     function does, and the local class could be constrained
! 	     by that.  */
! 	  if (template_decl)
! 	    template_decl = fn;
  	}
        else if (VAR_P (decl) && DECL_TINFO_P (decl)
  	       && flag_visibility_ms_compat)
--- 2313,2320 ----
  	    }
  
  	  /* Local classes in templates have CLASSTYPE_USE_TEMPLATE set,
! 	     but have no TEMPLATE_INFO, so don't try to check it.  */
! 	  template_decl = NULL_TREE;
  	}
        else if (VAR_P (decl) && DECL_TINFO_P (decl)
  	       && flag_visibility_ms_compat)
diff -Nrcpad gcc-7.3.0/gcc/cp/error.c gcc-7.4.0/gcc/cp/error.c
*** gcc-7.3.0/gcc/cp/error.c	Fri Oct 27 20:34:22 2017
--- gcc-7.4.0/gcc/cp/error.c	Tue Apr 10 14:29:52 2018
*************** dump_expr (cxx_pretty_printer *pp, tree
*** 2695,2700 ****
--- 2695,2701 ----
      case INTEGER_TYPE:
      case COMPLEX_TYPE:
      case VECTOR_TYPE:
+     case DECLTYPE_TYPE:
        pp_type_specifier_seq (pp, t);
        break;
  
diff -Nrcpad gcc-7.3.0/gcc/cp/except.c gcc-7.4.0/gcc/cp/except.c
*** gcc-7.3.0/gcc/cp/except.c	Mon Mar 20 15:02:09 2017
--- gcc-7.4.0/gcc/cp/except.c	Fri Feb 16 14:12:42 2018
*************** build_noexcept_spec (tree expr, int comp
*** 1218,1223 ****
--- 1218,1227 ----
      {
        gcc_assert (processing_template_decl
  		  || TREE_CODE (expr) == DEFERRED_NOEXCEPT);
+       if (TREE_CODE (expr) != DEFERRED_NOEXCEPT)
+ 	/* Avoid problems with a function type built with a dependent typedef
+ 	   being reused in another scope (c++/84045).  */
+ 	expr = strip_typedefs_expr (expr);
        return build_tree_list (expr, NULL_TREE);
      }
  }
diff -Nrcpad gcc-7.3.0/gcc/cp/init.c gcc-7.4.0/gcc/cp/init.c
*** gcc-7.3.0/gcc/cp/init.c	Thu Apr 20 18:36:27 2017
--- gcc-7.4.0/gcc/cp/init.c	Fri Jun 22 21:27:41 2018
*************** build_aggr_init (tree exp, tree init, in
*** 1632,1637 ****
--- 1632,1638 ----
        if (VAR_P (exp) && DECL_DECOMPOSITION_P (exp))
  	{
  	  from_array = 1;
+ 	  init = mark_rvalue_use (init);
  	  if (init && DECL_P (init)
  	      && !(flags & LOOKUP_ONLYCONVERTING))
  	    {
diff -Nrcpad gcc-7.3.0/gcc/cp/lambda.c gcc-7.4.0/gcc/cp/lambda.c
*** gcc-7.3.0/gcc/cp/lambda.c	Thu Jul 27 09:36:37 2017
--- gcc-7.4.0/gcc/cp/lambda.c	Tue Feb 27 02:47:25 2018
*************** is_capture_proxy (tree decl)
*** 262,267 ****
--- 262,268 ----
    return (VAR_P (decl)
  	  && DECL_HAS_VALUE_EXPR_P (decl)
  	  && !DECL_ANON_UNION_VAR_P (decl)
+ 	  && !DECL_DECOMPOSITION_P (decl)
  	  && LAMBDA_FUNCTION_P (DECL_CONTEXT (decl)));
  }
  
*************** lambda_expr_this_capture (tree lambda, b
*** 712,722 ****
                                      lambda_stack);
  
  	  if (LAMBDA_EXPR_EXTRA_SCOPE (tlambda)
  	      && TREE_CODE (LAMBDA_EXPR_EXTRA_SCOPE (tlambda)) == FIELD_DECL)
  	    {
  	      /* In an NSDMI, we don't have a function to look up the decl in,
  		 but the fake 'this' pointer that we're using for parsing is
! 		 in scope_chain.  */
  	      init = scope_chain->x_current_class_ptr;
  	      gcc_checking_assert
  		(init && (TREE_TYPE (TREE_TYPE (init))
--- 713,726 ----
                                      lambda_stack);
  
  	  if (LAMBDA_EXPR_EXTRA_SCOPE (tlambda)
+ 	      && !COMPLETE_TYPE_P (LAMBDA_EXPR_CLOSURE (tlambda))
  	      && TREE_CODE (LAMBDA_EXPR_EXTRA_SCOPE (tlambda)) == FIELD_DECL)
  	    {
  	      /* In an NSDMI, we don't have a function to look up the decl in,
  		 but the fake 'this' pointer that we're using for parsing is
! 		 in scope_chain.  But if the closure is already complete, we're
! 	         in an instantiation of a generic lambda, and the fake 'this'
! 	         is gone.  */
  	      init = scope_chain->x_current_class_ptr;
  	      gcc_checking_assert
  		(init && (TREE_TYPE (TREE_TYPE (init))
*************** maybe_add_lambda_conv_op (tree type)
*** 1072,1078 ****
        }
    }
  
- 
    if (generic_lambda_p)
      {
        if (decltype_call)
--- 1076,1081 ----
diff -Nrcpad gcc-7.3.0/gcc/cp/method.c gcc-7.4.0/gcc/cp/method.c
*** gcc-7.3.0/gcc/cp/method.c	Wed Aug  9 20:17:47 2017
--- gcc-7.4.0/gcc/cp/method.c	Mon Feb 26 06:09:07 2018
*************** constructible_expr (tree to, tree from)
*** 1165,1170 ****
--- 1165,1171 ----
      {
        tree ctype = to;
        vec<tree, va_gc> *args = NULL;
+       cp_unevaluated cp_uneval_guard;
        if (TREE_CODE (to) != REFERENCE_TYPE)
  	to = cp_build_reference_type (to, /*rval*/false);
        tree ob = build_stub_object (to);
*************** static tree
*** 1430,1436 ****
  synthesized_method_base_walk (tree binfo, tree base_binfo, 
  			      int quals, bool copy_arg_p,
  			      bool move_p, bool ctor_p,
! 			      tree inheriting_ctor, tree inherited_parms,
  			      tree fnname, int flags, bool diag,
  			      tree *spec_p, bool *trivial_p,
  			      bool *deleted_p, bool *constexpr_p)
--- 1431,1437 ----
  synthesized_method_base_walk (tree binfo, tree base_binfo, 
  			      int quals, bool copy_arg_p,
  			      bool move_p, bool ctor_p,
! 			      tree *inheriting_ctor, tree inherited_parms,
  			      tree fnname, int flags, bool diag,
  			      tree *spec_p, bool *trivial_p,
  			      bool *deleted_p, bool *constexpr_p)
*************** synthesized_method_base_walk (tree binfo
*** 1441,1448 ****
  
    if (copy_arg_p)
      argtype = build_stub_type (BINFO_TYPE (base_binfo), quals, move_p);
!   else if ((inherited_binfo
! 	    = binfo_inherited_from (binfo, base_binfo, inheriting_ctor)))
      {
        argtype = inherited_parms;
        /* Don't check access on the inherited constructor.  */
--- 1442,1450 ----
  
    if (copy_arg_p)
      argtype = build_stub_type (BINFO_TYPE (base_binfo), quals, move_p);
!   else if (inheriting_ctor
! 	   && (inherited_binfo
! 	       = binfo_inherited_from (binfo, base_binfo, *inheriting_ctor)))
      {
        argtype = inherited_parms;
        /* Don't check access on the inherited constructor.  */
*************** synthesized_method_base_walk (tree binfo
*** 1464,1469 ****
--- 1466,1477 ----
    if (defer != dk_no_deferred)
      pop_deferring_access_checks ();
  
+   /* Replace an inherited template with the appropriate specialization.  */
+   if (inherited_binfo && rval
+       && DECL_P (*inheriting_ctor) && DECL_P (rval)
+       && DECL_CONTEXT (*inheriting_ctor) == DECL_CONTEXT (rval))
+     *inheriting_ctor = DECL_CLONED_FUNCTION (rval);
+ 
    process_subob_fn (rval, spec_p, trivial_p, deleted_p,
  		    constexpr_p, diag, BINFO_TYPE (base_binfo));
    if (ctor_p &&
*************** static void
*** 1498,1504 ****
  synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p,
  			 tree *spec_p, bool *trivial_p, bool *deleted_p,
  			 bool *constexpr_p, bool diag,
! 			 tree inheriting_ctor, tree inherited_parms)
  {
    tree binfo, base_binfo, fnname;
    int i;
--- 1506,1512 ----
  synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p,
  			 tree *spec_p, bool *trivial_p, bool *deleted_p,
  			 bool *constexpr_p, bool diag,
! 			 tree *inheriting_ctor, tree inherited_parms)
  {
    tree binfo, base_binfo, fnname;
    int i;
*************** synthesized_method_walk (tree ctype, spe
*** 1553,1559 ****
      }
  
    gcc_assert ((sfk == sfk_inheriting_constructor)
! 	      == (inheriting_ctor != NULL_TREE));
  
    /* If that user-written default constructor would satisfy the
       requirements of a constexpr constructor (7.1.5), the
--- 1561,1567 ----
      }
  
    gcc_assert ((sfk == sfk_inheriting_constructor)
! 	      == (inheriting_ctor && *inheriting_ctor != NULL_TREE));
  
    /* If that user-written default constructor would satisfy the
       requirements of a constexpr constructor (7.1.5), the
*************** synthesized_method_walk (tree ctype, spe
*** 1628,1634 ****
    tree scope = push_scope (ctype);
  
    int flags = LOOKUP_NORMAL | LOOKUP_SPECULATIVE;
!   if (!inheriting_ctor)
      flags |= LOOKUP_DEFAULTED;
  
    tsubst_flags_t complain = diag ? tf_warning_or_error : tf_none;
--- 1636,1642 ----
    tree scope = push_scope (ctype);
  
    int flags = LOOKUP_NORMAL | LOOKUP_SPECULATIVE;
!   if (sfk != sfk_inheriting_constructor)
      flags |= LOOKUP_DEFAULTED;
  
    tsubst_flags_t complain = diag ? tf_warning_or_error : tf_none;
*************** get_defaulted_eh_spec (tree decl)
*** 1731,1739 ****
    tree parm_type = TREE_VALUE (parms);
    bool const_p = CP_TYPE_CONST_P (non_reference (parm_type));
    tree spec = empty_except_spec;
    synthesized_method_walk (ctype, sfk, const_p, &spec, NULL, NULL,
! 			   NULL, false, DECL_INHERITED_CTOR (decl),
! 			   parms);
    return spec;
  }
  
--- 1739,1747 ----
    tree parm_type = TREE_VALUE (parms);
    bool const_p = CP_TYPE_CONST_P (non_reference (parm_type));
    tree spec = empty_except_spec;
+   tree inh = DECL_INHERITED_CTOR (decl);
    synthesized_method_walk (ctype, sfk, const_p, &spec, NULL, NULL,
! 			   NULL, false, &inh, parms);
    return spec;
  }
  
*************** maybe_explain_implicit_delete (tree decl
*** 1810,1819 ****
  	  tree raises = NULL_TREE;
  	  bool deleted_p = false;
  	  tree scope = push_scope (ctype);
  
  	  synthesized_method_walk (ctype, sfk, const_p,
  				   &raises, NULL, &deleted_p, NULL, false,
! 				   DECL_INHERITED_CTOR (decl), parms);
  	  if (deleted_p)
  	    {
  	      inform (DECL_SOURCE_LOCATION (decl),
--- 1818,1828 ----
  	  tree raises = NULL_TREE;
  	  bool deleted_p = false;
  	  tree scope = push_scope (ctype);
+ 	  tree inh = DECL_INHERITED_CTOR (decl);
  
  	  synthesized_method_walk (ctype, sfk, const_p,
  				   &raises, NULL, &deleted_p, NULL, false,
! 				   &inh, parms);
  	  if (deleted_p)
  	    {
  	      inform (DECL_SOURCE_LOCATION (decl),
*************** maybe_explain_implicit_delete (tree decl
*** 1821,1827 ****
  		      "definition would be ill-formed:", decl);
  	      synthesized_method_walk (ctype, sfk, const_p,
  				       NULL, NULL, NULL, NULL, true,
! 				       DECL_INHERITED_CTOR (decl), parms);
  	    }
  	  else if (!comp_except_specs
  		   (TYPE_RAISES_EXCEPTIONS (TREE_TYPE (decl)),
--- 1830,1836 ----
  		      "definition would be ill-formed:", decl);
  	      synthesized_method_walk (ctype, sfk, const_p,
  				       NULL, NULL, NULL, NULL, true,
! 				       &inh, parms);
  	    }
  	  else if (!comp_except_specs
  		   (TYPE_RAISES_EXCEPTIONS (TREE_TYPE (decl)),
*************** explain_implicit_non_constexpr (tree dec
*** 1850,1860 ****
  {
    tree parm_type = TREE_VALUE (FUNCTION_FIRST_USER_PARMTYPE (decl));
    bool const_p = CP_TYPE_CONST_P (non_reference (parm_type));
    bool dummy;
    synthesized_method_walk (DECL_CLASS_CONTEXT (decl),
  			   special_function_p (decl), const_p,
  			   NULL, NULL, NULL, &dummy, true,
! 			   DECL_INHERITED_CTOR (decl),
  			   FUNCTION_FIRST_USER_PARMTYPE (decl));
  }
  
--- 1859,1870 ----
  {
    tree parm_type = TREE_VALUE (FUNCTION_FIRST_USER_PARMTYPE (decl));
    bool const_p = CP_TYPE_CONST_P (non_reference (parm_type));
+   tree inh = DECL_INHERITED_CTOR (decl);
    bool dummy;
    synthesized_method_walk (DECL_CLASS_CONTEXT (decl),
  			   special_function_p (decl), const_p,
  			   NULL, NULL, NULL, &dummy, true,
! 			   &inh,
  			   FUNCTION_FIRST_USER_PARMTYPE (decl));
  }
  
*************** deduce_inheriting_ctor (tree decl)
*** 1869,1890 ****
    gcc_assert (DECL_INHERITED_CTOR (decl));
    tree spec;
    bool trivial, constexpr_, deleted;
    synthesized_method_walk (DECL_CONTEXT (decl), sfk_inheriting_constructor,
  			   false, &spec, &trivial, &deleted, &constexpr_,
  			   /*diag*/false,
! 			   DECL_INHERITED_CTOR (decl),
  			   FUNCTION_FIRST_USER_PARMTYPE (decl));
    if (TREE_CODE (inherited_ctor_binfo (decl)) != TREE_BINFO)
      /* Inherited the same constructor from different base subobjects.  */
      deleted = true;
    DECL_DELETED_FN (decl) = deleted;
    TREE_TYPE (decl) = build_exception_variant (TREE_TYPE (decl), spec);
  
    tree clone;
    FOR_EACH_CLONE (clone, decl)
      {
        DECL_DELETED_FN (clone) = deleted;
        TREE_TYPE (clone) = build_exception_variant (TREE_TYPE (clone), spec);
      }
  }
  
--- 1879,1903 ----
    gcc_assert (DECL_INHERITED_CTOR (decl));
    tree spec;
    bool trivial, constexpr_, deleted;
+   tree inh = DECL_INHERITED_CTOR (decl);
    synthesized_method_walk (DECL_CONTEXT (decl), sfk_inheriting_constructor,
  			   false, &spec, &trivial, &deleted, &constexpr_,
  			   /*diag*/false,
! 			   &inh,
  			   FUNCTION_FIRST_USER_PARMTYPE (decl));
    if (TREE_CODE (inherited_ctor_binfo (decl)) != TREE_BINFO)
      /* Inherited the same constructor from different base subobjects.  */
      deleted = true;
    DECL_DELETED_FN (decl) = deleted;
    TREE_TYPE (decl) = build_exception_variant (TREE_TYPE (decl), spec);
+   SET_DECL_INHERITED_CTOR (decl, inh);
  
    tree clone;
    FOR_EACH_CLONE (clone, decl)
      {
        DECL_DELETED_FN (clone) = deleted;
        TREE_TYPE (clone) = build_exception_variant (TREE_TYPE (clone), spec);
+       SET_DECL_INHERITED_CTOR (clone, inh);
      }
  }
  
*************** implicitly_declare_fn (special_function_
*** 1999,2010 ****
        raises = unevaluated_noexcept_spec ();
        synthesized_method_walk (type, kind, const_p, NULL, &trivial_p,
  			       &deleted_p, &constexpr_p, false,
! 			       inherited_ctor, inherited_parms);
      }
    else
      synthesized_method_walk (type, kind, const_p, &raises, &trivial_p,
  			     &deleted_p, &constexpr_p, false,
! 			     inherited_ctor, inherited_parms);
    /* Don't bother marking a deleted constructor as constexpr.  */
    if (deleted_p)
      constexpr_p = false;
--- 2012,2023 ----
        raises = unevaluated_noexcept_spec ();
        synthesized_method_walk (type, kind, const_p, NULL, &trivial_p,
  			       &deleted_p, &constexpr_p, false,
! 			       &inherited_ctor, inherited_parms);
      }
    else
      synthesized_method_walk (type, kind, const_p, &raises, &trivial_p,
  			     &deleted_p, &constexpr_p, false,
! 			     &inherited_ctor, inherited_parms);
    /* Don't bother marking a deleted constructor as constexpr.  */
    if (deleted_p)
      constexpr_p = false;
*************** implicitly_declare_fn (special_function_
*** 2120,2126 ****
        input_location = DECL_SOURCE_LOCATION (fn);
        synthesized_method_walk (type, kind, const_p,
  			       NULL, NULL, NULL, NULL, true,
! 			       NULL_TREE, NULL_TREE);
        input_location = loc;
      }
  
--- 2133,2139 ----
        input_location = DECL_SOURCE_LOCATION (fn);
        synthesized_method_walk (type, kind, const_p,
  			       NULL, NULL, NULL, NULL, true,
! 			       NULL, NULL_TREE);
        input_location = loc;
      }
  
diff -Nrcpad gcc-7.3.0/gcc/cp/name-lookup.c gcc-7.4.0/gcc/cp/name-lookup.c
*** gcc-7.3.0/gcc/cp/name-lookup.c	Thu Jun 29 16:46:29 2017
--- gcc-7.4.0/gcc/cp/name-lookup.c	Fri Jun 22 21:03:38 2018
*************** handle_namespace_attrs (tree ns, tree at
*** 3684,3689 ****
--- 3684,3692 ----
    tree d;
    bool saw_vis = false;
  
+   if (attributes == error_mark_node)
+     return false;
+ 
    for (d = attributes; d; d = TREE_CHAIN (d))
      {
        tree name = get_attribute_name (d);
diff -Nrcpad gcc-7.3.0/gcc/cp/optimize.c gcc-7.4.0/gcc/cp/optimize.c
*** gcc-7.3.0/gcc/cp/optimize.c	Fri Mar 10 15:33:04 2017
--- gcc-7.4.0/gcc/cp/optimize.c	Tue Oct 23 15:06:17 2018
*************** update_cloned_parm (tree parm, tree clon
*** 46,51 ****
--- 46,53 ----
    /* We may have taken its address.  */
    TREE_ADDRESSABLE (cloned_parm) = TREE_ADDRESSABLE (parm);
  
+   DECL_BY_REFERENCE (cloned_parm) = DECL_BY_REFERENCE (parm);
+ 
    /* The definition might have different constness.  */
    TREE_READONLY (cloned_parm) = TREE_READONLY (parm);
  
diff -Nrcpad gcc-7.3.0/gcc/cp/parser.c gcc-7.4.0/gcc/cp/parser.c
*** gcc-7.3.0/gcc/cp/parser.c	Sat Dec 16 00:40:14 2017
--- gcc-7.4.0/gcc/cp/parser.c	Sat Aug 11 11:02:22 2018
*************** cp_parser_postfix_open_square_expression
*** 7252,7257 ****
--- 7252,7311 ----
    return postfix_expression;
  }
  
+ /* A subroutine of cp_parser_postfix_dot_deref_expression.  Handle dot
+    dereference of incomplete type, returns true if error_mark_node should
+    be returned from caller, otherwise adjusts *SCOPE, *POSTFIX_EXPRESSION
+    and *DEPENDENT_P.  */
+ 
+ bool
+ cp_parser_dot_deref_incomplete (tree *scope, cp_expr *postfix_expression,
+ 				bool *dependent_p)
+ {
+   /* In a template, be permissive by treating an object expression
+      of incomplete type as dependent (after a pedwarn).  */
+   diagnostic_t kind = (processing_template_decl
+ 		       && MAYBE_CLASS_TYPE_P (*scope) ? DK_PEDWARN : DK_ERROR);
+ 
+   switch (TREE_CODE (*postfix_expression))
+     {
+     case CAST_EXPR:
+     case REINTERPRET_CAST_EXPR:
+     case CONST_CAST_EXPR:
+     case STATIC_CAST_EXPR:
+     case DYNAMIC_CAST_EXPR:
+     case IMPLICIT_CONV_EXPR:
+     case VIEW_CONVERT_EXPR:
+     case NON_LVALUE_EXPR:
+       kind = DK_ERROR;
+       break;
+     case OVERLOAD:
+       /* Don't emit any diagnostic for OVERLOADs.  */
+       kind = DK_IGNORED;
+       break;
+     default:
+       /* Avoid clobbering e.g. DECLs.  */
+       if (!EXPR_P (*postfix_expression))
+ 	kind = DK_ERROR;
+       break;
+     }
+ 
+   if (kind == DK_IGNORED)
+     return false;
+ 
+   location_t exploc = location_of (*postfix_expression);
+   cxx_incomplete_type_diagnostic (exploc, *postfix_expression, *scope, kind);
+   if (!MAYBE_CLASS_TYPE_P (*scope))
+     return true;
+   if (kind == DK_ERROR)
+     *scope = *postfix_expression = error_mark_node;
+   else if (processing_template_decl)
+     {
+       *dependent_p = true;
+       *scope = TREE_TYPE (*postfix_expression) = NULL_TREE;
+     }
+   return false;
+ }
+ 
  /* A subroutine of cp_parser_postfix_expression that also gets hijacked
     by cp_parser_builtin_offsetof.  We're looking for
  
*************** cp_parser_postfix_dot_deref_expression (
*** 7310,7338 ****
        if (postfix_expression != current_class_ref
  	  && scope != error_mark_node
  	  && !(processing_template_decl
! 	       && current_class_type
! 	       && (same_type_ignoring_top_level_qualifiers_p
! 		   (scope, current_class_type))))
  	{
  	  scope = complete_type (scope);
  	  if (!COMPLETE_TYPE_P (scope)
! 	      /* Avoid clobbering e.g. OVERLOADs or DECLs.  */
! 	      && EXPR_P (postfix_expression))
! 	    {
! 	      /* In a template, be permissive by treating an object expression
! 		 of incomplete type as dependent (after a pedwarn).  */
! 	      diagnostic_t kind = (processing_template_decl
! 				   ? DK_PEDWARN
! 				   : DK_ERROR);
! 	      cxx_incomplete_type_diagnostic
! 		(location_of (postfix_expression),
! 		 postfix_expression, scope, kind);
! 	      if (processing_template_decl)
! 		{
! 		  dependent_p = true;
! 		  scope = TREE_TYPE (postfix_expression) = NULL_TREE;
! 		}
! 	    }
  	}
  
        if (!dependent_p)
--- 7364,7376 ----
        if (postfix_expression != current_class_ref
  	  && scope != error_mark_node
  	  && !(processing_template_decl
! 	       && currently_open_class (scope)))
  	{
  	  scope = complete_type (scope);
  	  if (!COMPLETE_TYPE_P (scope)
! 	      && cp_parser_dot_deref_incomplete (&scope, &postfix_expression,
! 						 &dependent_p))
! 	    return error_mark_node;
  	}
  
        if (!dependent_p)
*************** cp_parser_binary_expression (cp_parser*
*** 9030,9041 ****
        if (no_toplevel_fold_p
  	  && lookahead_prec <= current.prec
  	  && sp == stack)
! 	current.lhs = build2_loc (combined_loc,
! 				  current.tree_type,
! 				  TREE_CODE_CLASS (current.tree_type)
! 				  == tcc_comparison
! 				  ? boolean_type_node : TREE_TYPE (current.lhs),
! 				  current.lhs, rhs);
        else
          {
            current.lhs = build_x_binary_op (combined_loc, current.tree_type,
--- 9068,9087 ----
        if (no_toplevel_fold_p
  	  && lookahead_prec <= current.prec
  	  && sp == stack)
! 	{
! 	  if (current.lhs == error_mark_node || rhs == error_mark_node)
! 	    current.lhs = error_mark_node;
! 	  else
! 	    {
! 	      current.lhs
! 		= build_min (current.tree_type,
! 			     TREE_CODE_CLASS (current.tree_type)
! 			     == tcc_comparison
! 			     ? boolean_type_node : TREE_TYPE (current.lhs),
! 			     current.lhs.get_value (), rhs.get_value ());
! 	      SET_EXPR_LOCATION (current.lhs, combined_loc);
! 	    }
! 	}
        else
          {
            current.lhs = build_x_binary_op (combined_loc, current.tree_type,
*************** cp_parser_statement (cp_parser* parser,
*** 10743,10748 ****
--- 10789,10806 ----
  		"attributes at the beginning of statement are ignored");
  }
  
+ /* Append ATTR to attribute list ATTRS.  */
+ 
+ static tree
+ attr_chainon (tree attrs, tree attr)
+ {
+   if (attrs == error_mark_node)
+     return error_mark_node;
+   if (attr == error_mark_node)
+     return error_mark_node;
+   return chainon (attrs, attr);
+ }
+ 
  /* Parse the label for a labeled-statement, i.e.
  
     identifier :
*************** cp_parser_label_for_labeled_statement (c
*** 10862,10868 ****
        else if (!cp_parser_parse_definitely (parser))
  	;
        else
! 	attributes = chainon (attributes, attrs);
      }
  
    if (attributes != NULL_TREE)
--- 10920,10926 ----
        else if (!cp_parser_parse_definitely (parser))
  	;
        else
! 	attributes = attr_chainon (attributes, attrs);
      }
  
    if (attributes != NULL_TREE)
*************** cp_parser_perform_range_for_lookup (tree
*** 11798,11804 ****
  				  /*protect=*/2, /*want_type=*/false,
  				  tf_warning_or_error);
  
!       if (member_begin != NULL_TREE || member_end != NULL_TREE)
  	{
  	  /* Use the member functions.  */
  	  if (member_begin != NULL_TREE)
--- 11856,11862 ----
  				  /*protect=*/2, /*want_type=*/false,
  				  tf_warning_or_error);
  
!       if (member_begin != NULL_TREE && member_end != NULL_TREE)
  	{
  	  /* Use the member functions.  */
  	  if (member_begin != NULL_TREE)
*************** cp_parser_init_statement (cp_parser* par
*** 12043,12054 ****
  	  cp_lexer_consume_token (parser->lexer);
  	  is_range_for = true;
  	  if (cxx_dialect < cxx11)
! 	    {
! 	      pedwarn (cp_lexer_peek_token (parser->lexer)->location, 0,
! 		       "range-based %<for%> loops only available with "
! 		       "-std=c++11 or -std=gnu++11");
! 	      *decl = error_mark_node;
! 	    }
  	}
        else
  	  /* The ';' is not consumed yet because we told
--- 12101,12109 ----
  	  cp_lexer_consume_token (parser->lexer);
  	  is_range_for = true;
  	  if (cxx_dialect < cxx11)
! 	    pedwarn (cp_lexer_peek_token (parser->lexer)->location, 0,
! 		     "range-based %<for%> loops only available with "
! 		     "-std=c++11 or -std=gnu++11");
  	}
        else
  	  /* The ';' is not consumed yet because we told
*************** cp_parser_decl_specifier_seq (cp_parser*
*** 13194,13201 ****
  		  else
  		    {
  		      decl_specs->std_attributes
! 			= chainon (decl_specs->std_attributes,
! 				   attrs);
  		      if (decl_specs->locations[ds_std_attribute] == 0)
  			decl_specs->locations[ds_std_attribute] = token->location;
  		    }
--- 13249,13255 ----
  		  else
  		    {
  		      decl_specs->std_attributes
! 			= attr_chainon (decl_specs->std_attributes, attrs);
  		      if (decl_specs->locations[ds_std_attribute] == 0)
  			decl_specs->locations[ds_std_attribute] = token->location;
  		    }
*************** cp_parser_decl_specifier_seq (cp_parser*
*** 13203,13211 ****
  		}
  	    }
  
! 	    decl_specs->attributes
! 	      = chainon (decl_specs->attributes,
! 			 attrs);
  	  if (decl_specs->locations[ds_attribute] == 0)
  	    decl_specs->locations[ds_attribute] = token->location;
  	  continue;
--- 13257,13264 ----
  		}
  	    }
  
! 	  decl_specs->attributes
! 	    = attr_chainon (decl_specs->attributes, attrs);
  	  if (decl_specs->locations[ds_attribute] == 0)
  	    decl_specs->locations[ds_attribute] = token->location;
  	  continue;
*************** cp_parser_decltype_expr (cp_parser *pars
*** 13688,13693 ****
--- 13741,13750 ----
  	expr = cp_parser_lookup_name_simple (parser, expr,
  					     id_expr_start_token->location);
  
+       if (expr && TREE_CODE (expr) == TEMPLATE_DECL)
+ 	/* A template without args is not a complete id-expression.  */
+ 	expr = error_mark_node;
+ 
        if (expr
            && expr != error_mark_node
            && TREE_CODE (expr) != TYPE_DECL
*************** cp_parser_decltype_expr (cp_parser *pars
*** 13753,13758 ****
--- 13810,13818 ----
           expression.  */
        cp_parser_abort_tentative_parse (parser);
  
+       /* Commit to the tentative_firewall so we get syntax errors.  */
+       cp_parser_commit_to_tentative_parse (parser);
+ 
        /* Parse a full expression.  */
        expr = cp_parser_expression (parser, /*pidk=*/NULL, /*cast_p=*/false,
  				   /*decltype_p=*/true);
*************** cp_parser_namespace_definition (cp_parse
*** 18220,18226 ****
    if (post_ident_attribs)
      {
        if (attribs)
!         attribs = chainon (attribs, post_ident_attribs);
        else
          attribs = post_ident_attribs;
      }
--- 18280,18286 ----
    if (post_ident_attribs)
      {
        if (attribs)
!         attribs = attr_chainon (attribs, post_ident_attribs);
        else
          attribs = post_ident_attribs;
      }
*************** cp_parser_init_declarator (cp_parser* pa
*** 19394,19400 ****
        decl = grokfield (declarator, decl_specifiers,
  			initializer, !is_non_constant_init,
  			/*asmspec=*/NULL_TREE,
! 			chainon (attributes, prefix_attributes));
        if (decl && TREE_CODE (decl) == FUNCTION_DECL)
  	cp_parser_save_default_args (parser, decl);
        cp_finalize_omp_declare_simd (parser, decl);
--- 19454,19460 ----
        decl = grokfield (declarator, decl_specifiers,
  			initializer, !is_non_constant_init,
  			/*asmspec=*/NULL_TREE,
! 			attr_chainon (attributes, prefix_attributes));
        if (decl && TREE_CODE (decl) == FUNCTION_DECL)
  	cp_parser_save_default_args (parser, decl);
        cp_finalize_omp_declare_simd (parser, decl);
*************** cp_parser_type_specifier_seq (cp_parser*
*** 20789,20797 ****
        /* Check for attributes first.  */
        if (cp_next_tokens_can_be_attribute_p (parser))
  	{
! 	  type_specifier_seq->attributes =
! 	    chainon (type_specifier_seq->attributes,
! 		     cp_parser_attributes_opt (parser));
  	  continue;
  	}
  
--- 20849,20857 ----
        /* Check for attributes first.  */
        if (cp_next_tokens_can_be_attribute_p (parser))
  	{
! 	  type_specifier_seq->attributes
! 	    = attr_chainon (type_specifier_seq->attributes,
! 			    cp_parser_attributes_opt (parser));
  	  continue;
  	}
  
*************** cp_parser_parameter_declaration_clause (
*** 20904,20910 ****
  
    if (!processing_specialization
        && !processing_template_parmlist
!       && !processing_explicit_instantiation)
      if (!current_function_decl
  	|| (current_class_type && LAMBDA_TYPE_P (current_class_type)))
        parser->auto_is_implicit_function_template_parm_p = true;
--- 20964,20973 ----
  
    if (!processing_specialization
        && !processing_template_parmlist
!       && !processing_explicit_instantiation
!       /* default_arg_ok_p tracks whether this is a parameter-clause for an
!          actual function or a random abstract declarator.  */
!       && parser->default_arg_ok_p)
      if (!current_function_decl
  	|| (current_class_type && LAMBDA_TYPE_P (current_class_type)))
        parser->auto_is_implicit_function_template_parm_p = true;
*************** cp_parser_parameter_declaration_list (cp
*** 21013,21021 ****
        cp_parameter_declarator *parameter;
        tree decl = error_mark_node;
        bool parenthesized_p = false;
-       int template_parm_idx = (function_being_declared_is_template_p (parser)?
- 			       TREE_VEC_LENGTH (INNERMOST_TEMPLATE_PARMS
- 						(current_template_parms)) : 0);
  
        /* Parse the parameter.  */
        parameter
--- 21076,21081 ----
*************** cp_parser_parameter_declaration_list (cp
*** 21029,21050 ****
  
        if (parameter)
  	{
- 	  /* If a function parameter pack was specified and an implicit template
- 	     parameter was introduced during cp_parser_parameter_declaration,
- 	     change any implicit parameters introduced into packs.  */
- 	  if (parser->implicit_template_parms
- 	      && parameter->declarator
- 	      && parameter->declarator->parameter_pack_p)
- 	    {
- 	      int latest_template_parm_idx = TREE_VEC_LENGTH
- 		(INNERMOST_TEMPLATE_PARMS (current_template_parms));
- 
- 	      if (latest_template_parm_idx != template_parm_idx)
- 		parameter->decl_specifiers.type = convert_generic_types_to_packs
- 		  (parameter->decl_specifiers.type,
- 		   template_parm_idx, latest_template_parm_idx);
- 	    }
- 
  	  decl = grokdeclarator (parameter->declarator,
  				 &parameter->decl_specifiers,
  				 PARM,
--- 21089,21094 ----
*************** cp_parser_parameter_declaration (cp_pars
*** 21202,21207 ****
--- 21246,21255 ----
    parser->type_definition_forbidden_message
      = G_("types may not be defined in parameter types");
  
+   int template_parm_idx = (function_being_declared_is_template_p (parser) ?
+ 			   TREE_VEC_LENGTH (INNERMOST_TEMPLATE_PARMS
+ 					    (current_template_parms)) : 0);
+ 
    /* Parse the declaration-specifiers.  */
    cp_parser_decl_specifier_seq (parser,
  				CP_PARSER_FLAGS_NONE,
*************** cp_parser_parameter_declaration (cp_pars
*** 21270,21277 ****
        parser->default_arg_ok_p = saved_default_arg_ok_p;
        /* After the declarator, allow more attributes.  */
        decl_specifiers.attributes
! 	= chainon (decl_specifiers.attributes,
! 		   cp_parser_attributes_opt (parser));
  
        /* If the declarator is a template parameter pack, remember that and
  	 clear the flag in the declarator itself so we don't get errors
--- 21318,21325 ----
        parser->default_arg_ok_p = saved_default_arg_ok_p;
        /* After the declarator, allow more attributes.  */
        decl_specifiers.attributes
! 	= attr_chainon (decl_specifiers.attributes,
! 			cp_parser_attributes_opt (parser));
  
        /* If the declarator is a template parameter pack, remember that and
  	 clear the flag in the declarator itself so we don't get errors
*************** cp_parser_parameter_declaration (cp_pars
*** 21290,21295 ****
--- 21338,21361 ----
       parameter pack expansion expression. Otherwise, leave the ellipsis
       for a C-style variadic function. */
    token = cp_lexer_peek_token (parser->lexer);
+ 
+   /* If a function parameter pack was specified and an implicit template
+      parameter was introduced during cp_parser_parameter_declaration,
+      change any implicit parameters introduced into packs.  */
+   if (parser->implicit_template_parms
+       && ((token->type == CPP_ELLIPSIS
+ 	   && declarator_can_be_parameter_pack (declarator))
+ 	  || (declarator && declarator->parameter_pack_p)))
+     {
+       int latest_template_parm_idx = TREE_VEC_LENGTH
+ 	(INNERMOST_TEMPLATE_PARMS (current_template_parms));
+ 
+       if (latest_template_parm_idx != template_parm_idx)
+ 	decl_specifiers.type = convert_generic_types_to_packs
+ 	  (decl_specifiers.type,
+ 	   template_parm_idx, latest_template_parm_idx);
+     }
+ 
    if (cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS))
      {
        tree type = decl_specifiers.type;
*************** cp_parser_member_declaration (cp_parser*
*** 23261,23267 ****
  		 which are not.  */
  	      first_attribute = attributes;
  	      /* Combine the attributes.  */
! 	      attributes = chainon (prefix_attributes, attributes);
  
  	      /* Create the bitfield declaration.  */
  	      decl = grokbitfield (identifier
--- 23327,23333 ----
  		 which are not.  */
  	      first_attribute = attributes;
  	      /* Combine the attributes.  */
! 	      attributes = attr_chainon (prefix_attributes, attributes);
  
  	      /* Create the bitfield declaration.  */
  	      decl = grokbitfield (identifier
*************** cp_parser_member_declaration (cp_parser*
*** 23318,23324 ****
  		 which are not.  */
  	      first_attribute = attributes;
  	      /* Combine the attributes.  */
! 	      attributes = chainon (prefix_attributes, attributes);
  
  	      /* If it's an `=', then we have a constant-initializer or a
  		 pure-specifier.  It is not correct to parse the
--- 23384,23390 ----
  		 which are not.  */
  	      first_attribute = attributes;
  	      /* Combine the attributes.  */
! 	      attributes = attr_chainon (prefix_attributes, attributes);
  
  	      /* If it's an `=', then we have a constant-initializer or a
  		 pure-specifier.  It is not correct to parse the
*************** cp_parser_member_declaration (cp_parser*
*** 23432,23441 ****
  	  cp_finalize_oacc_routine (parser, decl, false);
  
  	  /* Reset PREFIX_ATTRIBUTES.  */
! 	  while (attributes && TREE_CHAIN (attributes) != first_attribute)
! 	    attributes = TREE_CHAIN (attributes);
! 	  if (attributes)
! 	    TREE_CHAIN (attributes) = NULL_TREE;
  
  	  /* If there is any qualification still in effect, clear it
  	     now; we will be starting fresh with the next declarator.  */
--- 23498,23510 ----
  	  cp_finalize_oacc_routine (parser, decl, false);
  
  	  /* Reset PREFIX_ATTRIBUTES.  */
! 	  if (attributes != error_mark_node)
! 	    {
! 	      while (attributes && TREE_CHAIN (attributes) != first_attribute)
! 		attributes = TREE_CHAIN (attributes);
! 	      if (attributes)
! 		TREE_CHAIN (attributes) = NULL_TREE;
! 	    }
  
  	  /* If there is any qualification still in effect, clear it
  	     now; we will be starting fresh with the next declarator.  */
*************** cp_parser_gnu_attributes_opt (cp_parser*
*** 24547,24553 ****
  	cp_parser_skip_to_end_of_statement (parser);
  
        /* Add these new attributes to the list.  */
!       attributes = chainon (attributes, attribute_list);
      }
  
    return attributes;
--- 24616,24622 ----
  	cp_parser_skip_to_end_of_statement (parser);
  
        /* Add these new attributes to the list.  */
!       attributes = attr_chainon (attributes, attribute_list);
      }
  
    return attributes;
*************** cp_parser_objc_class_ivars (cp_parser* p
*** 29725,29731 ****
  	     which are not.  */
  	  first_attribute = attributes;
  	  /* Combine the attributes.  */
! 	  attributes = chainon (prefix_attributes, attributes);
  
  	  if (width)
  	      /* Create the bitfield declaration.  */
--- 29794,29800 ----
  	     which are not.  */
  	  first_attribute = attributes;
  	  /* Combine the attributes.  */
! 	  attributes = attr_chainon (prefix_attributes, attributes);
  
  	  if (width)
  	      /* Create the bitfield declaration.  */
*************** cp_parser_objc_class_ivars (cp_parser* p
*** 29742,29751 ****
  	    objc_add_instance_variable (decl);
  
  	  /* Reset PREFIX_ATTRIBUTES.  */
! 	  while (attributes && TREE_CHAIN (attributes) != first_attribute)
! 	    attributes = TREE_CHAIN (attributes);
! 	  if (attributes)
! 	    TREE_CHAIN (attributes) = NULL_TREE;
  
  	  token = cp_lexer_peek_token (parser->lexer);
  
--- 29811,29823 ----
  	    objc_add_instance_variable (decl);
  
  	  /* Reset PREFIX_ATTRIBUTES.  */
! 	  if (attributes != error_mark_node)
! 	    {
! 	      while (attributes && TREE_CHAIN (attributes) != first_attribute)
! 		attributes = TREE_CHAIN (attributes);
! 	      if (attributes)
! 		TREE_CHAIN (attributes) = NULL_TREE;
! 	    }
  
  	  token = cp_lexer_peek_token (parser->lexer);
  
*************** cp_parser_objc_struct_declaration (cp_pa
*** 30275,30282 ****
  	 which are not.  */
        first_attribute = attributes;
        /* Combine the attributes.  */
!       attributes = chainon (prefix_attributes, attributes);
!       
        decl = grokfield (declarator, &declspecs,
  			NULL_TREE, /*init_const_expr_p=*/false,
  			NULL_TREE, attributes);
--- 30347,30354 ----
  	 which are not.  */
        first_attribute = attributes;
        /* Combine the attributes.  */
!       attributes = attr_chainon (prefix_attributes, attributes);
! 
        decl = grokfield (declarator, &declspecs,
  			NULL_TREE, /*init_const_expr_p=*/false,
  			NULL_TREE, attributes);
*************** cp_parser_objc_struct_declaration (cp_pa
*** 30285,30294 ****
  	return error_mark_node;
        
        /* Reset PREFIX_ATTRIBUTES.  */
!       while (attributes && TREE_CHAIN (attributes) != first_attribute)
! 	attributes = TREE_CHAIN (attributes);
!       if (attributes)
! 	TREE_CHAIN (attributes) = NULL_TREE;
  
        DECL_CHAIN (decl) = decls;
        decls = decl;
--- 30357,30369 ----
  	return error_mark_node;
        
        /* Reset PREFIX_ATTRIBUTES.  */
!       if (attributes != error_mark_node)
! 	{
! 	  while (attributes && TREE_CHAIN (attributes) != first_attribute)
! 	    attributes = TREE_CHAIN (attributes);
! 	  if (attributes)
! 	    TREE_CHAIN (attributes) = NULL_TREE;
! 	}
  
        DECL_CHAIN (decl) = decls;
        decls = decl;
*************** cp_parser_omp_var_list_no_open (cp_parse
*** 30888,30894 ****
  	  if (name == error_mark_node)
  	    goto skip_comma;
  
! 	  decl = cp_parser_lookup_name_simple (parser, name, token->location);
  	  if (decl == error_mark_node)
  	    cp_parser_name_lookup_error (parser, name, decl, NLE_NULL,
  					 token->location);
--- 30963,30972 ----
  	  if (name == error_mark_node)
  	    goto skip_comma;
  
! 	  if (identifier_p (name))
! 	    decl = cp_parser_lookup_name_simple (parser, name, token->location);
! 	  else
! 	    decl = name;
  	  if (decl == error_mark_node)
  	    cp_parser_name_lookup_error (parser, name, decl, NLE_NULL,
  					 token->location);
*************** static tree
*** 34209,34215 ****
  cp_parser_omp_for_loop_init (cp_parser *parser,
  			     enum tree_code code,
  			     tree &this_pre_body,
! 			     vec<tree, va_gc> *for_block,
  			     tree &init,
  			     tree &orig_init,
  			     tree &decl,
--- 34287,34293 ----
  cp_parser_omp_for_loop_init (cp_parser *parser,
  			     enum tree_code code,
  			     tree &this_pre_body,
! 			     vec<tree, va_gc> *&for_block,
  			     tree &init,
  			     tree &orig_init,
  			     tree &decl,
*************** cp_parser_oacc_routine (cp_parser *parse
*** 37448,37454 ****
  					   /*template_p=*/NULL,
  					   /*declarator_p=*/false,
  					   /*optional_p=*/false);
!       tree decl = cp_parser_lookup_name_simple (parser, name, name_loc);
        if (name != error_mark_node && decl == error_mark_node)
  	cp_parser_name_lookup_error (parser, name, decl, NLE_NULL, name_loc);
  
--- 37526,37534 ----
  					   /*template_p=*/NULL,
  					   /*declarator_p=*/false,
  					   /*optional_p=*/false);
!       tree decl = (identifier_p (name)
! 		   ? cp_parser_lookup_name_simple (parser, name, name_loc)
! 		   : name);
        if (name != error_mark_node && decl == error_mark_node)
  	cp_parser_name_lookup_error (parser, name, decl, NLE_NULL, name_loc);
  
diff -Nrcpad gcc-7.3.0/gcc/cp/pt.c gcc-7.4.0/gcc/cp/pt.c
*** gcc-7.3.0/gcc/cp/pt.c	Wed Jan 17 18:08:05 2018
--- gcc-7.4.0/gcc/cp/pt.c	Thu Jun 28 00:25:21 2018
*************** determine_specialization (tree template_
*** 2072,2078 ****
    /* We shouldn't be specializing a member template of an
       unspecialized class template; we already gave an error in
       check_specialization_scope, now avoid crashing.  */
!   if (template_count && DECL_CLASS_SCOPE_P (decl)
        && template_class_depth (DECL_CONTEXT (decl)) > 0)
      {
        gcc_assert (errorcount);
--- 2072,2079 ----
    /* We shouldn't be specializing a member template of an
       unspecialized class template; we already gave an error in
       check_specialization_scope, now avoid crashing.  */
!   if (!VAR_P (decl)
!       && template_count && DECL_CLASS_SCOPE_P (decl)
        && template_class_depth (DECL_CONTEXT (decl)) > 0)
      {
        gcc_assert (errorcount);
*************** determine_specialization (tree template_
*** 2175,2184 ****
  	     that the const qualification is the same.  Since
  	     get_bindings does not try to merge the "this" parameter,
  	     we must do the comparison explicitly.  */
! 	  if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fn)
! 	      && !same_type_p (TREE_VALUE (fn_arg_types),
! 			       TREE_VALUE (decl_arg_types)))
! 	    continue;
  
  	  /* Skip the "this" parameter and, for constructors of
  	     classes with virtual bases, the VTT parameter.  A
--- 2176,2192 ----
  	     that the const qualification is the same.  Since
  	     get_bindings does not try to merge the "this" parameter,
  	     we must do the comparison explicitly.  */
! 	  if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fn))
! 	    {
! 	      if (!same_type_p (TREE_VALUE (fn_arg_types),
! 				TREE_VALUE (decl_arg_types)))
! 		continue;
! 
! 	      /* And the ref-qualification.  */
! 	      if (type_memfn_rqual (TREE_TYPE (decl))
! 		  != type_memfn_rqual (TREE_TYPE (fn)))
! 		continue;
! 	    }
  
  	  /* Skip the "this" parameter and, for constructors of
  	     classes with virtual bases, the VTT parameter.  A
*************** determine_specialization (tree template_
*** 2284,2289 ****
--- 2292,2302 ----
  			 decl_arg_types))
              continue;
  
+ 	  if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fn)
+ 	      && (type_memfn_rqual (TREE_TYPE (decl))
+ 		  != type_memfn_rqual (TREE_TYPE (fn))))
+ 	    continue;
+ 
            // If the deduced arguments do not satisfy the constraints,
            // this is not a candidate.
            if (flag_concepts && !constraints_satisfied_p (fn))
*************** process_partial_specialization (tree dec
*** 4601,4610 ****
      {
        if (!flag_concepts)
          error ("partial specialization %q+D does not specialize "
! 	       "any template arguments", decl);
        else
          error ("partial specialization %q+D does not specialize any "
! 	       "template arguments and is not more constrained than", decl);
        inform (DECL_SOURCE_LOCATION (maintmpl), "primary template here");
      }
  
--- 4614,4626 ----
      {
        if (!flag_concepts)
          error ("partial specialization %q+D does not specialize "
! 	       "any template arguments; to define the primary template, "
! 	       "remove the template argument list", decl);
        else
          error ("partial specialization %q+D does not specialize any "
! 	       "template arguments and is not more constrained than "
! 	       "the primary template; to define the primary template, "
! 	       "remove the template argument list", decl);
        inform (DECL_SOURCE_LOCATION (maintmpl), "primary template here");
      }
  
*************** static void
*** 4848,4854 ****
  fixed_parameter_pack_p_1 (tree parm, struct find_parameter_pack_data *ppd)
  {
    /* A type parm can't refer to another parm.  */
!   if (TREE_CODE (parm) == TYPE_DECL)
      return;
    else if (TREE_CODE (parm) == PARM_DECL)
      {
--- 4864,4870 ----
  fixed_parameter_pack_p_1 (tree parm, struct find_parameter_pack_data *ppd)
  {
    /* A type parm can't refer to another parm.  */
!   if (TREE_CODE (parm) == TYPE_DECL || parm == error_mark_node)
      return;
    else if (TREE_CODE (parm) == PARM_DECL)
      {
*************** convert_nontype_argument_function (tree
*** 6032,6038 ****
  
   accept:
    if (TREE_CODE (type) == REFERENCE_TYPE)
!     fn = build_address (fn);
    if (!same_type_ignoring_top_level_qualifiers_p (type, TREE_TYPE (fn)))
      fn = build_nop (type, fn);
  
--- 6048,6059 ----
  
   accept:
    if (TREE_CODE (type) == REFERENCE_TYPE)
!     {
!       if (REFERENCE_REF_P (fn))
! 	fn = TREE_OPERAND (fn, 0);
!       else
! 	fn = build_address (fn);
!     }
    if (!same_type_ignoring_top_level_qualifiers_p (type, TREE_TYPE (fn)))
      fn = build_nop (type, fn);
  
*************** coerce_template_parms (tree parms,
*** 8244,8250 ****
      }
  
    if (lost)
!     return error_mark_node;
  
    if (CHECKING_P && !NON_DEFAULT_TEMPLATE_ARGS_COUNT (new_inner_args))
      SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT (new_inner_args,
--- 8265,8275 ----
      }
  
    if (lost)
!     {
!       if ((complain & tf_error) && !seen_error())
! 	error ("wrong number of template arguments");
!       return error_mark_node;
!     }
  
    if (CHECKING_P && !NON_DEFAULT_TEMPLATE_ARGS_COUNT (new_inner_args))
      SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT (new_inner_args,
*************** tsubst_pack_expansion (tree t, tree args
*** 11454,11460 ****
--- 11479,11487 ----
  	    {
  	      /* This parameter pack was used in an unevaluated context.  Just
  		 make a dummy decl, since it's only used for its type.  */
+ 	      ++cp_unevaluated_operand;
  	      arg_pack = tsubst_decl (parm_pack, args, complain);
+ 	      --cp_unevaluated_operand;
  	      if (arg_pack && DECL_PACK_P (arg_pack))
  		/* Partial instantiation of the parm_pack, we can't build
  		   up an argument pack yet.  */
*************** tsubst_pack_expansion (tree t, tree args
*** 11524,11530 ****
  	  /* We can't substitute for this parameter pack.  We use a flag as
  	     well as the missing_level counter because function parameter
  	     packs don't have a level.  */
! 	  gcc_assert (processing_template_decl);
  	  unsubstituted_packs = true;
  	}
      }
--- 11551,11557 ----
  	  /* We can't substitute for this parameter pack.  We use a flag as
  	     well as the missing_level counter because function parameter
  	     packs don't have a level.  */
! 	  gcc_assert (processing_template_decl || is_auto (parm_pack));
  	  unsubstituted_packs = true;
  	}
      }
*************** tsubst (tree t, tree args, tsubst_flags_
*** 13755,13762 ****
  			= tsubst_constraint (constr, args, complain, in_decl);
  		    else if (tree pl = CLASS_PLACEHOLDER_TEMPLATE (t))
  		      {
! 			if (DECL_TEMPLATE_TEMPLATE_PARM_P (pl))
! 			  pl = tsubst (pl, args, complain, in_decl);
  			CLASS_PLACEHOLDER_TEMPLATE (r) = pl;
  		      }
  		  }
--- 13782,13788 ----
  			= tsubst_constraint (constr, args, complain, in_decl);
  		    else if (tree pl = CLASS_PLACEHOLDER_TEMPLATE (t))
  		      {
! 			pl = tsubst_copy (pl, args, complain, in_decl);
  			CLASS_PLACEHOLDER_TEMPLATE (r) = pl;
  		      }
  		  }
*************** tsubst_decomp_names (tree decl, tree pat
*** 15778,15783 ****
--- 15804,15815 ----
        DECL_HAS_VALUE_EXPR_P (decl2) = 1;
        if (VAR_P (decl3))
  	DECL_TEMPLATE_INSTANTIATED (decl3) = 1;
+       else
+ 	{
+ 	  gcc_assert (errorcount);
+ 	  decl = error_mark_node;
+ 	  continue;
+ 	}
        maybe_push_decl (decl3);
        if (error_operand_p (decl3))
  	decl = error_mark_node;
*************** tsubst_copy_and_build (tree t,
*** 16766,16779 ****
  	if (targs)
  	  targs = tsubst_template_args (targs, args, complain, in_decl);
  	if (targs == error_mark_node)
! 	  return error_mark_node;
  
  	if (TREE_CODE (templ) == SCOPE_REF)
  	  {
  	    tree name = TREE_OPERAND (templ, 1);
  	    tree tid = lookup_template_function (name, targs);
  	    TREE_OPERAND (templ, 1) = tid;
! 	    return templ;
  	  }
  
  	if (variable_template_p (templ))
--- 16798,16811 ----
  	if (targs)
  	  targs = tsubst_template_args (targs, args, complain, in_decl);
  	if (targs == error_mark_node)
! 	  RETURN (error_mark_node);
  
  	if (TREE_CODE (templ) == SCOPE_REF)
  	  {
  	    tree name = TREE_OPERAND (templ, 1);
  	    tree tid = lookup_template_function (name, targs);
  	    TREE_OPERAND (templ, 1) = tid;
! 	    RETURN (templ);
  	  }
  
  	if (variable_template_p (templ))
*************** tsubst_copy_and_build (tree t,
*** 16838,16843 ****
--- 16870,16877 ----
        {
  	tree type = tsubst (TREE_TYPE (t), args, complain, in_decl);
  	tree op0 = RECUR (TREE_OPERAND (t, 0));
+ 	if (op0 == error_mark_node)
+ 	  RETURN (error_mark_node);
  	RETURN (build1 (CONVERT_EXPR, type, op0));
        }
  
*************** tsubst_copy_and_build (tree t,
*** 16985,16991 ****
        {
  	tree op0 = RECUR (TREE_OPERAND (t, 0));
  	tree op1 = RECUR (TREE_OPERAND (t, 1));
! 	return fold_build_pointer_plus (op0, op1);
        }
  
      case SCOPE_REF:
--- 17019,17025 ----
        {
  	tree op0 = RECUR (TREE_OPERAND (t, 0));
  	tree op1 = RECUR (TREE_OPERAND (t, 1));
! 	RETURN (fold_build_pointer_plus (op0, op1));
        }
  
      case SCOPE_REF:
*************** tsubst_copy_and_build (tree t,
*** 17492,17498 ****
  		CALL_EXPR_REVERSE_ARGS (function) = rev;
  		if (thk)
  		  {
! 		    CALL_FROM_THUNK_P (function) = true;
  		    /* The thunk location is not interesting.  */
  		    SET_EXPR_LOCATION (function, UNKNOWN_LOCATION);
  		  }
--- 17526,17535 ----
  		CALL_EXPR_REVERSE_ARGS (function) = rev;
  		if (thk)
  		  {
! 		    if (TREE_CODE (function) == CALL_EXPR)
! 		      CALL_FROM_THUNK_P (function) = true;
! 		    else
! 		      AGGR_INIT_FROM_THUNK_P (function) = true;
  		    /* The thunk location is not interesting.  */
  		    SET_EXPR_LOCATION (function, UNKNOWN_LOCATION);
  		  }
*************** try_array_deduction (tree tparms, tree t
*** 19205,19210 ****
--- 19242,19265 ----
  			  /*nondeduced*/false, array_deduction_r);
  }
  
+ /* Returns how many levels of { } INIT contains.  */
+ 
+ static int
+ braced_init_depth (tree init)
+ {
+   if (!init || !BRACE_ENCLOSED_INITIALIZER_P (init))
+     return 0;
+   unsigned i; tree val;
+   unsigned max = 0;
+   FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (init), i, val)
+     {
+       unsigned elt_d = braced_init_depth (val);
+       if (elt_d > max)
+ 	max = elt_d;
+     }
+   return max + 1;
+ }
+ 
  /* Most parms like fn_type_unification.
  
     If SUBR is 1, we're being called recursively (to unify the
*************** type_unification_real (tree tparms,
*** 19441,19446 ****
--- 19496,19505 ----
  
  	    if (uses_template_parms (parm))
  	      continue;
+ 	    /* Workaround for c++/80290: avoid combinatorial explosion on
+ 	       deeply nested braced init-lists.  */
+ 	    if (braced_init_depth (arg) > 2)
+ 	      continue;
  	    if (check_non_deducible_conversion (parm, arg, strict, flags,
  						explain_p))
  	      return 1;
*************** type_dependent_expression_p (tree expres
*** 24065,24084 ****
  	  && (any_dependent_template_arguments_p
  	      (INNERMOST_TEMPLATE_ARGS (DECL_TI_ARGS (expression)))))
  	return true;
  
!       /* Otherwise, if the decl isn't from a dependent scope, it can't be
! 	 type-dependent.  Checking this is important for functions with auto
! 	 return type, which looks like a dependent type.  */
!       if (TREE_CODE (expression) == FUNCTION_DECL
! 	  && undeduced_auto_decl (expression)
! 	  && (!DECL_CLASS_SCOPE_P (expression)
! 	      || !dependent_type_p (DECL_CONTEXT (expression)))
! 	  && (!DECL_FRIEND_CONTEXT (expression)
! 	      || !dependent_type_p (DECL_FRIEND_CONTEXT (expression)))
! 	  && !DECL_LOCAL_FUNCTION_P (expression))
! 	{
! 	  return false;
! 	}
      }
  
    /* Always dependent, on the number of arguments if nothing else.  */
--- 24124,24144 ----
  	  && (any_dependent_template_arguments_p
  	      (INNERMOST_TEMPLATE_ARGS (DECL_TI_ARGS (expression)))))
  	return true;
+     }
  
!   /* Otherwise, if the decl isn't from a dependent scope, it can't be
!      type-dependent.  Checking this is important for functions with auto
!      return type, which looks like a dependent type.  */
!   if (TREE_CODE (expression) == FUNCTION_DECL
!       && undeduced_auto_decl (expression)
!       && (!DECL_CLASS_SCOPE_P (expression)
! 	  || !dependent_type_p (DECL_CONTEXT (expression)))
!       && (!DECL_LANG_SPECIFIC (expression)
! 	  || !DECL_FRIEND_CONTEXT (expression)
! 	  || !dependent_type_p (DECL_FRIEND_CONTEXT (expression)))
!       && !DECL_LOCAL_FUNCTION_P (expression))
!     {
!       return false;
      }
  
    /* Always dependent, on the number of arguments if nothing else.  */
*************** rewrite_template_parm (tree olddecl, uns
*** 25105,25112 ****
  	  = TEMPLATE_TYPE_PARM_FOR_CLASS (oldtype);
      }
    else
!     newtype = tsubst (TREE_TYPE (olddecl), tsubst_args,
! 		      complain, NULL_TREE);
  
    tree newdecl
      = build_decl (DECL_SOURCE_LOCATION (olddecl), TREE_CODE (olddecl),
--- 25165,25185 ----
  	  = TEMPLATE_TYPE_PARM_FOR_CLASS (oldtype);
      }
    else
!     {
!       newtype = TREE_TYPE (olddecl);
!       if (type_uses_auto (newtype))
! 	{
! 	  // Substitute once to fix references to other template parameters.
! 	  newtype = tsubst (newtype, tsubst_args,
! 			    complain|tf_partial, NULL_TREE);
! 	  // Now substitute again to reduce the level of the auto.
! 	  newtype = tsubst (newtype, current_template_args (),
! 			    complain, NULL_TREE);
! 	}
!       else
! 	newtype = tsubst (newtype, tsubst_args,
! 			  complain, NULL_TREE);
!     }
  
    tree newdecl
      = build_decl (DECL_SOURCE_LOCATION (olddecl), TREE_CODE (olddecl),
*************** rewrite_template_parm (tree olddecl, uns
*** 25145,25151 ****
  	  // Substitute ttargs into ttparms to fix references to
  	  // other template parameters.
  	  ttparms = tsubst_template_parms_level (ttparms, ttargs,
! 						 complain);
  	  // Now substitute again with args based on tparms, to reduce
  	  // the level of the ttparms.
  	  ttargs = current_template_args ();
--- 25218,25224 ----
  	  // Substitute ttargs into ttparms to fix references to
  	  // other template parameters.
  	  ttparms = tsubst_template_parms_level (ttparms, ttargs,
! 						 complain|tf_partial);
  	  // Now substitute again with args based on tparms, to reduce
  	  // the level of the ttparms.
  	  ttargs = current_template_args ();
*************** do_class_deduction (tree ptype, tree tmp
*** 25386,25391 ****
--- 25459,25467 ----
      // FIXME cache artificial deduction guides
      for (tree fns = CLASSTYPE_CONSTRUCTORS (type); fns; fns = OVL_NEXT (fns))
        {
+ 	if (TREE_CODE (fns) == OVERLOAD && OVL_USED (fns))
+ 	  continue;
+ 
  	tree fn = OVL_CURRENT (fns);
  	tree guide = build_deduction_guide (fn, outer_args, complain);
  	cands = ovl_cons (guide, cands);
diff -Nrcpad gcc-7.3.0/gcc/cp/search.c gcc-7.4.0/gcc/cp/search.c
*** gcc-7.3.0/gcc/cp/search.c	Thu Jun 29 16:46:29 2017
--- gcc-7.4.0/gcc/cp/search.c	Tue Apr  3 17:46:30 2018
*************** original_binfo (tree binfo, tree here)
*** 2879,2885 ****
  bool
  any_dependent_bases_p (tree type)
  {
!   if (!type || !CLASS_TYPE_P (type) || !processing_template_decl)
      return false;
  
    unsigned i;
--- 2879,2885 ----
  bool
  any_dependent_bases_p (tree type)
  {
!   if (!type || !CLASS_TYPE_P (type) || !uses_template_parms (type))
      return false;
  
    unsigned i;
diff -Nrcpad gcc-7.3.0/gcc/cp/semantics.c gcc-7.4.0/gcc/cp/semantics.c
*** gcc-7.3.0/gcc/cp/semantics.c	Mon Sep 18 18:37:16 2017
--- gcc-7.4.0/gcc/cp/semantics.c	Fri Jun 22 21:25:04 2018
*************** finish_if_stmt_cond (tree cond, tree if_
*** 730,736 ****
    cond = maybe_convert_cond (cond);
    if (IF_STMT_CONSTEXPR_P (if_stmt)
        && require_potential_rvalue_constant_expression (cond)
!       && !value_dependent_expression_p (cond))
      {
        cond = instantiate_non_dependent_expr (cond);
        cond = cxx_constant_value (cond, NULL_TREE);
--- 730,739 ----
    cond = maybe_convert_cond (cond);
    if (IF_STMT_CONSTEXPR_P (if_stmt)
        && require_potential_rvalue_constant_expression (cond)
!       && !value_dependent_expression_p (cond)
!       /* Wait until instantiation time, since only then COND has been
! 	 converted to bool.  */
!       && TREE_TYPE (cond) == boolean_type_node)
      {
        cond = instantiate_non_dependent_expr (cond);
        cond = cxx_constant_value (cond, NULL_TREE);
*************** finish_asm_stmt (int volatile_p, tree st
*** 1480,1485 ****
--- 1483,1503 ----
  		      && C_TYPE_FIELDS_READONLY (TREE_TYPE (operand)))))
  	    cxx_readonly_error (operand, lv_asm);
  
+ 	  tree *op = &operand;
+ 	  while (TREE_CODE (*op) == COMPOUND_EXPR)
+ 	    op = &TREE_OPERAND (*op, 1);
+ 	  switch (TREE_CODE (*op))
+ 	    {
+ 	    case PREINCREMENT_EXPR:
+ 	    case PREDECREMENT_EXPR:
+ 	    case MODIFY_EXPR:
+ 	      *op = genericize_compound_lvalue (*op);
+ 	      op = &TREE_OPERAND (*op, 1);
+ 	      break;
+ 	    default:
+ 	      break;
+ 	    }
+ 
  	  constraint = TREE_STRING_POINTER (TREE_VALUE (TREE_PURPOSE (t)));
  	  oconstraints[i] = constraint;
  
*************** finish_asm_stmt (int volatile_p, tree st
*** 1488,1494 ****
  	    {
  	      /* If the operand is going to end up in memory,
  		 mark it addressable.  */
! 	      if (!allows_reg && !cxx_mark_addressable (operand))
  		operand = error_mark_node;
  	    }
  	  else
--- 1506,1512 ----
  	    {
  	      /* If the operand is going to end up in memory,
  		 mark it addressable.  */
! 	      if (!allows_reg && !cxx_mark_addressable (*op))
  		operand = error_mark_node;
  	    }
  	  else
*************** finish_asm_stmt (int volatile_p, tree st
*** 1530,1536 ****
  		  /* Strip the nops as we allow this case.  FIXME, this really
  		     should be rejected or made deprecated.  */
  		  STRIP_NOPS (operand);
! 		  if (!cxx_mark_addressable (operand))
  		    operand = error_mark_node;
  		}
  	      else if (!allows_reg && !allows_mem)
--- 1548,1570 ----
  		  /* Strip the nops as we allow this case.  FIXME, this really
  		     should be rejected or made deprecated.  */
  		  STRIP_NOPS (operand);
! 
! 		  tree *op = &operand;
! 		  while (TREE_CODE (*op) == COMPOUND_EXPR)
! 		    op = &TREE_OPERAND (*op, 1);
! 		  switch (TREE_CODE (*op))
! 		    {
! 		    case PREINCREMENT_EXPR:
! 		    case PREDECREMENT_EXPR:
! 		    case MODIFY_EXPR:
! 		      *op = genericize_compound_lvalue (*op);
! 		      op = &TREE_OPERAND (*op, 1);
! 		      break;
! 		    default:
! 		      break;
! 		    }
! 
! 		  if (!cxx_mark_addressable (*op))
  		    operand = error_mark_node;
  		}
  	      else if (!allows_reg && !allows_mem)
*************** finish_omp_reduction_clause (tree c, boo
*** 5604,5610 ****
        return false;
      }
    else if (processing_template_decl)
!     return false;
  
    tree id = OMP_CLAUSE_REDUCTION_PLACEHOLDER (c);
  
--- 5638,5648 ----
        return false;
      }
    else if (processing_template_decl)
!     {
!       if (OMP_CLAUSE_REDUCTION_PLACEHOLDER (c) == error_mark_node)
! 	return true;
!       return false;
!     }
  
    tree id = OMP_CLAUSE_REDUCTION_PLACEHOLDER (c);
  
*************** finish_omp_clauses (tree clauses, enum c
*** 7333,7339 ****
  
  	  if (VAR_P (t) && CP_DECL_THREAD_LOCAL_P (t))
  	    share_name = "threadprivate";
! 	  else switch (cxx_omp_predetermined_sharing (t))
  	    {
  	    case OMP_CLAUSE_DEFAULT_UNSPECIFIED:
  	      break;
--- 7371,7377 ----
  
  	  if (VAR_P (t) && CP_DECL_THREAD_LOCAL_P (t))
  	    share_name = "threadprivate";
! 	  else switch (cxx_omp_predetermined_sharing_1 (t))
  	    {
  	    case OMP_CLAUSE_DEFAULT_UNSPECIFIED:
  	      break;
diff -Nrcpad gcc-7.3.0/gcc/cp/tree.c gcc-7.4.0/gcc/cp/tree.c
*** gcc-7.3.0/gcc/cp/tree.c	Tue Jan  2 18:07:41 2018
--- gcc-7.4.0/gcc/cp/tree.c	Tue Jul  3 16:27:04 2018
*************** cp_build_reference_type (tree to_type, b
*** 1050,1055 ****
--- 1050,1058 ----
  {
    tree lvalue_ref, t;
  
+   if (to_type == error_mark_node)
+     return error_mark_node;
+ 
    if (TREE_CODE (to_type) == REFERENCE_TYPE)
      {
        rval = rval && TYPE_REF_IS_RVALUE (to_type);
*************** strip_typedefs_expr (tree t, bool *remov
*** 1667,1675 ****
  	tree it;
  	for (it = t; it; it = TREE_CHAIN (it))
  	  {
! 	    tree val = strip_typedefs_expr (TREE_VALUE (t), remove_attributes);
  	    vec_safe_push (vec, val);
! 	    if (val != TREE_VALUE (t))
  	      changed = true;
  	    gcc_assert (TREE_PURPOSE (it) == NULL_TREE);
  	  }
--- 1670,1678 ----
  	tree it;
  	for (it = t; it; it = TREE_CHAIN (it))
  	  {
! 	    tree val = strip_typedefs_expr (TREE_VALUE (it), remove_attributes);
  	    vec_safe_push (vec, val);
! 	    if (val != TREE_VALUE (it))
  	      changed = true;
  	    gcc_assert (TREE_PURPOSE (it) == NULL_TREE);
  	  }
*************** bot_manip (tree* tp, int* walk_subtrees,
*** 2589,2594 ****
--- 2592,2599 ----
  	{
  	  u = build_cplus_new (TREE_TYPE (t), TREE_OPERAND (t, 1),
  			       tf_warning_or_error);
+ 	  if (u == error_mark_node)
+ 	    return u;
  	  if (AGGR_INIT_ZERO_FIRST (TREE_OPERAND (t, 1)))
  	    AGGR_INIT_ZERO_FIRST (TREE_OPERAND (u, 1)) = true;
  	}
*************** bot_manip (tree* tp, int* walk_subtrees,
*** 2606,2611 ****
--- 2611,2618 ----
  			 (splay_tree_value) TREE_OPERAND (u, 0));
  
        TREE_OPERAND (u, 1) = break_out_target_exprs (TREE_OPERAND (u, 1));
+       if (TREE_OPERAND (u, 1) == error_mark_node)
+ 	return error_mark_node;
  
        /* Replace the old expression with the new version.  */
        *tp = u;
*************** break_out_target_exprs (tree t)
*** 2718,2724 ****
      target_remap = splay_tree_new (splay_tree_compare_pointers,
  				   /*splay_tree_delete_key_fn=*/NULL,
  				   /*splay_tree_delete_value_fn=*/NULL);
!   cp_walk_tree (&t, bot_manip, target_remap, NULL);
    cp_walk_tree (&t, bot_replace, target_remap, NULL);
  
    if (!--target_remap_count)
--- 2725,2732 ----
      target_remap = splay_tree_new (splay_tree_compare_pointers,
  				   /*splay_tree_delete_key_fn=*/NULL,
  				   /*splay_tree_delete_value_fn=*/NULL);
!   if (cp_walk_tree (&t, bot_manip, target_remap, NULL) == error_mark_node)
!     t = error_mark_node;
    cp_walk_tree (&t, bot_replace, target_remap, NULL);
  
    if (!--target_remap_count)
*************** replace_placeholders_r (tree* t, int* wa
*** 2793,2799 ****
  	for (; !same_type_ignoring_top_level_qualifiers_p (TREE_TYPE (*t),
  							   TREE_TYPE (x));
  	     x = TREE_OPERAND (x, 0))
! 	  gcc_assert (TREE_CODE (x) == COMPONENT_REF);
  	*t = x;
  	*walk_subtrees = false;
  	d->seen = true;
--- 2801,2807 ----
  	for (; !same_type_ignoring_top_level_qualifiers_p (TREE_TYPE (*t),
  							   TREE_TYPE (x));
  	     x = TREE_OPERAND (x, 0))
! 	  gcc_assert (handled_component_p (x));
  	*t = x;
  	*walk_subtrees = false;
  	d->seen = true;
*************** cp_tree_code_length (enum tree_code code
*** 4895,4900 ****
--- 4903,4921 ----
      }
  }
  
+ /* Wrapper around warn_deprecated_use that doesn't warn for
+    current_class_type.  */
+ 
+ void
+ cp_warn_deprecated_use (tree node)
+ {
+   if (TYPE_P (node)
+       && current_class_type
+       && TYPE_MAIN_VARIANT (node) == current_class_type)
+     return;
+   warn_deprecated_use (node, NULL_TREE);
+ }
+ 
  /* Implement -Wzero_as_null_pointer_constant.  Return true if the
     conditions for the warning hold, false otherwise.  */
  bool
diff -Nrcpad gcc-7.3.0/gcc/cp/typeck.c gcc-7.4.0/gcc/cp/typeck.c
*** gcc-7.3.0/gcc/cp/typeck.c	Fri Oct  6 18:00:54 2017
--- gcc-7.4.0/gcc/cp/typeck.c	Fri Jun 22 21:12:32 2018
*************** merge_types (tree t1, tree t2)
*** 905,918 ****
        return t1;
  
      default:;
      }
  
!   if (attribute_list_equal (TYPE_ATTRIBUTES (t1), attributes))
!     return t1;
!   else if (attribute_list_equal (TYPE_ATTRIBUTES (t2), attributes))
!     return t2;
!   else
!     return cp_build_type_attribute_variant (t1, attributes);
  }
  
  /* Return the ARRAY_TYPE type without its domain.  */
--- 905,918 ----
        return t1;
  
      default:;
+       if (attribute_list_equal (TYPE_ATTRIBUTES (t1), attributes))
+ 	return t1;
+       else if (attribute_list_equal (TYPE_ATTRIBUTES (t2), attributes))
+ 	return t2;
+       break;
      }
  
!   return cp_build_type_attribute_variant (t1, attributes);
  }
  
  /* Return the ARRAY_TYPE type without its domain.  */
*************** cp_build_addr_expr_1 (tree arg, bool str
*** 5713,5731 ****
        return arg;
      }
  
-   /* ??? Cope with user tricks that amount to offsetof.  */
-   if (TREE_CODE (argtype) != FUNCTION_TYPE
-       && TREE_CODE (argtype) != METHOD_TYPE
-       && argtype != unknown_type_node
-       && (val = get_base_address (arg))
-       && COMPLETE_TYPE_P (TREE_TYPE (val))
-       && INDIRECT_REF_P (val)
-       && TREE_CONSTANT (TREE_OPERAND (val, 0)))
-     {
-       tree type = build_pointer_type (argtype);
-       return fold_convert (type, fold_offsetof_1 (arg));
-     }
- 
    /* Handle complex lvalues (when permitted)
       by reduction to simpler cases.  */
    val = unary_complex_lvalue (ADDR_EXPR, arg);
--- 5713,5718 ----
*************** build_unary_op (location_t /*location*/,
*** 6177,6182 ****
--- 6164,6188 ----
    return cp_build_unary_op (code, xarg, noconvert, tf_warning_or_error);
  }
  
+ /* Adjust LVALUE, an MODIFY_EXPR, PREINCREMENT_EXPR or PREDECREMENT_EXPR,
+    so that it is a valid lvalue even for GENERIC by replacing
+    (lhs = rhs) with ((lhs = rhs), lhs)
+    (--lhs) with ((--lhs), lhs)
+    (++lhs) with ((++lhs), lhs)
+    and if lhs has side-effects, calling cp_stabilize_reference on it, so
+    that it can be evaluated multiple times.  */
+ 
+ tree
+ genericize_compound_lvalue (tree lvalue)
+ {
+   if (TREE_SIDE_EFFECTS (TREE_OPERAND (lvalue, 0)))
+     lvalue = build2 (TREE_CODE (lvalue), TREE_TYPE (lvalue),
+ 		     cp_stabilize_reference (TREE_OPERAND (lvalue, 0)),
+ 		     TREE_OPERAND (lvalue, 1));
+   return build2 (COMPOUND_EXPR, TREE_TYPE (TREE_OPERAND (lvalue, 0)),
+ 		 lvalue, TREE_OPERAND (lvalue, 0));
+ }
+ 
  /* Apply unary lvalue-demanding operator CODE to the expression ARG
     for certain kinds of expressions which are not really lvalues
     but which we can accept as lvalues.
*************** unary_complex_lvalue (enum tree_code cod
*** 6211,6227 ****
    if (TREE_CODE (arg) == MODIFY_EXPR
        || TREE_CODE (arg) == PREINCREMENT_EXPR
        || TREE_CODE (arg) == PREDECREMENT_EXPR)
!     {
!       tree lvalue = TREE_OPERAND (arg, 0);
!       if (TREE_SIDE_EFFECTS (lvalue))
! 	{
! 	  lvalue = cp_stabilize_reference (lvalue);
! 	  arg = build2 (TREE_CODE (arg), TREE_TYPE (arg),
! 			lvalue, TREE_OPERAND (arg, 1));
! 	}
!       return unary_complex_lvalue
! 	(code, build2 (COMPOUND_EXPR, TREE_TYPE (lvalue), arg, lvalue));
!     }
  
    if (code != ADDR_EXPR)
      return NULL_TREE;
--- 6217,6223 ----
    if (TREE_CODE (arg) == MODIFY_EXPR
        || TREE_CODE (arg) == PREINCREMENT_EXPR
        || TREE_CODE (arg) == PREDECREMENT_EXPR)
!     return unary_complex_lvalue (code, genericize_compound_lvalue (arg));
  
    if (code != ADDR_EXPR)
      return NULL_TREE;
*************** cp_build_modify_expr (location_t loc, tr
*** 7617,7627 ****
      case PREINCREMENT_EXPR:
        if (compound_side_effects_p)
  	newrhs = rhs = stabilize_expr (rhs, &preeval);
!       if (TREE_SIDE_EFFECTS (TREE_OPERAND (lhs, 0)))
! 	lhs = build2 (TREE_CODE (lhs), TREE_TYPE (lhs),
! 		      cp_stabilize_reference (TREE_OPERAND (lhs, 0)),
! 		      TREE_OPERAND (lhs, 1));
!       lhs = build2 (COMPOUND_EXPR, lhstype, lhs, TREE_OPERAND (lhs, 0));
      maybe_add_compound:
        /* If we had (bar, --foo) = 5; or (bar, (baz, --foo)) = 5;
  	 and looked through the COMPOUND_EXPRs, readd them now around
--- 7613,7619 ----
      case PREINCREMENT_EXPR:
        if (compound_side_effects_p)
  	newrhs = rhs = stabilize_expr (rhs, &preeval);
!       lhs = genericize_compound_lvalue (lhs);
      maybe_add_compound:
        /* If we had (bar, --foo) = 5; or (bar, (baz, --foo)) = 5;
  	 and looked through the COMPOUND_EXPRs, readd them now around
*************** cp_build_modify_expr (location_t loc, tr
*** 7644,7654 ****
      case MODIFY_EXPR:
        if (compound_side_effects_p)
  	newrhs = rhs = stabilize_expr (rhs, &preeval);
!       if (TREE_SIDE_EFFECTS (TREE_OPERAND (lhs, 0)))
! 	lhs = build2 (TREE_CODE (lhs), TREE_TYPE (lhs),
! 		      cp_stabilize_reference (TREE_OPERAND (lhs, 0)),
! 		      TREE_OPERAND (lhs, 1));
!       lhs = build2 (COMPOUND_EXPR, lhstype, lhs, TREE_OPERAND (lhs, 0));
        goto maybe_add_compound;
  
      case MIN_EXPR:
--- 7636,7642 ----
      case MODIFY_EXPR:
        if (compound_side_effects_p)
  	newrhs = rhs = stabilize_expr (rhs, &preeval);
!       lhs = genericize_compound_lvalue (lhs);
        goto maybe_add_compound;
  
      case MIN_EXPR:
diff -Nrcpad gcc-7.3.0/gcc/cp/typeck2.c gcc-7.4.0/gcc/cp/typeck2.c
*** gcc-7.3.0/gcc/cp/typeck2.c	Fri Apr  7 18:09:55 2017
--- gcc-7.4.0/gcc/cp/typeck2.c	Fri Jun 22 20:43:09 2018
*************** store_init_value (tree decl, tree init,
*** 817,825 ****
        bool const_init;
        value = instantiate_non_dependent_expr (value);
        if (DECL_DECLARED_CONSTEXPR_P (decl)
! 	  || (DECL_IN_AGGR_P (decl) && !DECL_VAR_DECLARED_INLINE_P (decl)))
  	{
! 	  /* Diagnose a non-constant initializer for constexpr.  */
  	  if (processing_template_decl
  	      && !require_potential_constant_expression (value))
  	    value = error_mark_node;
--- 817,828 ----
        bool const_init;
        value = instantiate_non_dependent_expr (value);
        if (DECL_DECLARED_CONSTEXPR_P (decl)
! 	  || (DECL_IN_AGGR_P (decl)
! 	      && DECL_INITIALIZED_IN_CLASS_P (decl)
! 	      && !DECL_VAR_DECLARED_INLINE_P (decl)))
  	{
! 	  /* Diagnose a non-constant initializer for constexpr variable or
! 	     non-inline in-class-initialized static data member.  */
  	  if (processing_template_decl
  	      && !require_potential_constant_expression (value))
  	    value = error_mark_node;
*************** build_functional_cast (tree exp, tree pa
*** 1954,1960 ****
        if (complain & tf_warning
  	  && TREE_DEPRECATED (type)
  	  && DECL_ARTIFICIAL (exp))
! 	warn_deprecated_use (type, NULL_TREE);
      }
    else
      type = exp;
--- 1957,1963 ----
        if (complain & tf_warning
  	  && TREE_DEPRECATED (type)
  	  && DECL_ARTIFICIAL (exp))
! 	cp_warn_deprecated_use (type);
      }
    else
      type = exp;
diff -Nrcpad gcc-7.3.0/gcc/dce.c gcc-7.4.0/gcc/dce.c
*** gcc-7.3.0/gcc/dce.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/dce.c	Fri Jun 22 20:53:41 2018
*************** deletable_insn_p (rtx_insn *insn, bool f
*** 131,136 ****
--- 131,142 ----
  	     && REGNO (pic_offset_table_rtx) >= FIRST_PSEUDO_REGISTER)
        return false;
  
+   /* Callee-save restores are needed.  */
+   if (RTX_FRAME_RELATED_P (insn)
+       && crtl->shrink_wrapped_separate
+       && find_reg_note (insn, REG_CFA_RESTORE, NULL))
+     return false;
+ 
    body = PATTERN (insn);
    switch (GET_CODE (body))
      {
*************** delete_unmarked_insns (void)
*** 560,568 ****
      FOR_BB_INSNS_REVERSE_SAFE (bb, insn, next)
        if (NONDEBUG_INSN_P (insn))
  	{
  	  /* Always delete no-op moves.  */
  	  if (noop_move_p (insn))
! 	    ;
  
  	  /* Otherwise rely only on the DCE algorithm.  */
  	  else if (marked_insn_p (insn))
--- 566,584 ----
      FOR_BB_INSNS_REVERSE_SAFE (bb, insn, next)
        if (NONDEBUG_INSN_P (insn))
  	{
+ 	  rtx turn_into_use = NULL_RTX;
+ 
  	  /* Always delete no-op moves.  */
  	  if (noop_move_p (insn))
! 	    {
! 	      if (RTX_FRAME_RELATED_P (insn))
! 		turn_into_use
! 		  = find_reg_note (insn, REG_CFA_RESTORE, NULL);
! 	      if (turn_into_use && REG_P (XEXP (turn_into_use, 0)))
! 		turn_into_use = XEXP (turn_into_use, 0);
! 	      else
! 		turn_into_use = NULL_RTX;
! 	    }
  
  	  /* Otherwise rely only on the DCE algorithm.  */
  	  else if (marked_insn_p (insn))
*************** delete_unmarked_insns (void)
*** 589,603 ****
  	  if (!dbg_cnt (dce))
  	    continue;
  
- 	  if (crtl->shrink_wrapped_separate
- 	      && find_reg_note (insn, REG_CFA_RESTORE, NULL))
- 	    {
- 	      if (dump_file)
- 		fprintf (dump_file, "DCE: NOT deleting insn %d, it's a "
- 				    "callee-save restore\n", INSN_UID (insn));
- 	      continue;
- 	    }
- 
  	  if (dump_file)
  	    fprintf (dump_file, "DCE: Deleting insn %d\n", INSN_UID (insn));
  
--- 605,610 ----
*************** delete_unmarked_insns (void)
*** 611,618 ****
  	  if (CALL_P (insn))
  	    must_clean = true;
  
! 	  /* Now delete the insn.  */
! 	  delete_insn_and_edges (insn);
  	}
  
    /* Deleted a pure or const call.  */
--- 618,636 ----
  	  if (CALL_P (insn))
  	    must_clean = true;
  
! 	  if (turn_into_use)
! 	    {
! 	      /* Don't remove frame related noop moves if they cary
! 		 REG_CFA_RESTORE note, while we don't need to emit any code,
! 		 we need it to emit the CFI restore note.  */
! 	      PATTERN (insn)
! 		= gen_rtx_USE (GET_MODE (turn_into_use), turn_into_use);
! 	      INSN_CODE (insn) = -1;
! 	      df_insn_rescan (insn);
! 	    }
! 	  else
! 	    /* Now delete the insn.  */
! 	    delete_insn_and_edges (insn);
  	}
  
    /* Deleted a pure or const call.  */
diff -Nrcpad gcc-7.3.0/gcc/ddg.c gcc-7.4.0/gcc/ddg.c
*** gcc-7.3.0/gcc/ddg.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/ddg.c	Wed Apr  4 19:51:32 2018
*************** add_cross_iteration_register_deps (ddg_p
*** 295,305 ****
    /* Create inter-loop true dependences and anti dependences.  */
    for (r_use = DF_REF_CHAIN (last_def); r_use != NULL; r_use = r_use->next)
      {
!       rtx_insn *use_insn = DF_REF_INSN (r_use->ref);
! 
!       if (BLOCK_FOR_INSN (use_insn) != g->bb)
  	continue;
  
        /* ??? Do not handle uses with DF_REF_IN_NOTE notes.  */
        use_node = get_node_of_insn (g, use_insn);
        gcc_assert (use_node);
--- 295,308 ----
    /* Create inter-loop true dependences and anti dependences.  */
    for (r_use = DF_REF_CHAIN (last_def); r_use != NULL; r_use = r_use->next)
      {
!       if (DF_REF_BB (r_use->ref) != g->bb)
  	continue;
  
+       gcc_assert (!DF_REF_IS_ARTIFICIAL (r_use->ref)
+ 		  && DF_REF_INSN_INFO (r_use->ref) != NULL);
+ 
+       rtx_insn *use_insn = DF_REF_INSN (r_use->ref);
+ 
        /* ??? Do not handle uses with DF_REF_IN_NOTE notes.  */
        use_node = get_node_of_insn (g, use_insn);
        gcc_assert (use_node);
diff -Nrcpad gcc-7.3.0/gcc/doc/cpp.1 gcc-7.4.0/gcc/doc/cpp.1
*** gcc-7.3.0/gcc/doc/cpp.1	Thu Jan 25 08:19:42 2018
--- gcc-7.4.0/gcc/doc/cpp.1	Thu Dec  6 09:59:45 2018
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "CPP 1"
! .TH CPP 1 "2018-01-25" "gcc-7.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 "2018-12-06" "gcc-7.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-7.3.0/gcc/doc/cpp.info gcc-7.4.0/gcc/doc/cpp.info
*** gcc-7.3.0/gcc/doc/cpp.info	Thu Jan 25 08:41:37 2018
--- gcc-7.4.0/gcc/doc/cpp.info	Thu Dec  6 10:20:52 2018
***************
*** 1,5 ****
  This is doc/cpp.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/doc/cpp.texi.
  
  Copyright (C) 1987-2017 Free Software Foundation, Inc.
  
--- 1,5 ----
  This is doc/cpp.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/doc/cpp.texi.
  
  Copyright (C) 1987-2017 Free Software Foundation, Inc.
  
diff -Nrcpad gcc-7.3.0/gcc/doc/cppinternals.info gcc-7.4.0/gcc/doc/cppinternals.info
*** gcc-7.3.0/gcc/doc/cppinternals.info	Thu Jan 25 08:41:37 2018
--- gcc-7.4.0/gcc/doc/cppinternals.info	Thu Dec  6 10:20:52 2018
***************
*** 1,5 ****
  This is doc/cppinternals.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/doc/cppinternals.texi.
  
  INFO-DIR-SECTION Software development
  START-INFO-DIR-ENTRY
--- 1,5 ----
  This is doc/cppinternals.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/doc/cppinternals.texi.
  
  INFO-DIR-SECTION Software development
  START-INFO-DIR-ENTRY
diff -Nrcpad gcc-7.3.0/gcc/doc/extend.texi gcc-7.4.0/gcc/doc/extend.texi
*** gcc-7.3.0/gcc/doc/extend.texi	Tue Jan 16 11:19:51 2018
--- gcc-7.4.0/gcc/doc/extend.texi	Mon Apr  2 19:19:37 2018
***************
*** 1,4 ****
! @c Copyright (C) 1988-2017 Free Software Foundation, Inc.
  
  @c This is part of the GCC manual.
  @c For copying conditions, see the file gcc.texi.
--- 1,4 ----
! @c Copyright (C) 1988-2018 Free Software Foundation, Inc.
  
  @c This is part of the GCC manual.
  @c For copying conditions, see the file gcc.texi.
*************** or @option{-mpopcntd}):
*** 15165,15185 ****
  @smallexample
  long __builtin_bpermd (long, long);
  int __builtin_divwe (int, int);
- int __builtin_divweo (int, int);
  unsigned int __builtin_divweu (unsigned int, unsigned int);
- unsigned int __builtin_divweuo (unsigned int, unsigned int);
  long __builtin_divde (long, long);
- long __builtin_divdeo (long, long);
  unsigned long __builtin_divdeu (unsigned long, unsigned long);
- unsigned long __builtin_divdeuo (unsigned long, unsigned long);
  unsigned int cdtbcd (unsigned int);
  unsigned int cbcdtd (unsigned int);
  unsigned int addg6s (unsigned int, unsigned int);
  @end smallexample
  
! The @code{__builtin_divde}, @code{__builtin_divdeo},
! @code{__builtin_divdeu}, @code{__builtin_divdeou} functions require a
! 64-bit environment support ISA 2.06 or later.
  
  The following built-in functions are available for the PowerPC family
  of processors, starting with ISA 3.0 or later (@option{-mcpu=power9}):
--- 15165,15180 ----
  @smallexample
  long __builtin_bpermd (long, long);
  int __builtin_divwe (int, int);
  unsigned int __builtin_divweu (unsigned int, unsigned int);
  long __builtin_divde (long, long);
  unsigned long __builtin_divdeu (unsigned long, unsigned long);
  unsigned int cdtbcd (unsigned int);
  unsigned int cbcdtd (unsigned int);
  unsigned int addg6s (unsigned int, unsigned int);
  @end smallexample
  
! The @code{__builtin_divde} and @code{__builtin_divdeu} functions
! require a 64-bit environment supporting ISA 2.06 or later.
  
  The following built-in functions are available for the PowerPC family
  of processors, starting with ISA 3.0 or later (@option{-mcpu=power9}):
*************** vector unsigned short vec_vctzh (vector
*** 18124,18137 ****
  vector int vec_vctzw (vector int);
  vector unsigned int vec_vctzw (vector int);
  
! long long vec_vextract4b (const vector signed char, const int);
! long long vec_vextract4b (const vector unsigned char, const int);
! 
! vector signed char vec_insert4b (vector int, vector signed char, const int);
  vector unsigned char vec_insert4b (vector unsigned int, vector unsigned char,
                                     const int);
- vector signed char vec_insert4b (long long, vector signed char, const int);
- vector unsigned char vec_insert4b (long long, vector unsigned char, const int);
  
  vector int vec_vprtyb (vector int);
  vector unsigned int vec_vprtyb (vector unsigned int);
--- 18119,18129 ----
  vector int vec_vctzw (vector int);
  vector unsigned int vec_vctzw (vector int);
  
! long long vec_extract4b (const vector unsigned char, const int);
! vector unsigned char vec_insert4b (vector signed int, vector unsigned char,
!                                    const int);
  vector unsigned char vec_insert4b (vector unsigned int, vector unsigned char,
                                     const int);
  
  vector int vec_vprtyb (vector int);
  vector unsigned int vec_vprtyb (vector unsigned int);
diff -Nrcpad gcc-7.3.0/gcc/doc/fsf-funding.7 gcc-7.4.0/gcc/doc/fsf-funding.7
*** gcc-7.3.0/gcc/doc/fsf-funding.7	Thu Jan 25 08:19:42 2018
--- gcc-7.4.0/gcc/doc/fsf-funding.7	Thu Dec  6 09:59:45 2018
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "FSF-FUNDING 7"
! .TH FSF-FUNDING 7 "2018-01-25" "gcc-7.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 "2018-12-06" "gcc-7.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-7.3.0/gcc/doc/g++.1 gcc-7.4.0/gcc/doc/g++.1
*** gcc-7.3.0/gcc/doc/g++.1	Thu Jan 25 08:41:41 2018
--- gcc-7.4.0/gcc/doc/g++.1	Thu Dec  6 10:20:56 2018
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 "2018-01-25" "gcc-7.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 "2018-12-06" "gcc-7.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.
*** 283,289 ****
  .IX Item "Warning Options"
  \&\fB\-fsyntax\-only  \-fmax\-errors=\fR\fIn\fR  \fB\-Wpedantic 
  \&\-pedantic\-errors 
! \&\-w  \-Wextra  \-Wall  \-Waddress  \-Waggregate\-return  
  \&\-Walloc\-zero  \-Walloc\-size\-larger\-than=\fR\fIn\fR
  \&\fB\-Walloca  \-Walloca\-larger\-than=\fR\fIn\fR 
  \&\fB\-Wno\-aggressive\-loop\-optimizations  \-Warray\-bounds  \-Warray\-bounds=\fR\fIn\fR 
--- 283,289 ----
  .IX Item "Warning Options"
  \&\fB\-fsyntax\-only  \-fmax\-errors=\fR\fIn\fR  \fB\-Wpedantic 
  \&\-pedantic\-errors 
! \&\-w  \-Wextra  \-Wall  \-Waddress  \-Waggregate\-return  \-Waligned\-new 
  \&\-Walloc\-zero  \-Walloc\-size\-larger\-than=\fR\fIn\fR
  \&\fB\-Walloca  \-Walloca\-larger\-than=\fR\fIn\fR 
  \&\fB\-Wno\-aggressive\-loop\-optimizations  \-Warray\-bounds  \-Warray\-bounds=\fR\fIn\fR 
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1037,1043 ****
  \&\-mfloat\-gprs=yes  \-mfloat\-gprs=no  \-mfloat\-gprs=single  \-mfloat\-gprs=double 
  \&\-mprototype  \-mno\-prototype 
  \&\-msim  \-mmvme  \-mads  \-myellowknife  \-memb  \-msdata 
! \&\-msdata=\fR\fIopt\fR  \fB\-mvxworks  \-G\fR \fInum\fR 
  \&\fB\-mrecip  \-mrecip=\fR\fIopt\fR  \fB\-mno\-recip  \-mrecip\-precision 
  \&\-mno\-recip\-precision 
  \&\-mveclibabi=\fR\fItype\fR  \fB\-mfriz  \-mno\-friz 
--- 1037,1043 ----
  \&\-mfloat\-gprs=yes  \-mfloat\-gprs=no  \-mfloat\-gprs=single  \-mfloat\-gprs=double 
  \&\-mprototype  \-mno\-prototype 
  \&\-msim  \-mmvme  \-mads  \-myellowknife  \-memb  \-msdata 
! \&\-msdata=\fR\fIopt\fR  \fB\-mreadonly\-in\-sdata  \-mvxworks  \-G\fR \fInum\fR 
  \&\fB\-mrecip  \-mrecip=\fR\fIopt\fR  \fB\-mno\-recip  \-mrecip\-precision 
  \&\-mno\-recip\-precision 
  \&\-mveclibabi=\fR\fItype\fR  \fB\-mfriz  \-mno\-friz 
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1223,1229 ****
  \&\-mavx256\-split\-unaligned\-load  \-mavx256\-split\-unaligned\-store 
  \&\-malign\-data=\fR\fItype\fR  \fB\-mstack\-protector\-guard=\fR\fIguard\fR 
  \&\fB\-mmitigate\-rop  \-mgeneral\-regs\-only 
! \&\-mindirect\-branch=\fR\fIchoice\fR \fB\-mfunction\-return==\fR\fIchoice\fR 
  \&\fB\-mindirect\-branch\-register\fR
  .Sp
  \&\fIx86 Windows Options\fR
--- 1223,1229 ----
  \&\-mavx256\-split\-unaligned\-load  \-mavx256\-split\-unaligned\-store 
  \&\-malign\-data=\fR\fItype\fR  \fB\-mstack\-protector\-guard=\fR\fIguard\fR 
  \&\fB\-mmitigate\-rop  \-mgeneral\-regs\-only 
! \&\-mindirect\-branch=\fR\fIchoice\fR \fB\-mfunction\-return=\fR\fIchoice\fR 
  \&\fB\-mindirect\-branch\-register\fR
  .Sp
  \&\fIx86 Windows Options\fR
*************** precision would exceed \f(CW\*(C`SIZE_MA
*** 4857,4862 ****
--- 4857,4865 ----
  may end in one of the standard suffixes designating a multiple of bytes
  such as \f(CW\*(C`kB\*(C'\fR and \f(CW\*(C`KiB\*(C'\fR for kilobyte and kibibyte, respectively,
  \&\f(CW\*(C`MB\*(C'\fR and \f(CW\*(C`MiB\*(C'\fR for megabyte and mebibyte, and so on.
+ \&\fB\-Walloc\-size\-larger\-than=\fR\fI\s-1PTRDIFF_MAX\s0\fR is enabled by default.
+ Warnings controlled by the option can be disabled by specifying \fIn\fR
+ of \fI\s-1SIZE_MAX\s0\fR or more.
  .IP "\fB\-Walloca\fR" 4
  .IX Item "-Walloca"
  This option warns on all uses of \f(CW\*(C`alloca\*(C'\fR in the source.
*************** This flag is enabled by default at \fB\-
*** 7502,7508 ****
  \&\fB\-fdelete\-null\-pointer\-checks\fR also being enabled.
  .IP "\fB\-fisolate\-erroneous\-paths\-attribute\fR" 4
  .IX Item "-fisolate-erroneous-paths-attribute"
! Detect paths that trigger erroneous or undefined behavior due a null value
  being used in a way forbidden by a \f(CW\*(C`returns_nonnull\*(C'\fR or \f(CW\*(C`nonnull\*(C'\fR
  attribute.  Isolate those paths from the main control flow and turn the
  statement with erroneous or undefined behavior into a trap.  This is not
--- 7505,7511 ----
  \&\fB\-fdelete\-null\-pointer\-checks\fR also being enabled.
  .IP "\fB\-fisolate\-erroneous\-paths\-attribute\fR" 4
  .IX Item "-fisolate-erroneous-paths-attribute"
! Detect paths that trigger erroneous or undefined behavior due to a null value
  being used in a way forbidden by a \f(CW\*(C`returns_nonnull\*(C'\fR or \f(CW\*(C`nonnull\*(C'\fR
  attribute.  Isolate those paths from the main control flow and turn the
  statement with erroneous or undefined behavior into a trap.  This is not
*************** Some assemblers only support this flag w
*** 8025,8030 ****
--- 8028,8034 ----
  in that case, it is rounded up.
  .Sp
  If \fIn\fR is not specified or is zero, use a machine-dependent default.
+ The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
  .IP "\fB\-flimit\-function\-alignment\fR" 4
*************** are greater than this value, then their
*** 8052,8057 ****
--- 8056,8062 ----
  .Sp
  If \fIn\fR is not specified or is zero, use a machine-dependent default
  which is very likely to be \fB1\fR, meaning no alignment.
+ The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
  .IP "\fB\-falign\-loops\fR" 4
*************** operations.
*** 8067,8072 ****
--- 8072,8078 ----
  .Sp
  \&\fB\-fno\-align\-loops\fR and \fB\-falign\-loops=1\fR are
  equivalent and mean that loops are not aligned.
+ The maximum allowed \fIn\fR option value is 65536.
  .Sp
  If \fIn\fR is not specified or is zero, use a machine-dependent default.
  .Sp
*************** need be executed.
*** 8086,8091 ****
--- 8092,8098 ----
  equivalent and mean that loops are not aligned.
  .Sp
  If \fIn\fR is not specified or is zero, use a machine-dependent default.
+ The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
  .IP "\fB\-funit\-at\-a\-time\fR" 4
*************** of these is when the application wishes
*** 11242,11250 ****
  across different shared libraries.  In that case, each of the libraries
  as well as the application itself should use the shared \fIlibgcc\fR.
  .Sp
! Therefore, the G++ and driver automatically adds \fB\-shared\-libgcc\fR
!  whenever you build a shared library or a main executable, because \*(C+
!  programs typically use exceptions, so this is the right thing to do.
  .Sp
  If, instead, you use the \s-1GCC\s0 driver to create shared libraries, you may
  find that they are not always linked with the shared \fIlibgcc\fR.
--- 11249,11257 ----
  across different shared libraries.  In that case, each of the libraries
  as well as the application itself should use the shared \fIlibgcc\fR.
  .Sp
! Therefore, the G++ driver automatically adds \fB\-shared\-libgcc\fR
! whenever you build a shared library or a main executable, because \*(C+
! programs typically use exceptions, so this is the right thing to do.
  .Sp
  If, instead, you use the \s-1GCC\s0 driver to create shared libraries, you may
  find that they are not always linked with the shared \fIlibgcc\fR.
*************** propagate through such shared libraries,
*** 11258,11265 ****
  costs at library load time.
  .Sp
  However, if a library or main executable is supposed to throw or catch
! exceptions, you must link it using the G++ driver, as appropriate
! for the languages used in the program, or using the option
  \&\fB\-shared\-libgcc\fR, such that it is linked with the shared
  \&\fIlibgcc\fR.
  .IP "\fB\-static\-libasan\fR" 4
--- 11265,11271 ----
  costs at library load time.
  .Sp
  However, if a library or main executable is supposed to throw or catch
! exceptions, you must link it using the G++ driver, or using the option
  \&\fB\-shared\-libgcc\fR, such that it is linked with the shared
  \&\fIlibgcc\fR.
  .IP "\fB\-static\-libasan\fR" 4
*************** other \fB\-msdata\fR options are used.
*** 21162,21167 ****
--- 21168,21181 ----
  On embedded PowerPC systems, put all initialized global and static data
  in the \f(CW\*(C`.data\*(C'\fR section, and all uninitialized data in the
  \&\f(CW\*(C`.bss\*(C'\fR section.
+ .IP "\fB\-mreadonly\-in\-sdata\fR" 4
+ .IX Item "-mreadonly-in-sdata"
+ .PD 0
+ .IP "\fB\-mreadonly\-in\-sdata\fR" 4
+ .IX Item "-mreadonly-in-sdata"
+ .PD
+ Put read-only objects in the \f(CW\*(C`.sdata\*(C'\fR section as well.  This is the
+ default.
  .IP "\fB\-mblock\-move\-inline\-limit=\fR\fInum\fR" 4
  .IX Item "-mblock-move-inline-limit=num"
  Inline all block moves (such as calls to \f(CW\*(C`memcpy\*(C'\fR or structure
*************** Generate code that runs on \fIcpu-type\f
*** 21801,21808 ****
  system representing a certain processor type.  Possible values for
  \&\fIcpu-type\fR are \fBz900\fR/\fBarch5\fR, \fBz990\fR/\fBarch6\fR,
  \&\fBz9\-109\fR, \fBz9\-ec\fR/\fBarch7\fR, \fBz10\fR/\fBarch8\fR,
! \&\fBz196\fR/\fBarch9\fR, \fBzEC12\fR, \fBz13\fR/\fBarch11\fR, and
! \&\fBnative\fR.
  .Sp
  The default is \fB\-march=z900\fR.  \fBg5\fR/\fBarch3\fR and
  \&\fBg6\fR are deprecated and will be removed with future releases.
--- 21815,21822 ----
  system representing a certain processor type.  Possible values for
  \&\fIcpu-type\fR are \fBz900\fR/\fBarch5\fR, \fBz990\fR/\fBarch6\fR,
  \&\fBz9\-109\fR, \fBz9\-ec\fR/\fBarch7\fR, \fBz10\fR/\fBarch8\fR,
! \&\fBz196\fR/\fBarch9\fR, \fBzEC12\fR, \fBz13\fR/\fBarch11\fR,
! \&\fBz14\fR/\fBarch12\fR, and \fBnative\fR.
  .Sp
  The default is \fB\-march=z900\fR.  \fBg5\fR/\fBarch3\fR and
  \&\fBg6\fR are deprecated and will be removed with future releases.
*************** preferred alignment to \fB\-mpreferred\-
*** 24075,24082 ****
  .IX Item "-maes"
  .IP "\fB\-mpclmul\fR" 4
  .IX Item "-mpclmul"
! .IP "\fB\-mclfushopt\fR" 4
! .IX Item "-mclfushopt"
  .IP "\fB\-mfsgsbase\fR" 4
  .IX Item "-mfsgsbase"
  .IP "\fB\-mrdrnd\fR" 4
--- 24089,24096 ----
  .IX Item "-maes"
  .IP "\fB\-mpclmul\fR" 4
  .IX Item "-mpclmul"
! .IP "\fB\-mclflushopt\fR" 4
! .IX Item "-mclflushopt"
  .IP "\fB\-mfsgsbase\fR" 4
  .IX Item "-mfsgsbase"
  .IP "\fB\-mrdrnd\fR" 4
diff -Nrcpad gcc-7.3.0/gcc/doc/gcc.1 gcc-7.4.0/gcc/doc/gcc.1
*** gcc-7.3.0/gcc/doc/gcc.1	Thu Jan 25 08:41:40 2018
--- gcc-7.4.0/gcc/doc/gcc.1	Thu Dec  6 10:20:55 2018
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 "2018-01-25" "gcc-7.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 "2018-12-06" "gcc-7.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.
*** 283,289 ****
  .IX Item "Warning Options"
  \&\fB\-fsyntax\-only  \-fmax\-errors=\fR\fIn\fR  \fB\-Wpedantic 
  \&\-pedantic\-errors 
! \&\-w  \-Wextra  \-Wall  \-Waddress  \-Waggregate\-return  
  \&\-Walloc\-zero  \-Walloc\-size\-larger\-than=\fR\fIn\fR
  \&\fB\-Walloca  \-Walloca\-larger\-than=\fR\fIn\fR 
  \&\fB\-Wno\-aggressive\-loop\-optimizations  \-Warray\-bounds  \-Warray\-bounds=\fR\fIn\fR 
--- 283,289 ----
  .IX Item "Warning Options"
  \&\fB\-fsyntax\-only  \-fmax\-errors=\fR\fIn\fR  \fB\-Wpedantic 
  \&\-pedantic\-errors 
! \&\-w  \-Wextra  \-Wall  \-Waddress  \-Waggregate\-return  \-Waligned\-new 
  \&\-Walloc\-zero  \-Walloc\-size\-larger\-than=\fR\fIn\fR
  \&\fB\-Walloca  \-Walloca\-larger\-than=\fR\fIn\fR 
  \&\fB\-Wno\-aggressive\-loop\-optimizations  \-Warray\-bounds  \-Warray\-bounds=\fR\fIn\fR 
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1037,1043 ****
  \&\-mfloat\-gprs=yes  \-mfloat\-gprs=no  \-mfloat\-gprs=single  \-mfloat\-gprs=double 
  \&\-mprototype  \-mno\-prototype 
  \&\-msim  \-mmvme  \-mads  \-myellowknife  \-memb  \-msdata 
! \&\-msdata=\fR\fIopt\fR  \fB\-mvxworks  \-G\fR \fInum\fR 
  \&\fB\-mrecip  \-mrecip=\fR\fIopt\fR  \fB\-mno\-recip  \-mrecip\-precision 
  \&\-mno\-recip\-precision 
  \&\-mveclibabi=\fR\fItype\fR  \fB\-mfriz  \-mno\-friz 
--- 1037,1043 ----
  \&\-mfloat\-gprs=yes  \-mfloat\-gprs=no  \-mfloat\-gprs=single  \-mfloat\-gprs=double 
  \&\-mprototype  \-mno\-prototype 
  \&\-msim  \-mmvme  \-mads  \-myellowknife  \-memb  \-msdata 
! \&\-msdata=\fR\fIopt\fR  \fB\-mreadonly\-in\-sdata  \-mvxworks  \-G\fR \fInum\fR 
  \&\fB\-mrecip  \-mrecip=\fR\fIopt\fR  \fB\-mno\-recip  \-mrecip\-precision 
  \&\-mno\-recip\-precision 
  \&\-mveclibabi=\fR\fItype\fR  \fB\-mfriz  \-mno\-friz 
*************** See \s-1RS/6000\s0 and PowerPC Options.
*** 1223,1229 ****
  \&\-mavx256\-split\-unaligned\-load  \-mavx256\-split\-unaligned\-store 
  \&\-malign\-data=\fR\fItype\fR  \fB\-mstack\-protector\-guard=\fR\fIguard\fR 
  \&\fB\-mmitigate\-rop  \-mgeneral\-regs\-only 
! \&\-mindirect\-branch=\fR\fIchoice\fR \fB\-mfunction\-return==\fR\fIchoice\fR 
  \&\fB\-mindirect\-branch\-register\fR
  .Sp
  \&\fIx86 Windows Options\fR
--- 1223,1229 ----
  \&\-mavx256\-split\-unaligned\-load  \-mavx256\-split\-unaligned\-store 
  \&\-malign\-data=\fR\fItype\fR  \fB\-mstack\-protector\-guard=\fR\fIguard\fR 
  \&\fB\-mmitigate\-rop  \-mgeneral\-regs\-only 
! \&\-mindirect\-branch=\fR\fIchoice\fR \fB\-mfunction\-return=\fR\fIchoice\fR 
  \&\fB\-mindirect\-branch\-register\fR
  .Sp
  \&\fIx86 Windows Options\fR
*************** precision would exceed \f(CW\*(C`SIZE_MA
*** 4857,4862 ****
--- 4857,4865 ----
  may end in one of the standard suffixes designating a multiple of bytes
  such as \f(CW\*(C`kB\*(C'\fR and \f(CW\*(C`KiB\*(C'\fR for kilobyte and kibibyte, respectively,
  \&\f(CW\*(C`MB\*(C'\fR and \f(CW\*(C`MiB\*(C'\fR for megabyte and mebibyte, and so on.
+ \&\fB\-Walloc\-size\-larger\-than=\fR\fI\s-1PTRDIFF_MAX\s0\fR is enabled by default.
+ Warnings controlled by the option can be disabled by specifying \fIn\fR
+ of \fI\s-1SIZE_MAX\s0\fR or more.
  .IP "\fB\-Walloca\fR" 4
  .IX Item "-Walloca"
  This option warns on all uses of \f(CW\*(C`alloca\*(C'\fR in the source.
*************** This flag is enabled by default at \fB\-
*** 7502,7508 ****
  \&\fB\-fdelete\-null\-pointer\-checks\fR also being enabled.
  .IP "\fB\-fisolate\-erroneous\-paths\-attribute\fR" 4
  .IX Item "-fisolate-erroneous-paths-attribute"
! Detect paths that trigger erroneous or undefined behavior due a null value
  being used in a way forbidden by a \f(CW\*(C`returns_nonnull\*(C'\fR or \f(CW\*(C`nonnull\*(C'\fR
  attribute.  Isolate those paths from the main control flow and turn the
  statement with erroneous or undefined behavior into a trap.  This is not
--- 7505,7511 ----
  \&\fB\-fdelete\-null\-pointer\-checks\fR also being enabled.
  .IP "\fB\-fisolate\-erroneous\-paths\-attribute\fR" 4
  .IX Item "-fisolate-erroneous-paths-attribute"
! Detect paths that trigger erroneous or undefined behavior due to a null value
  being used in a way forbidden by a \f(CW\*(C`returns_nonnull\*(C'\fR or \f(CW\*(C`nonnull\*(C'\fR
  attribute.  Isolate those paths from the main control flow and turn the
  statement with erroneous or undefined behavior into a trap.  This is not
*************** Some assemblers only support this flag w
*** 8025,8030 ****
--- 8028,8034 ----
  in that case, it is rounded up.
  .Sp
  If \fIn\fR is not specified or is zero, use a machine-dependent default.
+ The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
  .IP "\fB\-flimit\-function\-alignment\fR" 4
*************** are greater than this value, then their
*** 8052,8057 ****
--- 8056,8062 ----
  .Sp
  If \fIn\fR is not specified or is zero, use a machine-dependent default
  which is very likely to be \fB1\fR, meaning no alignment.
+ The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
  .IP "\fB\-falign\-loops\fR" 4
*************** operations.
*** 8067,8072 ****
--- 8072,8078 ----
  .Sp
  \&\fB\-fno\-align\-loops\fR and \fB\-falign\-loops=1\fR are
  equivalent and mean that loops are not aligned.
+ The maximum allowed \fIn\fR option value is 65536.
  .Sp
  If \fIn\fR is not specified or is zero, use a machine-dependent default.
  .Sp
*************** need be executed.
*** 8086,8091 ****
--- 8092,8098 ----
  equivalent and mean that loops are not aligned.
  .Sp
  If \fIn\fR is not specified or is zero, use a machine-dependent default.
+ The maximum allowed \fIn\fR option value is 65536.
  .Sp
  Enabled at levels \fB\-O2\fR, \fB\-O3\fR.
  .IP "\fB\-funit\-at\-a\-time\fR" 4
*************** of these is when the application wishes
*** 11242,11250 ****
  across different shared libraries.  In that case, each of the libraries
  as well as the application itself should use the shared \fIlibgcc\fR.
  .Sp
! Therefore, the G++ and driver automatically adds \fB\-shared\-libgcc\fR
!  whenever you build a shared library or a main executable, because \*(C+
!  programs typically use exceptions, so this is the right thing to do.
  .Sp
  If, instead, you use the \s-1GCC\s0 driver to create shared libraries, you may
  find that they are not always linked with the shared \fIlibgcc\fR.
--- 11249,11257 ----
  across different shared libraries.  In that case, each of the libraries
  as well as the application itself should use the shared \fIlibgcc\fR.
  .Sp
! Therefore, the G++ driver automatically adds \fB\-shared\-libgcc\fR
! whenever you build a shared library or a main executable, because \*(C+
! programs typically use exceptions, so this is the right thing to do.
  .Sp
  If, instead, you use the \s-1GCC\s0 driver to create shared libraries, you may
  find that they are not always linked with the shared \fIlibgcc\fR.
*************** propagate through such shared libraries,
*** 11258,11265 ****
  costs at library load time.
  .Sp
  However, if a library or main executable is supposed to throw or catch
! exceptions, you must link it using the G++ driver, as appropriate
! for the languages used in the program, or using the option
  \&\fB\-shared\-libgcc\fR, such that it is linked with the shared
  \&\fIlibgcc\fR.
  .IP "\fB\-static\-libasan\fR" 4
--- 11265,11271 ----
  costs at library load time.
  .Sp
  However, if a library or main executable is supposed to throw or catch
! exceptions, you must link it using the G++ driver, or using the option
  \&\fB\-shared\-libgcc\fR, such that it is linked with the shared
  \&\fIlibgcc\fR.
  .IP "\fB\-static\-libasan\fR" 4
*************** other \fB\-msdata\fR options are used.
*** 21162,21167 ****
--- 21168,21181 ----
  On embedded PowerPC systems, put all initialized global and static data
  in the \f(CW\*(C`.data\*(C'\fR section, and all uninitialized data in the
  \&\f(CW\*(C`.bss\*(C'\fR section.
+ .IP "\fB\-mreadonly\-in\-sdata\fR" 4
+ .IX Item "-mreadonly-in-sdata"
+ .PD 0
+ .IP "\fB\-mreadonly\-in\-sdata\fR" 4
+ .IX Item "-mreadonly-in-sdata"
+ .PD
+ Put read-only objects in the \f(CW\*(C`.sdata\*(C'\fR section as well.  This is the
+ default.
  .IP "\fB\-mblock\-move\-inline\-limit=\fR\fInum\fR" 4
  .IX Item "-mblock-move-inline-limit=num"
  Inline all block moves (such as calls to \f(CW\*(C`memcpy\*(C'\fR or structure
*************** Generate code that runs on \fIcpu-type\f
*** 21801,21808 ****
  system representing a certain processor type.  Possible values for
  \&\fIcpu-type\fR are \fBz900\fR/\fBarch5\fR, \fBz990\fR/\fBarch6\fR,
  \&\fBz9\-109\fR, \fBz9\-ec\fR/\fBarch7\fR, \fBz10\fR/\fBarch8\fR,
! \&\fBz196\fR/\fBarch9\fR, \fBzEC12\fR, \fBz13\fR/\fBarch11\fR, and
! \&\fBnative\fR.
  .Sp
  The default is \fB\-march=z900\fR.  \fBg5\fR/\fBarch3\fR and
  \&\fBg6\fR are deprecated and will be removed with future releases.
--- 21815,21822 ----
  system representing a certain processor type.  Possible values for
  \&\fIcpu-type\fR are \fBz900\fR/\fBarch5\fR, \fBz990\fR/\fBarch6\fR,
  \&\fBz9\-109\fR, \fBz9\-ec\fR/\fBarch7\fR, \fBz10\fR/\fBarch8\fR,
! \&\fBz196\fR/\fBarch9\fR, \fBzEC12\fR, \fBz13\fR/\fBarch11\fR,
! \&\fBz14\fR/\fBarch12\fR, and \fBnative\fR.
  .Sp
  The default is \fB\-march=z900\fR.  \fBg5\fR/\fBarch3\fR and
  \&\fBg6\fR are deprecated and will be removed with future releases.
*************** preferred alignment to \fB\-mpreferred\-
*** 24075,24082 ****
  .IX Item "-maes"
  .IP "\fB\-mpclmul\fR" 4
  .IX Item "-mpclmul"
! .IP "\fB\-mclfushopt\fR" 4
! .IX Item "-mclfushopt"
  .IP "\fB\-mfsgsbase\fR" 4
  .IX Item "-mfsgsbase"
  .IP "\fB\-mrdrnd\fR" 4
--- 24089,24096 ----
  .IX Item "-maes"
  .IP "\fB\-mpclmul\fR" 4
  .IX Item "-mpclmul"
! .IP "\fB\-mclflushopt\fR" 4
! .IX Item "-mclflushopt"
  .IP "\fB\-mfsgsbase\fR" 4
  .IX Item "-mfsgsbase"
  .IP "\fB\-mrdrnd\fR" 4
diff -Nrcpad gcc-7.3.0/gcc/doc/gcc.info gcc-7.4.0/gcc/doc/gcc.info
*** gcc-7.3.0/gcc/doc/gcc.info	Thu Jan 25 08:41:37 2018
--- gcc-7.4.0/gcc/doc/gcc.info	Thu Dec  6 10:20:52 2018
***************
*** 1,5 ****
  This is doc/gcc.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/doc/gcc.texi.
  
  Copyright (C) 1988-2017 Free Software Foundation, Inc.
  
--- 1,5 ----
  This is doc/gcc.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/doc/gcc.texi.
  
  Copyright (C) 1988-2017 Free Software Foundation, Inc.
  
*************** Introduction
*** 60,66 ****
  
  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 7.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.
--- 60,66 ----
  
  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 7.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.
*************** _Warning Options_
*** 577,583 ****
       *Note Options to Request or Suppress Warnings: Warning Options.
            -fsyntax-only  -fmax-errors=N  -Wpedantic
            -pedantic-errors
!           -w  -Wextra  -Wall  -Waddress  -Waggregate-return
            -Walloc-zero  -Walloc-size-larger-than=N
            -Walloca  -Walloca-larger-than=N
            -Wno-aggressive-loop-optimizations  -Warray-bounds  -Warray-bounds=N
--- 577,583 ----
       *Note Options to Request or Suppress Warnings: Warning Options.
            -fsyntax-only  -fmax-errors=N  -Wpedantic
            -pedantic-errors
!           -w  -Wextra  -Wall  -Waddress  -Waggregate-return  -Waligned-new
            -Walloc-zero  -Walloc-size-larger-than=N
            -Walloca  -Walloca-larger-than=N
            -Wno-aggressive-loop-optimizations  -Warray-bounds  -Warray-bounds=N
*************** _Machine-Dependent Options_
*** 1341,1347 ****
            -mfloat-gprs=yes  -mfloat-gprs=no  -mfloat-gprs=single  -mfloat-gprs=double
            -mprototype  -mno-prototype
            -msim  -mmvme  -mads  -myellowknife  -memb  -msdata
!           -msdata=OPT  -mvxworks  -G NUM
            -mrecip  -mrecip=OPT  -mno-recip  -mrecip-precision
            -mno-recip-precision
            -mveclibabi=TYPE  -mfriz  -mno-friz
--- 1341,1347 ----
            -mfloat-gprs=yes  -mfloat-gprs=no  -mfloat-gprs=single  -mfloat-gprs=double
            -mprototype  -mno-prototype
            -msim  -mmvme  -mads  -myellowknife  -memb  -msdata
!           -msdata=OPT  -mreadonly-in-sdata  -mvxworks  -G NUM
            -mrecip  -mrecip=OPT  -mno-recip  -mrecip-precision
            -mno-recip-precision
            -mveclibabi=TYPE  -mfriz  -mno-friz
*************** _Machine-Dependent Options_
*** 1527,1533 ****
            -mavx256-split-unaligned-load  -mavx256-split-unaligned-store
            -malign-data=TYPE  -mstack-protector-guard=GUARD
            -mmitigate-rop  -mgeneral-regs-only
!           -mindirect-branch=CHOICE -mfunction-return==CHOICE
            -mindirect-branch-register
  
       _x86 Windows Options_
--- 1527,1533 ----
            -mavx256-split-unaligned-load  -mavx256-split-unaligned-store
            -malign-data=TYPE  -mstack-protector-guard=GUARD
            -mmitigate-rop  -mgeneral-regs-only
!           -mindirect-branch=CHOICE -mfunction-return=CHOICE
            -mindirect-branch-register
  
       _x86 Windows Options_
*************** present.
*** 4947,4953 ****
       The option argument N may end in one of the standard suffixes
       designating a multiple of bytes such as `kB' and `KiB' for
       kilobyte and kibibyte, respectively, `MB' and `MiB' for megabyte
!      and mebibyte, and so on.  *Note Function Attributes::.
  
  `-Walloca'
       This option warns on all uses of `alloca' in the source.
--- 4947,4956 ----
       The option argument N may end in one of the standard suffixes
       designating a multiple of bytes such as `kB' and `KiB' for
       kilobyte and kibibyte, respectively, `MB' and `MiB' for megabyte
!      and mebibyte, and so on.  `-Walloc-size-larger-than='PTRDIFF_MAX
!      is enabled by default.  Warnings controlled by the option can be
!      disabled by specifying N of SIZE_MAX or more.  *Note Function
!      Attributes::.
  
  `-Walloca'
       This option warns on all uses of `alloca' in the source.
*************** optimizations to be performed is desired
*** 7531,7537 ****
       being enabled.
  
  `-fisolate-erroneous-paths-attribute'
!      Detect paths that trigger erroneous or undefined behavior due a
       null value being used in a way forbidden by a `returns_nonnull' or
       `nonnull' attribute.  Isolate those paths from the main control
       flow and turn the statement with erroneous or undefined behavior
--- 7534,7540 ----
       being enabled.
  
  `-fisolate-erroneous-paths-attribute'
!      Detect paths that trigger erroneous or undefined behavior due to a
       null value being used in a way forbidden by a `returns_nonnull' or
       `nonnull' attribute.  Isolate those paths from the main control
       flow and turn the statement with erroneous or undefined behavior
*************** optimizations to be performed is desired
*** 8033,8038 ****
--- 8036,8042 ----
       in that case, it is rounded up.
  
       If N is not specified or is zero, use a machine-dependent default.
+      The maximum allowed N option value is 65536.
  
       Enabled at levels `-O2', `-O3'.
  
*************** optimizations to be performed is desired
*** 8056,8062 ****
       greater than this value, then their values are used instead.
  
       If N is not specified or is zero, use a machine-dependent default
!      which is very likely to be `1', meaning no alignment.
  
       Enabled at levels `-O2', `-O3'.
  
--- 8060,8067 ----
       greater than this value, then their values are used instead.
  
       If N is not specified or is zero, use a machine-dependent default
!      which is very likely to be `1', meaning no alignment.  The maximum
!      allowed N option value is 65536.
  
       Enabled at levels `-O2', `-O3'.
  
*************** optimizations to be performed is desired
*** 8067,8073 ****
       this makes up for any execution of the dummy operations.
  
       `-fno-align-loops' and `-falign-loops=1' are equivalent and mean
!      that loops are not aligned.
  
       If N is not specified or is zero, use a machine-dependent default.
  
--- 8072,8079 ----
       this makes up for any execution of the dummy operations.
  
       `-fno-align-loops' and `-falign-loops=1' are equivalent and mean
!      that loops are not aligned.  The maximum allowed N option value is
!      65536.
  
       If N is not specified or is zero, use a machine-dependent default.
  
*************** optimizations to be performed is desired
*** 8084,8089 ****
--- 8090,8096 ----
       that loops are not aligned.
  
       If N is not specified or is zero, use a machine-dependent default.
+      The maximum allowed N option value is 65536.
  
       Enabled at levels `-O2', `-O3'.
  
*************** doing a link step.
*** 11289,11297 ****
       libraries as well as the application itself should use the shared
       `libgcc'.
  
!      Therefore, the G++ and driver automatically adds `-shared-libgcc'
       whenever you build a shared library or a main executable, because
!      C++  programs typically use exceptions, so this is the right thing
       to do.
  
       If, instead, you use the GCC driver to create shared libraries,
--- 11296,11304 ----
       libraries as well as the application itself should use the shared
       `libgcc'.
  
!      Therefore, the G++ driver automatically adds `-shared-libgcc'
       whenever you build a shared library or a main executable, because
!      C++ programs typically use exceptions, so this is the right thing
       to do.
  
       If, instead, you use the GCC driver to create shared libraries,
*************** doing a link step.
*** 11306,11314 ****
       without incurring relocation costs at library load time.
  
       However, if a library or main executable is supposed to throw or
!      catch exceptions, you must link it using the G++ driver, as
!      appropriate for the languages used in the program, or using the
!      option `-shared-libgcc', such that it is linked with the shared
       `libgcc'.
  
  `-static-libasan'
--- 11313,11320 ----
       without incurring relocation costs at library load time.
  
       However, if a library or main executable is supposed to throw or
!      catch exceptions, you must link it using the G++ driver, or using
!      the option `-shared-libgcc', such that it is linked with the shared
       `libgcc'.
  
  `-static-libasan'
*************** These `-m' options are defined for the I
*** 20394,20399 ****
--- 20400,20410 ----
       data in the `.data' section, and all uninitialized data in the
       `.bss' section.
  
+ `-mreadonly-in-sdata'
+ `-mreadonly-in-sdata'
+      Put read-only objects in the `.sdata' section as well.  This is the
+      default.
+ 
  `-mblock-move-inline-limit=NUM'
       Inline all block moves (such as calls to `memcpy' or structure
       copies) less than or equal to NUM bytes.  The minimum value for
*************** architecture.
*** 20935,20941 ****
       representing a certain processor type.  Possible values for
       CPU-TYPE are `z900'/`arch5', `z990'/`arch6', `z9-109',
       `z9-ec'/`arch7', `z10'/`arch8', `z196'/`arch9', `zEC12',
!      `z13'/`arch11', and `native'.
  
       The default is `-march=z900'.  `g5'/`arch3' and `g6' are
       deprecated and will be removed with future releases.
--- 20946,20952 ----
       representing a certain processor type.  Possible values for
       CPU-TYPE are `z900'/`arch5', `z990'/`arch6', `z9-109',
       `z9-ec'/`arch7', `z10'/`arch8', `z196'/`arch9', `zEC12',
!      `z13'/`arch11', `z14'/`arch12', and `native'.
  
       The default is `-march=z900'.  `g5'/`arch3' and `g6' are
       deprecated and will be removed with future releases.
*************** These `-m' options are defined for the x
*** 23062,23068 ****
  `-msha'
  `-maes'
  `-mpclmul'
! `-mclfushopt'
  `-mfsgsbase'
  `-mrdrnd'
  `-mf16c'
--- 23073,23079 ----
  `-msha'
  `-maes'
  `-mpclmul'
! `-mclflushopt'
  `-mfsgsbase'
  `-mrdrnd'
  `-mf16c'
*************** of processors, starting with ISA 2.06 or
*** 41425,41444 ****
  `-mpopcntd'):
       long __builtin_bpermd (long, long);
       int __builtin_divwe (int, int);
-      int __builtin_divweo (int, int);
       unsigned int __builtin_divweu (unsigned int, unsigned int);
-      unsigned int __builtin_divweuo (unsigned int, unsigned int);
       long __builtin_divde (long, long);
-      long __builtin_divdeo (long, long);
       unsigned long __builtin_divdeu (unsigned long, unsigned long);
-      unsigned long __builtin_divdeuo (unsigned long, unsigned long);
       unsigned int cdtbcd (unsigned int);
       unsigned int cbcdtd (unsigned int);
       unsigned int addg6s (unsigned int, unsigned int);
  
!  The `__builtin_divde', `__builtin_divdeo', `__builtin_divdeu',
! `__builtin_divdeou' functions require a 64-bit environment support ISA
! 2.06 or later.
  
   The following built-in functions are available for the PowerPC family
  of processors, starting with ISA 3.0 or later (`-mcpu=power9'):
--- 41436,41450 ----
  `-mpopcntd'):
       long __builtin_bpermd (long, long);
       int __builtin_divwe (int, int);
       unsigned int __builtin_divweu (unsigned int, unsigned int);
       long __builtin_divde (long, long);
       unsigned long __builtin_divdeu (unsigned long, unsigned long);
       unsigned int cdtbcd (unsigned int);
       unsigned int cbcdtd (unsigned int);
       unsigned int addg6s (unsigned int, unsigned int);
  
!  The `__builtin_divde' and `__builtin_divdeu' functions require a
! 64-bit environment supporting ISA 2.06 or later.
  
   The following built-in functions are available for the PowerPC family
  of processors, starting with ISA 3.0 or later (`-mcpu=power9'):
*************** available:
*** 44328,44341 ****
       vector int vec_vctzw (vector int);
       vector unsigned int vec_vctzw (vector int);
  
!      long long vec_vextract4b (const vector signed char, const int);
!      long long vec_vextract4b (const vector unsigned char, const int);
! 
!      vector signed char vec_insert4b (vector int, vector signed char, const int);
       vector unsigned char vec_insert4b (vector unsigned int, vector unsigned char,
                                          const int);
-      vector signed char vec_insert4b (long long, vector signed char, const int);
-      vector unsigned char vec_insert4b (long long, vector unsigned char, const int);
  
       vector int vec_vprtyb (vector int);
       vector unsigned int vec_vprtyb (vector unsigned int);
--- 44334,44344 ----
       vector int vec_vctzw (vector int);
       vector unsigned int vec_vctzw (vector int);
  
!      long long vec_extract4b (const vector unsigned char, const int);
!      vector unsigned char vec_insert4b (vector signed int, vector unsigned char,
!                                         const int);
       vector unsigned char vec_insert4b (vector unsigned int, vector unsigned char,
                                          const int);
  
       vector int vec_vprtyb (vector int);
       vector unsigned int vec_vprtyb (vector unsigned int);
*************** source code.  The format is
*** 50171,50177 ****
  
   Additional block information may succeed each line, when requested by
  command line option.  The EXECUTION_COUNT is `-' for lines containing
! no code.  Unexecuted lines are marked `#####' or `====', depending on
  whether they are reachable by non-exceptional paths or only exceptional
  paths such as C++ exception handlers, respectively. Given `-a' option,
  unexecuted blocks are marked `$$$$$' or `%%%%%', depending on whether a
--- 50174,50180 ----
  
   Additional block information may succeed each line, when requested by
  command line option.  The EXECUTION_COUNT is `-' for lines containing
! no code.  Unexecuted lines are marked `#####' or `=====', depending on
  whether they are reachable by non-exceptional paths or only exceptional
  paths such as C++ exception handlers, respectively. Given `-a' option,
  unexecuted blocks are marked `$$$$$' or `%%%%%', depending on whether a
*************** information collected at that point to b
*** 50448,50454 ****
  files.  Instrumented applications use a static destructor with priority
  99 to invoke the `__gcov_dump' function. Thus `__gcov_dump' is executed
  after all user defined static destructors, as well as handlers
! registered with `atexit'.
  
  
  File: gcc.info,  Node: Gcov Data Files,  Next: Cross-profiling,  Prev: Gcov and Optimization,  Up: Gcov
--- 50451,50459 ----
  files.  Instrumented applications use a static destructor with priority
  99 to invoke the `__gcov_dump' function. Thus `__gcov_dump' is executed
  after all user defined static destructors, as well as handlers
! registered with `atexit'.  If an executable loads a dynamic shared
! object via dlopen functionality, `-Wl,--dynamic-list-data' is needed to
! dump all profile data.
  
  
  File: gcc.info,  Node: Gcov Data Files,  Next: Cross-profiling,  Prev: Gcov and Optimization,  Up: Gcov
*************** look up both forms.
*** 54494,54501 ****
  * -mno-low-precision-sqrt:               AArch64 Options.    (line   96)
  * -Wabi-tag:                             C++ Dialect Options.
                                                               (line  555)
! * -Wno-scalar-storage-order:             Warning Options.    (line 2086)
! * -Wscalar-storage-order:                Warning Options.    (line 2086)
  * 80387:                                 x86 Options.        (line  433)
  * A:                                     Preprocessor Options.
                                                               (line  316)
--- 54499,54506 ----
  * -mno-low-precision-sqrt:               AArch64 Options.    (line   96)
  * -Wabi-tag:                             C++ Dialect Options.
                                                               (line  555)
! * -Wno-scalar-storage-order:             Warning Options.    (line 2089)
! * -Wscalar-storage-order:                Warning Options.    (line 2089)
  * 80387:                                 x86 Options.        (line  433)
  * A:                                     Preprocessor Options.
                                                               (line  316)
*************** look up both forms.
*** 54571,54595 ****
  * fada-spec-parent:                      Overall Options.    (line  377)
  * faggressive-loop-optimizations:        Optimize Options.   (line  520)
  * falign-functions:                      Optimize Options.   (line 1544)
! * falign-jumps:                          Optimize Options.   (line 1599)
! * falign-labels:                         Optimize Options.   (line 1568)
! * falign-loops:                          Optimize Options.   (line 1586)
  * faligned-new:                          C++ Dialect Options.
                                                               (line   96)
  * fallow-parameterless-variadic-functions: C Dialect Options.
                                                               (line  213)
  * fasan-shadow-offset:                   Instrumentation Options.
                                                               (line  325)
! * fassociative-math:                     Optimize Options.   (line 2078)
  * fasynchronous-unwind-tables:           Code Gen Options.   (line  146)
  * fauto-inc-dec:                         Optimize Options.   (line  542)
! * fauto-profile:                         Optimize Options.   (line 1958)
  * fbounds-check:                         Instrumentation Options.
                                                               (line  386)
! * fbranch-probabilities:                 Optimize Options.   (line 2222)
! * fbranch-target-load-optimize:          Optimize Options.   (line 2348)
! * fbranch-target-load-optimize2:         Optimize Options.   (line 2354)
! * fbtr-bb-exclusive:                     Optimize Options.   (line 2358)
  * fcall-saved:                           Code Gen Options.   (line  446)
  * fcall-used:                            Code Gen Options.   (line  432)
  * fcaller-saves:                         Optimize Options.   (line  901)
--- 54576,54600 ----
  * fada-spec-parent:                      Overall Options.    (line  377)
  * faggressive-loop-optimizations:        Optimize Options.   (line  520)
  * falign-functions:                      Optimize Options.   (line 1544)
! * falign-jumps:                          Optimize Options.   (line 1602)
! * falign-labels:                         Optimize Options.   (line 1569)
! * falign-loops:                          Optimize Options.   (line 1588)
  * faligned-new:                          C++ Dialect Options.
                                                               (line   96)
  * fallow-parameterless-variadic-functions: C Dialect Options.
                                                               (line  213)
  * fasan-shadow-offset:                   Instrumentation Options.
                                                               (line  325)
! * fassociative-math:                     Optimize Options.   (line 2082)
  * fasynchronous-unwind-tables:           Code Gen Options.   (line  146)
  * fauto-inc-dec:                         Optimize Options.   (line  542)
! * fauto-profile:                         Optimize Options.   (line 1962)
  * fbounds-check:                         Instrumentation Options.
                                                               (line  386)
! * fbranch-probabilities:                 Optimize Options.   (line 2226)
! * fbranch-target-load-optimize:          Optimize Options.   (line 2352)
! * fbranch-target-load-optimize2:         Optimize Options.   (line 2358)
! * fbtr-bb-exclusive:                     Optimize Options.   (line 2362)
  * fcall-saved:                           Code Gen Options.   (line  446)
  * fcall-used:                            Code Gen Options.   (line  432)
  * fcaller-saves:                         Optimize Options.   (line  901)
*************** look up both forms.
*** 54639,54645 ****
                                                               (line   90)
  * fcompare-debug:                        Developer Options.  (line  750)
  * fcompare-debug-second:                 Developer Options.  (line  776)
! * fcompare-elim:                         Optimize Options.   (line 1911)
  * fconcepts:                             C++ Dialect Options.
                                                               (line  114)
  * fcond-mismatch:                        C Dialect Options.  (line  369)
--- 54644,54650 ----
                                                               (line   90)
  * fcompare-debug:                        Developer Options.  (line  750)
  * fcompare-debug-second:                 Developer Options.  (line  776)
! * fcompare-elim:                         Optimize Options.   (line 1915)
  * fconcepts:                             C++ Dialect Options.
                                                               (line  114)
  * fcond-mismatch:                        C Dialect Options.  (line  369)
*************** look up both forms.
*** 54650,54662 ****
                                                               (line  121)
  * fconstexpr-loop-limit:                 C++ Dialect Options.
                                                               (line  127)
! * fcprop-registers:                      Optimize Options.   (line 1923)
  * fcrossjumping:                         Optimize Options.   (line  535)
  * fcse-follow-jumps:                     Optimize Options.   (line  456)
  * fcse-skip-blocks:                      Optimize Options.   (line  465)
! * fcx-fortran-rules:                     Optimize Options.   (line 2208)
! * fcx-limited-range:                     Optimize Options.   (line 2196)
! * fdata-sections:                        Optimize Options.   (line 2329)
  * fdbg-cnt:                              Developer Options.  (line  889)
  * fdbg-cnt-list:                         Developer Options.  (line  886)
  * fdce:                                  Optimize Options.   (line  548)
--- 54655,54667 ----
                                                               (line  121)
  * fconstexpr-loop-limit:                 C++ Dialect Options.
                                                               (line  127)
! * fcprop-registers:                      Optimize Options.   (line 1927)
  * fcrossjumping:                         Optimize Options.   (line  535)
  * fcse-follow-jumps:                     Optimize Options.   (line  456)
  * fcse-skip-blocks:                      Optimize Options.   (line  465)
! * fcx-fortran-rules:                     Optimize Options.   (line 2212)
! * fcx-limited-range:                     Optimize Options.   (line 2200)
! * fdata-sections:                        Optimize Options.   (line 2333)
  * fdbg-cnt:                              Developer Options.  (line  889)
  * fdbg-cnt-list:                         Developer Options.  (line  886)
  * fdce:                                  Optimize Options.   (line  548)
*************** look up both forms.
*** 54784,54790 ****
  * femit-struct-debug-reduced:            Debugging Options.  (line  251)
  * fenable-:                              Developer Options.  (line  588)
  * fexceptions:                           Code Gen Options.   (line  108)
! * fexcess-precision:                     Optimize Options.   (line 2005)
  * fexec-charset:                         Preprocessor Options.
                                                               (line  254)
  * fexpensive-optimizations:              Optimize Options.   (line  627)
--- 54789,54795 ----
  * femit-struct-debug-reduced:            Debugging Options.  (line  251)
  * fenable-:                              Developer Options.  (line  588)
  * fexceptions:                           Code Gen Options.   (line  108)
! * fexcess-precision:                     Optimize Options.   (line 2009)
  * fexec-charset:                         Preprocessor Options.
                                                               (line  254)
  * fexpensive-optimizations:              Optimize Options.   (line  627)
*************** look up both forms.
*** 54794,54806 ****
                                                               (line  223)
  * fextern-tls-init:                      C++ Dialect Options.
                                                               (line  187)
! * ffast-math:                            Optimize Options.   (line 2029)
! * ffat-lto-objects:                      Optimize Options.   (line 1892)
! * ffinite-math-only:                     Optimize Options.   (line 2103)
  * ffix-and-continue:                     Darwin Options.     (line  104)
  * ffixed:                                Code Gen Options.   (line  420)
  * ffloat-store <1>:                      Disappointments.    (line   77)
! * ffloat-store:                          Optimize Options.   (line 1991)
  * ffor-scope:                            C++ Dialect Options.
                                                               (line  208)
  * fforward-propagate:                    Optimize Options.   (line  202)
--- 54799,54811 ----
                                                               (line  223)
  * fextern-tls-init:                      C++ Dialect Options.
                                                               (line  187)
! * ffast-math:                            Optimize Options.   (line 2033)
! * ffat-lto-objects:                      Optimize Options.   (line 1896)
! * ffinite-math-only:                     Optimize Options.   (line 2107)
  * ffix-and-continue:                     Darwin Options.     (line  104)
  * ffixed:                                Code Gen Options.   (line  420)
  * ffloat-store <1>:                      Disappointments.    (line   77)
! * ffloat-store:                          Optimize Options.   (line 1995)
  * ffor-scope:                            C++ Dialect Options.
                                                               (line  208)
  * fforward-propagate:                    Optimize Options.   (line  202)
*************** look up both forms.
*** 54812,54818 ****
  * ffreestanding:                         Standards.          (line   91)
  * ffriend-injection:                     C++ Dialect Options.
                                                               (line  153)
! * ffunction-sections:                    Optimize Options.   (line 2329)
  * fgcse:                                 Optimize Options.   (line  479)
  * fgcse-after-reload:                    Optimize Options.   (line  515)
  * fgcse-las:                             Optimize Options.   (line  508)
--- 54817,54823 ----
  * ffreestanding:                         Standards.          (line   91)
  * ffriend-injection:                     C++ Dialect Options.
                                                               (line  153)
! * ffunction-sections:                    Optimize Options.   (line 2333)
  * fgcse:                                 Optimize Options.   (line  479)
  * fgcse-after-reload:                    Optimize Options.   (line  515)
  * fgcse-las:                             Optimize Options.   (line  508)
*************** look up both forms.
*** 54882,54891 ****
  * floop-strip-mine:                      Optimize Options.   (line 1140)
  * floop-unroll-and-jam:                  Optimize Options.   (line 1140)
  * flra-remat:                            Optimize Options.   (line  718)
! * flto:                                  Optimize Options.   (line 1653)
! * flto-compression-level:                Optimize Options.   (line 1866)
! * flto-odr-type-merging:                 Optimize Options.   (line 1860)
! * flto-partition:                        Optimize Options.   (line 1846)
  * flto-report:                           Developer Options.  (line  819)
  * flto-report-wpa:                       Developer Options.  (line  827)
  * fmax-errors:                           Warning Options.    (line   18)
--- 54887,54896 ----
  * floop-strip-mine:                      Optimize Options.   (line 1140)
  * floop-unroll-and-jam:                  Optimize Options.   (line 1140)
  * flra-remat:                            Optimize Options.   (line  718)
! * flto:                                  Optimize Options.   (line 1657)
! * flto-compression-level:                Optimize Options.   (line 1870)
! * flto-odr-type-merging:                 Optimize Options.   (line 1864)
! * flto-partition:                        Optimize Options.   (line 1850)
  * flto-report:                           Developer Options.  (line  819)
  * flto-report-wpa:                       Developer Options.  (line  827)
  * fmax-errors:                           Warning Options.    (line   18)
*************** look up both forms.
*** 54898,54904 ****
                                                               (line   14)
  * fmodulo-sched:                         Optimize Options.   (line  389)
  * fmodulo-sched-allow-regmoves:          Optimize Options.   (line  394)
! * fmove-loop-invariants:                 Optimize Options.   (line 2315)
  * fms-extensions <1>:                    Unnamed Fields.     (line   36)
  * fms-extensions <2>:                    C++ Dialect Options.
                                                               (line  243)
--- 54903,54909 ----
                                                               (line   14)
  * fmodulo-sched:                         Optimize Options.   (line  389)
  * fmodulo-sched-allow-regmoves:          Optimize Options.   (line  394)
! * fmove-loop-invariants:                 Optimize Options.   (line 2319)
  * fms-extensions <1>:                    Unnamed Fields.     (line   36)
  * fms-extensions <2>:                    C++ Dialect Options.
                                                               (line  243)
*************** look up both forms.
*** 54980,54986 ****
                                                               (line  187)
  * fno-for-scope:                         C++ Dialect Options.
                                                               (line  208)
! * fno-fp-int-builtin-inexact:            Optimize Options.   (line 2175)
  * fno-function-cse:                      Optimize Options.   (line  416)
  * fno-gnu-keywords:                      C++ Dialect Options.
                                                               (line  220)
--- 54985,54991 ----
                                                               (line  187)
  * fno-for-scope:                         C++ Dialect Options.
                                                               (line  208)
! * fno-fp-int-builtin-inexact:            Optimize Options.   (line 2179)
  * fno-function-cse:                      Optimize Options.   (line  416)
  * fno-gnu-keywords:                      C++ Dialect Options.
                                                               (line  220)
*************** look up both forms.
*** 55004,55010 ****
  * fno-lifetime-dse:                      Optimize Options.   (line  641)
  * fno-local-ivars:                       Objective-C and Objective-C++ Dialect Options.
                                                               (line  153)
! * fno-math-errno:                        Optimize Options.   (line 2043)
  * fno-merge-debug-strings:               Debugging Options.  (line  138)
  * fno-nil-receivers:                     Objective-C and Objective-C++ Dialect Options.
                                                               (line   49)
--- 55009,55015 ----
  * fno-lifetime-dse:                      Optimize Options.   (line  641)
  * fno-local-ivars:                       Objective-C and Objective-C++ Dialect Options.
                                                               (line  153)
! * fno-math-errno:                        Optimize Options.   (line 2047)
  * fno-merge-debug-strings:               Debugging Options.  (line  138)
  * fno-nil-receivers:                     Objective-C and Objective-C++ Dialect Options.
                                                               (line   49)
*************** look up both forms.
*** 55033,55045 ****
  * fno-show-column:                       Diagnostic Message Formatting Options.
                                                               (line  172)
  * fno-signed-bitfields:                  C Dialect Options.  (line  407)
! * fno-signed-zeros:                      Optimize Options.   (line 2115)
  * fno-stack-limit:                       Instrumentation Options.
                                                               (line  574)
  * fno-threadsafe-statics:                C++ Dialect Options.
                                                               (line  358)
! * fno-toplevel-reorder:                  Optimize Options.   (line 1619)
! * fno-trapping-math:                     Optimize Options.   (line 2125)
  * fno-unsigned-bitfields:                C Dialect Options.  (line  407)
  * fno-use-cxa-get-exception-ptr:         C++ Dialect Options.
                                                               (line  371)
--- 55038,55050 ----
  * fno-show-column:                       Diagnostic Message Formatting Options.
                                                               (line  172)
  * fno-signed-bitfields:                  C Dialect Options.  (line  407)
! * fno-signed-zeros:                      Optimize Options.   (line 2119)
  * fno-stack-limit:                       Instrumentation Options.
                                                               (line  574)
  * fno-threadsafe-statics:                C++ Dialect Options.
                                                               (line  358)
! * fno-toplevel-reorder:                  Optimize Options.   (line 1623)
! * fno-trapping-math:                     Optimize Options.   (line 2129)
  * fno-unsigned-bitfields:                C Dialect Options.  (line  407)
  * fno-use-cxa-get-exception-ptr:         C++ Dialect Options.
                                                               (line  371)
*************** look up both forms.
*** 55087,55093 ****
                                                               (line  277)
  * fpch-preprocess:                       Preprocessor Options.
                                                               (line  285)
! * fpeel-loops:                           Optimize Options.   (line 2307)
  * fpermissive:                           C++ Dialect Options.
                                                               (line  286)
  * fpermitted-flt-eval-methods:           C Dialect Options.  (line  175)
--- 55092,55098 ----
                                                               (line  277)
  * fpch-preprocess:                       Preprocessor Options.
                                                               (line  285)
! * fpeel-loops:                           Optimize Options.   (line 2311)
  * fpermissive:                           C++ Dialect Options.
                                                               (line  286)
  * fpermitted-flt-eval-methods:           C Dialect Options.  (line  175)
*************** look up both forms.
*** 55110,55133 ****
  * fprofile-arcs <1>:                     Other Builtins.     (line  368)
  * fprofile-arcs:                         Instrumentation Options.
                                                               (line   31)
! * fprofile-correction:                   Optimize Options.   (line 1930)
  * fprofile-dir:                          Instrumentation Options.
                                                               (line  101)
  * fprofile-generate:                     Instrumentation Options.
                                                               (line  111)
! * fprofile-reorder-functions:            Optimize Options.   (line 2249)
  * fprofile-report:                       Developer Options.  (line  845)
  * fprofile-update:                       Instrumentation Options.
                                                               (line  127)
! * fprofile-use:                          Optimize Options.   (line 1938)
! * fprofile-values:                       Optimize Options.   (line 2240)
  * fpu:                                   RX Options.         (line   17)
  * frandom-seed:                          Developer Options.  (line  661)
! * freciprocal-math:                      Optimize Options.   (line 2094)
  * frecord-gcc-switches:                  Code Gen Options.   (line  338)
  * free:                                  Optimize Options.   (line  633)
  * freg-struct-return:                    Code Gen Options.   (line  183)
! * frename-registers:                     Optimize Options.   (line 2266)
  * freorder-blocks:                       Optimize Options.   (line 1420)
  * freorder-blocks-algorithm:             Optimize Options.   (line 1426)
  * freorder-blocks-and-partition:         Optimize Options.   (line 1437)
--- 55115,55138 ----
  * fprofile-arcs <1>:                     Other Builtins.     (line  368)
  * fprofile-arcs:                         Instrumentation Options.
                                                               (line   31)
! * fprofile-correction:                   Optimize Options.   (line 1934)
  * fprofile-dir:                          Instrumentation Options.
                                                               (line  101)
  * fprofile-generate:                     Instrumentation Options.
                                                               (line  111)
! * fprofile-reorder-functions:            Optimize Options.   (line 2253)
  * fprofile-report:                       Developer Options.  (line  845)
  * fprofile-update:                       Instrumentation Options.
                                                               (line  127)
! * fprofile-use:                          Optimize Options.   (line 1942)
! * fprofile-values:                       Optimize Options.   (line 2244)
  * fpu:                                   RX Options.         (line   17)
  * frandom-seed:                          Developer Options.  (line  661)
! * freciprocal-math:                      Optimize Options.   (line 2098)
  * frecord-gcc-switches:                  Code Gen Options.   (line  338)
  * free:                                  Optimize Options.   (line  633)
  * freg-struct-return:                    Code Gen Options.   (line  183)
! * frename-registers:                     Optimize Options.   (line 2270)
  * freorder-blocks:                       Optimize Options.   (line 1420)
  * freorder-blocks-algorithm:             Optimize Options.   (line 1426)
  * freorder-blocks-and-partition:         Optimize Options.   (line 1437)
*************** look up both forms.
*** 55141,55147 ****
  * freport-bug:                           Developer Options.  (line  258)
  * frerun-cse-after-loop:                 Optimize Options.   (line  473)
  * freschedule-modulo-scheduled-loops:    Optimize Options.   (line  850)
! * frounding-math:                        Optimize Options.   (line 2140)
  * fsanitize-address-use-after-scope:     Instrumentation Options.
                                                               (line  371)
  * fsanitize-coverage=trace-pc:           Instrumentation Options.
--- 55146,55152 ----
  * freport-bug:                           Developer Options.  (line  258)
  * frerun-cse-after-loop:                 Optimize Options.   (line  473)
  * freschedule-modulo-scheduled-loops:    Optimize Options.   (line  850)
! * frounding-math:                        Optimize Options.   (line 2144)
  * fsanitize-address-use-after-scope:     Instrumentation Options.
                                                               (line  371)
  * fsanitize-coverage=trace-pc:           Instrumentation Options.
*************** look up both forms.
*** 55215,55224 ****
  * fsched-stalled-insns-dep:              Optimize Options.   (line  791)
  * fsched-verbose:                        Developer Options.  (line  574)
  * fsched2-use-superblocks:               Optimize Options.   (line  800)
! * fschedule-fusion:                      Optimize Options.   (line 2276)
  * fschedule-insns:                       Optimize Options.   (line  732)
  * fschedule-insns2:                      Optimize Options.   (line  742)
! * fsection-anchors:                      Optimize Options.   (line 2366)
  * fsel-sched-pipelining:                 Optimize Options.   (line  863)
  * fsel-sched-pipelining-outer-loops:     Optimize Options.   (line  868)
  * fselective-scheduling:                 Optimize Options.   (line  855)
--- 55220,55229 ----
  * fsched-stalled-insns-dep:              Optimize Options.   (line  791)
  * fsched-verbose:                        Developer Options.  (line  574)
  * fsched2-use-superblocks:               Optimize Options.   (line  800)
! * fschedule-fusion:                      Optimize Options.   (line 2280)
  * fschedule-insns:                       Optimize Options.   (line  732)
  * fschedule-insns2:                      Optimize Options.   (line  742)
! * fsection-anchors:                      Optimize Options.   (line 2370)
  * fsel-sched-pipelining:                 Optimize Options.   (line  863)
  * fsel-sched-pipelining-outer-loops:     Optimize Options.   (line  868)
  * fselective-scheduling:                 Optimize Options.   (line  855)
*************** look up both forms.
*** 55233,55250 ****
  * fshort-wchar:                          Code Gen Options.   (line  211)
  * fshrink-wrap:                          Optimize Options.   (line  890)
  * fshrink-wrap-separate:                 Optimize Options.   (line  895)
! * fsignaling-nans:                       Optimize Options.   (line 2160)
  * fsigned-bitfields <1>:                 Non-bugs.           (line   57)
  * fsigned-bitfields:                     C Dialect Options.  (line  407)
  * fsigned-char <1>:                      Characters implementation.
                                                               (line   31)
  * fsigned-char:                          C Dialect Options.  (line  397)
  * fsimd-cost-model:                      Optimize Options.   (line 1307)
! * fsingle-precision-constant:            Optimize Options.   (line 2192)
  * fsized-deallocation:                   C++ Dialect Options.
                                                               (line  318)
  * fsplit-ivs-in-unroller:                Optimize Options.   (line 1328)
! * fsplit-loops:                          Optimize Options.   (line 2319)
  * fsplit-paths:                          Optimize Options.   (line 1323)
  * fsplit-stack <1>:                      Common Function Attributes.
                                                               (line  536)
--- 55238,55255 ----
  * fshort-wchar:                          Code Gen Options.   (line  211)
  * fshrink-wrap:                          Optimize Options.   (line  890)
  * fshrink-wrap-separate:                 Optimize Options.   (line  895)
! * fsignaling-nans:                       Optimize Options.   (line 2164)
  * fsigned-bitfields <1>:                 Non-bugs.           (line   57)
  * fsigned-bitfields:                     C Dialect Options.  (line  407)
  * fsigned-char <1>:                      Characters implementation.
                                                               (line   31)
  * fsigned-char:                          C Dialect Options.  (line  397)
  * fsimd-cost-model:                      Optimize Options.   (line 1307)
! * fsingle-precision-constant:            Optimize Options.   (line 2196)
  * fsized-deallocation:                   C++ Dialect Options.
                                                               (line  318)
  * fsplit-ivs-in-unroller:                Optimize Options.   (line 1328)
! * fsplit-loops:                          Optimize Options.   (line 2323)
  * fsplit-paths:                          Optimize Options.   (line 1323)
  * fsplit-stack <1>:                      Common Function Attributes.
                                                               (line  536)
*************** look up both forms.
*** 55271,55277 ****
  * fstack-usage:                          Developer Options.  (line  849)
  * fstack_reuse:                          Code Gen Options.   (line   15)
  * fstats:                                Developer Options.  (line  880)
! * fstdarg-opt:                           Optimize Options.   (line 2362)
  * fstore-merging:                        Optimize Options.   (line 1259)
  * fstrict-aliasing:                      Optimize Options.   (line 1463)
  * fstrict-enums:                         C++ Dialect Options.
--- 55276,55282 ----
  * fstack-usage:                          Developer Options.  (line  849)
  * fstack_reuse:                          Code Gen Options.   (line   15)
  * fstats:                                Developer Options.  (line  880)
! * fstdarg-opt:                           Optimize Options.   (line 2366)
  * fstore-merging:                        Optimize Options.   (line 1259)
  * fstrict-aliasing:                      Optimize Options.   (line 1463)
  * fstrict-enums:                         C++ Dialect Options.
*************** look up both forms.
*** 55294,55300 ****
  * ftime-report:                          Developer Options.  (line  805)
  * ftime-report-details:                  Developer Options.  (line  809)
  * ftls-model:                            Code Gen Options.   (line  487)
! * ftracer:                               Optimize Options.   (line 2284)
  * ftrack-macro-expansion:                Preprocessor Options.
                                                               (line  237)
  * ftrampolines:                          Code Gen Options.   (line  498)
--- 55299,55305 ----
  * ftime-report:                          Developer Options.  (line  805)
  * ftime-report-details:                  Developer Options.  (line  809)
  * ftls-model:                            Code Gen Options.   (line  487)
! * ftracer:                               Optimize Options.   (line 2288)
  * ftrack-macro-expansion:                Preprocessor Options.
                                                               (line  237)
  * ftrampolines:                          Code Gen Options.   (line  498)
*************** look up both forms.
*** 55334,55343 ****
  * ftree-vectorize:                       Optimize Options.   (line 1280)
  * ftree-vrp:                             Optimize Options.   (line 1314)
  * funconstrained-commons:                Optimize Options.   (line  529)
! * funit-at-a-time:                       Optimize Options.   (line 1612)
! * funroll-all-loops:                     Optimize Options.   (line 2301)
! * funroll-loops:                         Optimize Options.   (line 2291)
! * funsafe-math-optimizations:            Optimize Options.   (line 2061)
  * funsigned-bitfields <1>:               Non-bugs.           (line   57)
  * funsigned-bitfields <2>:               Structures unions enumerations and bit-fields implementation.
                                                               (line   17)
--- 55339,55348 ----
  * ftree-vectorize:                       Optimize Options.   (line 1280)
  * ftree-vrp:                             Optimize Options.   (line 1314)
  * funconstrained-commons:                Optimize Options.   (line  529)
! * funit-at-a-time:                       Optimize Options.   (line 1616)
! * funroll-all-loops:                     Optimize Options.   (line 2305)
! * funroll-loops:                         Optimize Options.   (line 2295)
! * funsafe-math-optimizations:            Optimize Options.   (line 2065)
  * funsigned-bitfields <1>:               Non-bugs.           (line   57)
  * funsigned-bitfields <2>:               Structures unions enumerations and bit-fields implementation.
                                                               (line   17)
*************** look up both forms.
*** 55345,55357 ****
  * funsigned-char <1>:                    Characters implementation.
                                                               (line   31)
  * funsigned-char:                        C Dialect Options.  (line  379)
! * funswitch-loops:                       Optimize Options.   (line 2323)
  * funwind-tables:                        Code Gen Options.   (line  139)
  * fuse-cxa-atexit:                       C++ Dialect Options.
                                                               (line  364)
  * fuse-ld=bfd:                           Link Options.       (line   25)
  * fuse-ld=gold:                          Link Options.       (line   28)
! * fuse-linker-plugin:                    Optimize Options.   (line 1874)
  * fvar-tracking:                         Debugging Options.  (line  149)
  * fvar-tracking-assignments:             Debugging Options.  (line  159)
  * fvar-tracking-assignments-toggle:      Developer Options.  (line  797)
--- 55350,55362 ----
  * funsigned-char <1>:                    Characters implementation.
                                                               (line   31)
  * funsigned-char:                        C Dialect Options.  (line  379)
! * funswitch-loops:                       Optimize Options.   (line 2327)
  * funwind-tables:                        Code Gen Options.   (line  139)
  * fuse-cxa-atexit:                       C++ Dialect Options.
                                                               (line  364)
  * fuse-ld=bfd:                           Link Options.       (line   25)
  * fuse-ld=gold:                          Link Options.       (line   28)
! * fuse-linker-plugin:                    Optimize Options.   (line 1878)
  * fvar-tracking:                         Debugging Options.  (line  149)
  * fvar-tracking-assignments:             Debugging Options.  (line  159)
  * fvar-tracking-assignments-toggle:      Developer Options.  (line  797)
*************** look up both forms.
*** 55363,55377 ****
                                                               (line  376)
  * fvisibility-ms-compat:                 C++ Dialect Options.
                                                               (line  404)
! * fvpt:                                  Optimize Options.   (line 2256)
  * fvtable-verify:                        Instrumentation Options.
                                                               (line  609)
  * fvtv-counts:                           Instrumentation Options.
                                                               (line  645)
  * fvtv-debug:                            Instrumentation Options.
                                                               (line  632)
! * fweb:                                  Optimize Options.   (line 1631)
! * fwhole-program:                        Optimize Options.   (line 1642)
  * fwide-exec-charset:                    Preprocessor Options.
                                                               (line  259)
  * fworking-directory:                    Preprocessor Options.
--- 55368,55382 ----
                                                               (line  376)
  * fvisibility-ms-compat:                 C++ Dialect Options.
                                                               (line  404)
! * fvpt:                                  Optimize Options.   (line 2260)
  * fvtable-verify:                        Instrumentation Options.
                                                               (line  609)
  * fvtv-counts:                           Instrumentation Options.
                                                               (line  645)
  * fvtv-debug:                            Instrumentation Options.
                                                               (line  632)
! * fweb:                                  Optimize Options.   (line 1635)
! * fwhole-program:                        Optimize Options.   (line 1646)
  * fwide-exec-charset:                    Preprocessor Options.
                                                               (line  259)
  * fworking-directory:                    Preprocessor Options.
*************** look up both forms.
*** 55381,55387 ****
                                                               (line  141)
  * G <1>:                                 System V Options.   (line   10)
  * G <2>:                                 RS/6000 and PowerPC Options.
!                                                              (line  825)
  * G <3>:                                 Nios II Options.    (line    9)
  * G <4>:                                 MIPS Options.       (line  439)
  * G:                                     M32R/D Options.     (line   57)
--- 55386,55392 ----
                                                               (line  141)
  * G <1>:                                 System V Options.   (line   10)
  * G <2>:                                 RS/6000 and PowerPC Options.
!                                                              (line  830)
  * G <3>:                                 Nios II Options.    (line    9)
  * G <4>:                                 MIPS Options.       (line  439)
  * G:                                     M32R/D Options.     (line   57)
*************** look up both forms.
*** 55694,55700 ****
  * mbitops <1>:                           SH Options.         (line  145)
  * mbitops:                               MeP Options.        (line   26)
  * mblock-move-inline-limit:              RS/6000 and PowerPC Options.
!                                                              (line  819)
  * mbmi:                                  x86 Options.        (line  708)
  * mbranch-cheap:                         PDP-11 Options.     (line   65)
  * mbranch-cost <1>:                      RISC-V Options.     (line    9)
--- 55699,55705 ----
  * mbitops <1>:                           SH Options.         (line  145)
  * mbitops:                               MeP Options.        (line   26)
  * mblock-move-inline-limit:              RS/6000 and PowerPC Options.
!                                                              (line  824)
  * mbmi:                                  x86 Options.        (line  708)
  * mbranch-cheap:                         PDP-11 Options.     (line   65)
  * mbranch-cost <1>:                      RISC-V Options.     (line    9)
*************** look up both forms.
*** 55747,55753 ****
  * mcix:                                  DEC Alpha Options.  (line  163)
  * mcld:                                  x86 Options.        (line  768)
  * mclear-hwcap:                          Solaris 2 Options.  (line    9)
! * mclfushopt:                            x86 Options.        (line  695)
  * mclip:                                 MeP Options.        (line   35)
  * mclzero:                               x86 Options.        (line  720)
  * mcmodel <1>:                           SPARC Options.      (line  322)
--- 55752,55758 ----
  * mcix:                                  DEC Alpha Options.  (line  163)
  * mcld:                                  x86 Options.        (line  768)
  * mclear-hwcap:                          Solaris 2 Options.  (line    9)
! * mclflushopt:                           x86 Options.        (line  695)
  * mclip:                                 MeP Options.        (line   35)
  * mclzero:                               x86 Options.        (line  720)
  * mcmodel <1>:                           SPARC Options.      (line  322)
*************** look up both forms.
*** 55783,55789 ****
  * mcompact-branches=optimal:             MIPS Options.       (line  782)
  * mcompact-casesi:                       ARC Options.        (line  410)
  * mcompat-align-parm:                    RS/6000 and PowerPC Options.
!                                                              (line  995)
  * mcond-exec:                            FRV Options.        (line  152)
  * mcond-move:                            FRV Options.        (line  128)
  * mconfig=:                              MeP Options.        (line   39)
--- 55788,55794 ----
  * mcompact-branches=optimal:             MIPS Options.       (line  782)
  * mcompact-casesi:                       ARC Options.        (line  410)
  * mcompat-align-parm:                    RS/6000 and PowerPC Options.
!                                                              (line 1000)
  * mcond-exec:                            FRV Options.        (line  152)
  * mcond-move:                            FRV Options.        (line  128)
  * mconfig=:                              MeP Options.        (line   39)
*************** look up both forms.
*** 55980,55986 ****
  * mfp32:                                 MIPS Options.       (line  260)
  * mfp64:                                 MIPS Options.       (line  263)
  * mfpmath <1>:                           x86 Options.        (line  367)
! * mfpmath:                               Optimize Options.   (line 2022)
  * mfpr-32:                               FRV Options.        (line   13)
  * mfpr-64:                               FRV Options.        (line   16)
  * mfprnd:                                RS/6000 and PowerPC Options.
--- 55985,55991 ----
  * mfp32:                                 MIPS Options.       (line  260)
  * mfp64:                                 MIPS Options.       (line  263)
  * mfpmath <1>:                           x86 Options.        (line  367)
! * mfpmath:                               Optimize Options.   (line 2026)
  * mfpr-32:                               FRV Options.        (line   13)
  * mfpr-64:                               FRV Options.        (line   16)
  * mfprnd:                                RS/6000 and PowerPC Options.
*************** look up both forms.
*** 55996,56002 ****
  * mfract-convert-truncate:               AVR Options.        (line  239)
  * mframe-header-opt:                     MIPS Options.       (line  865)
  * mfriz:                                 RS/6000 and PowerPC Options.
!                                                              (line  966)
  * mfsca:                                 SH Options.         (line  370)
  * mfsgsbase:                             x86 Options.        (line  696)
  * mfsmuld:                               SPARC Options.      (line  276)
--- 56001,56007 ----
  * mfract-convert-truncate:               AVR Options.        (line  239)
  * mframe-header-opt:                     MIPS Options.       (line  865)
  * mfriz:                                 RS/6000 and PowerPC Options.
!                                                              (line  971)
  * mfsca:                                 SH Options.         (line  370)
  * mfsgsbase:                             x86 Options.        (line  696)
  * mfsmuld:                               SPARC Options.      (line  276)
*************** look up both forms.
*** 56194,56200 ****
  * mlong32:                               MIPS Options.       (line  422)
  * mlong64:                               MIPS Options.       (line  417)
  * mlongcall:                             RS/6000 and PowerPC Options.
!                                                              (line  839)
  * mlongcalls:                            Xtensa Options.     (line   87)
  * mloop:                                 V850 Options.       (line  121)
  * mlow-64k:                              Blackfin Options.   (line   70)
--- 56199,56205 ----
  * mlong32:                               MIPS Options.       (line  422)
  * mlong64:                               MIPS Options.       (line  417)
  * mlongcall:                             RS/6000 and PowerPC Options.
!                                                              (line  844)
  * mlongcalls:                            Xtensa Options.     (line   87)
  * mloop:                                 V850 Options.       (line  121)
  * mlow-64k:                              Blackfin Options.   (line   70)
*************** look up both forms.
*** 56457,56463 ****
  * mno-long-calls:                        ARM Options.        (line  228)
  * mno-long-jumps:                        V850 Options.       (line  108)
  * mno-longcall:                          RS/6000 and PowerPC Options.
!                                                              (line  839)
  * mno-longcalls:                         Xtensa Options.     (line   87)
  * mno-low-64k:                           Blackfin Options.   (line   74)
  * mno-low-precision-recip-sqrt:          AArch64 Options.    (line   87)
--- 56462,56468 ----
  * mno-long-calls:                        ARM Options.        (line  228)
  * mno-long-jumps:                        V850 Options.       (line  108)
  * mno-longcall:                          RS/6000 and PowerPC Options.
!                                                              (line  844)
  * mno-longcalls:                         Xtensa Options.     (line   87)
  * mno-low-64k:                           Blackfin Options.   (line   74)
  * mno-low-precision-recip-sqrt:          AArch64 Options.    (line   87)
*************** look up both forms.
*** 56535,56544 ****
                                                               (line  260)
  * mno-quad-memory-atomic:                RS/6000 and PowerPC Options.
                                                               (line  266)
  * mno-red-zone:                          x86 Options.        (line 1248)
  * mno-register-names:                    IA-64 Options.      (line   37)
  * mno-regnames:                          RS/6000 and PowerPC Options.
!                                                              (line  833)
  * mno-relax:                             V850 Options.       (line  103)
  * mno-relax-immediate:                   MCore Options.      (line   19)
  * mno-relocatable:                       RS/6000 and PowerPC Options.
--- 56540,56551 ----
                                                               (line  260)
  * mno-quad-memory-atomic:                RS/6000 and PowerPC Options.
                                                               (line  266)
+ * mno-readonly-in-sdata:                 RS/6000 and PowerPC Options.
+                                                              (line  820)
  * mno-red-zone:                          x86 Options.        (line 1248)
  * mno-register-names:                    IA-64 Options.      (line   37)
  * mno-regnames:                          RS/6000 and PowerPC Options.
!                                                              (line  838)
  * mno-relax:                             V850 Options.       (line  103)
  * mno-relax-immediate:                   MCore Options.      (line   19)
  * mno-relocatable:                       RS/6000 and PowerPC Options.
*************** look up both forms.
*** 56598,56604 ****
  * mno-target-align:                      Xtensa Options.     (line   74)
  * mno-text-section-literals:             Xtensa Options.     (line   47)
  * mno-tls-markers:                       RS/6000 and PowerPC Options.
!                                                              (line  872)
  * mno-toc:                               RS/6000 and PowerPC Options.
                                                               (line  567)
  * mno-toplevel-symbols:                  MMIX Options.       (line   40)
--- 56605,56611 ----
  * mno-target-align:                      Xtensa Options.     (line   74)
  * mno-text-section-literals:             Xtensa Options.     (line   47)
  * mno-tls-markers:                       RS/6000 and PowerPC Options.
!                                                              (line  877)
  * mno-toc:                               RS/6000 and PowerPC Options.
                                                               (line  567)
  * mno-toplevel-symbols:                  MMIX Options.       (line   40)
*************** look up both forms.
*** 56702,56708 ****
  * mplt:                                  MIPS Options.       (line  221)
  * mpointer-size=SIZE:                    VMS Options.        (line   20)
  * mpointers-to-nested-functions:         RS/6000 and PowerPC Options.
!                                                              (line  974)
  * mpoke-function-name:                   ARM Options.        (line  273)
  * mpopc:                                 SPARC Options.      (line  283)
  * mpopcnt:                               x86 Options.        (line  706)
--- 56709,56715 ----
  * mplt:                                  MIPS Options.       (line  221)
  * mpointer-size=SIZE:                    VMS Options.        (line   20)
  * mpointers-to-nested-functions:         RS/6000 and PowerPC Options.
!                                                              (line  979)
  * mpoke-function-name:                   ARM Options.        (line  273)
  * mpopc:                                 SPARC Options.      (line  283)
  * mpopcnt:                               x86 Options.        (line  706)
*************** look up both forms.
*** 56748,56766 ****
  * mRcq:                                  ARC Options.        (line  475)
  * mRcw:                                  ARC Options.        (line  479)
  * mrdrnd:                                x86 Options.        (line  697)
  * mrecip <1>:                            x86 Options.        (line  821)
  * mrecip:                                RS/6000 and PowerPC Options.
!                                                              (line  880)
  * mrecip-precision:                      RS/6000 and PowerPC Options.
!                                                              (line  938)
  * mrecip=opt <1>:                        x86 Options.        (line  843)
  * mrecip=opt:                            RS/6000 and PowerPC Options.
!                                                              (line  893)
  * mrecord-mcount:                        x86 Options.        (line 1134)
  * mreduced-regs:                         NDS32 Options.      (line   15)
  * mregister-names:                       IA-64 Options.      (line   37)
  * mregnames:                             RS/6000 and PowerPC Options.
!                                                              (line  833)
  * mregparm:                              x86 Options.        (line  563)
  * mrelax <1>:                            V850 Options.       (line  103)
  * mrelax <2>:                            SH Options.         (line  137)
--- 56755,56775 ----
  * mRcq:                                  ARC Options.        (line  475)
  * mRcw:                                  ARC Options.        (line  479)
  * mrdrnd:                                x86 Options.        (line  697)
+ * mreadonly-in-sdata:                    RS/6000 and PowerPC Options.
+                                                              (line  820)
  * mrecip <1>:                            x86 Options.        (line  821)
  * mrecip:                                RS/6000 and PowerPC Options.
!                                                              (line  885)
  * mrecip-precision:                      RS/6000 and PowerPC Options.
!                                                              (line  943)
  * mrecip=opt <1>:                        x86 Options.        (line  843)
  * mrecip=opt:                            RS/6000 and PowerPC Options.
!                                                              (line  898)
  * mrecord-mcount:                        x86 Options.        (line 1134)
  * mreduced-regs:                         NDS32 Options.      (line   15)
  * mregister-names:                       IA-64 Options.      (line   37)
  * mregnames:                             RS/6000 and PowerPC Options.
!                                                              (line  838)
  * mregparm:                              x86 Options.        (line  563)
  * mrelax <1>:                            V850 Options.       (line  103)
  * mrelax <2>:                            SH Options.         (line  137)
*************** look up both forms.
*** 56801,56807 ****
  * msave-mduc-in-interrupts:              RL78 Options.       (line   80)
  * msave-restore:                         RISC-V Options.     (line   65)
  * msave-toc-indirect:                    RS/6000 and PowerPC Options.
!                                                              (line  986)
  * mscc:                                  FRV Options.        (line  140)
  * msched-ar-data-spec:                   IA-64 Options.      (line  135)
  * msched-ar-in-data-spec:                IA-64 Options.      (line  157)
--- 56810,56816 ----
  * msave-mduc-in-interrupts:              RL78 Options.       (line   80)
  * msave-restore:                         RISC-V Options.     (line   65)
  * msave-toc-indirect:                    RS/6000 and PowerPC Options.
!                                                              (line  991)
  * mscc:                                  FRV Options.        (line  140)
  * msched-ar-data-spec:                   IA-64 Options.      (line  135)
  * msched-ar-in-data-spec:                IA-64 Options.      (line  157)
*************** look up both forms.
*** 56952,56962 ****
  * mstack-offset:                         Adapteva Epiphany Options.
                                                               (line   37)
  * mstack-protector-guard:                RS/6000 and PowerPC Options.
!                                                              (line 1011)
  * mstack-protector-guard-offset:         RS/6000 and PowerPC Options.
!                                                              (line 1011)
  * mstack-protector-guard-reg:            RS/6000 and PowerPC Options.
!                                                              (line 1011)
  * mstack-protector-guard=GUARD:          x86 Options.        (line 1171)
  * mstack-size:                           S/390 and zSeries Options.
                                                               (line  196)
--- 56961,56971 ----
  * mstack-offset:                         Adapteva Epiphany Options.
                                                               (line   37)
  * mstack-protector-guard:                RS/6000 and PowerPC Options.
!                                                              (line 1016)
  * mstack-protector-guard-offset:         RS/6000 and PowerPC Options.
!                                                              (line 1016)
  * mstack-protector-guard-reg:            RS/6000 and PowerPC Options.
!                                                              (line 1016)
  * mstack-protector-guard=GUARD:          x86 Options.        (line 1171)
  * mstack-size:                           S/390 and zSeries Options.
                                                               (line  196)
*************** look up both forms.
*** 57007,57013 ****
  * mtls-dialect=traditional:              AArch64 Options.    (line   64)
  * mtls-direct-seg-refs:                  x86 Options.        (line 1112)
  * mtls-markers:                          RS/6000 and PowerPC Options.
!                                                              (line  872)
  * mtls-size <1>:                         IA-64 Options.      (line  112)
  * mtls-size:                             AArch64 Options.    (line   68)
  * mtoc:                                  RS/6000 and PowerPC Options.
--- 57016,57022 ----
  * mtls-dialect=traditional:              AArch64 Options.    (line   64)
  * mtls-direct-seg-refs:                  x86 Options.        (line 1112)
  * mtls-markers:                          RS/6000 and PowerPC Options.
!                                                              (line  877)
  * mtls-size <1>:                         IA-64 Options.      (line  112)
  * mtls-size:                             AArch64 Options.    (line   68)
  * mtoc:                                  RS/6000 and PowerPC Options.
*************** look up both forms.
*** 57084,57090 ****
  * mv8plus:                               SPARC Options.      (line  216)
  * mveclibabi <1>:                        x86 Options.        (line  872)
  * mveclibabi:                            RS/6000 and PowerPC Options.
!                                                              (line  947)
  * mvect8-ret-in-mem:                     x86 Options.        (line  584)
  * mvirt:                                 MIPS Options.       (line  409)
  * mvis:                                  SPARC Options.      (line  223)
--- 57093,57099 ----
  * mv8plus:                               SPARC Options.      (line  216)
  * mveclibabi <1>:                        x86 Options.        (line  872)
  * mveclibabi:                            RS/6000 and PowerPC Options.
!                                                              (line  952)
  * mvect8-ret-in-mem:                     x86 Options.        (line  584)
  * mvirt:                                 MIPS Options.       (line  409)
  * mvis:                                  SPARC Options.      (line  223)
*************** look up both forms.
*** 57192,57198 ****
  * p:                                     Instrumentation Options.
                                                               (line   19)
  * pagezero_size:                         Darwin Options.     (line  196)
! * param:                                 Optimize Options.   (line 2390)
  * pass-exit-codes:                       Overall Options.    (line  326)
  * pedantic <1>:                          Warnings and Errors.
                                                               (line   25)
--- 57201,57207 ----
  * p:                                     Instrumentation Options.
                                                               (line   19)
  * pagezero_size:                         Darwin Options.     (line  196)
! * param:                                 Optimize Options.   (line 2394)
  * pass-exit-codes:                       Overall Options.    (line  326)
  * pedantic <1>:                          Warnings and Errors.
                                                               (line   25)
*************** look up both forms.
*** 57264,57286 ****
  * static <1>:                            HPPA Options.       (line  192)
  * static <2>:                            Darwin Options.     (line  196)
  * static:                                Link Options.       (line  132)
! * static-libasan:                        Link Options.       (line  180)
  * static-libgcc:                         Link Options.       (line  145)
! * static-liblsan:                        Link Options.       (line  198)
! * static-libmpx:                         Link Options.       (line  216)
! * static-libmpxwrappers:                 Link Options.       (line  225)
! * static-libstdc++:                      Link Options.       (line  235)
! * static-libtsan:                        Link Options.       (line  189)
! * static-libubsan:                       Link Options.       (line  207)
  * std <1>:                               Non-bugs.           (line  107)
  * std <2>:                               Other Builtins.     (line   31)
  * std <3>:                               C Dialect Options.  (line   47)
  * std:                                   Standards.          (line   13)
  * sub_library:                           Darwin Options.     (line  196)
  * sub_umbrella:                          Darwin Options.     (line  196)
! * symbolic:                              Link Options.       (line  246)
  * sysroot:                               Directory Options.  (line  170)
! * T:                                     Link Options.       (line  252)
  * target-help:                           Overall Options.    (line  219)
  * threads:                               HPPA Options.       (line  205)
  * time:                                  Developer Options.  (line  717)
--- 57273,57295 ----
  * static <1>:                            HPPA Options.       (line  192)
  * static <2>:                            Darwin Options.     (line  196)
  * static:                                Link Options.       (line  132)
! * static-libasan:                        Link Options.       (line  179)
  * static-libgcc:                         Link Options.       (line  145)
! * static-liblsan:                        Link Options.       (line  197)
! * static-libmpx:                         Link Options.       (line  215)
! * static-libmpxwrappers:                 Link Options.       (line  224)
! * static-libstdc++:                      Link Options.       (line  234)
! * static-libtsan:                        Link Options.       (line  188)
! * static-libubsan:                       Link Options.       (line  206)
  * std <1>:                               Non-bugs.           (line  107)
  * std <2>:                               Other Builtins.     (line   31)
  * std <3>:                               C Dialect Options.  (line   47)
  * std:                                   Standards.          (line   13)
  * sub_library:                           Darwin Options.     (line  196)
  * sub_umbrella:                          Darwin Options.     (line  196)
! * symbolic:                              Link Options.       (line  245)
  * sysroot:                               Directory Options.  (line  170)
! * T:                                     Link Options.       (line  251)
  * target-help:                           Overall Options.    (line  219)
  * threads:                               HPPA Options.       (line  205)
  * time:                                  Developer Options.  (line  717)
*************** look up both forms.
*** 57294,57300 ****
  * trigraphs:                             Preprocessor Options.
                                                               (line  366)
  * twolevel_namespace:                    Darwin Options.     (line  196)
! * u:                                     Link Options.       (line  284)
  * U:                                     Preprocessor Options.
                                                               (line   42)
  * umbrella:                              Darwin Options.     (line  196)
--- 57303,57309 ----
  * trigraphs:                             Preprocessor Options.
                                                               (line  366)
  * twolevel_namespace:                    Darwin Options.     (line  196)
! * u:                                     Link Options.       (line  283)
  * U:                                     Preprocessor Options.
                                                               (line   42)
  * umbrella:                              Darwin Options.     (line  196)
*************** look up both forms.
*** 57313,57382 ****
  * Wabi-tag:                              C++ Dialect Options.
                                                               (line  555)
  * Waddr-space-convert:                   AVR Options.        (line  246)
! * Waddress:                              Warning Options.    (line 2133)
! * Waggregate-return:                     Warning Options.    (line 2169)
! * Waggressive-loop-optimizations:        Warning Options.    (line 2174)
! * Waligned-new:                          Warning Options.    (line 1744)
  * Wall <1>:                              Standard Libraries. (line    6)
  * Wall:                                  Warning Options.    (line  133)
  * Walloc-zero:                           Warning Options.    (line 1339)
! * Walloca:                               Warning Options.    (line 1359)
! * Warray-bounds:                         Warning Options.    (line 1422)
  * Wassign-intercept:                     Objective-C and Objective-C++ Dialect Options.
                                                               (line  171)
! * Wattributes:                           Warning Options.    (line 2179)
! * Wbad-function-cast:                    Warning Options.    (line 1877)
! * Wbool-compare:                         Warning Options.    (line 1438)
! * Wbool-operation:                       Warning Options.    (line 1447)
! * Wbuiltin-declaration-mismatch:         Warning Options.    (line 2185)
! * Wbuiltin-macro-redefined:              Warning Options.    (line 2189)
! * Wc++-compat:                           Warning Options.    (line 1899)
! * Wc++11-compat:                         Warning Options.    (line 1904)
! * Wc++14-compat:                         Warning Options.    (line 1910)
! * Wc++1z-compat:                         Warning Options.    (line 1914)
! * Wc90-c99-compat:                       Warning Options.    (line 1882)
! * Wc99-c11-compat:                       Warning Options.    (line 1890)
! * Wcast-align:                           Warning Options.    (line 1935)
! * Wcast-qual:                            Warning Options.    (line 1919)
  * Wchar-subscripts:                      Warning Options.    (line  238)
  * Wchkp:                                 Warning Options.    (line  243)
! * Wclobbered:                            Warning Options.    (line 1955)
! * Wcomment:                              Warning Options.    (line 1819)
! * Wcomments:                             Warning Options.    (line 1819)
! * Wconditionally-supported:              Warning Options.    (line 1959)
! * Wconversion:                           Warning Options.    (line 1962)
! * Wconversion-null:                      Warning Options.    (line 1980)
  * Wctor-dtor-privacy:                    C++ Dialect Options.
                                                               (line  560)
! * Wdangling-else:                        Warning Options.    (line 2001)
! * Wdate-time:                            Warning Options.    (line 2035)
! * Wdeclaration-after-statement:          Warning Options.    (line 1639)
! * Wdelete-incomplete:                    Warning Options.    (line 2040)
  * Wdelete-non-virtual-dtor:              C++ Dialect Options.
                                                               (line  567)
! * Wdeprecated:                           Warning Options.    (line 2312)
! * Wdeprecated-declarations:              Warning Options.    (line 2316)
! * Wdisabled-optimization:                Warning Options.    (line 2513)
! * Wdiscarded-array-qualifiers:           Warning Options.    (line 1486)
! * Wdiscarded-qualifiers:                 Warning Options.    (line 1480)
! * Wdiv-by-zero:                          Warning Options.    (line 1504)
  * Wdouble-promotion:                     Warning Options.    (line  266)
  * Wduplicate-decl-specifier:             Warning Options.    (line  284)
! * Wduplicated-branches:                  Warning Options.    (line 1457)
! * Wduplicated-cond:                      Warning Options.    (line 1468)
  * weak_reference_mismatches:             Darwin Options.     (line  196)
  * Weffc++:                               C++ Dialect Options.
                                                               (line  676)
! * Wempty-body:                           Warning Options.    (line 2047)
! * Wendif-labels:                         Warning Options.    (line 1863)
! * Wenum-compare:                         Warning Options.    (line 2051)
  * Werror:                                Warning Options.    (line   28)
  * Werror=:                               Warning Options.    (line   31)
! * Wexpansion-to-defined:                 Warning Options.    (line 1838)
  * Wextra:                                Warning Options.    (line  197)
  * Wfatal-errors:                         Warning Options.    (line   48)
! * Wfloat-conversion:                     Warning Options.    (line 2080)
! * Wfloat-equal:                          Warning Options.    (line 1538)
  * Wformat <1>:                           Common Function Attributes.
                                                               (line  236)
  * Wformat:                               Warning Options.    (line  290)
--- 57322,57391 ----
  * Wabi-tag:                              C++ Dialect Options.
                                                               (line  555)
  * Waddr-space-convert:                   AVR Options.        (line  246)
! * Waddress:                              Warning Options.    (line 2136)
! * Waggregate-return:                     Warning Options.    (line 2172)
! * Waggressive-loop-optimizations:        Warning Options.    (line 2177)
! * Waligned-new:                          Warning Options.    (line 1747)
  * Wall <1>:                              Standard Libraries. (line    6)
  * Wall:                                  Warning Options.    (line  133)
  * Walloc-zero:                           Warning Options.    (line 1339)
! * Walloca:                               Warning Options.    (line 1362)
! * Warray-bounds:                         Warning Options.    (line 1425)
  * Wassign-intercept:                     Objective-C and Objective-C++ Dialect Options.
                                                               (line  171)
! * Wattributes:                           Warning Options.    (line 2182)
! * Wbad-function-cast:                    Warning Options.    (line 1880)
! * Wbool-compare:                         Warning Options.    (line 1441)
! * Wbool-operation:                       Warning Options.    (line 1450)
! * Wbuiltin-declaration-mismatch:         Warning Options.    (line 2188)
! * Wbuiltin-macro-redefined:              Warning Options.    (line 2192)
! * Wc++-compat:                           Warning Options.    (line 1902)
! * Wc++11-compat:                         Warning Options.    (line 1907)
! * Wc++14-compat:                         Warning Options.    (line 1913)
! * Wc++1z-compat:                         Warning Options.    (line 1917)
! * Wc90-c99-compat:                       Warning Options.    (line 1885)
! * Wc99-c11-compat:                       Warning Options.    (line 1893)
! * Wcast-align:                           Warning Options.    (line 1938)
! * Wcast-qual:                            Warning Options.    (line 1922)
  * Wchar-subscripts:                      Warning Options.    (line  238)
  * Wchkp:                                 Warning Options.    (line  243)
! * Wclobbered:                            Warning Options.    (line 1958)
! * Wcomment:                              Warning Options.    (line 1822)
! * Wcomments:                             Warning Options.    (line 1822)
! * Wconditionally-supported:              Warning Options.    (line 1962)
! * Wconversion:                           Warning Options.    (line 1965)
! * Wconversion-null:                      Warning Options.    (line 1983)
  * Wctor-dtor-privacy:                    C++ Dialect Options.
                                                               (line  560)
! * Wdangling-else:                        Warning Options.    (line 2004)
! * Wdate-time:                            Warning Options.    (line 2038)
! * Wdeclaration-after-statement:          Warning Options.    (line 1642)
! * Wdelete-incomplete:                    Warning Options.    (line 2043)
  * Wdelete-non-virtual-dtor:              C++ Dialect Options.
                                                               (line  567)
! * Wdeprecated:                           Warning Options.    (line 2315)
! * Wdeprecated-declarations:              Warning Options.    (line 2319)
! * Wdisabled-optimization:                Warning Options.    (line 2516)
! * Wdiscarded-array-qualifiers:           Warning Options.    (line 1489)
! * Wdiscarded-qualifiers:                 Warning Options.    (line 1483)
! * Wdiv-by-zero:                          Warning Options.    (line 1507)
  * Wdouble-promotion:                     Warning Options.    (line  266)
  * Wduplicate-decl-specifier:             Warning Options.    (line  284)
! * Wduplicated-branches:                  Warning Options.    (line 1460)
! * Wduplicated-cond:                      Warning Options.    (line 1471)
  * weak_reference_mismatches:             Darwin Options.     (line  196)
  * Weffc++:                               C++ Dialect Options.
                                                               (line  676)
! * Wempty-body:                           Warning Options.    (line 2050)
! * Wendif-labels:                         Warning Options.    (line 1866)
! * Wenum-compare:                         Warning Options.    (line 2054)
  * Werror:                                Warning Options.    (line   28)
  * Werror=:                               Warning Options.    (line   31)
! * Wexpansion-to-defined:                 Warning Options.    (line 1841)
  * Wextra:                                Warning Options.    (line  197)
  * Wfatal-errors:                         Warning Options.    (line   48)
! * Wfloat-conversion:                     Warning Options.    (line 2083)
! * Wfloat-equal:                          Warning Options.    (line 1541)
  * Wformat <1>:                           Common Function Attributes.
                                                               (line  236)
  * Wformat:                               Warning Options.    (line  290)
*************** look up both forms.
*** 57394,57402 ****
  * Wformat=:                              Warning Options.    (line  290)
  * Wformat=1:                             Warning Options.    (line  317)
  * Wformat=2:                             Warning Options.    (line  432)
! * Wframe-address:                        Warning Options.    (line 1474)
! * Wframe-larger-than:                    Warning Options.    (line 1697)
! * Wfree-nonheap-object:                  Warning Options.    (line 1706)
  * whatsloaded:                           Darwin Options.     (line  196)
  * whyload:                               Darwin Options.     (line  196)
  * Wignored-attributes:                   Warning Options.    (line  671)
--- 57403,57411 ----
  * Wformat=:                              Warning Options.    (line  290)
  * Wformat=1:                             Warning Options.    (line  317)
  * Wformat=2:                             Warning Options.    (line  432)
! * Wframe-address:                        Warning Options.    (line 1477)
! * Wframe-larger-than:                    Warning Options.    (line 1700)
! * Wfree-nonheap-object:                  Warning Options.    (line 1709)
  * whatsloaded:                           Darwin Options.     (line  196)
  * whyload:                               Darwin Options.     (line  196)
  * Wignored-attributes:                   Warning Options.    (line  671)
*************** look up both forms.
*** 57406,57511 ****
  * Wimplicit-fallthrough=:                Warning Options.    (line  544)
  * Wimplicit-function-declaration:        Warning Options.    (line  529)
  * Wimplicit-int:                         Warning Options.    (line  525)
! * Wincompatible-pointer-types:           Warning Options.    (line 1492)
! * Winherited-variadic-ctor:              Warning Options.    (line 2401)
  * Winit-self:                            Warning Options.    (line  510)
  * Winline <1>:                           Inline.             (line   60)
! * Winline:                               Warning Options.    (line 2406)
! * Wint-conversion:                       Warning Options.    (line 1498)
! * Wint-in-bool-context:                  Warning Options.    (line 2431)
! * Wint-to-pointer-cast:                  Warning Options.    (line 2439)
  * Winvalid-memory-model:                 Warning Options.    (line 1034)
! * Winvalid-offsetof:                     Warning Options.    (line 2419)
! * Winvalid-pch:                          Warning Options.    (line 2448)
! * Wjump-misses-init:                     Warning Options.    (line 2057)
! * Wl:                                    Link Options.       (line  276)
! * Wlarger-than-LEN:                      Warning Options.    (line 1694)
! * Wlarger-than=LEN:                      Warning Options.    (line 1694)
  * Wliteral-suffix:                       C++ Dialect Options.
                                                               (line  574)
! * Wlogical-not-parentheses:              Warning Options.    (line 2154)
! * Wlogical-op:                           Warning Options.    (line 2146)
! * Wlong-long:                            Warning Options.    (line 2452)
  * Wlto-type-mismatch:                    C++ Dialect Options.
                                                               (line  600)
  * Wmain:                                 Warning Options.    (line  678)
  * Wmaybe-uninitialized:                  Warning Options.    (line 1051)
! * Wmemset-elt-size:                      Warning Options.    (line 2114)
! * Wmemset-transposed-args:               Warning Options.    (line 2122)
  * Wmisleading-indentation:               Warning Options.    (line  685)
  * Wmissing-braces:                       Warning Options.    (line  719)
! * Wmissing-declarations:                 Warning Options.    (line 2228)
! * Wmissing-field-initializers:           Warning Options.    (line 2238)
  * Wmissing-format-attribute:             Warning Options.    (line 1295)
  * Wmissing-include-dirs:                 Warning Options.    (line  730)
! * Wmissing-parameter-type:               Warning Options.    (line 2210)
! * Wmissing-prototypes:                   Warning Options.    (line 2218)
  * Wmisspelled-isr:                       AVR Options.        (line  251)
! * Wmultichar:                            Warning Options.    (line 2262)
  * Wmultiple-inheritance:                 C++ Dialect Options.
                                                               (line  764)
  * Wnamespaces:                           C++ Dialect Options.
                                                               (line  780)
  * Wnarrowing:                            C++ Dialect Options.
                                                               (line  605)
! * Wnested-externs:                       Warning Options.    (line 2398)
  * Wno-abi:                               C++ Dialect Options.
                                                               (line  448)
! * Wno-address:                           Warning Options.    (line 2133)
! * Wno-aggregate-return:                  Warning Options.    (line 2169)
! * Wno-aggressive-loop-optimizations:     Warning Options.    (line 2174)
! * Wno-aligned-new:                       Warning Options.    (line 1744)
  * Wno-all:                               Warning Options.    (line  133)
  * Wno-alloc-zero:                        Warning Options.    (line 1339)
! * Wno-alloca:                            Warning Options.    (line 1359)
! * Wno-array-bounds:                      Warning Options.    (line 1422)
  * Wno-assign-intercept:                  Objective-C and Objective-C++ Dialect Options.
                                                               (line  171)
! * Wno-attributes:                        Warning Options.    (line 2179)
! * Wno-bad-function-cast:                 Warning Options.    (line 1877)
! * Wno-bool-compare:                      Warning Options.    (line 1438)
! * Wno-bool-operation:                    Warning Options.    (line 1447)
! * Wno-builtin-declaration-mismatch:      Warning Options.    (line 2185)
! * Wno-builtin-macro-redefined:           Warning Options.    (line 2189)
! * Wno-c90-c99-compat:                    Warning Options.    (line 1882)
! * Wno-c99-c11-compat:                    Warning Options.    (line 1890)
! * Wno-cast-align:                        Warning Options.    (line 1935)
! * Wno-cast-qual:                         Warning Options.    (line 1919)
  * Wno-char-subscripts:                   Warning Options.    (line  238)
! * Wno-clobbered:                         Warning Options.    (line 1955)
! * Wno-conditionally-supported:           Warning Options.    (line 1959)
! * Wno-conversion:                        Warning Options.    (line 1962)
! * Wno-conversion-null:                   Warning Options.    (line 1980)
  * Wno-coverage-mismatch:                 Warning Options.    (line  247)
  * Wno-ctor-dtor-privacy:                 C++ Dialect Options.
                                                               (line  560)
! * Wno-dangling-else:                     Warning Options.    (line 2001)
! * Wno-date-time:                         Warning Options.    (line 2035)
! * Wno-declaration-after-statement:       Warning Options.    (line 1639)
! * Wno-delete-incomplete:                 Warning Options.    (line 2040)
  * Wno-delete-non-virtual-dtor:           C++ Dialect Options.
                                                               (line  567)
! * Wno-deprecated:                        Warning Options.    (line 2312)
! * Wno-deprecated-declarations:           Warning Options.    (line 2316)
! * Wno-disabled-optimization:             Warning Options.    (line 2513)
! * Wno-discarded-array-qualifiers:        Warning Options.    (line 1486)
! * Wno-discarded-qualifiers:              Warning Options.    (line 1480)
! * Wno-div-by-zero:                       Warning Options.    (line 1504)
  * Wno-double-promotion:                  Warning Options.    (line  266)
  * Wno-duplicate-decl-specifier:          Warning Options.    (line  284)
! * Wno-duplicated-branches:               Warning Options.    (line 1457)
! * Wno-duplicated-cond:                   Warning Options.    (line 1468)
  * Wno-effc++:                            C++ Dialect Options.
                                                               (line  676)
! * Wno-empty-body:                        Warning Options.    (line 2047)
! * Wno-endif-labels:                      Warning Options.    (line 1863)
! * Wno-enum-compare:                      Warning Options.    (line 2051)
  * Wno-error:                             Warning Options.    (line   28)
  * Wno-error=:                            Warning Options.    (line   31)
  * Wno-extra:                             Warning Options.    (line  197)
  * Wno-fatal-errors:                      Warning Options.    (line   48)
! * Wno-float-conversion:                  Warning Options.    (line 2080)
! * Wno-float-equal:                       Warning Options.    (line 1538)
  * Wno-format:                            Warning Options.    (line  290)
  * Wno-format-contains-nul:               Warning Options.    (line  327)
  * Wno-format-extra-args:                 Warning Options.    (line  331)
--- 57415,57520 ----
  * Wimplicit-fallthrough=:                Warning Options.    (line  544)
  * Wimplicit-function-declaration:        Warning Options.    (line  529)
  * Wimplicit-int:                         Warning Options.    (line  525)
! * Wincompatible-pointer-types:           Warning Options.    (line 1495)
! * Winherited-variadic-ctor:              Warning Options.    (line 2404)
  * Winit-self:                            Warning Options.    (line  510)
  * Winline <1>:                           Inline.             (line   60)
! * Winline:                               Warning Options.    (line 2409)
! * Wint-conversion:                       Warning Options.    (line 1501)
! * Wint-in-bool-context:                  Warning Options.    (line 2434)
! * Wint-to-pointer-cast:                  Warning Options.    (line 2442)
  * Winvalid-memory-model:                 Warning Options.    (line 1034)
! * Winvalid-offsetof:                     Warning Options.    (line 2422)
! * Winvalid-pch:                          Warning Options.    (line 2451)
! * Wjump-misses-init:                     Warning Options.    (line 2060)
! * Wl:                                    Link Options.       (line  275)
! * Wlarger-than-LEN:                      Warning Options.    (line 1697)
! * Wlarger-than=LEN:                      Warning Options.    (line 1697)
  * Wliteral-suffix:                       C++ Dialect Options.
                                                               (line  574)
! * Wlogical-not-parentheses:              Warning Options.    (line 2157)
! * Wlogical-op:                           Warning Options.    (line 2149)
! * Wlong-long:                            Warning Options.    (line 2455)
  * Wlto-type-mismatch:                    C++ Dialect Options.
                                                               (line  600)
  * Wmain:                                 Warning Options.    (line  678)
  * Wmaybe-uninitialized:                  Warning Options.    (line 1051)
! * Wmemset-elt-size:                      Warning Options.    (line 2117)
! * Wmemset-transposed-args:               Warning Options.    (line 2125)
  * Wmisleading-indentation:               Warning Options.    (line  685)
  * Wmissing-braces:                       Warning Options.    (line  719)
! * Wmissing-declarations:                 Warning Options.    (line 2231)
! * Wmissing-field-initializers:           Warning Options.    (line 2241)
  * Wmissing-format-attribute:             Warning Options.    (line 1295)
  * Wmissing-include-dirs:                 Warning Options.    (line  730)
! * Wmissing-parameter-type:               Warning Options.    (line 2213)
! * Wmissing-prototypes:                   Warning Options.    (line 2221)
  * Wmisspelled-isr:                       AVR Options.        (line  251)
! * Wmultichar:                            Warning Options.    (line 2265)
  * Wmultiple-inheritance:                 C++ Dialect Options.
                                                               (line  764)
  * Wnamespaces:                           C++ Dialect Options.
                                                               (line  780)
  * Wnarrowing:                            C++ Dialect Options.
                                                               (line  605)
! * Wnested-externs:                       Warning Options.    (line 2401)
  * Wno-abi:                               C++ Dialect Options.
                                                               (line  448)
! * Wno-address:                           Warning Options.    (line 2136)
! * Wno-aggregate-return:                  Warning Options.    (line 2172)
! * Wno-aggressive-loop-optimizations:     Warning Options.    (line 2177)
! * Wno-aligned-new:                       Warning Options.    (line 1747)
  * Wno-all:                               Warning Options.    (line  133)
  * Wno-alloc-zero:                        Warning Options.    (line 1339)
! * Wno-alloca:                            Warning Options.    (line 1362)
! * Wno-array-bounds:                      Warning Options.    (line 1425)
  * Wno-assign-intercept:                  Objective-C and Objective-C++ Dialect Options.
                                                               (line  171)
! * Wno-attributes:                        Warning Options.    (line 2182)
! * Wno-bad-function-cast:                 Warning Options.    (line 1880)
! * Wno-bool-compare:                      Warning Options.    (line 1441)
! * Wno-bool-operation:                    Warning Options.    (line 1450)
! * Wno-builtin-declaration-mismatch:      Warning Options.    (line 2188)
! * Wno-builtin-macro-redefined:           Warning Options.    (line 2192)
! * Wno-c90-c99-compat:                    Warning Options.    (line 1885)
! * Wno-c99-c11-compat:                    Warning Options.    (line 1893)
! * Wno-cast-align:                        Warning Options.    (line 1938)
! * Wno-cast-qual:                         Warning Options.    (line 1922)
  * Wno-char-subscripts:                   Warning Options.    (line  238)
! * Wno-clobbered:                         Warning Options.    (line 1958)
! * Wno-conditionally-supported:           Warning Options.    (line 1962)
! * Wno-conversion:                        Warning Options.    (line 1965)
! * Wno-conversion-null:                   Warning Options.    (line 1983)
  * Wno-coverage-mismatch:                 Warning Options.    (line  247)
  * Wno-ctor-dtor-privacy:                 C++ Dialect Options.
                                                               (line  560)
! * Wno-dangling-else:                     Warning Options.    (line 2004)
! * Wno-date-time:                         Warning Options.    (line 2038)
! * Wno-declaration-after-statement:       Warning Options.    (line 1642)
! * Wno-delete-incomplete:                 Warning Options.    (line 2043)
  * Wno-delete-non-virtual-dtor:           C++ Dialect Options.
                                                               (line  567)
! * Wno-deprecated:                        Warning Options.    (line 2315)
! * Wno-deprecated-declarations:           Warning Options.    (line 2319)
! * Wno-disabled-optimization:             Warning Options.    (line 2516)
! * Wno-discarded-array-qualifiers:        Warning Options.    (line 1489)
! * Wno-discarded-qualifiers:              Warning Options.    (line 1483)
! * Wno-div-by-zero:                       Warning Options.    (line 1507)
  * Wno-double-promotion:                  Warning Options.    (line  266)
  * Wno-duplicate-decl-specifier:          Warning Options.    (line  284)
! * Wno-duplicated-branches:               Warning Options.    (line 1460)
! * Wno-duplicated-cond:                   Warning Options.    (line 1471)
  * Wno-effc++:                            C++ Dialect Options.
                                                               (line  676)
! * Wno-empty-body:                        Warning Options.    (line 2050)
! * Wno-endif-labels:                      Warning Options.    (line 1866)
! * Wno-enum-compare:                      Warning Options.    (line 2054)
  * Wno-error:                             Warning Options.    (line   28)
  * Wno-error=:                            Warning Options.    (line   31)
  * Wno-extra:                             Warning Options.    (line  197)
  * Wno-fatal-errors:                      Warning Options.    (line   48)
! * Wno-float-conversion:                  Warning Options.    (line 2083)
! * Wno-float-equal:                       Warning Options.    (line 1541)
  * Wno-format:                            Warning Options.    (line  290)
  * Wno-format-contains-nul:               Warning Options.    (line  327)
  * Wno-format-extra-args:                 Warning Options.    (line  331)
*************** look up both forms.
*** 57516,57563 ****
  * Wno-format-truncation:                 Warning Options.    (line  460)
  * Wno-format-y2k:                        Warning Options.    (line  485)
  * Wno-format-zero-length:                Warning Options.    (line  427)
! * Wno-frame-address:                     Warning Options.    (line 1474)
! * Wno-free-nonheap-object:               Warning Options.    (line 1706)
  * Wno-ignored-attributes:                Warning Options.    (line  671)
  * Wno-ignored-qualifiers:                Warning Options.    (line  660)
  * Wno-implicit:                          Warning Options.    (line  535)
  * Wno-implicit-fallthrough:              Warning Options.    (line  539)
  * Wno-implicit-function-declaration:     Warning Options.    (line  529)
  * Wno-implicit-int:                      Warning Options.    (line  525)
! * Wno-incompatible-pointer-types:        Warning Options.    (line 1492)
! * Wno-inherited-variadic-ctor:           Warning Options.    (line 2401)
  * Wno-init-self:                         Warning Options.    (line  510)
! * Wno-inline:                            Warning Options.    (line 2406)
! * Wno-int-conversion:                    Warning Options.    (line 1498)
! * Wno-int-in-bool-context:               Warning Options.    (line 2431)
! * Wno-int-to-pointer-cast:               Warning Options.    (line 2439)
  * Wno-invalid-memory-model:              Warning Options.    (line 1034)
! * Wno-invalid-offsetof:                  Warning Options.    (line 2419)
! * Wno-invalid-pch:                       Warning Options.    (line 2448)
! * Wno-jump-misses-init:                  Warning Options.    (line 2057)
  * Wno-literal-suffix:                    C++ Dialect Options.
                                                               (line  574)
! * Wno-logical-not-parentheses:           Warning Options.    (line 2154)
! * Wno-logical-op:                        Warning Options.    (line 2146)
! * Wno-long-long:                         Warning Options.    (line 2452)
  * Wno-lto-type-mismatch:                 C++ Dialect Options.
                                                               (line  600)
  * Wno-main:                              Warning Options.    (line  678)
  * Wno-maybe-uninitialized:               Warning Options.    (line 1051)
! * Wno-memset-elt-size:                   Warning Options.    (line 2114)
! * Wno-memset-transposed-args:            Warning Options.    (line 2122)
  * Wno-misleading-indentation:            Warning Options.    (line  685)
  * Wno-missing-braces:                    Warning Options.    (line  719)
! * Wno-missing-declarations:              Warning Options.    (line 2228)
! * Wno-missing-field-initializers:        Warning Options.    (line 2238)
  * Wno-missing-format-attribute:          Warning Options.    (line 1295)
  * Wno-missing-include-dirs:              Warning Options.    (line  730)
! * Wno-missing-parameter-type:            Warning Options.    (line 2210)
! * Wno-missing-prototypes:                Warning Options.    (line 2218)
! * Wno-multichar:                         Warning Options.    (line 2262)
  * Wno-narrowing:                         C++ Dialect Options.
                                                               (line  605)
! * Wno-nested-externs:                    Warning Options.    (line 2398)
  * Wno-noexcept:                          C++ Dialect Options.
                                                               (line  621)
  * Wno-noexcept-type:                     C++ Dialect Options.
--- 57525,57572 ----
  * Wno-format-truncation:                 Warning Options.    (line  460)
  * Wno-format-y2k:                        Warning Options.    (line  485)
  * Wno-format-zero-length:                Warning Options.    (line  427)
! * Wno-frame-address:                     Warning Options.    (line 1477)
! * Wno-free-nonheap-object:               Warning Options.    (line 1709)
  * Wno-ignored-attributes:                Warning Options.    (line  671)
  * Wno-ignored-qualifiers:                Warning Options.    (line  660)
  * Wno-implicit:                          Warning Options.    (line  535)
  * Wno-implicit-fallthrough:              Warning Options.    (line  539)
  * Wno-implicit-function-declaration:     Warning Options.    (line  529)
  * Wno-implicit-int:                      Warning Options.    (line  525)
! * Wno-incompatible-pointer-types:        Warning Options.    (line 1495)
! * Wno-inherited-variadic-ctor:           Warning Options.    (line 2404)
  * Wno-init-self:                         Warning Options.    (line  510)
! * Wno-inline:                            Warning Options.    (line 2409)
! * Wno-int-conversion:                    Warning Options.    (line 1501)
! * Wno-int-in-bool-context:               Warning Options.    (line 2434)
! * Wno-int-to-pointer-cast:               Warning Options.    (line 2442)
  * Wno-invalid-memory-model:              Warning Options.    (line 1034)
! * Wno-invalid-offsetof:                  Warning Options.    (line 2422)
! * Wno-invalid-pch:                       Warning Options.    (line 2451)
! * Wno-jump-misses-init:                  Warning Options.    (line 2060)
  * Wno-literal-suffix:                    C++ Dialect Options.
                                                               (line  574)
! * Wno-logical-not-parentheses:           Warning Options.    (line 2157)
! * Wno-logical-op:                        Warning Options.    (line 2149)
! * Wno-long-long:                         Warning Options.    (line 2455)
  * Wno-lto-type-mismatch:                 C++ Dialect Options.
                                                               (line  600)
  * Wno-main:                              Warning Options.    (line  678)
  * Wno-maybe-uninitialized:               Warning Options.    (line 1051)
! * Wno-memset-elt-size:                   Warning Options.    (line 2117)
! * Wno-memset-transposed-args:            Warning Options.    (line 2125)
  * Wno-misleading-indentation:            Warning Options.    (line  685)
  * Wno-missing-braces:                    Warning Options.    (line  719)
! * Wno-missing-declarations:              Warning Options.    (line 2231)
! * Wno-missing-field-initializers:        Warning Options.    (line 2241)
  * Wno-missing-format-attribute:          Warning Options.    (line 1295)
  * Wno-missing-include-dirs:              Warning Options.    (line  730)
! * Wno-missing-parameter-type:            Warning Options.    (line 2213)
! * Wno-missing-prototypes:                Warning Options.    (line 2221)
! * Wno-multichar:                         Warning Options.    (line 2265)
  * Wno-narrowing:                         C++ Dialect Options.
                                                               (line  605)
! * Wno-nested-externs:                    Warning Options.    (line 2401)
  * Wno-noexcept:                          C++ Dialect Options.
                                                               (line  621)
  * Wno-noexcept-type:                     C++ Dialect Options.
*************** look up both forms.
*** 57568,57637 ****
                                                               (line  636)
  * Wno-nonnull:                           Warning Options.    (line  489)
  * Wno-nonnull-compare:                   Warning Options.    (line  496)
! * Wno-normalized:                        Warning Options.    (line 2268)
  * Wno-null-dereference:                  Warning Options.    (line  503)
! * Wno-odr:                               Warning Options.    (line 2325)
  * Wno-old-style-cast:                    C++ Dialect Options.
                                                               (line  722)
! * Wno-old-style-declaration:             Warning Options.    (line 2200)
! * Wno-old-style-definition:              Warning Options.    (line 2206)
! * Wno-overflow:                          Warning Options.    (line 2322)
! * Wno-overlength-strings:                Warning Options.    (line 2533)
  * Wno-overloaded-virtual:                C++ Dialect Options.
                                                               (line  728)
! * Wno-override-init:                     Warning Options.    (line 2335)
! * Wno-override-init-side-effects:        Warning Options.    (line 2343)
! * Wno-packed:                            Warning Options.    (line 2348)
! * Wno-packed-bitfield-compat:            Warning Options.    (line 2365)
! * Wno-padded:                            Warning Options.    (line 2382)
  * Wno-parentheses:                       Warning Options.    (line  733)
! * Wno-pedantic-ms-format:                Warning Options.    (line 1738)
! * Wno-placement-new:                     Warning Options.    (line 1755)
  * Wno-pmf-conversions <1>:               Bound member functions.
                                                               (line   35)
  * Wno-pmf-conversions:                   C++ Dialect Options.
                                                               (line  747)
! * Wno-pointer-arith:                     Warning Options.    (line 1791)
! * Wno-pointer-compare:                   Warning Options.    (line 1798)
! * Wno-pointer-sign:                      Warning Options.    (line 2522)
! * Wno-pointer-to-int-cast:               Warning Options.    (line 2444)
  * Wno-pragmas:                           Warning Options.    (line 1101)
  * Wno-protocol:                          Objective-C and Objective-C++ Dialect Options.
                                                               (line  175)
! * Wno-redundant-decls:                   Warning Options.    (line 2389)
  * Wno-register:                          C++ Dialect Options.
                                                               (line  644)
  * Wno-reorder:                           C++ Dialect Options.
                                                               (line  651)
! * Wno-restrict:                          Warning Options.    (line 2394)
  * Wno-return-local-addr:                 Warning Options.    (line  804)
  * Wno-return-type:                       Warning Options.    (line  808)
  * Wno-selector:                          Objective-C and Objective-C++ Dialect Options.
                                                               (line  185)
  * Wno-sequence-point:                    Warning Options.    (line  751)
! * Wno-shadow:                            Warning Options.    (line 1645)
! * Wno-shadow-ivar:                       Warning Options.    (line 1653)
  * Wno-shift-count-negative:              Warning Options.    (line  827)
  * Wno-shift-count-overflow:              Warning Options.    (line  831)
  * Wno-shift-negative-value:              Warning Options.    (line  835)
  * Wno-shift-overflow:                    Warning Options.    (line  840)
! * Wno-sign-compare:                      Warning Options.    (line 2068)
! * Wno-sign-conversion:                   Warning Options.    (line 2074)
  * Wno-sign-promo:                        C++ Dialect Options.
                                                               (line  751)
! * Wno-sized-deallocation:                Warning Options.    (line 2090)
! * Wno-sizeof-array-argument:             Warning Options.    (line 2109)
! * Wno-sizeof-pointer-memaccess:          Warning Options.    (line 2101)
! * Wno-stack-protector:                   Warning Options.    (line 2528)
  * Wno-strict-aliasing:                   Warning Options.    (line 1106)
  * Wno-strict-null-sentinel:              C++ Dialect Options.
                                                               (line  705)
  * Wno-strict-overflow:                   Warning Options.    (line 1146)
! * Wno-strict-prototypes:                 Warning Options.    (line 2194)
  * Wno-strict-selector-match:             Objective-C and Objective-C++ Dialect Options.
                                                               (line  197)
  * Wno-stringop-overflow:                 Warning Options.    (line 1197)
! * Wno-subobject-linkage:                 Warning Options.    (line 1988)
  * Wno-suggest-attribute=:                Warning Options.    (line 1276)
  * Wno-suggest-attribute=const:           Warning Options.    (line 1282)
  * Wno-suggest-attribute=format:          Warning Options.    (line 1295)
--- 57577,57646 ----
                                                               (line  636)
  * Wno-nonnull:                           Warning Options.    (line  489)
  * Wno-nonnull-compare:                   Warning Options.    (line  496)
! * Wno-normalized:                        Warning Options.    (line 2271)
  * Wno-null-dereference:                  Warning Options.    (line  503)
! * Wno-odr:                               Warning Options.    (line 2328)
  * Wno-old-style-cast:                    C++ Dialect Options.
                                                               (line  722)
! * Wno-old-style-declaration:             Warning Options.    (line 2203)
! * Wno-old-style-definition:              Warning Options.    (line 2209)
! * Wno-overflow:                          Warning Options.    (line 2325)
! * Wno-overlength-strings:                Warning Options.    (line 2536)
  * Wno-overloaded-virtual:                C++ Dialect Options.
                                                               (line  728)
! * Wno-override-init:                     Warning Options.    (line 2338)
! * Wno-override-init-side-effects:        Warning Options.    (line 2346)
! * Wno-packed:                            Warning Options.    (line 2351)
! * Wno-packed-bitfield-compat:            Warning Options.    (line 2368)
! * Wno-padded:                            Warning Options.    (line 2385)
  * Wno-parentheses:                       Warning Options.    (line  733)
! * Wno-pedantic-ms-format:                Warning Options.    (line 1741)
! * Wno-placement-new:                     Warning Options.    (line 1758)
  * Wno-pmf-conversions <1>:               Bound member functions.
                                                               (line   35)
  * Wno-pmf-conversions:                   C++ Dialect Options.
                                                               (line  747)
! * Wno-pointer-arith:                     Warning Options.    (line 1794)
! * Wno-pointer-compare:                   Warning Options.    (line 1801)
! * Wno-pointer-sign:                      Warning Options.    (line 2525)
! * Wno-pointer-to-int-cast:               Warning Options.    (line 2447)
  * Wno-pragmas:                           Warning Options.    (line 1101)
  * Wno-protocol:                          Objective-C and Objective-C++ Dialect Options.
                                                               (line  175)
! * Wno-redundant-decls:                   Warning Options.    (line 2392)
  * Wno-register:                          C++ Dialect Options.
                                                               (line  644)
  * Wno-reorder:                           C++ Dialect Options.
                                                               (line  651)
! * Wno-restrict:                          Warning Options.    (line 2397)
  * Wno-return-local-addr:                 Warning Options.    (line  804)
  * Wno-return-type:                       Warning Options.    (line  808)
  * Wno-selector:                          Objective-C and Objective-C++ Dialect Options.
                                                               (line  185)
  * Wno-sequence-point:                    Warning Options.    (line  751)
! * Wno-shadow:                            Warning Options.    (line 1648)
! * Wno-shadow-ivar:                       Warning Options.    (line 1656)
  * Wno-shift-count-negative:              Warning Options.    (line  827)
  * Wno-shift-count-overflow:              Warning Options.    (line  831)
  * Wno-shift-negative-value:              Warning Options.    (line  835)
  * Wno-shift-overflow:                    Warning Options.    (line  840)
! * Wno-sign-compare:                      Warning Options.    (line 2071)
! * Wno-sign-conversion:                   Warning Options.    (line 2077)
  * Wno-sign-promo:                        C++ Dialect Options.
                                                               (line  751)
! * Wno-sized-deallocation:                Warning Options.    (line 2093)
! * Wno-sizeof-array-argument:             Warning Options.    (line 2112)
! * Wno-sizeof-pointer-memaccess:          Warning Options.    (line 2104)
! * Wno-stack-protector:                   Warning Options.    (line 2531)
  * Wno-strict-aliasing:                   Warning Options.    (line 1106)
  * Wno-strict-null-sentinel:              C++ Dialect Options.
                                                               (line  705)
  * Wno-strict-overflow:                   Warning Options.    (line 1146)
! * Wno-strict-prototypes:                 Warning Options.    (line 2197)
  * Wno-strict-selector-match:             Objective-C and Objective-C++ Dialect Options.
                                                               (line  197)
  * Wno-stringop-overflow:                 Warning Options.    (line 1197)
! * Wno-subobject-linkage:                 Warning Options.    (line 1991)
  * Wno-suggest-attribute=:                Warning Options.    (line 1276)
  * Wno-suggest-attribute=const:           Warning Options.    (line 1282)
  * Wno-suggest-attribute=format:          Warning Options.    (line 1295)
*************** look up both forms.
*** 57645,57664 ****
  * Wno-switch-enum:                       Warning Options.    (line  866)
  * Wno-switch-unreachable:                Warning Options.    (line  886)
  * Wno-sync-nand:                         Warning Options.    (line  910)
! * Wno-system-headers:                    Warning Options.    (line 1509)
! * Wno-tautological-compare:              Warning Options.    (line 1520)
  * Wno-terminate:                         C++ Dialect Options.
                                                               (line  787)
! * Wno-traditional:                       Warning Options.    (line 1553)
! * Wno-traditional-conversion:            Warning Options.    (line 1631)
! * Wno-trampolines:                       Warning Options.    (line 1528)
! * Wno-type-limits:                       Warning Options.    (line 1811)
  * Wno-undeclared-selector:               Objective-C and Objective-C++ Dialect Options.
                                                               (line  205)
! * Wno-undef:                             Warning Options.    (line 1834)
  * Wno-uninitialized:                     Warning Options.    (line 1011)
  * Wno-unknown-pragmas:                   Warning Options.    (line 1094)
! * Wno-unsafe-loop-optimizations:         Warning Options.    (line 1732)
  * Wno-unused:                            Warning Options.    (line 1004)
  * Wno-unused-but-set-parameter:          Warning Options.    (line  915)
  * Wno-unused-but-set-variable:           Warning Options.    (line  924)
--- 57654,57673 ----
  * Wno-switch-enum:                       Warning Options.    (line  866)
  * Wno-switch-unreachable:                Warning Options.    (line  886)
  * Wno-sync-nand:                         Warning Options.    (line  910)
! * Wno-system-headers:                    Warning Options.    (line 1512)
! * Wno-tautological-compare:              Warning Options.    (line 1523)
  * Wno-terminate:                         C++ Dialect Options.
                                                               (line  787)
! * Wno-traditional:                       Warning Options.    (line 1556)
! * Wno-traditional-conversion:            Warning Options.    (line 1634)
! * Wno-trampolines:                       Warning Options.    (line 1531)
! * Wno-type-limits:                       Warning Options.    (line 1814)
  * Wno-undeclared-selector:               Objective-C and Objective-C++ Dialect Options.
                                                               (line  205)
! * Wno-undef:                             Warning Options.    (line 1837)
  * Wno-uninitialized:                     Warning Options.    (line 1011)
  * Wno-unknown-pragmas:                   Warning Options.    (line 1094)
! * Wno-unsafe-loop-optimizations:         Warning Options.    (line 1735)
  * Wno-unused:                            Warning Options.    (line 1004)
  * Wno-unused-but-set-parameter:          Warning Options.    (line  915)
  * Wno-unused-but-set-variable:           Warning Options.    (line  924)
*************** look up both forms.
*** 57669,57683 ****
  * Wno-unused-result:                     Warning Options.    (line  957)
  * Wno-unused-value:                      Warning Options.    (line  994)
  * Wno-unused-variable:                   Warning Options.    (line  962)
! * Wno-useless-cast:                      Warning Options.    (line 2044)
! * Wno-varargs:                           Warning Options.    (line 2463)
! * Wno-variadic-macros:                   Warning Options.    (line 2457)
! * Wno-vector-operation-performance:      Warning Options.    (line 2468)
! * Wno-virtual-move-assign:               Warning Options.    (line 2478)
! * Wno-vla:                               Warning Options.    (line 2487)
! * Wno-volatile-register-var:             Warning Options.    (line 2507)
! * Wno-write-strings:                     Warning Options.    (line 1941)
! * Wno-zero-as-null-pointer-constant:     Warning Options.    (line 1984)
  * Wnoexcept:                             C++ Dialect Options.
                                                               (line  621)
  * Wnoexcept-type:                        C++ Dialect Options.
--- 57678,57692 ----
  * Wno-unused-result:                     Warning Options.    (line  957)
  * Wno-unused-value:                      Warning Options.    (line  994)
  * Wno-unused-variable:                   Warning Options.    (line  962)
! * Wno-useless-cast:                      Warning Options.    (line 2047)
! * Wno-varargs:                           Warning Options.    (line 2466)
! * Wno-variadic-macros:                   Warning Options.    (line 2460)
! * Wno-vector-operation-performance:      Warning Options.    (line 2471)
! * Wno-virtual-move-assign:               Warning Options.    (line 2481)
! * Wno-vla:                               Warning Options.    (line 2490)
! * Wno-volatile-register-var:             Warning Options.    (line 2510)
! * Wno-write-strings:                     Warning Options.    (line 1944)
! * Wno-zero-as-null-pointer-constant:     Warning Options.    (line 1987)
  * Wnoexcept:                             C++ Dialect Options.
                                                               (line  621)
  * Wnoexcept-type:                        C++ Dialect Options.
*************** look up both forms.
*** 57688,57766 ****
                                                               (line  636)
  * Wnonnull:                              Warning Options.    (line  489)
  * Wnonnull-compare:                      Warning Options.    (line  496)
! * Wnormalized:                           Warning Options.    (line 2268)
! * Wnormalized=:                          Warning Options.    (line 2268)
  * Wnull-dereference:                     Warning Options.    (line  503)
! * Wodr:                                  Warning Options.    (line 2325)
  * Wold-style-cast:                       C++ Dialect Options.
                                                               (line  722)
! * Wold-style-declaration:                Warning Options.    (line 2200)
! * Wold-style-definition:                 Warning Options.    (line 2206)
! * Wopenm-simd:                           Warning Options.    (line 2330)
! * Woverflow:                             Warning Options.    (line 2322)
! * Woverlength-strings:                   Warning Options.    (line 2533)
  * Woverloaded-virtual:                   C++ Dialect Options.
                                                               (line  728)
! * Woverride-init:                        Warning Options.    (line 2335)
! * Woverride-init-side-effects:           Warning Options.    (line 2343)
  * Wp:                                    Preprocessor Options.
                                                               (line  446)
! * Wpacked:                               Warning Options.    (line 2348)
! * Wpacked-bitfield-compat:               Warning Options.    (line 2365)
! * Wpadded:                               Warning Options.    (line 2382)
  * Wparentheses:                          Warning Options.    (line  733)
  * Wpedantic:                             Warning Options.    (line   82)
! * Wpedantic-ms-format:                   Warning Options.    (line 1738)
! * Wplacement-new:                        Warning Options.    (line 1755)
  * Wpmf-conversions:                      C++ Dialect Options.
                                                               (line  747)
  * Wpointer-arith <1>:                    Pointer Arith.      (line   13)
! * Wpointer-arith:                        Warning Options.    (line 1791)
! * Wpointer-compare:                      Warning Options.    (line 1798)
! * Wpointer-sign:                         Warning Options.    (line 2522)
! * Wpointer-to-int-cast:                  Warning Options.    (line 2444)
  * Wpragmas:                              Warning Options.    (line 1101)
  * Wprotocol:                             Objective-C and Objective-C++ Dialect Options.
                                                               (line  175)
  * wrapper:                               Overall Options.    (line  349)
! * Wredundant-decls:                      Warning Options.    (line 2389)
  * Wregister:                             C++ Dialect Options.
                                                               (line  644)
  * Wreorder:                              C++ Dialect Options.
                                                               (line  651)
! * Wrestrict:                             Warning Options.    (line 2394)
  * Wreturn-local-addr:                    Warning Options.    (line  804)
  * Wreturn-type:                          Warning Options.    (line  808)
  * Wselector:                             Objective-C and Objective-C++ Dialect Options.
                                                               (line  185)
  * Wsequence-point:                       Warning Options.    (line  751)
! * Wshadow:                               Warning Options.    (line 1645)
! * Wshadow-ivar:                          Warning Options.    (line 1653)
! * Wshadow=compatible-local:              Warning Options.    (line 1664)
! * Wshadow=local:                         Warning Options.    (line 1657)
  * Wshift-count-negative:                 Warning Options.    (line  827)
  * Wshift-count-overflow:                 Warning Options.    (line  831)
  * Wshift-negative-value:                 Warning Options.    (line  835)
  * Wshift-overflow:                       Warning Options.    (line  840)
! * Wsign-compare:                         Warning Options.    (line 2068)
! * Wsign-conversion:                      Warning Options.    (line 2074)
  * Wsign-promo:                           C++ Dialect Options.
                                                               (line  751)
! * Wsized-deallocation:                   Warning Options.    (line 2090)
! * Wsizeof-array-argument:                Warning Options.    (line 2109)
! * Wsizeof-pointer-memaccess:             Warning Options.    (line 2101)
! * Wstack-protector:                      Warning Options.    (line 2528)
! * Wstack-usage:                          Warning Options.    (line 1710)
  * Wstrict-aliasing:                      Warning Options.    (line 1106)
  * Wstrict-aliasing=n:                    Warning Options.    (line 1114)
  * Wstrict-null-sentinel:                 C++ Dialect Options.
                                                               (line  705)
  * Wstrict-overflow:                      Warning Options.    (line 1146)
! * Wstrict-prototypes:                    Warning Options.    (line 2194)
  * Wstrict-selector-match:                Objective-C and Objective-C++ Dialect Options.
                                                               (line  197)
  * Wstringop-overflow:                    Warning Options.    (line 1197)
! * Wsubobject-linkage:                    Warning Options.    (line 1988)
  * Wsuggest-attribute=:                   Warning Options.    (line 1276)
  * Wsuggest-attribute=const:              Warning Options.    (line 1282)
  * Wsuggest-attribute=format:             Warning Options.    (line 1295)
--- 57697,57775 ----
                                                               (line  636)
  * Wnonnull:                              Warning Options.    (line  489)
  * Wnonnull-compare:                      Warning Options.    (line  496)
! * Wnormalized:                           Warning Options.    (line 2271)
! * Wnormalized=:                          Warning Options.    (line 2271)
  * Wnull-dereference:                     Warning Options.    (line  503)
! * Wodr:                                  Warning Options.    (line 2328)
  * Wold-style-cast:                       C++ Dialect Options.
                                                               (line  722)
! * Wold-style-declaration:                Warning Options.    (line 2203)
! * Wold-style-definition:                 Warning Options.    (line 2209)
! * Wopenm-simd:                           Warning Options.    (line 2333)
! * Woverflow:                             Warning Options.    (line 2325)
! * Woverlength-strings:                   Warning Options.    (line 2536)
  * Woverloaded-virtual:                   C++ Dialect Options.
                                                               (line  728)
! * Woverride-init:                        Warning Options.    (line 2338)
! * Woverride-init-side-effects:           Warning Options.    (line 2346)
  * Wp:                                    Preprocessor Options.
                                                               (line  446)
! * Wpacked:                               Warning Options.    (line 2351)
! * Wpacked-bitfield-compat:               Warning Options.    (line 2368)
! * Wpadded:                               Warning Options.    (line 2385)
  * Wparentheses:                          Warning Options.    (line  733)
  * Wpedantic:                             Warning Options.    (line   82)
! * Wpedantic-ms-format:                   Warning Options.    (line 1741)
! * Wplacement-new:                        Warning Options.    (line 1758)
  * Wpmf-conversions:                      C++ Dialect Options.
                                                               (line  747)
  * Wpointer-arith <1>:                    Pointer Arith.      (line   13)
! * Wpointer-arith:                        Warning Options.    (line 1794)
! * Wpointer-compare:                      Warning Options.    (line 1801)
! * Wpointer-sign:                         Warning Options.    (line 2525)
! * Wpointer-to-int-cast:                  Warning Options.    (line 2447)
  * Wpragmas:                              Warning Options.    (line 1101)
  * Wprotocol:                             Objective-C and Objective-C++ Dialect Options.
                                                               (line  175)
  * wrapper:                               Overall Options.    (line  349)
! * Wredundant-decls:                      Warning Options.    (line 2392)
  * Wregister:                             C++ Dialect Options.
                                                               (line  644)
  * Wreorder:                              C++ Dialect Options.
                                                               (line  651)
! * Wrestrict:                             Warning Options.    (line 2397)
  * Wreturn-local-addr:                    Warning Options.    (line  804)
  * Wreturn-type:                          Warning Options.    (line  808)
  * Wselector:                             Objective-C and Objective-C++ Dialect Options.
                                                               (line  185)
  * Wsequence-point:                       Warning Options.    (line  751)
! * Wshadow:                               Warning Options.    (line 1648)
! * Wshadow-ivar:                          Warning Options.    (line 1656)
! * Wshadow=compatible-local:              Warning Options.    (line 1667)
! * Wshadow=local:                         Warning Options.    (line 1660)
  * Wshift-count-negative:                 Warning Options.    (line  827)
  * Wshift-count-overflow:                 Warning Options.    (line  831)
  * Wshift-negative-value:                 Warning Options.    (line  835)
  * Wshift-overflow:                       Warning Options.    (line  840)
! * Wsign-compare:                         Warning Options.    (line 2071)
! * Wsign-conversion:                      Warning Options.    (line 2077)
  * Wsign-promo:                           C++ Dialect Options.
                                                               (line  751)
! * Wsized-deallocation:                   Warning Options.    (line 2093)
! * Wsizeof-array-argument:                Warning Options.    (line 2112)
! * Wsizeof-pointer-memaccess:             Warning Options.    (line 2104)
! * Wstack-protector:                      Warning Options.    (line 2531)
! * Wstack-usage:                          Warning Options.    (line 1713)
  * Wstrict-aliasing:                      Warning Options.    (line 1106)
  * Wstrict-aliasing=n:                    Warning Options.    (line 1114)
  * Wstrict-null-sentinel:                 C++ Dialect Options.
                                                               (line  705)
  * Wstrict-overflow:                      Warning Options.    (line 1146)
! * Wstrict-prototypes:                    Warning Options.    (line 2197)
  * Wstrict-selector-match:                Objective-C and Objective-C++ Dialect Options.
                                                               (line  197)
  * Wstringop-overflow:                    Warning Options.    (line 1197)
! * Wsubobject-linkage:                    Warning Options.    (line 1991)
  * Wsuggest-attribute=:                   Warning Options.    (line 1276)
  * Wsuggest-attribute=const:              Warning Options.    (line 1282)
  * Wsuggest-attribute=format:             Warning Options.    (line 1295)
*************** look up both forms.
*** 57774,57797 ****
  * Wswitch-enum:                          Warning Options.    (line  866)
  * Wswitch-unreachable:                   Warning Options.    (line  886)
  * Wsync-nand:                            Warning Options.    (line  910)
! * Wsystem-headers:                       Warning Options.    (line 1509)
! * Wtautological-compare:                 Warning Options.    (line 1520)
  * Wtemplates:                            C++ Dialect Options.
                                                               (line  757)
  * Wterminate:                            C++ Dialect Options.
                                                               (line  787)
! * Wtraditional:                          Warning Options.    (line 1553)
! * Wtraditional-conversion:               Warning Options.    (line 1631)
! * Wtrampolines:                          Warning Options.    (line 1528)
! * Wtrigraphs:                            Warning Options.    (line 1824)
! * Wtype-limits:                          Warning Options.    (line 1811)
  * Wundeclared-selector:                  Objective-C and Objective-C++ Dialect Options.
                                                               (line  205)
! * Wundef:                                Warning Options.    (line 1834)
  * Wuninitialized:                        Warning Options.    (line 1011)
  * Wunknown-pragmas:                      Warning Options.    (line 1094)
! * Wunsafe-loop-optimizations:            Warning Options.    (line 1732)
! * Wunsuffixed-float-constants:           Warning Options.    (line 2548)
  * Wunused:                               Warning Options.    (line 1004)
  * Wunused-but-set-parameter:             Warning Options.    (line  915)
  * Wunused-but-set-variable:              Warning Options.    (line  924)
--- 57783,57806 ----
  * Wswitch-enum:                          Warning Options.    (line  866)
  * Wswitch-unreachable:                   Warning Options.    (line  886)
  * Wsync-nand:                            Warning Options.    (line  910)
! * Wsystem-headers:                       Warning Options.    (line 1512)
! * Wtautological-compare:                 Warning Options.    (line 1523)
  * Wtemplates:                            C++ Dialect Options.
                                                               (line  757)
  * Wterminate:                            C++ Dialect Options.
                                                               (line  787)
! * Wtraditional:                          Warning Options.    (line 1556)
! * Wtraditional-conversion:               Warning Options.    (line 1634)
! * Wtrampolines:                          Warning Options.    (line 1531)
! * Wtrigraphs:                            Warning Options.    (line 1827)
! * Wtype-limits:                          Warning Options.    (line 1814)
  * Wundeclared-selector:                  Objective-C and Objective-C++ Dialect Options.
                                                               (line  205)
! * Wundef:                                Warning Options.    (line 1837)
  * Wuninitialized:                        Warning Options.    (line 1011)
  * Wunknown-pragmas:                      Warning Options.    (line 1094)
! * Wunsafe-loop-optimizations:            Warning Options.    (line 1735)
! * Wunsuffixed-float-constants:           Warning Options.    (line 2551)
  * Wunused:                               Warning Options.    (line 1004)
  * Wunused-but-set-parameter:             Warning Options.    (line  915)
  * Wunused-but-set-variable:              Warning Options.    (line  924)
*************** look up both forms.
*** 57799,57830 ****
  * Wunused-function:                      Warning Options.    (line  934)
  * Wunused-label:                         Warning Options.    (line  939)
  * Wunused-local-typedefs:                Warning Options.    (line  946)
! * Wunused-macros:                        Warning Options.    (line 1844)
  * Wunused-parameter:                     Warning Options.    (line  950)
  * Wunused-result:                        Warning Options.    (line  957)
  * Wunused-value:                         Warning Options.    (line  994)
  * Wunused-variable:                      Warning Options.    (line  962)
! * Wuseless-cast:                         Warning Options.    (line 2044)
! * Wvarargs:                              Warning Options.    (line 2463)
! * Wvariadic-macros:                      Warning Options.    (line 2457)
! * Wvector-operation-performance:         Warning Options.    (line 2468)
  * Wvirtual-inheritance:                  C++ Dialect Options.
                                                               (line  772)
! * Wvirtual-move-assign:                  Warning Options.    (line 2478)
! * Wvla:                                  Warning Options.    (line 2487)
! * Wvolatile-register-var:                Warning Options.    (line 2507)
! * Wwrite-strings:                        Warning Options.    (line 1941)
! * Wzero-as-null-pointer-constant:        Warning Options.    (line 1984)
  * x:                                     Overall Options.    (line  129)
  * Xassembler:                            Assembler Options.  (line   13)
  * Xbind-lazy:                            VxWorks Options.    (line   26)
  * Xbind-now:                             VxWorks Options.    (line   30)
! * Xlinker:                               Link Options.       (line  258)
  * Xpreprocessor:                         Preprocessor Options.
                                                               (line  457)
  * Ym:                                    System V Options.   (line   26)
  * YP:                                    System V Options.   (line   22)
! * z:                                     Link Options.       (line  289)
  
  
  File: gcc.info,  Node: Keyword Index,  Prev: Option Index,  Up: Top
--- 57808,57839 ----
  * Wunused-function:                      Warning Options.    (line  934)
  * Wunused-label:                         Warning Options.    (line  939)
  * Wunused-local-typedefs:                Warning Options.    (line  946)
! * Wunused-macros:                        Warning Options.    (line 1847)
  * Wunused-parameter:                     Warning Options.    (line  950)
  * Wunused-result:                        Warning Options.    (line  957)
  * Wunused-value:                         Warning Options.    (line  994)
  * Wunused-variable:                      Warning Options.    (line  962)
! * Wuseless-cast:                         Warning Options.    (line 2047)
! * Wvarargs:                              Warning Options.    (line 2466)
! * Wvariadic-macros:                      Warning Options.    (line 2460)
! * Wvector-operation-performance:         Warning Options.    (line 2471)
  * Wvirtual-inheritance:                  C++ Dialect Options.
                                                               (line  772)
! * Wvirtual-move-assign:                  Warning Options.    (line 2481)
! * Wvla:                                  Warning Options.    (line 2490)
! * Wvolatile-register-var:                Warning Options.    (line 2510)
! * Wwrite-strings:                        Warning Options.    (line 1944)
! * Wzero-as-null-pointer-constant:        Warning Options.    (line 1987)
  * x:                                     Overall Options.    (line  129)
  * Xassembler:                            Assembler Options.  (line   13)
  * Xbind-lazy:                            VxWorks Options.    (line   26)
  * Xbind-now:                             VxWorks Options.    (line   30)
! * Xlinker:                               Link Options.       (line  257)
  * Xpreprocessor:                         Preprocessor Options.
                                                               (line  457)
  * Ym:                                    System V Options.   (line   26)
  * YP:                                    System V Options.   (line   22)
! * z:                                     Link Options.       (line  288)
  
  
  File: gcc.info,  Node: Keyword Index,  Prev: Option Index,  Up: Top
*************** Keyword Index
*** 57856,57862 ****
  * -nodefaultlibs and unresolved references: Link Options.    (line   91)
  * -nostdlib and unresolved references:   Link Options.       (line   91)
  * .sdata/.sdata2 references (PowerPC):   RS/6000 and PowerPC Options.
!                                                              (line  825)
  * //:                                    C++ Comments.       (line    6)
  * 0 in constraint:                       Simple Constraints. (line  127)
  * < in constraint:                       Simple Constraints. (line   48)
--- 57865,57871 ----
  * -nodefaultlibs and unresolved references: Link Options.    (line   91)
  * -nostdlib and unresolved references:   Link Options.       (line   91)
  * .sdata/.sdata2 references (PowerPC):   RS/6000 and PowerPC Options.
!                                                              (line  830)
  * //:                                    C++ Comments.       (line    6)
  * 0 in constraint:                       Simple Constraints. (line  127)
  * < in constraint:                       Simple Constraints. (line   48)
*************** Keyword Index
*** 58542,58548 ****
                                                               (line  254)
  * character set, input:                  Preprocessor Options.
                                                               (line  267)
! * character set, input normalization:    Warning Options.    (line 2268)
  * character set, wide execution:         Preprocessor Options.
                                                               (line  259)
  * cimag:                                 Other Builtins.     (line    6)
--- 58551,58557 ----
                                                               (line  254)
  * character set, input:                  Preprocessor Options.
                                                               (line  267)
! * character set, input normalization:    Warning Options.    (line 2271)
  * character set, wide execution:         Preprocessor Options.
                                                               (line  259)
  * cimag:                                 Other Builtins.     (line    6)
*************** Keyword Index
*** 58569,58575 ****
  * common variable attribute:             Common Variable Attributes.
                                                               (line   90)
  * comparison of signed and unsigned values, warning: Warning Options.
!                                                              (line 2068)
  * compilation statistics:                Developer Options.  (line    6)
  * compiler bugs, reporting:              Bug Reporting.      (line    6)
  * compiler compared to C++ preprocessor: G++ and GCC.        (line   35)
--- 58578,58584 ----
  * common variable attribute:             Common Variable Attributes.
                                                               (line   90)
  * comparison of signed and unsigned values, warning: Warning Options.
!                                                              (line 2071)
  * compilation statistics:                Developer Options.  (line    6)
  * compiler bugs, reporting:              Bug Reporting.      (line    6)
  * compiler compared to C++ preprocessor: G++ and GCC.        (line   35)
*************** Keyword Index
*** 58832,58838 ****
  * 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 1995)
  * floor:                                 Other Builtins.     (line    6)
  * floorf:                                Other Builtins.     (line    6)
  * floorl:                                Other Builtins.     (line    6)
--- 58841,58847 ----
  * 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 1999)
  * floor:                                 Other Builtins.     (line    6)
  * floorf:                                Other Builtins.     (line    6)
  * floorl:                                Other Builtins.     (line    6)
*************** Keyword Index
*** 59191,59197 ****
  * LIBRARY_PATH:                          Environment Variables.
                                                               (line   97)
  * link options:                          Link Options.       (line    6)
! * linker script:                         Link Options.       (line  252)
  * LK fixed-suffix:                       Fixed-Point.        (line    6)
  * lk fixed-suffix:                       Fixed-Point.        (line    6)
  * LL integer suffix:                     Long Long.          (line    6)
--- 59200,59206 ----
  * LIBRARY_PATH:                          Environment Variables.
                                                               (line   97)
  * link options:                          Link Options.       (line    6)
! * linker script:                         Link Options.       (line  251)
  * LK fixed-suffix:                       Fixed-Point.        (line    6)
  * lk fixed-suffix:                       Fixed-Point.        (line    6)
  * LL integer suffix:                     Long Long.          (line    6)
*************** Keyword Index
*** 59391,59398 ****
  * nexttoward:                            Other Builtins.     (line    6)
  * nexttowardf:                           Other Builtins.     (line    6)
  * nexttowardl:                           Other Builtins.     (line    6)
! * NFC:                                   Warning Options.    (line 2268)
! * NFKC:                                  Warning Options.    (line 2268)
  * Nios II options:                       Nios II Options.    (line    6)
  * nmi function attribute, NDS32:         NDS32 Function Attributes.
                                                               (line   54)
--- 59400,59407 ----
  * nexttoward:                            Other Builtins.     (line    6)
  * nexttowardf:                           Other Builtins.     (line    6)
  * nexttowardl:                           Other Builtins.     (line    6)
! * NFC:                                   Warning Options.    (line 2271)
! * NFKC:                                  Warning Options.    (line 2271)
  * Nios II options:                       Nios II Options.    (line    6)
  * nmi function attribute, NDS32:         NDS32 Function Attributes.
                                                               (line   54)
*************** Keyword Index
*** 59771,59777 ****
  * signbitf:                              Other Builtins.     (line    6)
  * signbitl:                              Other Builtins.     (line    6)
  * signed and unsigned values, comparison warning: Warning Options.
!                                                              (line 2068)
  * significand:                           Other Builtins.     (line    6)
  * significandf:                          Other Builtins.     (line    6)
  * significandl:                          Other Builtins.     (line    6)
--- 59780,59786 ----
  * signbitf:                              Other Builtins.     (line    6)
  * signbitl:                              Other Builtins.     (line    6)
  * signed and unsigned values, comparison warning: Warning Options.
!                                                              (line 2071)
  * significand:                           Other Builtins.     (line    6)
  * significandf:                          Other Builtins.     (line    6)
  * significandl:                          Other Builtins.     (line    6)
*************** Keyword Index
*** 59792,59798 ****
  * smaller data references <1>:           Nios II Options.    (line    9)
  * smaller data references:               M32R/D Options.     (line   57)
  * smaller data references (PowerPC):     RS/6000 and PowerPC Options.
!                                                              (line  825)
  * snprintf:                              Other Builtins.     (line    6)
  * Solaris 2 options:                     Solaris 2 Options.  (line    6)
  * SOURCE_DATE_EPOCH:                     Environment Variables.
--- 59801,59807 ----
  * smaller data references <1>:           Nios II Options.    (line    9)
  * smaller data references:               M32R/D Options.     (line   57)
  * smaller data references (PowerPC):     RS/6000 and PowerPC Options.
!                                                              (line  830)
  * snprintf:                              Other Builtins.     (line    6)
  * Solaris 2 options:                     Solaris 2 Options.  (line    6)
  * SOURCE_DATE_EPOCH:                     Environment Variables.
*************** Keyword Index
*** 59874,59880 ****
  * syntax checking:                       Warning Options.    (line   13)
  * syscall_linkage function attribute, IA-64: IA-64 Function Attributes.
                                                               (line    9)
! * system headers, warnings from:         Warning Options.    (line 1509)
  * sysv_abi function attribute, x86:      x86 Function Attributes.
                                                               (line   34)
  * tan:                                   Other Builtins.     (line    6)
--- 59883,59889 ----
  * syntax checking:                       Warning Options.    (line   13)
  * syscall_linkage function attribute, IA-64: IA-64 Function Attributes.
                                                               (line    9)
! * system headers, warnings from:         Warning Options.    (line 1512)
  * sysv_abi function attribute, x86:      x86 Function Attributes.
                                                               (line   34)
  * tan:                                   Other Builtins.     (line    6)
*************** Keyword Index
*** 60186,60192 ****
  * warn_unused_result function attribute: Common Function Attributes.
                                                               (line  933)
  * warning for comparison of signed and unsigned values: Warning Options.
!                                                              (line 2068)
  * warning for overloaded virtual function: C++ Dialect Options.
                                                               (line  728)
  * warning for reordering of member initializers: C++ Dialect Options.
--- 60195,60201 ----
  * warn_unused_result function attribute: Common Function Attributes.
                                                               (line  933)
  * warning for comparison of signed and unsigned values: Warning Options.
!                                                              (line 2071)
  * warning for overloaded virtual function: C++ Dialect Options.
                                                               (line  728)
  * warning for reordering of member initializers: C++ Dialect Options.
*************** Keyword Index
*** 60197,60203 ****
  * warning GCC_COLORS capability:         Diagnostic Message Formatting Options.
                                                               (line   74)
  * warning messages:                      Warning Options.    (line    6)
! * warnings from system headers:          Warning Options.    (line 1509)
  * warnings vs errors:                    Warnings and Errors.
                                                               (line    6)
  * weak function attribute:               Common Function Attributes.
--- 60206,60212 ----
  * warning GCC_COLORS capability:         Diagnostic Message Formatting Options.
                                                               (line   74)
  * warning messages:                      Warning Options.    (line    6)
! * warnings from system headers:          Warning Options.    (line 1512)
  * warnings vs errors:                    Warnings and Errors.
                                                               (line    6)
  * weak function attribute:               Common Function Attributes.
*************** Node: G++ and GCC4003
*** 60241,60637 ****
  Node: Standards6080
  Node: Invoking GCC19100
  Node: Option Summary23302
! Node: Overall Options72419
! Node: Invoking G++87002
! Node: C Dialect Options88525
! Node: C++ Dialect Options107232
! Node: Objective-C and Objective-C++ Dialect Options142718
! Node: Diagnostic Message Formatting Options153954
! Node: Warning Options161421
! Ref: Wtrigraphs241900
! Node: Debugging Options274553
! Node: Optimize Options289003
! Ref: Type-punning351694
! Node: Instrumentation Options442107
! Node: Preprocessor Options477416
! Ref: dashMF482262
! Ref: fdollars-in-identifiers486774
! Node: Assembler Options498573
! Node: Link Options499265
! Ref: Link Options-Footnote-1513167
! Node: Directory Options513501
! Node: Code Gen Options521888
! Node: Developer Options550154
! Node: Submodel Options589091
! Node: AArch64 Options590825
! Ref: aarch64-feature-modifiers599802
! Node: Adapteva Epiphany Options600746
! Node: ARC Options606696
! Node: ARM Options625333
! Node: AVR Options645440
! Node: Blackfin Options667327
! Node: C6X Options675342
! Node: CRIS Options676885
! Node: CR16 Options680629
! Node: Darwin Options681536
! Node: DEC Alpha Options688977
! Node: FR30 Options700565
! Node: FT32 Options701131
! Node: FRV Options701857
! Node: GNU/Linux Options708576
! Node: H8/300 Options709958
! Node: HPPA Options711408
! Node: IA-64 Options720939
! Node: LM32 Options729065
! Node: M32C Options729589
! Node: M32R/D Options730863
! Node: M680x0 Options734409
! Node: MCore Options748572
! Node: MeP Options750075
! Node: MicroBlaze Options754035
! Node: MIPS Options756831
! Node: MMIX Options792343
! Node: MN10300 Options794825
! Node: Moxie Options797368
! Node: MSP430 Options797856
! Node: NDS32 Options802566
! Node: Nios II Options804460
! Node: Nvidia PTX Options815381
! Node: PDP-11 Options817641
! Node: picoChip Options819338
! Node: PowerPC Options821479
! Node: RISC-V Options821702
! Node: RL78 Options825462
! Node: RS/6000 and PowerPC Options829239
! Node: RX Options872284
! Node: S/390 and zSeries Options880887
! Node: Score Options891347
! Node: SH Options892189
! Node: Solaris 2 Options907347
! Node: SPARC Options908591
! Node: SPU Options924209
! Node: System V Options929146
! Node: TILE-Gx Options929972
! Node: TILEPro Options930990
! Node: V850 Options931494
! Node: VAX Options938186
! Node: Visium Options938724
! Node: VMS Options941032
! Node: VxWorks Options941846
! Node: x86 Options942998
! Node: x86 Windows Options997177
! Node: Xstormy16 Options999985
! Node: Xtensa Options1000279
! Node: zSeries Options1005428
! Node: Spec Files1005624
! Node: Environment Variables1027502
! Node: Precompiled Headers1036227
! Node: C Implementation1042244
! Node: Translation implementation1043933
! Node: Environment implementation1044525
! Node: Identifiers implementation1045080
! Node: Characters implementation1046167
! Node: Integers implementation1049818
! Node: Floating point implementation1051868
! Node: Arrays and pointers implementation1054933
! Ref: Arrays and pointers implementation-Footnote-11056392
! Node: Hints implementation1056516
! Node: Structures unions enumerations and bit-fields implementation1058013
! Node: Qualifiers implementation1060238
! Node: Declarators implementation1062018
! Node: Statements implementation1062360
! Node: Preprocessing directives implementation1062687
! Node: Library functions implementation1065009
! Node: Architecture implementation1065659
! Node: Locale-specific behavior implementation1067301
! Node: C++ Implementation1067606
! Node: Conditionally-supported behavior1068888
! Node: Exception handling1069506
! Node: C Extensions1069915
! Node: Statement Exprs1075199
! Node: Local Labels1079675
! Node: Labels as Values1082648
! Ref: Labels as Values-Footnote-11085173
! Node: Nested Functions1085356
! Node: Constructing Calls1089314
! Node: Typeof1094032
! Node: Conditionals1097960
! Node: __int1281098850
! Node: Long Long1099374
! Node: Complex1100850
! Node: Floating Types1103435
! Node: Half-Precision1106900
! Node: Decimal Float1109305
! Node: Hex Floats1111158
! Node: Fixed-Point1112194
! Node: Named Address Spaces1115474
! Ref: AVR Named Address Spaces1116160
! Node: Zero Length1122494
! Node: Empty Structures1125533
! Node: Variable Length1125939
! Node: Variadic Macros1128657
! Node: Escaped Newlines1131035
! Node: Subscripting1131896
! Node: Pointer Arith1132622
! Node: Pointers to Arrays1133196
! Node: Initializers1133940
! Node: Compound Literals1134441
! Node: Designated Inits1138008
! Node: Case Ranges1141744
! Node: Cast to Union1142425
! Node: Mixed Declarations1143551
! Node: Function Attributes1144061
! Node: Common Function Attributes1147175
! Node: AArch64 Function Attributes1193631
! Node: ARC Function Attributes1199038
! Node: ARM Function Attributes1200730
! Node: AVR Function Attributes1204388
! Node: Blackfin Function Attributes1207859
! Node: CR16 Function Attributes1210355
! Node: Epiphany Function Attributes1210882
! Node: H8/300 Function Attributes1213633
! Node: IA-64 Function Attributes1214829
! Node: M32C Function Attributes1215871
! Node: M32R/D Function Attributes1218206
! Node: m68k Function Attributes1219679
! Node: MCORE Function Attributes1220623
! Node: MeP Function Attributes1221431
! Node: MicroBlaze Function Attributes1222732
! Node: Microsoft Windows Function Attributes1224238
! Node: MIPS Function Attributes1228821
! Node: MSP430 Function Attributes1234378
! Node: NDS32 Function Attributes1238223
! Node: Nios II Function Attributes1240642
! Node: Nvidia PTX Function Attributes1241936
! Node: PowerPC Function Attributes1242551
! Node: RL78 Function Attributes1249558
! Node: RX Function Attributes1250795
! Node: S/390 Function Attributes1253331
! Node: SH Function Attributes1255150
! Node: SPU Function Attributes1258574
! Node: Symbian OS Function Attributes1259379
! Node: V850 Function Attributes1259716
! Node: Visium Function Attributes1260261
! Node: x86 Function Attributes1260789
! Node: Xstormy16 Function Attributes1273248
! Node: Variable Attributes1273755
! Node: Common Variable Attributes1275217
! Node: AVR Variable Attributes1286323
! Node: Blackfin Variable Attributes1291592
! Node: H8/300 Variable Attributes1292451
! Node: IA-64 Variable Attributes1293525
! Node: M32R/D Variable Attributes1294276
! Node: MeP Variable Attributes1295059
! Node: Microsoft Windows Variable Attributes1297162
! Node: MSP430 Variable Attributes1299621
! Node: Nvidia PTX Variable Attributes1300820
! Node: PowerPC Variable Attributes1301437
! Node: RL78 Variable Attributes1301994
! Node: SPU Variable Attributes1302412
! Node: V850 Variable Attributes1302777
! Node: x86 Variable Attributes1303409
! Node: Xstormy16 Variable Attributes1304465
! Node: Type Attributes1305040
! Node: Common Type Attributes1306359
! Node: ARM Type Attributes1321843
! Node: MeP Type Attributes1322627
! Node: PowerPC Type Attributes1323029
! Node: SPU Type Attributes1324018
! Node: x86 Type Attributes1324437
! Node: Label Attributes1325425
! Node: Enumerator Attributes1327359
! Node: Statement Attributes1328679
! Node: Attribute Syntax1330163
! Node: Function Prototypes1341424
! Node: C++ Comments1343205
! Node: Dollar Signs1343724
! Node: Character Escapes1344189
! Node: Alignment1344473
! Node: Inline1345845
! Node: Volatiles1350647
! Node: Using Assembly Language with C1353547
! Node: Basic Asm1354784
! Node: Extended Asm1359961
! Ref: Volatile1363758
! Ref: AssemblerTemplate1367830
! Ref: OutputOperands1372055
! Ref: FlagOutputOperands1378967
! Ref: InputOperands1380982
! Ref: Clobbers1385217
! Ref: GotoLabels1388523
! Ref: x86Operandmodifiers1390656
! Ref: x86floatingpointasmoperands1392922
! Node: Constraints1396252
! Node: Simple Constraints1397358
! Node: Multi-Alternative1404683
! Node: Modifiers1406358
! Node: Machine Constraints1409155
! Node: Asm Labels1467281
! Node: Explicit Register Variables1468901
! Ref: Explicit Reg Vars1469115
! Node: Global Register Variables1469724
! Ref: Global Reg Vars1469932
! Node: Local Register Variables1473774
! Ref: Local Reg Vars1473994
! Node: Size of an asm1477304
! Node: Alternate Keywords1478559
! Node: Incomplete Enums1480058
! Node: Function Names1480815
! Node: Return Address1482713
! Node: Vector Extensions1486654
! Node: Offsetof1493939
! Node: __sync Builtins1494780
! Node: __atomic Builtins1501225
! Node: Integer Overflow Builtins1514715
! Node: x86 specific memory model extensions for transactional memory1521194
! Node: Object Size Checking1522460
! Node: Pointer Bounds Checker builtins1528488
! Node: Cilk Plus Builtins1534494
! Node: Other Builtins1535411
! Node: Target Builtins1572391
! Node: AArch64 Built-in Functions1573960
! Node: Alpha Built-in Functions1574415
! Node: Altera Nios II Built-in Functions1577463
! Node: ARC Built-in Functions1581830
! Node: ARC SIMD Built-in Functions1587041
! Node: ARM iWMMXt Built-in Functions1595937
! Node: ARM C Language Extensions (ACLE)1602933
! Node: ARM Floating Point Status and Control Intrinsics1604272
! Node: ARM ARMv8-M Security Extensions1604757
! Node: AVR Built-in Functions1606103
! Node: Blackfin Built-in Functions1609431
! Node: FR-V Built-in Functions1610050
! Node: Argument Types1610916
! Node: Directly-mapped Integer Functions1612670
! Node: Directly-mapped Media Functions1613754
! Node: Raw read/write Functions1620788
! Node: Other Built-in Functions1621702
! Node: MIPS DSP Built-in Functions1622888
! Node: MIPS Paired-Single Support1635386
! Node: MIPS Loongson Built-in Functions1636885
! Node: Paired-Single Arithmetic1643412
! Node: Paired-Single Built-in Functions1644360
! Node: MIPS-3D Built-in Functions1647027
! Node: MIPS SIMD Architecture (MSA) Support1652404
! Node: MIPS SIMD Architecture Built-in Functions1655267
! Node: Other MIPS Built-in Functions1682097
! Node: MSP430 Built-in Functions1683106
! Node: NDS32 Built-in Functions1684507
! Node: picoChip Built-in Functions1685800
! Node: PowerPC Built-in Functions1687144
! Node: PowerPC AltiVec/VSX Built-in Functions1713059
! Node: PowerPC Hardware Transactional Memory Built-in Functions1869167
! Node: RX Built-in Functions1877658
! Node: S/390 System z Built-in Functions1881691
! Node: SH Built-in Functions1886926
! Node: SPARC VIS Built-in Functions1888654
! Node: SPU Built-in Functions1897184
! Node: TI C6X Built-in Functions1898900
! Node: TILE-Gx Built-in Functions1899924
! Node: TILEPro Built-in Functions1901041
! Node: x86 Built-in Functions1902139
! Node: x86 transactional memory intrinsics1962378
! Node: Target Format Checks1965598
! Node: Solaris Format Checks1966030
! Node: Darwin Format Checks1966456
! Node: Pragmas1967274
! Node: AArch64 Pragmas1968047
! Node: ARM Pragmas1968504
! Node: M32C Pragmas1969131
! Node: MeP Pragmas1970205
! Node: RS/6000 and PowerPC Pragmas1972274
! Node: S/390 Pragmas1973014
! Node: Darwin Pragmas1973580
! Node: Solaris Pragmas1974633
! Node: Symbol-Renaming Pragmas1975794
! Node: Structure-Layout Pragmas1977407
! Node: Weak Pragmas1979694
! Node: Diagnostic Pragmas1980429
! Node: Visibility Pragmas1983536
! Node: Push/Pop Macro Pragmas1984221
! Node: Function Specific Option Pragmas1985193
! Node: Loop-Specific Pragmas1987038
! Node: Unnamed Fields1988128
! Node: Thread-Local1990326
! Node: C99 Thread-Local Edits1992432
! Node: C++98 Thread-Local Edits1994444
! Node: Binary constants1997888
! Node: C++ Extensions1998559
! Node: C++ Volatiles2000189
! Node: Restricted Pointers2002537
! Node: Vague Linkage2004128
! Node: C++ Interface2007752
! Ref: C++ Interface-Footnote-12011545
! Node: Template Instantiation2011681
! Node: Bound member functions2019165
! Node: C++ Attributes2020697
! Node: Function Multiversioning2024767
! Node: Type Traits2026572
! Node: C++ Concepts2033060
! Node: Deprecated Features2034555
! Node: Backwards Compatibility2037517
! Node: Objective-C2038869
! Node: GNU Objective-C runtime API2039478
! Node: Modern GNU Objective-C runtime API2040485
! Node: Traditional GNU Objective-C runtime API2042922
! Node: Executing code before main2043650
! Node: What you can and what you cannot do in +load2046392
! Node: Type encoding2048764
! Node: Legacy type encoding2054104
! Node: @encode2055195
! Node: Method signatures2055740
! Node: Garbage Collection2057735
! Node: Constant string objects2060424
! Node: compatibility_alias2062932
! Node: Exceptions2063658
! Node: Synchronization2066369
! Node: Fast enumeration2067553
! Node: Using fast enumeration2067865
! Node: c99-like fast enumeration syntax2069076
! Node: Fast enumeration details2069779
! Node: Fast enumeration protocol2072120
! Node: Messaging with the GNU Objective-C runtime2075272
! Node: Dynamically registering methods2076643
! Node: Forwarding hook2078334
! Node: Compatibility2081375
! Node: Gcov2087942
! Node: Gcov Intro2088477
! Node: Invoking Gcov2091195
! Node: Gcov and Optimization2106413
! Node: Gcov Data Files2109643
! Node: Cross-profiling2111038
! Node: Gcov-tool2112889
! Node: Gcov-tool Intro2113314
! Node: Invoking Gcov-tool2115275
! Node: Gcov-dump2117820
! Node: Gcov-dump Intro2118142
! Node: Invoking Gcov-dump2118409
! Node: Trouble2119078
! Node: Actual Bugs2120496
! Node: Interoperation2120943
! Node: Incompatibilities2127835
! Node: Fixed Headers2135986
! Node: Standard Libraries2137649
! Node: Disappointments2139021
! Node: C++ Misunderstandings2143379
! Node: Static Definitions2144190
! Node: Name lookup2145243
! Ref: Name lookup-Footnote-12150022
! Node: Temporaries2150209
! Node: Copy Assignment2152185
! Node: Non-bugs2153992
! Node: Warnings and Errors2164499
! Node: Bugs2166261
! Node: Bug Criteria2166728
! Node: Bug Reporting2168938
! Node: Service2169156
! Node: Contributing2169975
! Node: Funding2170715
! Node: GNU Project2173204
! Node: Copying2173850
! Node: GNU Free Documentation License2211378
! Node: Contributors2236515
! Node: Option Index2275958
! Node: Keyword Index2517857
  
  End Tag Table
--- 60250,60646 ----
  Node: Standards6080
  Node: Invoking GCC19100
  Node: Option Summary23302
! Node: Overall Options72454
! Node: Invoking G++87037
! Node: C Dialect Options88560
! Node: C++ Dialect Options107267
! Node: Objective-C and Objective-C++ Dialect Options142753
! Node: Diagnostic Message Formatting Options153989
! Node: Warning Options161456
! Ref: Wtrigraphs242101
! Node: Debugging Options274754
! Node: Optimize Options289204
! Ref: Type-punning351898
! Node: Instrumentation Options442513
! Node: Preprocessor Options477822
! Ref: dashMF482668
! Ref: fdollars-in-identifiers487180
! Node: Assembler Options498979
! Node: Link Options499671
! Ref: Link Options-Footnote-1513509
! Node: Directory Options513843
! Node: Code Gen Options522230
! Node: Developer Options550496
! Node: Submodel Options589433
! Node: AArch64 Options591167
! Ref: aarch64-feature-modifiers600144
! Node: Adapteva Epiphany Options601088
! Node: ARC Options607038
! Node: ARM Options625675
! Node: AVR Options645782
! Node: Blackfin Options667669
! Node: C6X Options675684
! Node: CRIS Options677227
! Node: CR16 Options680971
! Node: Darwin Options681878
! Node: DEC Alpha Options689319
! Node: FR30 Options700907
! Node: FT32 Options701473
! Node: FRV Options702199
! Node: GNU/Linux Options708918
! Node: H8/300 Options710300
! Node: HPPA Options711750
! Node: IA-64 Options721281
! Node: LM32 Options729407
! Node: M32C Options729931
! Node: M32R/D Options731205
! Node: M680x0 Options734751
! Node: MCore Options748914
! Node: MeP Options750417
! Node: MicroBlaze Options754377
! Node: MIPS Options757173
! Node: MMIX Options792685
! Node: MN10300 Options795167
! Node: Moxie Options797710
! Node: MSP430 Options798198
! Node: NDS32 Options802908
! Node: Nios II Options804802
! Node: Nvidia PTX Options815723
! Node: PDP-11 Options817983
! Node: picoChip Options819680
! Node: PowerPC Options821821
! Node: RISC-V Options822044
! Node: RL78 Options825804
! Node: RS/6000 and PowerPC Options829581
! Node: RX Options872758
! Node: S/390 and zSeries Options881361
! Node: Score Options891837
! Node: SH Options892679
! Node: Solaris 2 Options907837
! Node: SPARC Options909081
! Node: SPU Options924699
! Node: System V Options929636
! Node: TILE-Gx Options930462
! Node: TILEPro Options931480
! Node: V850 Options931984
! Node: VAX Options938676
! Node: Visium Options939214
! Node: VMS Options941522
! Node: VxWorks Options942336
! Node: x86 Options943488
! Node: x86 Windows Options997668
! Node: Xstormy16 Options1000476
! Node: Xtensa Options1000770
! Node: zSeries Options1005919
! Node: Spec Files1006115
! Node: Environment Variables1027993
! Node: Precompiled Headers1036718
! Node: C Implementation1042735
! Node: Translation implementation1044424
! Node: Environment implementation1045016
! Node: Identifiers implementation1045571
! Node: Characters implementation1046658
! Node: Integers implementation1050309
! Node: Floating point implementation1052359
! Node: Arrays and pointers implementation1055424
! Ref: Arrays and pointers implementation-Footnote-11056883
! Node: Hints implementation1057007
! Node: Structures unions enumerations and bit-fields implementation1058504
! Node: Qualifiers implementation1060729
! Node: Declarators implementation1062509
! Node: Statements implementation1062851
! Node: Preprocessing directives implementation1063178
! Node: Library functions implementation1065500
! Node: Architecture implementation1066150
! Node: Locale-specific behavior implementation1067792
! Node: C++ Implementation1068097
! Node: Conditionally-supported behavior1069379
! Node: Exception handling1069997
! Node: C Extensions1070406
! Node: Statement Exprs1075690
! Node: Local Labels1080166
! Node: Labels as Values1083139
! Ref: Labels as Values-Footnote-11085664
! Node: Nested Functions1085847
! Node: Constructing Calls1089805
! Node: Typeof1094523
! Node: Conditionals1098451
! Node: __int1281099341
! Node: Long Long1099865
! Node: Complex1101341
! Node: Floating Types1103926
! Node: Half-Precision1107391
! Node: Decimal Float1109796
! Node: Hex Floats1111649
! Node: Fixed-Point1112685
! Node: Named Address Spaces1115965
! Ref: AVR Named Address Spaces1116651
! Node: Zero Length1122985
! Node: Empty Structures1126024
! Node: Variable Length1126430
! Node: Variadic Macros1129148
! Node: Escaped Newlines1131526
! Node: Subscripting1132387
! Node: Pointer Arith1133113
! Node: Pointers to Arrays1133687
! Node: Initializers1134431
! Node: Compound Literals1134932
! Node: Designated Inits1138499
! Node: Case Ranges1142235
! Node: Cast to Union1142916
! Node: Mixed Declarations1144042
! Node: Function Attributes1144552
! Node: Common Function Attributes1147666
! Node: AArch64 Function Attributes1194122
! Node: ARC Function Attributes1199529
! Node: ARM Function Attributes1201221
! Node: AVR Function Attributes1204879
! Node: Blackfin Function Attributes1208350
! Node: CR16 Function Attributes1210846
! Node: Epiphany Function Attributes1211373
! Node: H8/300 Function Attributes1214124
! Node: IA-64 Function Attributes1215320
! Node: M32C Function Attributes1216362
! Node: M32R/D Function Attributes1218697
! Node: m68k Function Attributes1220170
! Node: MCORE Function Attributes1221114
! Node: MeP Function Attributes1221922
! Node: MicroBlaze Function Attributes1223223
! Node: Microsoft Windows Function Attributes1224729
! Node: MIPS Function Attributes1229312
! Node: MSP430 Function Attributes1234869
! Node: NDS32 Function Attributes1238714
! Node: Nios II Function Attributes1241133
! Node: Nvidia PTX Function Attributes1242427
! Node: PowerPC Function Attributes1243042
! Node: RL78 Function Attributes1250049
! Node: RX Function Attributes1251286
! Node: S/390 Function Attributes1253822
! Node: SH Function Attributes1255641
! Node: SPU Function Attributes1259065
! Node: Symbian OS Function Attributes1259870
! Node: V850 Function Attributes1260207
! Node: Visium Function Attributes1260752
! Node: x86 Function Attributes1261280
! Node: Xstormy16 Function Attributes1273739
! Node: Variable Attributes1274246
! Node: Common Variable Attributes1275708
! Node: AVR Variable Attributes1286814
! Node: Blackfin Variable Attributes1292083
! Node: H8/300 Variable Attributes1292942
! Node: IA-64 Variable Attributes1294016
! Node: M32R/D Variable Attributes1294767
! Node: MeP Variable Attributes1295550
! Node: Microsoft Windows Variable Attributes1297653
! Node: MSP430 Variable Attributes1300112
! Node: Nvidia PTX Variable Attributes1301311
! Node: PowerPC Variable Attributes1301928
! Node: RL78 Variable Attributes1302485
! Node: SPU Variable Attributes1302903
! Node: V850 Variable Attributes1303268
! Node: x86 Variable Attributes1303900
! Node: Xstormy16 Variable Attributes1304956
! Node: Type Attributes1305531
! Node: Common Type Attributes1306850
! Node: ARM Type Attributes1322334
! Node: MeP Type Attributes1323118
! Node: PowerPC Type Attributes1323520
! Node: SPU Type Attributes1324509
! Node: x86 Type Attributes1324928
! Node: Label Attributes1325916
! Node: Enumerator Attributes1327850
! Node: Statement Attributes1329170
! Node: Attribute Syntax1330654
! Node: Function Prototypes1341915
! Node: C++ Comments1343696
! Node: Dollar Signs1344215
! Node: Character Escapes1344680
! Node: Alignment1344964
! Node: Inline1346336
! Node: Volatiles1351138
! Node: Using Assembly Language with C1354038
! Node: Basic Asm1355275
! Node: Extended Asm1360452
! Ref: Volatile1364249
! Ref: AssemblerTemplate1368321
! Ref: OutputOperands1372546
! Ref: FlagOutputOperands1379458
! Ref: InputOperands1381473
! Ref: Clobbers1385708
! Ref: GotoLabels1389014
! Ref: x86Operandmodifiers1391147
! Ref: x86floatingpointasmoperands1393413
! Node: Constraints1396743
! Node: Simple Constraints1397849
! Node: Multi-Alternative1405174
! Node: Modifiers1406849
! Node: Machine Constraints1409646
! Node: Asm Labels1467772
! Node: Explicit Register Variables1469392
! Ref: Explicit Reg Vars1469606
! Node: Global Register Variables1470215
! Ref: Global Reg Vars1470423
! Node: Local Register Variables1474265
! Ref: Local Reg Vars1474485
! Node: Size of an asm1477795
! Node: Alternate Keywords1479050
! Node: Incomplete Enums1480549
! Node: Function Names1481306
! Node: Return Address1483204
! Node: Vector Extensions1487145
! Node: Offsetof1494430
! Node: __sync Builtins1495271
! Node: __atomic Builtins1501716
! Node: Integer Overflow Builtins1515206
! Node: x86 specific memory model extensions for transactional memory1521685
! Node: Object Size Checking1522951
! Node: Pointer Bounds Checker builtins1528979
! Node: Cilk Plus Builtins1534985
! Node: Other Builtins1535902
! Node: Target Builtins1572882
! Node: AArch64 Built-in Functions1574451
! Node: Alpha Built-in Functions1574906
! Node: Altera Nios II Built-in Functions1577954
! Node: ARC Built-in Functions1582321
! Node: ARC SIMD Built-in Functions1587532
! Node: ARM iWMMXt Built-in Functions1596428
! Node: ARM C Language Extensions (ACLE)1603424
! Node: ARM Floating Point Status and Control Intrinsics1604763
! Node: ARM ARMv8-M Security Extensions1605248
! Node: AVR Built-in Functions1606594
! Node: Blackfin Built-in Functions1609922
! Node: FR-V Built-in Functions1610541
! Node: Argument Types1611407
! Node: Directly-mapped Integer Functions1613161
! Node: Directly-mapped Media Functions1614245
! Node: Raw read/write Functions1621279
! Node: Other Built-in Functions1622193
! Node: MIPS DSP Built-in Functions1623379
! Node: MIPS Paired-Single Support1635877
! Node: MIPS Loongson Built-in Functions1637376
! Node: Paired-Single Arithmetic1643903
! Node: Paired-Single Built-in Functions1644851
! Node: MIPS-3D Built-in Functions1647518
! Node: MIPS SIMD Architecture (MSA) Support1652895
! Node: MIPS SIMD Architecture Built-in Functions1655758
! Node: Other MIPS Built-in Functions1682588
! Node: MSP430 Built-in Functions1683597
! Node: NDS32 Built-in Functions1684998
! Node: picoChip Built-in Functions1686291
! Node: PowerPC Built-in Functions1687635
! Node: PowerPC AltiVec/VSX Built-in Functions1713301
! Node: PowerPC Hardware Transactional Memory Built-in Functions1869223
! Node: RX Built-in Functions1877714
! Node: S/390 System z Built-in Functions1881747
! Node: SH Built-in Functions1886982
! Node: SPARC VIS Built-in Functions1888710
! Node: SPU Built-in Functions1897240
! Node: TI C6X Built-in Functions1898956
! Node: TILE-Gx Built-in Functions1899980
! Node: TILEPro Built-in Functions1901097
! Node: x86 Built-in Functions1902195
! Node: x86 transactional memory intrinsics1962434
! Node: Target Format Checks1965654
! Node: Solaris Format Checks1966086
! Node: Darwin Format Checks1966512
! Node: Pragmas1967330
! Node: AArch64 Pragmas1968103
! Node: ARM Pragmas1968560
! Node: M32C Pragmas1969187
! Node: MeP Pragmas1970261
! Node: RS/6000 and PowerPC Pragmas1972330
! Node: S/390 Pragmas1973070
! Node: Darwin Pragmas1973636
! Node: Solaris Pragmas1974689
! Node: Symbol-Renaming Pragmas1975850
! Node: Structure-Layout Pragmas1977463
! Node: Weak Pragmas1979750
! Node: Diagnostic Pragmas1980485
! Node: Visibility Pragmas1983592
! Node: Push/Pop Macro Pragmas1984277
! Node: Function Specific Option Pragmas1985249
! Node: Loop-Specific Pragmas1987094
! Node: Unnamed Fields1988184
! Node: Thread-Local1990382
! Node: C99 Thread-Local Edits1992488
! Node: C++98 Thread-Local Edits1994500
! Node: Binary constants1997944
! Node: C++ Extensions1998615
! Node: C++ Volatiles2000245
! Node: Restricted Pointers2002593
! Node: Vague Linkage2004184
! Node: C++ Interface2007808
! Ref: C++ Interface-Footnote-12011601
! Node: Template Instantiation2011737
! Node: Bound member functions2019221
! Node: C++ Attributes2020753
! Node: Function Multiversioning2024823
! Node: Type Traits2026628
! Node: C++ Concepts2033116
! Node: Deprecated Features2034611
! Node: Backwards Compatibility2037573
! Node: Objective-C2038925
! Node: GNU Objective-C runtime API2039534
! Node: Modern GNU Objective-C runtime API2040541
! Node: Traditional GNU Objective-C runtime API2042978
! Node: Executing code before main2043706
! Node: What you can and what you cannot do in +load2046448
! Node: Type encoding2048820
! Node: Legacy type encoding2054160
! Node: @encode2055251
! Node: Method signatures2055796
! Node: Garbage Collection2057791
! Node: Constant string objects2060480
! Node: compatibility_alias2062988
! Node: Exceptions2063714
! Node: Synchronization2066425
! Node: Fast enumeration2067609
! Node: Using fast enumeration2067921
! Node: c99-like fast enumeration syntax2069132
! Node: Fast enumeration details2069835
! Node: Fast enumeration protocol2072176
! Node: Messaging with the GNU Objective-C runtime2075328
! Node: Dynamically registering methods2076699
! Node: Forwarding hook2078390
! Node: Compatibility2081431
! Node: Gcov2087998
! Node: Gcov Intro2088533
! Node: Invoking Gcov2091251
! Node: Gcov and Optimization2106470
! Node: Gcov Data Files2109836
! Node: Cross-profiling2111231
! Node: Gcov-tool2113082
! Node: Gcov-tool Intro2113507
! Node: Invoking Gcov-tool2115468
! Node: Gcov-dump2118013
! Node: Gcov-dump Intro2118335
! Node: Invoking Gcov-dump2118602
! Node: Trouble2119271
! Node: Actual Bugs2120689
! Node: Interoperation2121136
! Node: Incompatibilities2128028
! Node: Fixed Headers2136179
! Node: Standard Libraries2137842
! Node: Disappointments2139214
! Node: C++ Misunderstandings2143572
! Node: Static Definitions2144383
! Node: Name lookup2145436
! Ref: Name lookup-Footnote-12150215
! Node: Temporaries2150402
! Node: Copy Assignment2152378
! Node: Non-bugs2154185
! Node: Warnings and Errors2164692
! Node: Bugs2166454
! Node: Bug Criteria2166921
! Node: Bug Reporting2169131
! Node: Service2169349
! Node: Contributing2170168
! Node: Funding2170908
! Node: GNU Project2173397
! Node: Copying2174043
! Node: GNU Free Documentation License2211571
! Node: Contributors2236708
! Node: Option Index2276151
! Node: Keyword Index2518336
  
  End Tag Table
diff -Nrcpad gcc-7.3.0/gcc/doc/gccinstall.info gcc-7.4.0/gcc/doc/gccinstall.info
*** gcc-7.3.0/gcc/doc/gccinstall.info	Thu Jan 25 08:41:37 2018
--- gcc-7.4.0/gcc/doc/gccinstall.info	Thu Dec  6 10:20:52 2018
***************
*** 1,5 ****
  This is doc/gccinstall.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/doc/install.texi.
  
  Copyright (C) 1988-2017 Free Software Foundation, Inc.
  
--- 1,5 ----
  This is doc/gccinstall.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/doc/install.texi.
  
  Copyright (C) 1988-2017 Free Software Foundation, Inc.
  
diff -Nrcpad gcc-7.3.0/gcc/doc/gccint.info gcc-7.4.0/gcc/doc/gccint.info
*** gcc-7.3.0/gcc/doc/gccint.info	Thu Jan 25 08:41:38 2018
--- gcc-7.4.0/gcc/doc/gccint.info	Thu Dec  6 10:20:53 2018
***************
*** 1,5 ****
  This is doc/gccint.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/doc/gccint.texi.
  
  Copyright (C) 1988-2017 Free Software Foundation, Inc.
  
--- 1,5 ----
  This is doc/gccint.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/doc/gccint.texi.
  
  Copyright (C) 1988-2017 Free Software Foundation, Inc.
  
*************** Introduction
*** 57,63 ****
  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 7.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
--- 57,63 ----
  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 7.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
*************** object of `BITS_PER_UNIT' bits (*note St
*** 15216,15225 ****
       floating point values.  The floating point values are in `QFmode',
       `HFmode', `SFmode', `DFmode', `XFmode', and `TFmode', respectively.
  
! `CQImode, CHImode, CSImode, CDImode, CTImode, COImode'
       These modes stand for a complex number represented as a pair of
       integer values.  The integer values are in `QImode', `HImode',
!      `SImode', `DImode', `TImode', and `OImode', respectively.
  
  `BND32mode BND64mode'
       These modes stand for bounds for pointer of 32 and 64 bit size
--- 15216,15226 ----
       floating point values.  The floating point values are in `QFmode',
       `HFmode', `SFmode', `DFmode', `XFmode', and `TFmode', respectively.
  
! `CQImode, CHImode, CSImode, CDImode, CTImode, COImode, CPSImode'
       These modes stand for a complex number represented as a pair of
       integer values.  The integer values are in `QImode', `HImode',
!      `SImode', `DImode', `TImode', `OImode', and `PSImode',
!      respectively.
  
  `BND32mode BND64mode'
       These modes stand for bounds for pointer of 32 and 64 bit size
*************** Here are several miscellaneous parameter
*** 38520,38527 ****
   -- Macro: WORD_REGISTER_OPERATIONS
       Define this macro to 1 if operations between registers with
       integral mode smaller than a word are always performed on the
!      entire register.  Most RISC machines have this property and most
!      CISC machines do not.
  
   -- Target Hook: unsigned int TARGET_MIN_ARITHMETIC_PRECISION (void)
       On some RISC architectures with 64-bit registers, the processor
--- 38521,38532 ----
   -- Macro: WORD_REGISTER_OPERATIONS
       Define this macro to 1 if operations between registers with
       integral mode smaller than a word are always performed on the
!      entire register.  To be more explicit, if you start with a pair of
!      `word_mode' registers with known values and you do a subword, for
!      example `QImode', addition on the low part of the registers, then
!      the compiler may consider that the result has a known value in
!      `word_mode' too if the macro is defined to 1.  Most RISC machines
!      have this property and most CISC machines do not.
  
   -- Target Hook: unsigned int TARGET_MIN_ARITHMETIC_PRECISION (void)
       On some RISC architectures with 64-bit registers, the processor
*************** Concept Index
*** 44907,44913 ****
  * ! in constraint:                       Multi-Alternative.  (line   48)
  * # in constraint:                       Modifiers.          (line   78)
  * # in template:                         Output Template.    (line   66)
! * #pragma:                               Misc.               (line  404)
  * $ in constraint:                       Multi-Alternative.  (line   57)
  * % in constraint:                       Modifiers.          (line   52)
  * % in GTY option:                       GTY Options.        (line   18)
--- 44912,44918 ----
  * ! in constraint:                       Multi-Alternative.  (line   48)
  * # in constraint:                       Modifiers.          (line   78)
  * # in template:                         Output Template.    (line   66)
! * #pragma:                               Misc.               (line  408)
  * $ in constraint:                       Multi-Alternative.  (line   57)
  * % in constraint:                       Modifiers.          (line   52)
  * % in GTY option:                       GTY Options.        (line   18)
*************** Concept Index
*** 45260,45274 ****
  * __builtin_classify_type:               Varargs.            (line   51)
  * __builtin_next_arg:                    Varargs.            (line   42)
  * __builtin_saveregs:                    Varargs.            (line   24)
! * __chkp_bndcl:                          Misc.               (line  669)
! * __chkp_bndcu:                          Misc.               (line  675)
! * __chkp_bndldx:                         Misc.               (line  663)
! * __chkp_bndmk:                          Misc.               (line  650)
! * __chkp_bndret:                         Misc.               (line  680)
! * __chkp_bndstx:                         Misc.               (line  657)
! * __chkp_intersect:                      Misc.               (line  687)
! * __chkp_narrow:                         Misc.               (line  692)
! * __chkp_sizeof:                         Misc.               (line  697)
  * __clear_cache:                         Miscellaneous routines.
                                                               (line   10)
  * __clzdi2:                              Integer library routines.
--- 45265,45279 ----
  * __builtin_classify_type:               Varargs.            (line   51)
  * __builtin_next_arg:                    Varargs.            (line   42)
  * __builtin_saveregs:                    Varargs.            (line   24)
! * __chkp_bndcl:                          Misc.               (line  673)
! * __chkp_bndcu:                          Misc.               (line  679)
! * __chkp_bndldx:                         Misc.               (line  667)
! * __chkp_bndmk:                          Misc.               (line  654)
! * __chkp_bndret:                         Misc.               (line  684)
! * __chkp_bndstx:                         Misc.               (line  661)
! * __chkp_intersect:                      Misc.               (line  691)
! * __chkp_narrow:                         Misc.               (line  696)
! * __chkp_sizeof:                         Misc.               (line  701)
  * __clear_cache:                         Miscellaneous routines.
                                                               (line   10)
  * __clzdi2:                              Integer library routines.
*************** Concept Index
*** 48499,48505 ****
  * BITFIELD_NBYTES_LIMITED:               Storage Layout.     (line  421)
  * BITS_BIG_ENDIAN:                       Storage Layout.     (line   12)
  * BITS_BIG_ENDIAN, effect on sign_extract: Bit-Fields.       (line    8)
! * BITS_PER_UNIT:                         Machine Modes.      (line  355)
  * BITS_PER_WORD:                         Storage Layout.     (line   51)
  * bitwise complement:                    Arithmetic.         (line  153)
  * bitwise exclusive-or:                  Arithmetic.         (line  167)
--- 48504,48510 ----
  * BITFIELD_NBYTES_LIMITED:               Storage Layout.     (line  421)
  * BITS_BIG_ENDIAN:                       Storage Layout.     (line   12)
  * BITS_BIG_ENDIAN, effect on sign_extract: Bit-Fields.       (line    8)
! * BITS_PER_UNIT:                         Machine Modes.      (line  356)
  * BITS_PER_WORD:                         Storage Layout.     (line   51)
  * bitwise complement:                    Arithmetic.         (line  153)
  * bitwise exclusive-or:                  Arithmetic.         (line  167)
*************** Concept Index
*** 48512,48520 ****
  * BLOCK_REG_PADDING:                     Register Arguments. (line  248)
  * blockage instruction pattern:          Standard Names.     (line 1827)
  * Blocks:                                Blocks.             (line    6)
! * BND32mode:                             Machine Modes.      (line  210)
! * BND64mode:                             Machine Modes.      (line  210)
! * bool:                                  Misc.               (line 1017)
  * BOOL_TYPE_SIZE:                        Type Layout.        (line   44)
  * BOOLEAN_TYPE:                          Types.              (line    6)
  * branch prediction:                     Profile information.
--- 48517,48525 ----
  * BLOCK_REG_PADDING:                     Register Arguments. (line  248)
  * blockage instruction pattern:          Standard Names.     (line 1827)
  * Blocks:                                Blocks.             (line    6)
! * BND32mode:                             Machine Modes.      (line  211)
! * BND64mode:                             Machine Modes.      (line  211)
! * bool:                                  Misc.               (line 1021)
  * BOOL_TYPE_SIZE:                        Type Layout.        (line   44)
  * BOOLEAN_TYPE:                          Types.              (line    6)
  * branch prediction:                     Profile information.
*************** Concept Index
*** 48544,48556 ****
  * builtin_setjmp_receiver instruction pattern: Standard Names.
                                                               (line 1715)
  * builtin_setjmp_setup instruction pattern: Standard Names.  (line 1704)
! * byte_mode:                             Machine Modes.      (line  368)
  * BYTES_BIG_ENDIAN:                      Storage Layout.     (line   24)
  * BYTES_BIG_ENDIAN, effect on subreg:    Regs and Memory.    (line  221)
  * C statements for assembler output:     Output Statement.   (line    6)
  * C_COMMON_OVERRIDE_OPTIONS:             Run-time Target.    (line  137)
! * c_register_pragma:                     Misc.               (line  427)
! * c_register_pragma_with_expansion:      Misc.               (line  429)
  * cache:                                 GTY Options.        (line  125)
  * call <1>:                              Side Effects.       (line   92)
  * call:                                  Flags.              (line  221)
--- 48549,48561 ----
  * builtin_setjmp_receiver instruction pattern: Standard Names.
                                                               (line 1715)
  * builtin_setjmp_setup instruction pattern: Standard Names.  (line 1704)
! * byte_mode:                             Machine Modes.      (line  369)
  * BYTES_BIG_ENDIAN:                      Storage Layout.     (line   24)
  * BYTES_BIG_ENDIAN, effect on subreg:    Regs and Memory.    (line  221)
  * C statements for assembler output:     Output Statement.   (line    6)
  * C_COMMON_OVERRIDE_OPTIONS:             Run-time Target.    (line  137)
! * c_register_pragma:                     Misc.               (line  431)
! * c_register_pragma_with_expansion:      Misc.               (line  433)
  * cache:                                 GTY Options.        (line  125)
  * call <1>:                              Side Effects.       (line   92)
  * call:                                  Flags.              (line  221)
*************** Concept Index
*** 48658,48664 ****
  * clrsb:                                 Arithmetic.         (line  215)
  * clrsbM2 instruction pattern:           Standard Names.     (line  913)
  * clz:                                   Arithmetic.         (line  222)
! * CLZ_DEFINED_VALUE_AT_ZERO:             Misc.               (line  322)
  * clzM2 instruction pattern:             Standard Names.     (line  929)
  * cmpmemM instruction pattern:           Standard Names.     (line 1094)
  * cmpstrM instruction pattern:           Standard Names.     (line 1073)
--- 48663,48669 ----
  * clrsb:                                 Arithmetic.         (line  215)
  * clrsbM2 instruction pattern:           Standard Names.     (line  913)
  * clz:                                   Arithmetic.         (line  222)
! * CLZ_DEFINED_VALUE_AT_ZERO:             Misc.               (line  326)
  * clzM2 instruction pattern:             Standard Names.     (line  929)
  * cmpmemM instruction pattern:           Standard Names.     (line 1094)
  * cmpstrM instruction pattern:           Standard Names.     (line 1073)
*************** Concept Index
*** 48674,48680 ****
  * codes, RTL expression:                 RTL Objects.        (line   47)
  * COImode:                               Machine Modes.      (line  205)
  * COLLECT2_HOST_INITIALIZATION:          Host Misc.          (line   32)
! * COLLECT_EXPORT_LIST:                   Misc.               (line  888)
  * COLLECT_SHARED_FINI_FUNC:              Macros for Initialization.
                                                               (line   44)
  * COLLECT_SHARED_INIT_FUNC:              Macros for Initialization.
--- 48679,48685 ----
  * codes, RTL expression:                 RTL Objects.        (line   47)
  * COImode:                               Machine Modes.      (line  205)
  * COLLECT2_HOST_INITIALIZATION:          Host Misc.          (line   32)
! * COLLECT_EXPORT_LIST:                   Misc.               (line  892)
  * COLLECT_SHARED_FINI_FUNC:              Macros for Initialization.
                                                               (line   44)
  * COLLECT_SHARED_INIT_FUNC:              Macros for Initialization.
*************** Concept Index
*** 48807,48812 ****
--- 48812,48818 ----
  * CP_TYPE_VOLATILE_P:                    Types for C++.      (line   27)
  * CPLUSPLUS_CPP_SPEC:                    Driver.             (line   51)
  * CPP_SPEC:                              Driver.             (line   44)
+ * CPSImode:                              Machine Modes.      (line  205)
  * CQImode:                               Machine Modes.      (line  205)
  * cross compilation and floating point:  Floating Point.     (line    6)
  * CRT_CALL_STATIC_FUNCTION:              Sections.           (line  126)
*************** Concept Index
*** 48820,48826 ****
  * CTImode:                               Machine Modes.      (line  205)
  * ctrapMM4 instruction pattern:          Standard Names.     (line 1796)
  * ctz:                                   Arithmetic.         (line  230)
! * CTZ_DEFINED_VALUE_AT_ZERO:             Misc.               (line  323)
  * ctzM2 instruction pattern:             Standard Names.     (line  944)
  * CUMULATIVE_ARGS:                       Register Arguments. (line  146)
  * current_function_is_leaf:              Leaf Functions.     (line   51)
--- 48826,48832 ----
  * CTImode:                               Machine Modes.      (line  205)
  * ctrapMM4 instruction pattern:          Standard Names.     (line 1796)
  * ctz:                                   Arithmetic.         (line  230)
! * CTZ_DEFINED_VALUE_AT_ZERO:             Misc.               (line  327)
  * ctzM2 instruction pattern:             Standard Names.     (line  944)
  * CUMULATIVE_ARGS:                       Register Arguments. (line  146)
  * current_function_is_leaf:              Leaf Functions.     (line   51)
*************** Concept Index
*** 49039,49045 ****
  * DO_COND:                               Statements for C++. (line    6)
  * DO_STMT:                               Statements for C++. (line    6)
  * dollar sign:                           Multi-Alternative.  (line   57)
! * DOLLARS_IN_IDENTIFIERS:                Misc.               (line  471)
  * doloop_begin instruction pattern:      Standard Names.     (line 1547)
  * doloop_end instruction pattern:        Standard Names.     (line 1535)
  * DONE:                                  Expander Definitions.
--- 49045,49051 ----
  * DO_COND:                               Statements for C++. (line    6)
  * DO_STMT:                               Statements for C++. (line    6)
  * dollar sign:                           Multi-Alternative.  (line   57)
! * DOLLARS_IN_IDENTIFIERS:                Misc.               (line  475)
  * doloop_begin instruction pattern:      Standard Names.     (line 1547)
  * doloop_end instruction pattern:        Standard Names.     (line 1535)
  * DONE:                                  Expander Definitions.
*************** Concept Index
*** 49224,49230 ****
                                                               (line    6)
  * float_extend:                          Conversions.        (line   33)
  * FLOAT_LIB_COMPARE_RETURNS_BOOL:        Library Calls.      (line   33)
! * FLOAT_STORE_FLAG_VALUE:                Misc.               (line  304)
  * float_truncate:                        Conversions.        (line   53)
  * FLOAT_TYPE_SIZE:                       Type Layout.        (line   49)
  * FLOAT_WORDS_BIG_ENDIAN:                Storage Layout.     (line   42)
--- 49230,49236 ----
                                                               (line    6)
  * float_extend:                          Conversions.        (line   33)
  * FLOAT_LIB_COMPARE_RETURNS_BOOL:        Library Calls.      (line   33)
! * FLOAT_STORE_FLAG_VALUE:                Misc.               (line  308)
  * float_truncate:                        Conversions.        (line   53)
  * FLOAT_TYPE_SIZE:                       Type Layout.        (line   49)
  * FLOAT_WORDS_BIG_ENDIAN:                Storage Layout.     (line   42)
*************** Concept Index
*** 49297,49303 ****
  * FUNCTION_BOUNDARY:                     Storage Layout.     (line  178)
  * FUNCTION_DECL <1>:                     Functions for C++.  (line    6)
  * FUNCTION_DECL:                         Functions.          (line    6)
! * FUNCTION_MODE:                         Misc.               (line  359)
  * FUNCTION_PROFILER:                     Profiling.          (line    9)
  * FUNCTION_TYPE:                         Types.              (line    6)
  * FUNCTION_VALUE:                        Scalar Return.      (line   52)
--- 49303,49309 ----
  * FUNCTION_BOUNDARY:                     Storage Layout.     (line  178)
  * FUNCTION_DECL <1>:                     Functions for C++.  (line    6)
  * FUNCTION_DECL:                         Functions.          (line    6)
! * FUNCTION_MODE:                         Misc.               (line  363)
  * FUNCTION_PROFILER:                     Profiling.          (line    9)
  * FUNCTION_TYPE:                         Types.              (line    6)
  * FUNCTION_VALUE:                        Scalar Return.      (line   52)
*************** Concept Index
*** 49332,49353 ****
  * genflags:                              RTL passes.         (line   18)
  * get_attr:                              Expressions.        (line  101)
  * get_attr_length:                       Insn Lengths.       (line   52)
! * GET_CLASS_NARROWEST_MODE:              Machine Modes.      (line  345)
  * GET_CODE:                              RTL Objects.        (line   47)
  * get_insns:                             Insns.              (line   34)
  * get_last_insn:                         Insns.              (line   34)
! * GET_MODE:                              Machine Modes.      (line  292)
! * GET_MODE_ALIGNMENT:                    Machine Modes.      (line  332)
! * GET_MODE_BITSIZE:                      Machine Modes.      (line  316)
! * GET_MODE_CLASS:                        Machine Modes.      (line  306)
! * GET_MODE_FBIT:                         Machine Modes.      (line  323)
! * GET_MODE_IBIT:                         Machine Modes.      (line  319)
! * GET_MODE_MASK:                         Machine Modes.      (line  327)
! * GET_MODE_NAME:                         Machine Modes.      (line  303)
! * GET_MODE_NUNITS:                       Machine Modes.      (line  341)
! * GET_MODE_SIZE:                         Machine Modes.      (line  313)
! * GET_MODE_UNIT_SIZE:                    Machine Modes.      (line  335)
! * GET_MODE_WIDER_MODE:                   Machine Modes.      (line  309)
  * GET_RTX_CLASS:                         RTL Classes.        (line    6)
  * GET_RTX_FORMAT:                        RTL Classes.        (line  131)
  * GET_RTX_LENGTH:                        RTL Classes.        (line  128)
--- 49338,49359 ----
  * genflags:                              RTL passes.         (line   18)
  * get_attr:                              Expressions.        (line  101)
  * get_attr_length:                       Insn Lengths.       (line   52)
! * GET_CLASS_NARROWEST_MODE:              Machine Modes.      (line  346)
  * GET_CODE:                              RTL Objects.        (line   47)
  * get_insns:                             Insns.              (line   34)
  * get_last_insn:                         Insns.              (line   34)
! * GET_MODE:                              Machine Modes.      (line  293)
! * GET_MODE_ALIGNMENT:                    Machine Modes.      (line  333)
! * GET_MODE_BITSIZE:                      Machine Modes.      (line  317)
! * GET_MODE_CLASS:                        Machine Modes.      (line  307)
! * GET_MODE_FBIT:                         Machine Modes.      (line  324)
! * GET_MODE_IBIT:                         Machine Modes.      (line  320)
! * GET_MODE_MASK:                         Machine Modes.      (line  328)
! * GET_MODE_NAME:                         Machine Modes.      (line  304)
! * GET_MODE_NUNITS:                       Machine Modes.      (line  342)
! * GET_MODE_SIZE:                         Machine Modes.      (line  314)
! * GET_MODE_UNIT_SIZE:                    Machine Modes.      (line  336)
! * GET_MODE_WIDER_MODE:                   Machine Modes.      (line  310)
  * GET_RTX_CLASS:                         RTL Classes.        (line    6)
  * GET_RTX_FORMAT:                        RTL Classes.        (line  131)
  * GET_RTX_LENGTH:                        RTL Classes.        (line  128)
*************** Concept Index
*** 49815,49821 ****
  * GTY:                                   Type Information.   (line    6)
  * H in constraint:                       Simple Constraints. (line   98)
  * HAmode:                                Machine Modes.      (line  147)
! * HANDLE_PRAGMA_PACK_WITH_EXPANSION:     Misc.               (line  461)
  * HANDLER:                               Statements for C++. (line    6)
  * HANDLER_BODY:                          Statements for C++. (line    6)
  * HANDLER_PARMS:                         Statements for C++. (line    6)
--- 49821,49827 ----
  * GTY:                                   Type Information.   (line    6)
  * H in constraint:                       Simple Constraints. (line   98)
  * HAmode:                                Machine Modes.      (line  147)
! * HANDLE_PRAGMA_PACK_WITH_EXPANSION:     Misc.               (line  465)
  * HANDLER:                               Statements for C++. (line    6)
  * HANDLER_BODY:                          Statements for C++. (line    6)
  * HANDLER_PARMS:                         Statements for C++. (line    6)
*************** Concept Index
*** 49886,49897 ****
  * if_then_else:                          Comparisons.        (line   80)
  * if_then_else and attributes:           Expressions.        (line   32)
  * if_then_else usage:                    Side Effects.       (line   56)
! * IFCVT_MACHDEP_INIT:                    Misc.               (line  586)
! * IFCVT_MODIFY_CANCEL:                   Misc.               (line  580)
! * IFCVT_MODIFY_FINAL:                    Misc.               (line  574)
! * IFCVT_MODIFY_INSN:                     Misc.               (line  568)
! * IFCVT_MODIFY_MULTIPLE_TESTS:           Misc.               (line  561)
! * IFCVT_MODIFY_TESTS:                    Misc.               (line  550)
  * IMAGPART_EXPR:                         Unary and Binary Expressions.
                                                               (line    6)
  * Immediate Uses:                        SSA Operands.       (line  261)
--- 49892,49903 ----
  * if_then_else:                          Comparisons.        (line   80)
  * if_then_else and attributes:           Expressions.        (line   32)
  * if_then_else usage:                    Side Effects.       (line   56)
! * IFCVT_MACHDEP_INIT:                    Misc.               (line  590)
! * IFCVT_MODIFY_CANCEL:                   Misc.               (line  584)
! * IFCVT_MODIFY_FINAL:                    Misc.               (line  578)
! * IFCVT_MODIFY_INSN:                     Misc.               (line  572)
! * IFCVT_MODIFY_MULTIPLE_TESTS:           Misc.               (line  565)
! * IFCVT_MODIFY_TESTS:                    Misc.               (line  554)
  * IMAGPART_EXPR:                         Unary and Binary Expressions.
                                                               (line    6)
  * Immediate Uses:                        SSA Operands.       (line  261)
*************** Concept Index
*** 49956,49963 ****
  * INSN_DELETED_P:                        Flags.              (line   44)
  * INSN_FROM_TARGET_P:                    Flags.              (line   49)
  * insn_list:                             Insns.              (line  548)
! * INSN_REFERENCES_ARE_DELAYED:           Misc.               (line  488)
! * INSN_SETS_ARE_DELAYED:                 Misc.               (line  477)
  * INSN_UID:                              Insns.              (line   23)
  * INSN_VAR_LOCATION:                     Insns.              (line  239)
  * insns:                                 Insns.              (line    6)
--- 49962,49969 ----
  * INSN_DELETED_P:                        Flags.              (line   44)
  * INSN_FROM_TARGET_P:                    Flags.              (line   49)
  * insn_list:                             Insns.              (line  548)
! * INSN_REFERENCES_ARE_DELAYED:           Misc.               (line  492)
! * INSN_SETS_ARE_DELAYED:                 Misc.               (line  481)
  * INSN_UID:                              Insns.              (line   23)
  * INSN_VAR_LOCATION:                     Insns.              (line  239)
  * insns:                                 Insns.              (line    6)
*************** Concept Index
*** 50097,50106 ****
  * libgcc.a:                              Library Calls.      (line    6)
  * LIBGCC2_CFLAGS:                        Target Fragment.    (line    8)
  * LIBGCC2_GNU_PREFIX:                    Type Layout.        (line  103)
! * LIBGCC2_UNWIND_ATTRIBUTE:              Misc.               (line 1094)
  * LIBGCC_SPEC:                           Driver.             (line  116)
  * library subroutine names:              Library Calls.      (line    6)
! * LIBRARY_PATH_ENV:                      Misc.               (line  529)
  * LIMIT_RELOAD_CLASS:                    Register Classes.   (line  300)
  * LINK_COMMAND_SPEC:                     Driver.             (line  241)
  * LINK_EH_SPEC:                          Driver.             (line  143)
--- 50103,50112 ----
  * libgcc.a:                              Library Calls.      (line    6)
  * LIBGCC2_CFLAGS:                        Target Fragment.    (line    8)
  * LIBGCC2_GNU_PREFIX:                    Type Layout.        (line  103)
! * LIBGCC2_UNWIND_ATTRIBUTE:              Misc.               (line 1098)
  * LIBGCC_SPEC:                           Driver.             (line  116)
  * library subroutine names:              Library Calls.      (line    6)
! * LIBRARY_PATH_ENV:                      Misc.               (line  533)
  * LIMIT_RELOAD_CLASS:                    Register Classes.   (line  300)
  * LINK_COMMAND_SPEC:                     Driver.             (line  241)
  * LINK_EH_SPEC:                          Driver.             (line  143)
*************** Concept Index
*** 50112,50118 ****
                                                               (line    6)
  * lo_sum:                                Arithmetic.         (line   24)
  * load address instruction:              Simple Constraints. (line  164)
! * LOAD_EXTEND_OP:                        Misc.               (line   77)
  * load_multiple instruction pattern:     Standard Names.     (line  137)
  * Local Register Allocator (LRA):        RTL passes.         (line  188)
  * LOCAL_ALIGNMENT:                       Storage Layout.     (line  277)
--- 50118,50124 ----
                                                               (line    6)
  * lo_sum:                                Arithmetic.         (line   24)
  * load address instruction:              Simple Constraints. (line  164)
! * LOAD_EXTEND_OP:                        Misc.               (line   81)
  * load_multiple instruction pattern:     Standard Names.     (line  137)
  * Local Register Allocator (LRA):        RTL passes.         (line  188)
  * LOCAL_ALIGNMENT:                       Storage Layout.     (line  277)
*************** Concept Index
*** 50212,50225 ****
  * math library:                          Soft float library routines.
                                                               (line    6)
  * math, in RTL:                          Arithmetic.         (line    6)
! * MATH_LIBRARY:                          Misc.               (line  522)
  * matherr:                               Library Calls.      (line   59)
  * MAX_BITS_PER_WORD:                     Storage Layout.     (line   55)
! * MAX_BITSIZE_MODE_ANY_INT:              Machine Modes.      (line  359)
! * MAX_BITSIZE_MODE_ANY_MODE:             Machine Modes.      (line  365)
! * MAX_CONDITIONAL_EXECUTE:               Misc.               (line  544)
  * MAX_FIXED_MODE_SIZE:                   Storage Layout.     (line  460)
! * MAX_MOVE_MAX:                          Misc.               (line  123)
  * MAX_OFILE_ALIGNMENT:                   Storage Layout.     (line  231)
  * MAX_REGS_PER_ADDRESS:                  Addressing Modes.   (line   43)
  * MAX_STACK_ALIGNMENT:                   Storage Layout.     (line  224)
--- 50218,50231 ----
  * math library:                          Soft float library routines.
                                                               (line    6)
  * math, in RTL:                          Arithmetic.         (line    6)
! * MATH_LIBRARY:                          Misc.               (line  526)
  * matherr:                               Library Calls.      (line   59)
  * MAX_BITS_PER_WORD:                     Storage Layout.     (line   55)
! * MAX_BITSIZE_MODE_ANY_INT:              Machine Modes.      (line  360)
! * MAX_BITSIZE_MODE_ANY_MODE:             Machine Modes.      (line  366)
! * MAX_CONDITIONAL_EXECUTE:               Misc.               (line  548)
  * MAX_FIXED_MODE_SIZE:                   Storage Layout.     (line  460)
! * MAX_MOVE_MAX:                          Misc.               (line  127)
  * MAX_OFILE_ALIGNMENT:                   Storage Layout.     (line  231)
  * MAX_REGS_PER_ADDRESS:                  Addressing Modes.   (line   43)
  * MAX_STACK_ALIGNMENT:                   Storage Layout.     (line  224)
*************** Concept Index
*** 50279,50315 ****
  * mnemonic attribute:                    Mnemonic Attribute. (line    6)
  * mod:                                   Arithmetic.         (line  135)
  * mod and attributes:                    Expressions.        (line   85)
! * mode classes:                          Machine Modes.      (line  226)
  * mode iterators in .md files:           Mode Iterators.     (line    6)
  * mode switching:                        Mode Switching.     (line    6)
! * MODE_ACCUM:                            Machine Modes.      (line  256)
  * MODE_BASE_REG_CLASS:                   Register Classes.   (line  119)
  * MODE_BASE_REG_REG_CLASS:               Register Classes.   (line  125)
  * MODE_CC <1>:                           MODE_CC Condition Codes.
                                                               (line    6)
! * MODE_CC:                               Machine Modes.      (line  275)
  * MODE_CODE_BASE_REG_CLASS:              Register Classes.   (line  133)
! * MODE_COMPLEX_FLOAT:                    Machine Modes.      (line  267)
! * MODE_COMPLEX_INT:                      Machine Modes.      (line  264)
! * MODE_DECIMAL_FLOAT:                    Machine Modes.      (line  244)
! * MODE_FLOAT:                            Machine Modes.      (line  240)
! * MODE_FRACT:                            Machine Modes.      (line  248)
! * MODE_FUNCTION:                         Machine Modes.      (line  271)
! * MODE_INT:                              Machine Modes.      (line  232)
! * MODE_PARTIAL_INT:                      Machine Modes.      (line  236)
! * MODE_POINTER_BOUNDS:                   Machine Modes.      (line  280)
! * MODE_RANDOM:                           Machine Modes.      (line  285)
! * MODE_UACCUM:                           Machine Modes.      (line  260)
! * MODE_UFRACT:                           Machine Modes.      (line  252)
  * MODES_TIEABLE_P:                       Values in Registers.
                                                               (line  129)
  * modifiers in constraints:              Modifiers.          (line    6)
  * MODIFY_EXPR:                           Unary and Binary Expressions.
                                                               (line    6)
! * MODIFY_JNI_METHOD_CALL:                Misc.               (line  895)
  * modM3 instruction pattern:             Standard Names.     (line  319)
  * modulo scheduling:                     RTL passes.         (line  124)
! * MOVE_MAX:                              Misc.               (line  118)
  * MOVE_MAX_PIECES:                       Costs.              (line  211)
  * MOVE_RATIO:                            Costs.              (line  150)
  * movM instruction pattern:              Standard Names.     (line   11)
--- 50285,50321 ----
  * mnemonic attribute:                    Mnemonic Attribute. (line    6)
  * mod:                                   Arithmetic.         (line  135)
  * mod and attributes:                    Expressions.        (line   85)
! * mode classes:                          Machine Modes.      (line  227)
  * mode iterators in .md files:           Mode Iterators.     (line    6)
  * mode switching:                        Mode Switching.     (line    6)
! * MODE_ACCUM:                            Machine Modes.      (line  257)
  * MODE_BASE_REG_CLASS:                   Register Classes.   (line  119)
  * MODE_BASE_REG_REG_CLASS:               Register Classes.   (line  125)
  * MODE_CC <1>:                           MODE_CC Condition Codes.
                                                               (line    6)
! * MODE_CC:                               Machine Modes.      (line  276)
  * MODE_CODE_BASE_REG_CLASS:              Register Classes.   (line  133)
! * MODE_COMPLEX_FLOAT:                    Machine Modes.      (line  268)
! * MODE_COMPLEX_INT:                      Machine Modes.      (line  265)
! * MODE_DECIMAL_FLOAT:                    Machine Modes.      (line  245)
! * MODE_FLOAT:                            Machine Modes.      (line  241)
! * MODE_FRACT:                            Machine Modes.      (line  249)
! * MODE_FUNCTION:                         Machine Modes.      (line  272)
! * MODE_INT:                              Machine Modes.      (line  233)
! * MODE_PARTIAL_INT:                      Machine Modes.      (line  237)
! * MODE_POINTER_BOUNDS:                   Machine Modes.      (line  281)
! * MODE_RANDOM:                           Machine Modes.      (line  286)
! * MODE_UACCUM:                           Machine Modes.      (line  261)
! * MODE_UFRACT:                           Machine Modes.      (line  253)
  * MODES_TIEABLE_P:                       Values in Registers.
                                                               (line  129)
  * modifiers in constraints:              Modifiers.          (line    6)
  * MODIFY_EXPR:                           Unary and Binary Expressions.
                                                               (line    6)
! * MODIFY_JNI_METHOD_CALL:                Misc.               (line  899)
  * modM3 instruction pattern:             Standard Names.     (line  319)
  * modulo scheduling:                     RTL passes.         (line  124)
! * MOVE_MAX:                              Misc.               (line  122)
  * MOVE_MAX_PIECES:                       Costs.              (line  211)
  * MOVE_RATIO:                            Costs.              (line  150)
  * movM instruction pattern:              Standard Names.     (line   11)
*************** Concept Index
*** 50342,50348 ****
  * MULTILIB_REQUIRED:                     Target Fragment.    (line   82)
  * MULTILIB_REUSE:                        Target Fragment.    (line  103)
  * multiple alternative constraints:      Multi-Alternative.  (line    6)
! * MULTIPLE_SYMBOL_SPACES:                Misc.               (line  501)
  * multiplication:                        Arithmetic.         (line   92)
  * multiplication with signed saturation: Arithmetic.         (line   92)
  * multiplication with unsigned saturation: Arithmetic.       (line   92)
--- 50348,50354 ----
  * MULTILIB_REQUIRED:                     Target Fragment.    (line   82)
  * MULTILIB_REUSE:                        Target Fragment.    (line  103)
  * multiple alternative constraints:      Multi-Alternative.  (line    6)
! * MULTIPLE_SYMBOL_SPACES:                Misc.               (line  505)
  * multiplication:                        Arithmetic.         (line   92)
  * multiplication with signed saturation: Arithmetic.         (line   92)
  * multiplication with unsigned saturation: Arithmetic.       (line   92)
*************** Concept Index
*** 50390,50396 ****
  * NO_DOLLAR_IN_LABEL:                    Label Output.       (line   67)
  * NO_DOT_IN_LABEL:                       Label Output.       (line   73)
  * NO_FUNCTION_CSE:                       Costs.              (line  290)
! * NO_IMPLICIT_EXTERN_C:                  Misc.               (line  399)
  * NO_PROFILE_COUNTERS:                   Profiling.          (line   28)
  * NO_REGS:                               Register Classes.   (line   17)
  * NON_LVALUE_EXPR:                       Unary and Binary Expressions.
--- 50396,50402 ----
  * NO_DOLLAR_IN_LABEL:                    Label Output.       (line   67)
  * NO_DOT_IN_LABEL:                       Label Output.       (line   73)
  * NO_FUNCTION_CSE:                       Costs.              (line  290)
! * NO_IMPLICIT_EXTERN_C:                  Misc.               (line  403)
  * NO_PROFILE_COUNTERS:                   Profiling.          (line   28)
  * NO_REGS:                               Register Classes.   (line   17)
  * NON_LVALUE_EXPR:                       Unary and Binary Expressions.
*************** Concept Index
*** 50433,50439 ****
  * NOTICE_UPDATE_CC:                      CC0 Condition Codes.
                                                               (line   31)
  * notMODEcc instruction pattern:         Standard Names.     (line 1308)
! * NUM_MACHINE_MODES:                     Machine Modes.      (line  298)
  * NUM_MODES_FOR_MODE_SWITCHING:          Mode Switching.     (line   31)
  * Number of iterations analysis:         Number of iterations.
                                                               (line    6)
--- 50439,50445 ----
  * NOTICE_UPDATE_CC:                      CC0 Condition Codes.
                                                               (line   31)
  * notMODEcc instruction pattern:         Standard Names.     (line 1308)
! * NUM_MACHINE_MODES:                     Machine Modes.      (line  299)
  * NUM_MODES_FOR_MODE_SWITCHING:          Mode Switching.     (line   31)
  * Number of iterations analysis:         Number of iterations.
                                                               (line    6)
*************** Concept Index
*** 50449,50455 ****
  * OACC_PARALLEL:                         OpenACC.            (line    6)
  * OACC_UPDATE:                           OpenACC.            (line    6)
  * OBJC_GEN_METHOD_LABEL:                 Label Output.       (line  487)
! * OBJC_JBLEN:                            Misc.               (line 1089)
  * OBJECT_FORMAT_COFF:                    Macros for Initialization.
                                                               (line   97)
  * OFFSET_TYPE:                           Types.              (line    6)
--- 50455,50461 ----
  * OACC_PARALLEL:                         OpenACC.            (line    6)
  * OACC_UPDATE:                           OpenACC.            (line    6)
  * OBJC_GEN_METHOD_LABEL:                 Label Output.       (line  487)
! * OBJC_JBLEN:                            Misc.               (line 1093)
  * OBJECT_FORMAT_COFF:                    Macros for Initialization.
                                                               (line   97)
  * OFFSET_TYPE:                           Types.              (line    6)
*************** Concept Index
*** 50573,50579 ****
                                                               (line   27)
  * PLUS_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
! * Pmode:                                 Misc.               (line  347)
  * pmode_register_operand:                Machine-Independent Predicates.
                                                               (line   35)
  * pointer:                               Types.              (line    6)
--- 50579,50585 ----
                                                               (line   27)
  * PLUS_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
! * Pmode:                                 Misc.               (line  351)
  * pmode_register_operand:                Machine-Independent Predicates.
                                                               (line   35)
  * pointer:                               Types.              (line    6)
*************** Concept Index
*** 50599,50607 ****
                                                               (line    6)
  * POSTINCREMENT_EXPR:                    Unary and Binary Expressions.
                                                               (line    6)
! * POWI_MAX_MULTS:                        Misc.               (line  986)
  * powM3 instruction pattern:             Standard Names.     (line  805)
! * pragma:                                Misc.               (line  404)
  * pre_dec:                               Incdec.             (line    8)
  * PRE_GCC3_DWARF_FRAME_REGISTERS:        Frame Registers.    (line  127)
  * pre_inc:                               Incdec.             (line   22)
--- 50605,50613 ----
                                                               (line    6)
  * POSTINCREMENT_EXPR:                    Unary and Binary Expressions.
                                                               (line    6)
! * POWI_MAX_MULTS:                        Misc.               (line  990)
  * powM3 instruction pattern:             Standard Names.     (line  805)
! * pragma:                                Misc.               (line  408)
  * pre_dec:                               Incdec.             (line    8)
  * PRE_GCC3_DWARF_FRAME_REGISTERS:        Frame Registers.    (line  127)
  * pre_inc:                               Incdec.             (line   22)
*************** Concept Index
*** 50666,50672 ****
  * PUSH_ROUNDING:                         Stack Arguments.    (line   32)
  * pushM1 instruction pattern:            Standard Names.     (line  306)
  * PUT_CODE:                              RTL Objects.        (line   47)
! * PUT_MODE:                              Machine Modes.      (line  295)
  * PUT_REG_NOTE_KIND:                     Insns.              (line  352)
  * PUT_SDB_:                              SDB and DWARF.      (line  111)
  * QCmode:                                Machine Modes.      (line  200)
--- 50672,50678 ----
  * PUSH_ROUNDING:                         Stack Arguments.    (line   32)
  * pushM1 instruction pattern:            Standard Names.     (line  306)
  * PUT_CODE:                              RTL Objects.        (line   47)
! * PUT_MODE:                              Machine Modes.      (line  296)
  * PUT_REG_NOTE_KIND:                     Insns.              (line  352)
  * PUT_SDB_:                              SDB and DWARF.      (line  111)
  * QCmode:                                Machine Modes.      (line  200)
*************** Concept Index
*** 50787,50793 ****
  * register_operand:                      Machine-Independent Predicates.
                                                               (line   30)
  * REGISTER_PREFIX:                       Instruction Output. (line  152)
! * REGISTER_TARGET_PRAGMAS:               Misc.               (line  405)
  * registers arguments:                   Register Arguments. (line    6)
  * registers in constraints:              Simple Constraints. (line   66)
  * REGMODE_NATURAL_SIZE:                  Values in Registers.
--- 50793,50799 ----
  * register_operand:                      Machine-Independent Predicates.
                                                               (line   30)
  * REGISTER_PREFIX:                       Instruction Output. (line  152)
! * REGISTER_TARGET_PRAGMAS:               Misc.               (line  409)
  * registers arguments:                   Register Arguments. (line    6)
  * registers in constraints:              Simple Constraints. (line   66)
  * REGMODE_NATURAL_SIZE:                  Values in Registers.
*************** Concept Index
*** 50968,50979 ****
  * SFmode:                                Machine Modes.      (line   69)
  * sharing of RTL components:             Sharing.            (line    6)
  * shift:                                 Arithmetic.         (line  172)
! * SHIFT_COUNT_TRUNCATED:                 Misc.               (line  130)
  * SHLIB_SUFFIX:                          Macros for Initialization.
                                                               (line  135)
  * SHORT_ACCUM_TYPE_SIZE:                 Type Layout.        (line   83)
  * SHORT_FRACT_TYPE_SIZE:                 Type Layout.        (line   63)
! * SHORT_IMMEDIATES_SIGN_EXTEND:          Misc.               (line  104)
  * SHORT_TYPE_SIZE:                       Type Layout.        (line   16)
  * shrink-wrapping separate components:   Shrink-wrapping separate components.
                                                               (line    6)
--- 50974,50985 ----
  * SFmode:                                Machine Modes.      (line   69)
  * sharing of RTL components:             Sharing.            (line    6)
  * shift:                                 Arithmetic.         (line  172)
! * SHIFT_COUNT_TRUNCATED:                 Misc.               (line  134)
  * SHLIB_SUFFIX:                          Macros for Initialization.
                                                               (line  135)
  * SHORT_ACCUM_TYPE_SIZE:                 Type Layout.        (line   83)
  * SHORT_FRACT_TYPE_SIZE:                 Type Layout.        (line   63)
! * SHORT_IMMEDIATES_SIGN_EXTEND:          Misc.               (line  108)
  * SHORT_TYPE_SIZE:                       Type Layout.        (line   16)
  * shrink-wrapping separate components:   Shrink-wrapping separate components.
                                                               (line    6)
*************** Concept Index
*** 51095,51106 ****
  * STATIC_CHAIN_INCOMING_REGNUM:          Frame Registers.    (line   78)
  * STATIC_CHAIN_REGNUM:                   Frame Registers.    (line   77)
  * stdarg.h and register arguments:       Register Arguments. (line   51)
! * STDC_0_IN_SYSTEM_HEADERS:              Misc.               (line  368)
  * STMT_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
  * STMT_IS_FULL_EXPR_P:                   Statements for C++. (line   22)
  * storage layout:                        Storage Layout.     (line    6)
! * STORE_FLAG_VALUE:                      Misc.               (line  219)
  * STORE_MAX_PIECES:                      Costs.              (line  216)
  * store_multiple instruction pattern:    Standard Names.     (line  160)
  * strcpy:                                Storage Layout.     (line  250)
--- 51101,51112 ----
  * STATIC_CHAIN_INCOMING_REGNUM:          Frame Registers.    (line   78)
  * STATIC_CHAIN_REGNUM:                   Frame Registers.    (line   77)
  * stdarg.h and register arguments:       Register Arguments. (line   51)
! * STDC_0_IN_SYSTEM_HEADERS:              Misc.               (line  372)
  * STMT_EXPR:                             Unary and Binary Expressions.
                                                               (line    6)
  * STMT_IS_FULL_EXPR_P:                   Statements for C++. (line   22)
  * storage layout:                        Storage Layout.     (line    6)
! * STORE_FLAG_VALUE:                      Misc.               (line  223)
  * STORE_MAX_PIECES:                      Costs.              (line  216)
  * store_multiple instruction pattern:    Standard Names.     (line  160)
  * strcpy:                                Storage Layout.     (line  250)
*************** Concept Index
*** 51232,51245 ****
                                                               (line   86)
  * TARGET_ADDRESS_COST:                   Costs.              (line  346)
  * TARGET_ALIGN_ANON_BITFIELD:            Storage Layout.     (line  425)
! * TARGET_ALLOCATE_INITIAL_VALUE:         Misc.               (line  832)
! * TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS:  Misc.               (line 1111)
  * TARGET_ALWAYS_STRIP_DOTDOT:            Driver.             (line  251)
  * TARGET_ARG_PARTIAL_BYTES:              Register Arguments. (line  102)
  * TARGET_ARM_EABI_UNWINDER:              Exception Region Output.
                                                               (line  136)
  * TARGET_ARRAY_MODE_SUPPORTED_P:         Register Arguments. (line  353)
! * TARGET_ASAN_SHADOW_OFFSET:             Misc.               (line 1139)
  * TARGET_ASM_ALIGNED_DI_OP:              Data Output.        (line   10)
  * TARGET_ASM_ALIGNED_HI_OP:              Data Output.        (line    8)
  * TARGET_ASM_ALIGNED_SI_OP:              Data Output.        (line    9)
--- 51238,51251 ----
                                                               (line   86)
  * TARGET_ADDRESS_COST:                   Costs.              (line  346)
  * TARGET_ALIGN_ANON_BITFIELD:            Storage Layout.     (line  425)
! * TARGET_ALLOCATE_INITIAL_VALUE:         Misc.               (line  836)
! * TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS:  Misc.               (line 1115)
  * TARGET_ALWAYS_STRIP_DOTDOT:            Driver.             (line  251)
  * TARGET_ARG_PARTIAL_BYTES:              Register Arguments. (line  102)
  * TARGET_ARM_EABI_UNWINDER:              Exception Region Output.
                                                               (line  136)
  * TARGET_ARRAY_MODE_SUPPORTED_P:         Register Arguments. (line  353)
! * TARGET_ASAN_SHADOW_OFFSET:             Misc.               (line 1143)
  * TARGET_ASM_ALIGNED_DI_OP:              Data Output.        (line   10)
  * TARGET_ASM_ALIGNED_HI_OP:              Data Output.        (line    8)
  * TARGET_ASM_ALIGNED_SI_OP:              Data Output.        (line    9)
*************** Concept Index
*** 51312,51342 ****
  * TARGET_ASM_UNIQUE_SECTION:             Sections.           (line  207)
  * TARGET_ASM_UNWIND_EMIT:                Dispatch Tables.    (line   89)
  * TARGET_ASM_UNWIND_EMIT_BEFORE_INSN:    Dispatch Tables.    (line   94)
! * TARGET_ATOMIC_ALIGN_FOR_MODE:          Misc.               (line 1159)
! * TARGET_ATOMIC_ASSIGN_EXPAND_FENV:      Misc.               (line 1165)
! * TARGET_ATOMIC_TEST_AND_SET_TRUEVAL:    Misc.               (line 1149)
  * TARGET_ATTRIBUTE_TABLE:                Target Attributes.  (line   11)
  * TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P:   Target Attributes.  (line   19)
  * TARGET_BINDS_LOCAL_P:                  Sections.           (line  314)
! * TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED: Misc.          (line  929)
! * TARGET_BRANCH_TARGET_REGISTER_CLASS:   Misc.               (line  921)
  * TARGET_BUILD_BUILTIN_VA_LIST:          Register Arguments. (line  291)
! * TARGET_BUILTIN_CHKP_FUNCTION:          Misc.               (line  642)
! * TARGET_BUILTIN_DECL:                   Misc.               (line  623)
  * TARGET_BUILTIN_RECIPROCAL:             Addressing Modes.   (line  263)
  * TARGET_BUILTIN_SETJMP_FRAME_VALUE:     Frame Layout.       (line  105)
  * TARGET_C_EXCESS_PRECISION:             Storage Layout.     (line  112)
! * TARGET_C_PREINCLUDE:                   Misc.               (line  379)
  * TARGET_CALL_ARGS:                      Varargs.            (line  127)
  * TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS: Miscellaneous Register Hooks.
                                                               (line    7)
  * TARGET_CALLEE_COPIES:                  Register Arguments. (line  134)
  * TARGET_CAN_ELIMINATE:                  Elimination.        (line   60)
! * TARGET_CAN_FOLLOW_JUMP:                Misc.               (line  819)
  * TARGET_CAN_INLINE_P:                   Target Attributes.  (line  166)
! * TARGET_CAN_USE_DOLOOP_P:               Misc.               (line  785)
  * TARGET_CANNOT_FORCE_CONST_MEM:         Addressing Modes.   (line  237)
! * TARGET_CANNOT_MODIFY_JUMPS_P:          Misc.               (line  908)
  * TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P:  Register Classes.   (line  605)
  * TARGET_CANONICAL_VA_LIST_TYPE:         Register Arguments. (line  312)
  * TARGET_CANONICALIZE_COMPARISON:        MODE_CC Condition Codes.
--- 51318,51348 ----
  * TARGET_ASM_UNIQUE_SECTION:             Sections.           (line  207)
  * TARGET_ASM_UNWIND_EMIT:                Dispatch Tables.    (line   89)
  * TARGET_ASM_UNWIND_EMIT_BEFORE_INSN:    Dispatch Tables.    (line   94)
! * TARGET_ATOMIC_ALIGN_FOR_MODE:          Misc.               (line 1163)
! * TARGET_ATOMIC_ASSIGN_EXPAND_FENV:      Misc.               (line 1169)
! * TARGET_ATOMIC_TEST_AND_SET_TRUEVAL:    Misc.               (line 1153)
  * TARGET_ATTRIBUTE_TABLE:                Target Attributes.  (line   11)
  * TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P:   Target Attributes.  (line   19)
  * TARGET_BINDS_LOCAL_P:                  Sections.           (line  314)
! * TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED: Misc.          (line  933)
! * TARGET_BRANCH_TARGET_REGISTER_CLASS:   Misc.               (line  925)
  * TARGET_BUILD_BUILTIN_VA_LIST:          Register Arguments. (line  291)
! * TARGET_BUILTIN_CHKP_FUNCTION:          Misc.               (line  646)
! * TARGET_BUILTIN_DECL:                   Misc.               (line  627)
  * TARGET_BUILTIN_RECIPROCAL:             Addressing Modes.   (line  263)
  * TARGET_BUILTIN_SETJMP_FRAME_VALUE:     Frame Layout.       (line  105)
  * TARGET_C_EXCESS_PRECISION:             Storage Layout.     (line  112)
! * TARGET_C_PREINCLUDE:                   Misc.               (line  383)
  * TARGET_CALL_ARGS:                      Varargs.            (line  127)
  * TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS: Miscellaneous Register Hooks.
                                                               (line    7)
  * TARGET_CALLEE_COPIES:                  Register Arguments. (line  134)
  * TARGET_CAN_ELIMINATE:                  Elimination.        (line   60)
! * TARGET_CAN_FOLLOW_JUMP:                Misc.               (line  823)
  * TARGET_CAN_INLINE_P:                   Target Attributes.  (line  166)
! * TARGET_CAN_USE_DOLOOP_P:               Misc.               (line  789)
  * TARGET_CANNOT_FORCE_CONST_MEM:         Addressing Modes.   (line  237)
! * TARGET_CANNOT_MODIFY_JUMPS_P:          Misc.               (line  912)
  * TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P:  Register Classes.   (line  605)
  * TARGET_CANONICAL_VA_LIST_TYPE:         Register Arguments. (line  312)
  * TARGET_CANONICALIZE_COMPARISON:        MODE_CC Condition Codes.
*************** Concept Index
*** 51346,51367 ****
                                                               (line  122)
  * TARGET_CHECK_PCH_TARGET_FLAGS:         PCH Target.         (line   28)
  * TARGET_CHECK_STRING_OBJECT_FORMAT_ARG: Run-time Target.    (line  121)
! * TARGET_CHKP_BOUND_MODE:                Misc.               (line  717)
! * TARGET_CHKP_BOUND_TYPE:                Misc.               (line  714)
  * TARGET_CHKP_FUNCTION_VALUE_BOUNDS:     Varargs.            (line  188)
! * TARGET_CHKP_INITIALIZE_BOUNDS:         Misc.               (line  726)
! * TARGET_CHKP_MAKE_BOUNDS_CONSTANT:      Misc.               (line  721)
  * TARGET_CLASS_LIKELY_SPILLED_P:         Register Classes.   (line  494)
  * TARGET_CLASS_MAX_NREGS:                Register Classes.   (line  511)
! * TARGET_COMMUTATIVE_P:                  Misc.               (line  825)
  * TARGET_COMP_TYPE_ATTRIBUTES:           Target Attributes.  (line   27)
  * TARGET_COMPARE_BY_PIECES_BRANCH_RATIO: Costs.              (line  202)
! * TARGET_COMPARE_VERSION_PRIORITY:       Misc.               (line  760)
  * TARGET_COMPUTE_PRESSURE_CLASSES:       Register Classes.   (line  645)
  * TARGET_CONDITIONAL_REGISTER_USAGE:     Register Basics.    (line   60)
! * TARGET_CONST_ANCHOR:                   Misc.               (line 1122)
  * TARGET_CONST_NOT_OK_FOR_DEBUG_P:       Addressing Modes.   (line  232)
! * TARGET_CONVERT_TO_TYPE:                Misc.               (line 1081)
  * TARGET_CPU_CPP_BUILTINS:               Run-time Target.    (line    9)
  * TARGET_CSTORE_MODE:                    Register Classes.   (line  637)
  * TARGET_CUSTOM_FUNCTION_DESCRIPTORS:    Trampolines.        (line   85)
--- 51352,51373 ----
                                                               (line  122)
  * TARGET_CHECK_PCH_TARGET_FLAGS:         PCH Target.         (line   28)
  * TARGET_CHECK_STRING_OBJECT_FORMAT_ARG: Run-time Target.    (line  121)
! * TARGET_CHKP_BOUND_MODE:                Misc.               (line  721)
! * TARGET_CHKP_BOUND_TYPE:                Misc.               (line  718)
  * TARGET_CHKP_FUNCTION_VALUE_BOUNDS:     Varargs.            (line  188)
! * TARGET_CHKP_INITIALIZE_BOUNDS:         Misc.               (line  730)
! * TARGET_CHKP_MAKE_BOUNDS_CONSTANT:      Misc.               (line  725)
  * TARGET_CLASS_LIKELY_SPILLED_P:         Register Classes.   (line  494)
  * TARGET_CLASS_MAX_NREGS:                Register Classes.   (line  511)
! * TARGET_COMMUTATIVE_P:                  Misc.               (line  829)
  * TARGET_COMP_TYPE_ATTRIBUTES:           Target Attributes.  (line   27)
  * TARGET_COMPARE_BY_PIECES_BRANCH_RATIO: Costs.              (line  202)
! * TARGET_COMPARE_VERSION_PRIORITY:       Misc.               (line  764)
  * TARGET_COMPUTE_PRESSURE_CLASSES:       Register Classes.   (line  645)
  * TARGET_CONDITIONAL_REGISTER_USAGE:     Register Basics.    (line   60)
! * TARGET_CONST_ANCHOR:                   Misc.               (line 1126)
  * TARGET_CONST_NOT_OK_FOR_DEBUG_P:       Addressing Modes.   (line  232)
! * TARGET_CONVERT_TO_TYPE:                Misc.               (line 1085)
  * TARGET_CPU_CPP_BUILTINS:               Run-time Target.    (line    9)
  * TARGET_CSTORE_MODE:                    Register Classes.   (line  637)
  * TARGET_CUSTOM_FUNCTION_DESCRIPTORS:    Trampolines.        (line   85)
*************** Concept Index
*** 51374,51380 ****
  * TARGET_CXX_GET_COOKIE_SIZE:            C++ ABI.            (line   18)
  * TARGET_CXX_GUARD_MASK_BIT:             C++ ABI.            (line   12)
  * TARGET_CXX_GUARD_TYPE:                 C++ ABI.            (line    7)
! * TARGET_CXX_IMPLICIT_EXTERN_C:          Misc.               (line  391)
  * TARGET_CXX_IMPORT_EXPORT_CLASS:        C++ ABI.            (line   30)
  * TARGET_CXX_KEY_METHOD_MAY_BE_INLINE:   C++ ABI.            (line   43)
  * TARGET_CXX_LIBRARY_RTTI_COMDAT:        C++ ABI.            (line   69)
--- 51380,51386 ----
  * TARGET_CXX_GET_COOKIE_SIZE:            C++ ABI.            (line   18)
  * TARGET_CXX_GUARD_MASK_BIT:             C++ ABI.            (line   12)
  * TARGET_CXX_GUARD_TYPE:                 C++ ABI.            (line    7)
! * TARGET_CXX_IMPLICIT_EXTERN_C:          Misc.               (line  395)
  * TARGET_CXX_IMPORT_EXPORT_CLASS:        C++ ABI.            (line   30)
  * TARGET_CXX_KEY_METHOD_MAY_BE_INLINE:   C++ ABI.            (line   43)
  * TARGET_CXX_LIBRARY_RTTI_COMDAT:        C++ ABI.            (line   69)
*************** Concept Index
*** 51383,51389 ****
  * TARGET_DEBUG_UNWIND_INFO:              SDB and DWARF.      (line   37)
  * TARGET_DECIMAL_FLOAT_SUPPORTED_P:      Storage Layout.     (line  531)
  * TARGET_DECLSPEC:                       Target Attributes.  (line   73)
! * TARGET_DEFAULT_PACK_STRUCT:            Misc.               (line  465)
  * TARGET_DEFAULT_SHORT_ENUMS:            Type Layout.        (line  124)
  * TARGET_DEFAULT_TARGET_FLAGS:           Run-time Target.    (line   56)
  * TARGET_DEFERRED_OUTPUT_DEFS:           Label Output.       (line  469)
--- 51389,51395 ----
  * TARGET_DEBUG_UNWIND_INFO:              SDB and DWARF.      (line   37)
  * TARGET_DECIMAL_FLOAT_SUPPORTED_P:      Storage Layout.     (line  531)
  * TARGET_DECLSPEC:                       Target Attributes.  (line   73)
! * TARGET_DEFAULT_PACK_STRUCT:            Misc.               (line  469)
  * TARGET_DEFAULT_SHORT_ENUMS:            Type Layout.        (line  124)
  * TARGET_DEFAULT_TARGET_FLAGS:           Run-time Target.    (line   56)
  * TARGET_DEFERRED_OUTPUT_DEFS:           Label Output.       (line  469)
*************** Concept Index
*** 51417,51432 ****
  * TARGET_ENUM_VA_LIST_P:                 Register Arguments. (line  296)
  * TARGET_EXCEPT_UNWIND_INFO:             Exception Region Output.
                                                               (line   49)
! * TARGET_EXECUTABLE_SUFFIX:              Misc.               (line  882)
! * TARGET_EXPAND_BUILTIN:                 Misc.               (line  633)
  * TARGET_EXPAND_BUILTIN_SAVEREGS:        Varargs.            (line   67)
  * TARGET_EXPAND_DIVMOD_LIBFUNC:          Scheduling.         (line  465)
  * TARGET_EXPAND_TO_RTL_HOOK:             Storage Layout.     (line  537)
  * TARGET_EXPR:                           Unary and Binary Expressions.
                                                               (line    6)
! * TARGET_EXTRA_INCLUDES:                 Misc.               (line  997)
  * TARGET_EXTRA_LIVE_ON_ENTRY:            Tail Calls.         (line   21)
! * TARGET_EXTRA_PRE_INCLUDES:             Misc.               (line 1004)
  * TARGET_FIXED_CONDITION_CODE_REGS:      MODE_CC Condition Codes.
                                                               (line  107)
  * TARGET_FIXED_POINT_SUPPORTED_P:        Storage Layout.     (line  534)
--- 51423,51438 ----
  * TARGET_ENUM_VA_LIST_P:                 Register Arguments. (line  296)
  * TARGET_EXCEPT_UNWIND_INFO:             Exception Region Output.
                                                               (line   49)
! * TARGET_EXECUTABLE_SUFFIX:              Misc.               (line  886)
! * TARGET_EXPAND_BUILTIN:                 Misc.               (line  637)
  * TARGET_EXPAND_BUILTIN_SAVEREGS:        Varargs.            (line   67)
  * TARGET_EXPAND_DIVMOD_LIBFUNC:          Scheduling.         (line  465)
  * TARGET_EXPAND_TO_RTL_HOOK:             Storage Layout.     (line  537)
  * TARGET_EXPR:                           Unary and Binary Expressions.
                                                               (line    6)
! * TARGET_EXTRA_INCLUDES:                 Misc.               (line 1001)
  * TARGET_EXTRA_LIVE_ON_ENTRY:            Tail Calls.         (line   21)
! * TARGET_EXTRA_PRE_INCLUDES:             Misc.               (line 1008)
  * TARGET_FIXED_CONDITION_CODE_REGS:      MODE_CC Condition Codes.
                                                               (line  107)
  * TARGET_FIXED_POINT_SUPPORTED_P:        Storage Layout.     (line  534)
*************** Concept Index
*** 51437,51444 ****
                                                               (line  185)
  * TARGET_FLOATN_MODE:                    Register Arguments. (line  384)
  * TARGET_FN_ABI_VA_LIST:                 Register Arguments. (line  307)
! * TARGET_FOLD_BUILTIN:                   Misc.               (line  743)
! * TARGET_FORMAT_TYPES:                   Misc.               (line 1024)
  * TARGET_FRAME_POINTER_REQUIRED:         Elimination.        (line    9)
  * TARGET_FUNCTION_ARG:                   Register Arguments. (line   12)
  * TARGET_FUNCTION_ARG_ADVANCE:           Register Arguments. (line  205)
--- 51443,51450 ----
                                                               (line  185)
  * TARGET_FLOATN_MODE:                    Register Arguments. (line  384)
  * TARGET_FN_ABI_VA_LIST:                 Register Arguments. (line  307)
! * TARGET_FOLD_BUILTIN:                   Misc.               (line  747)
! * TARGET_FORMAT_TYPES:                   Misc.               (line 1028)
  * TARGET_FRAME_POINTER_REQUIRED:         Elimination.        (line    9)
  * TARGET_FUNCTION_ARG:                   Register Arguments. (line   12)
  * TARGET_FUNCTION_ARG_ADVANCE:           Register Arguments. (line  205)
*************** Concept Index
*** 51449,51463 ****
  * TARGET_FUNCTION_OK_FOR_SIBCALL:        Tail Calls.         (line    8)
  * TARGET_FUNCTION_VALUE:                 Scalar Return.      (line   11)
  * TARGET_FUNCTION_VALUE_REGNO_P:         Scalar Return.      (line   97)
! * TARGET_GEN_CCMP_FIRST:                 Misc.               (line  950)
! * TARGET_GEN_CCMP_NEXT:                  Misc.               (line  962)
! * TARGET_GENERATE_VERSION_DISPATCHER_BODY: Misc.             (line  777)
! * TARGET_GET_DRAP_RTX:                   Misc.               (line 1105)
! * TARGET_GET_FUNCTION_VERSIONS_DISPATCHER: Misc.             (line  770)
  * TARGET_GET_PCH_VALIDITY:               PCH Target.         (line    7)
  * TARGET_GET_RAW_ARG_MODE:               Aggregate Return.   (line   82)
  * TARGET_GET_RAW_RESULT_MODE:            Aggregate Return.   (line   77)
! * TARGET_GIMPLE_FOLD_BUILTIN:            Misc.               (line  753)
  * TARGET_GIMPLIFY_VA_ARG_EXPR:           Register Arguments. (line  318)
  * TARGET_GOACC_DIM_LIMIT:                Addressing Modes.   (line  451)
  * TARGET_GOACC_FORK_JOIN:                Addressing Modes.   (line  456)
--- 51455,51469 ----
  * TARGET_FUNCTION_OK_FOR_SIBCALL:        Tail Calls.         (line    8)
  * TARGET_FUNCTION_VALUE:                 Scalar Return.      (line   11)
  * TARGET_FUNCTION_VALUE_REGNO_P:         Scalar Return.      (line   97)
! * TARGET_GEN_CCMP_FIRST:                 Misc.               (line  954)
! * TARGET_GEN_CCMP_NEXT:                  Misc.               (line  966)
! * TARGET_GENERATE_VERSION_DISPATCHER_BODY: Misc.             (line  781)
! * TARGET_GET_DRAP_RTX:                   Misc.               (line 1109)
! * TARGET_GET_FUNCTION_VERSIONS_DISPATCHER: Misc.             (line  774)
  * TARGET_GET_PCH_VALIDITY:               PCH Target.         (line    7)
  * TARGET_GET_RAW_ARG_MODE:               Aggregate Return.   (line   82)
  * TARGET_GET_RAW_RESULT_MODE:            Aggregate Return.   (line   77)
! * TARGET_GIMPLE_FOLD_BUILTIN:            Misc.               (line  757)
  * TARGET_GIMPLIFY_VA_ARG_EXPR:           Register Arguments. (line  318)
  * TARGET_GOACC_DIM_LIMIT:                Addressing Modes.   (line  451)
  * TARGET_GOACC_FORK_JOIN:                Addressing Modes.   (line  456)
*************** Concept Index
*** 51467,51475 ****
  * TARGET_HANDLE_OPTION:                  Run-time Target.    (line   62)
  * TARGET_HARD_REGNO_SCRATCH_OK:          Values in Registers.
                                                               (line  144)
! * TARGET_HAS_IFUNC_P:                    Misc.               (line 1153)
  * TARGET_HAS_NO_HW_DIVIDE:               Library Calls.      (line   53)
! * TARGET_HAVE_CONDITIONAL_EXECUTION:     Misc.               (line  943)
  * TARGET_HAVE_CTORS_DTORS:               Macros for Initialization.
                                                               (line   64)
  * TARGET_HAVE_NAMED_SECTIONS:            File Framework.     (line  153)
--- 51473,51481 ----
  * TARGET_HANDLE_OPTION:                  Run-time Target.    (line   62)
  * TARGET_HARD_REGNO_SCRATCH_OK:          Values in Registers.
                                                               (line  144)
! * TARGET_HAS_IFUNC_P:                    Misc.               (line 1157)
  * TARGET_HAS_NO_HW_DIVIDE:               Library Calls.      (line   53)
! * TARGET_HAVE_CONDITIONAL_EXECUTION:     Misc.               (line  947)
  * TARGET_HAVE_CTORS_DTORS:               Macros for Initialization.
                                                               (line   64)
  * TARGET_HAVE_NAMED_SECTIONS:            File Framework.     (line  153)
*************** Concept Index
*** 51477,51498 ****
  * TARGET_HAVE_SWITCHABLE_BSS_SECTIONS:   File Framework.     (line  158)
  * TARGET_HAVE_TLS:                       Sections.           (line  323)
  * TARGET_IN_SMALL_DATA_P:                Sections.           (line  299)
! * TARGET_INIT_BUILTINS:                  Misc.               (line  606)
  * TARGET_INIT_DWARF_REG_SIZES_EXTRA:     Exception Region Output.
                                                               (line  122)
  * TARGET_INIT_LIBFUNCS:                  Library Calls.      (line   16)
  * TARGET_INIT_PIC_REG:                   Register Arguments. (line   97)
  * TARGET_INSERT_ATTRIBUTES:              Target Attributes.  (line   82)
  * TARGET_INSTANTIATE_DECLS:              Storage Layout.     (line  545)
! * TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN: Misc.              (line 1049)
! * TARGET_INVALID_BINARY_OP:              Misc.               (line 1068)
! * TARGET_INVALID_CONVERSION:             Misc.               (line 1055)
! * TARGET_INVALID_UNARY_OP:               Misc.               (line 1061)
! * TARGET_INVALID_WITHIN_DOLOOP:          Misc.               (line  801)
  * TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS: Register Classes.  (line  564)
  * TARGET_KEEP_LEAF_WHEN_PROFILED:        Profiling.          (line   40)
  * TARGET_LEGITIMATE_ADDRESS_P:           Addressing Modes.   (line   50)
! * TARGET_LEGITIMATE_COMBINED_INSN:       Misc.               (line  813)
  * TARGET_LEGITIMATE_CONSTANT_P:          Addressing Modes.   (line  216)
  * TARGET_LEGITIMIZE_ADDRESS:             Addressing Modes.   (line  132)
  * TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT: Register Classes.  (line  615)
--- 51483,51504 ----
  * TARGET_HAVE_SWITCHABLE_BSS_SECTIONS:   File Framework.     (line  158)
  * TARGET_HAVE_TLS:                       Sections.           (line  323)
  * TARGET_IN_SMALL_DATA_P:                Sections.           (line  299)
! * TARGET_INIT_BUILTINS:                  Misc.               (line  610)
  * TARGET_INIT_DWARF_REG_SIZES_EXTRA:     Exception Region Output.
                                                               (line  122)
  * TARGET_INIT_LIBFUNCS:                  Library Calls.      (line   16)
  * TARGET_INIT_PIC_REG:                   Register Arguments. (line   97)
  * TARGET_INSERT_ATTRIBUTES:              Target Attributes.  (line   82)
  * TARGET_INSTANTIATE_DECLS:              Storage Layout.     (line  545)
! * TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN: Misc.              (line 1053)
! * TARGET_INVALID_BINARY_OP:              Misc.               (line 1072)
! * TARGET_INVALID_CONVERSION:             Misc.               (line 1059)
! * TARGET_INVALID_UNARY_OP:               Misc.               (line 1065)
! * TARGET_INVALID_WITHIN_DOLOOP:          Misc.               (line  805)
  * TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS: Register Classes.  (line  564)
  * TARGET_KEEP_LEAF_WHEN_PROFILED:        Profiling.          (line   40)
  * TARGET_LEGITIMATE_ADDRESS_P:           Addressing Modes.   (line   50)
! * TARGET_LEGITIMATE_COMBINED_INSN:       Misc.               (line  817)
  * TARGET_LEGITIMATE_CONSTANT_P:          Addressing Modes.   (line  216)
  * TARGET_LEGITIMIZE_ADDRESS:             Addressing Modes.   (line  132)
  * TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT: Register Classes.  (line  615)
*************** Concept Index
*** 51507,51531 ****
  * TARGET_LIBGCC_SHIFT_COUNT_MODE:        Storage Layout.     (line  493)
  * TARGET_LOAD_BOUNDS_FOR_ARG:            Varargs.            (line  158)
  * TARGET_LOAD_RETURNED_BOUNDS:           Varargs.            (line  177)
! * TARGET_LOOP_UNROLL_ADJUST:             Misc.               (line  978)
  * TARGET_LRA_P:                          Register Classes.   (line  570)
! * TARGET_MACHINE_DEPENDENT_REORG:        Misc.               (line  591)
  * TARGET_MANGLE_ASSEMBLER_NAME:          Label Output.       (line  360)
  * TARGET_MANGLE_DECL_ASSEMBLER_NAME:     Sections.           (line  248)
  * TARGET_MANGLE_TYPE:                    Storage Layout.     (line  549)
  * TARGET_MAX_ANCHOR_OFFSET:              Anchored Addresses. (line   39)
  * TARGET_MAX_NOCE_IFCVT_SEQ_COST:        Costs.              (line  382)
! * TARGET_MD_ASM_ADJUST:                  Misc.               (line  512)
  * TARGET_MEM_CONSTRAINT:                 Addressing Modes.   (line  109)
  * TARGET_MEM_REF:                        Storage References. (line    6)
  * TARGET_MEMBER_TYPE_FORCES_BLK:         Storage Layout.     (line  440)
! * TARGET_MEMMODEL_CHECK:                 Misc.               (line 1145)
  * TARGET_MEMORY_MOVE_COST:               Costs.              (line   81)
  * TARGET_MERGE_DECL_ATTRIBUTES:          Target Attributes.  (line   47)
  * TARGET_MERGE_TYPE_ATTRIBUTES:          Target Attributes.  (line   39)
  * TARGET_MIN_ANCHOR_OFFSET:              Anchored Addresses. (line   33)
! * TARGET_MIN_ARITHMETIC_PRECISION:       Misc.               (line   60)
! * TARGET_MIN_DIVISIONS_FOR_RECIP_MUL:    Misc.               (line  109)
  * TARGET_MODE_AFTER:                     Mode Switching.     (line   59)
  * TARGET_MODE_DEPENDENT_ADDRESS_P:       Addressing Modes.   (line  199)
  * TARGET_MODE_EMIT:                      Mode Switching.     (line   44)
--- 51513,51537 ----
  * TARGET_LIBGCC_SHIFT_COUNT_MODE:        Storage Layout.     (line  493)
  * TARGET_LOAD_BOUNDS_FOR_ARG:            Varargs.            (line  158)
  * TARGET_LOAD_RETURNED_BOUNDS:           Varargs.            (line  177)
! * TARGET_LOOP_UNROLL_ADJUST:             Misc.               (line  982)
  * TARGET_LRA_P:                          Register Classes.   (line  570)
! * TARGET_MACHINE_DEPENDENT_REORG:        Misc.               (line  595)
  * TARGET_MANGLE_ASSEMBLER_NAME:          Label Output.       (line  360)
  * TARGET_MANGLE_DECL_ASSEMBLER_NAME:     Sections.           (line  248)
  * TARGET_MANGLE_TYPE:                    Storage Layout.     (line  549)
  * TARGET_MAX_ANCHOR_OFFSET:              Anchored Addresses. (line   39)
  * TARGET_MAX_NOCE_IFCVT_SEQ_COST:        Costs.              (line  382)
! * TARGET_MD_ASM_ADJUST:                  Misc.               (line  516)
  * TARGET_MEM_CONSTRAINT:                 Addressing Modes.   (line  109)
  * TARGET_MEM_REF:                        Storage References. (line    6)
  * TARGET_MEMBER_TYPE_FORCES_BLK:         Storage Layout.     (line  440)
! * TARGET_MEMMODEL_CHECK:                 Misc.               (line 1149)
  * TARGET_MEMORY_MOVE_COST:               Costs.              (line   81)
  * TARGET_MERGE_DECL_ATTRIBUTES:          Target Attributes.  (line   47)
  * TARGET_MERGE_TYPE_ATTRIBUTES:          Target Attributes.  (line   39)
  * TARGET_MIN_ANCHOR_OFFSET:              Anchored Addresses. (line   33)
! * TARGET_MIN_ARITHMETIC_PRECISION:       Misc.               (line   64)
! * TARGET_MIN_DIVISIONS_FOR_RECIP_MUL:    Misc.               (line  113)
  * TARGET_MODE_AFTER:                     Mode Switching.     (line   59)
  * TARGET_MODE_DEPENDENT_ADDRESS_P:       Addressing Modes.   (line  199)
  * TARGET_MODE_EMIT:                      Mode Switching.     (line   44)
*************** Concept Index
*** 51533,51544 ****
  * TARGET_MODE_EXIT:                      Mode Switching.     (line   72)
  * TARGET_MODE_NEEDED:                    Mode Switching.     (line   51)
  * TARGET_MODE_PRIORITY:                  Mode Switching.     (line   79)
! * TARGET_MODE_REP_EXTENDED:              Misc.               (line  194)
  * TARGET_MS_BITFIELD_LAYOUT_P:           Storage Layout.     (line  504)
  * TARGET_MUST_PASS_IN_STACK:             Register Arguments. (line   67)
  * TARGET_MUST_PASS_IN_STACK, and TARGET_FUNCTION_ARG: Register Arguments.
                                                               (line   57)
! * TARGET_N_FORMAT_TYPES:                 Misc.               (line 1029)
  * TARGET_NARROW_VOLATILE_BITFIELD:       Storage Layout.     (line  431)
  * TARGET_NO_REGISTER_ALLOCATION:         SDB and DWARF.      (line   69)
  * TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P: Costs.             (line  408)
--- 51539,51550 ----
  * TARGET_MODE_EXIT:                      Mode Switching.     (line   72)
  * TARGET_MODE_NEEDED:                    Mode Switching.     (line   51)
  * TARGET_MODE_PRIORITY:                  Mode Switching.     (line   79)
! * TARGET_MODE_REP_EXTENDED:              Misc.               (line  198)
  * TARGET_MS_BITFIELD_LAYOUT_P:           Storage Layout.     (line  504)
  * TARGET_MUST_PASS_IN_STACK:             Register Arguments. (line   67)
  * TARGET_MUST_PASS_IN_STACK, and TARGET_FUNCTION_ARG: Register Arguments.
                                                               (line   57)
! * TARGET_N_FORMAT_TYPES:                 Misc.               (line 1033)
  * TARGET_NARROW_VOLATILE_BITFIELD:       Storage Layout.     (line  431)
  * TARGET_NO_REGISTER_ALLOCATION:         SDB and DWARF.      (line   69)
  * TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P: Costs.             (line  408)
*************** Concept Index
*** 51547,51558 ****
  * TARGET_OBJC_DECLARE_CLASS_DEFINITION:  Run-time Target.    (line  111)
  * TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE: Run-time Target.
                                                               (line  106)
! * TARGET_OBJECT_SUFFIX:                  Misc.               (line  877)
  * TARGET_OBJFMT_CPP_BUILTINS:            Run-time Target.    (line   46)
! * TARGET_OFFLOAD_OPTIONS:                Misc.               (line 1189)
  * TARGET_OMIT_STRUCT_RETURN_REG:         Scalar Return.      (line  117)
  * TARGET_OPTAB_SUPPORTED_P:              Costs.              (line  301)
! * TARGET_OPTF:                           Misc.               (line 1011)
  * TARGET_OPTION_DEFAULT_PARAMS:          Run-time Target.    (line  161)
  * TARGET_OPTION_FUNCTION_VERSIONS:       Target Attributes.  (line  159)
  * TARGET_OPTION_INIT_STRUCT:             Run-time Target.    (line  158)
--- 51553,51564 ----
  * TARGET_OBJC_DECLARE_CLASS_DEFINITION:  Run-time Target.    (line  111)
  * TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE: Run-time Target.
                                                               (line  106)
! * TARGET_OBJECT_SUFFIX:                  Misc.               (line  881)
  * TARGET_OBJFMT_CPP_BUILTINS:            Run-time Target.    (line   46)
! * TARGET_OFFLOAD_OPTIONS:                Misc.               (line 1193)
  * TARGET_OMIT_STRUCT_RETURN_REG:         Scalar Return.      (line  117)
  * TARGET_OPTAB_SUPPORTED_P:              Costs.              (line  301)
! * TARGET_OPTF:                           Misc.               (line 1015)
  * TARGET_OPTION_DEFAULT_PARAMS:          Run-time Target.    (line  161)
  * TARGET_OPTION_FUNCTION_VERSIONS:       Target Attributes.  (line  159)
  * TARGET_OPTION_INIT_STRUCT:             Run-time Target.    (line  158)
*************** Concept Index
*** 51566,51577 ****
  * TARGET_OPTION_VALID_ATTRIBUTE_P:       Target Attributes.  (line  102)
  * TARGET_OS_CPP_BUILTINS:                Run-time Target.    (line   42)
  * TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE:  Run-time Target.    (line  127)
! * TARGET_OVERRIDES_FORMAT_ATTRIBUTES:    Misc.               (line 1033)
! * TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT: Misc.            (line 1039)
! * TARGET_OVERRIDES_FORMAT_INIT:          Misc.               (line 1043)
  * TARGET_PASS_BY_REFERENCE:              Register Arguments. (line  122)
  * TARGET_PCH_VALID_P:                    PCH Target.         (line   13)
! * TARGET_POSIX_IO:                       Misc.               (line  536)
  * TARGET_PREFERRED_OUTPUT_RELOAD_CLASS:  Register Classes.   (line  289)
  * TARGET_PREFERRED_RELOAD_CLASS:         Register Classes.   (line  218)
  * TARGET_PREFERRED_RENAME_CLASS:         Register Classes.   (line  206)
--- 51572,51583 ----
  * TARGET_OPTION_VALID_ATTRIBUTE_P:       Target Attributes.  (line  102)
  * TARGET_OS_CPP_BUILTINS:                Run-time Target.    (line   42)
  * TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE:  Run-time Target.    (line  127)
! * TARGET_OVERRIDES_FORMAT_ATTRIBUTES:    Misc.               (line 1037)
! * TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT: Misc.            (line 1043)
! * TARGET_OVERRIDES_FORMAT_INIT:          Misc.               (line 1047)
  * TARGET_PASS_BY_REFERENCE:              Register Arguments. (line  122)
  * TARGET_PCH_VALID_P:                    PCH Target.         (line   13)
! * TARGET_POSIX_IO:                       Misc.               (line  540)
  * TARGET_PREFERRED_OUTPUT_RELOAD_CLASS:  Register Classes.   (line  289)
  * TARGET_PREFERRED_RELOAD_CLASS:         Register Classes.   (line  218)
  * TARGET_PREFERRED_RENAME_CLASS:         Register Classes.   (line  206)
*************** Concept Index
*** 51580,51599 ****
  * TARGET_PROFILE_BEFORE_PROLOGUE:        Sections.           (line  307)
  * TARGET_PROMOTE_FUNCTION_MODE:          Storage Layout.     (line  130)
  * TARGET_PROMOTE_PROTOTYPES:             Stack Arguments.    (line   11)
! * TARGET_PROMOTED_TYPE:                  Misc.               (line 1073)
  * TARGET_PTRMEMFUNC_VBIT_LOCATION:       Type Layout.        (line  252)
! * TARGET_RECORD_OFFLOAD_SYMBOL:          Misc.               (line 1183)
  * TARGET_REF_MAY_ALIAS_ERRNO:            Register Arguments. (line  329)
  * TARGET_REGISTER_MOVE_COST:             Costs.              (line   33)
  * TARGET_REGISTER_PRIORITY:              Register Classes.   (line  576)
  * TARGET_REGISTER_USAGE_LEVELING_P:      Register Classes.   (line  588)
  * TARGET_RELAYOUT_FUNCTION:              Target Attributes.  (line  173)
! * TARGET_RESOLVE_OVERLOADED_BUILTIN:     Misc.               (line  732)
  * TARGET_RETURN_IN_MEMORY:               Aggregate Return.   (line   17)
  * TARGET_RETURN_IN_MSB:                  Scalar Return.      (line  124)
  * TARGET_RETURN_POPS_ARGS:               Stack Arguments.    (line  100)
  * TARGET_RTX_COSTS:                      Costs.              (line  315)
! * TARGET_RUN_TARGET_SELFTESTS:           Misc.               (line 1239)
  * TARGET_SCALAR_MODE_SUPPORTED_P:        Register Arguments. (line  336)
  * TARGET_SCHED_ADJUST_COST:              Scheduling.         (line   37)
  * TARGET_SCHED_ADJUST_PRIORITY:          Scheduling.         (line   52)
--- 51586,51605 ----
  * TARGET_PROFILE_BEFORE_PROLOGUE:        Sections.           (line  307)
  * TARGET_PROMOTE_FUNCTION_MODE:          Storage Layout.     (line  130)
  * TARGET_PROMOTE_PROTOTYPES:             Stack Arguments.    (line   11)
! * TARGET_PROMOTED_TYPE:                  Misc.               (line 1077)
  * TARGET_PTRMEMFUNC_VBIT_LOCATION:       Type Layout.        (line  252)
! * TARGET_RECORD_OFFLOAD_SYMBOL:          Misc.               (line 1187)
  * TARGET_REF_MAY_ALIAS_ERRNO:            Register Arguments. (line  329)
  * TARGET_REGISTER_MOVE_COST:             Costs.              (line   33)
  * TARGET_REGISTER_PRIORITY:              Register Classes.   (line  576)
  * TARGET_REGISTER_USAGE_LEVELING_P:      Register Classes.   (line  588)
  * TARGET_RELAYOUT_FUNCTION:              Target Attributes.  (line  173)
! * TARGET_RESOLVE_OVERLOADED_BUILTIN:     Misc.               (line  736)
  * TARGET_RETURN_IN_MEMORY:               Aggregate Return.   (line   17)
  * TARGET_RETURN_IN_MSB:                  Scalar Return.      (line  124)
  * TARGET_RETURN_POPS_ARGS:               Stack Arguments.    (line  100)
  * TARGET_RTX_COSTS:                      Costs.              (line  315)
! * TARGET_RUN_TARGET_SELFTESTS:           Misc.               (line 1243)
  * TARGET_SCALAR_MODE_SUPPORTED_P:        Register Arguments. (line  336)
  * TARGET_SCHED_ADJUST_COST:              Scheduling.         (line   37)
  * TARGET_SCHED_ADJUST_PRIORITY:          Scheduling.         (line   52)
*************** Concept Index
*** 51645,51656 ****
  * TARGET_SCHED_VARIABLE_ISSUE:           Scheduling.         (line   24)
  * TARGET_SECONDARY_RELOAD:               Register Classes.   (line  318)
  * TARGET_SECTION_TYPE_FLAGS:             File Framework.     (line  164)
! * TARGET_SET_CURRENT_FUNCTION:           Misc.               (line  859)
  * TARGET_SET_DEFAULT_TYPE_ATTRIBUTES:    Target Attributes.  (line   34)
  * TARGET_SET_UP_BY_PROLOGUE:             Tail Calls.         (line   31)
  * TARGET_SETUP_INCOMING_VARARG_BOUNDS:   Varargs.            (line  195)
  * TARGET_SETUP_INCOMING_VARARGS:         Varargs.            (line   76)
! * TARGET_SHIFT_TRUNCATION_MASK:          Misc.               (line  157)
  * TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB:  Shrink-wrapping separate components.
                                                               (line   38)
  * TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS: Shrink-wrapping separate components.
--- 51651,51662 ----
  * TARGET_SCHED_VARIABLE_ISSUE:           Scheduling.         (line   24)
  * TARGET_SECONDARY_RELOAD:               Register Classes.   (line  318)
  * TARGET_SECTION_TYPE_FLAGS:             File Framework.     (line  164)
! * TARGET_SET_CURRENT_FUNCTION:           Misc.               (line  863)
  * TARGET_SET_DEFAULT_TYPE_ATTRIBUTES:    Target Attributes.  (line   34)
  * TARGET_SET_UP_BY_PROLOGUE:             Tail Calls.         (line   31)
  * TARGET_SETUP_INCOMING_VARARG_BOUNDS:   Varargs.            (line  195)
  * TARGET_SETUP_INCOMING_VARARGS:         Varargs.            (line   76)
! * TARGET_SHIFT_TRUNCATION_MASK:          Misc.               (line  161)
  * TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB:  Shrink-wrapping separate components.
                                                               (line   38)
  * TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS: Shrink-wrapping separate components.
*************** Concept Index
*** 51688,51703 ****
  * TARGET_SUPPORTS_SPLIT_STACK:           Stack Smashing Protection.
                                                               (line   32)
  * TARGET_SUPPORTS_WEAK:                  Label Output.       (line  276)
! * TARGET_SUPPORTS_WIDE_INT:              Misc.               (line 1198)
  * TARGET_TERMINATE_DW2_EH_FRAME_INFO:    Exception Region Output.
                                                               (line  101)
  * TARGET_TRAMPOLINE_ADJUST_ADDRESS:      Trampolines.        (line   75)
  * TARGET_TRAMPOLINE_INIT:                Trampolines.        (line   56)
! * TARGET_UNSPEC_MAY_TRAP_P:              Misc.               (line  851)
  * TARGET_UNWIND_TABLES_DEFAULT:          Exception Region Output.
                                                               (line   75)
  * TARGET_UNWIND_WORD_MODE:               Storage Layout.     (line  499)
! * TARGET_UPDATE_STACK_BOUNDARY:          Misc.               (line 1101)
  * TARGET_USE_ANCHORS_FOR_SYMBOL_P:       Anchored Addresses. (line   55)
  * TARGET_USE_BLOCKS_FOR_CONSTANT_P:      Addressing Modes.   (line  251)
  * TARGET_USE_BLOCKS_FOR_DECL_P:          Addressing Modes.   (line  257)
--- 51694,51709 ----
  * TARGET_SUPPORTS_SPLIT_STACK:           Stack Smashing Protection.
                                                               (line   32)
  * TARGET_SUPPORTS_WEAK:                  Label Output.       (line  276)
! * TARGET_SUPPORTS_WIDE_INT:              Misc.               (line 1202)
  * TARGET_TERMINATE_DW2_EH_FRAME_INFO:    Exception Region Output.
                                                               (line  101)
  * TARGET_TRAMPOLINE_ADJUST_ADDRESS:      Trampolines.        (line   75)
  * TARGET_TRAMPOLINE_INIT:                Trampolines.        (line   56)
! * TARGET_UNSPEC_MAY_TRAP_P:              Misc.               (line  855)
  * TARGET_UNWIND_TABLES_DEFAULT:          Exception Region Output.
                                                               (line   75)
  * TARGET_UNWIND_WORD_MODE:               Storage Layout.     (line  499)
! * TARGET_UPDATE_STACK_BOUNDARY:          Misc.               (line 1105)
  * TARGET_USE_ANCHORS_FOR_SYMBOL_P:       Anchored Addresses. (line   55)
  * TARGET_USE_BLOCKS_FOR_CONSTANT_P:      Addressing Modes.   (line  251)
  * TARGET_USE_BLOCKS_FOR_DECL_P:          Addressing Modes.   (line  257)
*************** Concept Index
*** 51823,51829 ****
  * TREE_VEC:                              Containers.         (line    6)
  * TREE_VEC_ELT:                          Containers.         (line    6)
  * TREE_VEC_LENGTH:                       Containers.         (line    6)
! * TRULY_NOOP_TRUNCATION:                 Misc.               (line  180)
  * TRUNC_DIV_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
  * TRUNC_MOD_EXPR:                        Unary and Binary Expressions.
--- 51829,51835 ----
  * TREE_VEC:                              Containers.         (line    6)
  * TREE_VEC_ELT:                          Containers.         (line    6)
  * TREE_VEC_LENGTH:                       Containers.         (line    6)
! * TRULY_NOOP_TRUNCATION:                 Misc.               (line  184)
  * TRUNC_DIV_EXPR:                        Unary and Binary Expressions.
                                                               (line    6)
  * TRUNC_MOD_EXPR:                        Unary and Binary Expressions.
*************** Concept Index
*** 52120,52126 ****
  * vector operations:                     Vector Operations.  (line    6)
  * VECTOR_CST:                            Constant expressions.
                                                               (line    6)
! * VECTOR_STORE_FLAG_VALUE:               Misc.               (line  311)
  * verify_flow_info:                      Maintaining the CFG.
                                                               (line  117)
  * virtual operands:                      SSA Operands.       (line    6)
--- 52126,52132 ----
  * vector operations:                     Vector Operations.  (line    6)
  * VECTOR_CST:                            Constant expressions.
                                                               (line    6)
! * VECTOR_STORE_FLAG_VALUE:               Misc.               (line  315)
  * verify_flow_info:                      Maintaining the CFG.
                                                               (line  117)
  * virtual operands:                      SSA Operands.       (line    6)
*************** Concept Index
*** 52133,52139 ****
  * vlshrM3 instruction pattern:           Standard Names.     (line  615)
  * VMS:                                   Filesystem.         (line   37)
  * VMS_DEBUGGING_INFO:                    VMS Debug.          (line    9)
! * void:                                  Misc.               (line  705)
  * VOID_TYPE:                             Types.              (line    6)
  * VOIDmode:                              Machine Modes.      (line  193)
  * volatil:                               Flags.              (line  328)
--- 52139,52145 ----
  * vlshrM3 instruction pattern:           Standard Names.     (line  615)
  * VMS:                                   Filesystem.         (line   37)
  * VMS_DEBUGGING_INFO:                    VMS Debug.          (line    9)
! * void:                                  Misc.               (line  709)
  * VOID_TYPE:                             Types.              (line    6)
  * VOIDmode:                              Machine Modes.      (line  193)
  * volatil:                               Flags.              (line  328)
*************** Concept Index
*** 52168,52174 ****
  * WIDEST_HARDWARE_FP_SIZE:               Type Layout.        (line  111)
  * window_save instruction pattern:       Standard Names.     (line 1763)
  * WINT_TYPE:                             Type Layout.        (line  179)
! * word_mode:                             Machine Modes.      (line  368)
  * WORD_REGISTER_OPERATIONS:              Misc.               (line   54)
  * WORDS_BIG_ENDIAN:                      Storage Layout.     (line   29)
  * WORDS_BIG_ENDIAN, effect on subreg:    Regs and Memory.    (line  217)
--- 52174,52180 ----
  * WIDEST_HARDWARE_FP_SIZE:               Type Layout.        (line  111)
  * window_save instruction pattern:       Standard Names.     (line 1763)
  * WINT_TYPE:                             Type Layout.        (line  179)
! * word_mode:                             Machine Modes.      (line  369)
  * WORD_REGISTER_OPERATIONS:              Misc.               (line   54)
  * WORDS_BIG_ENDIAN:                      Storage Layout.     (line   29)
  * WORDS_BIG_ENDIAN, effect on subreg:    Regs and Memory.    (line  217)
*************** Node: Accessors615565
*** 52386,52601 ****
  Node: Special Accessors617959
  Node: Flags623729
  Node: Machine Modes638491
! Node: Constants652143
! Node: Regs and Memory660229
! Node: Arithmetic678138
! Node: Comparisons688192
! Node: Bit-Fields692484
! Node: Vector Operations694036
! Node: Conversions695918
! Node: RTL Declarations700416
! Node: Side Effects701237
! Node: Incdec718252
! Node: Assembler721587
! Node: Debug Information723132
! Node: Insns724330
! Node: Calls750738
! Node: Sharing753331
! Node: Reading RTL756441
! Node: Control Flow757433
! Node: Basic Blocks759201
! Node: Edges764657
! Node: Profile information773279
! Node: Maintaining the CFG777963
! Node: Liveness information783732
! Node: Loop Analysis and Representation785858
! Node: Loop representation786894
! Node: Loop querying794459
! Node: Loop manipulation797297
! Node: LCSSA799640
! Node: Scalar evolutions801712
! Node: loop-iv804956
! Node: Number of iterations806882
! Node: Dependency analysis810967
! Node: Machine Desc817321
! Node: Overview819884
! Node: Patterns821925
! Node: Example825433
! Node: RTL Template826894
! Node: Output Template837550
! Node: Output Statement841515
! Node: Predicates845854
! Node: Machine-Independent Predicates848772
! Node: Defining Predicates853717
! Node: Constraints859682
! Node: Simple Constraints861151
! Node: Multi-Alternative874007
! Node: Class Preferences877216
! Node: Modifiers878108
! Node: Machine Constraints882840
! Node: Disable Insn Alternatives942218
! Node: Define Constraints945707
! Node: C Constraint Interface953104
! Node: Standard Names956244
! Ref: shift patterns982300
! Ref: prologue instruction pattern1033188
! Ref: window_save instruction pattern1033681
! Ref: epilogue instruction pattern1033956
! Node: Pattern Ordering1052840
! Node: Dependent Patterns1054076
! Node: Jump Patterns1055696
! Ref: Jump Patterns-Footnote-11057840
! Node: Looping Patterns1057886
! Node: Insn Canonicalizations1062614
! Node: Expander Definitions1067205
! Node: Insn Splitting1075417
! Node: Including Patterns1085019
! Node: Peephole Definitions1086799
! Node: define_peephole1088052
! Node: define_peephole21094383
! Node: Insn Attributes1097449
! Node: Defining Attributes1098631
! Ref: define_enum_attr1102119
! Node: Expressions1103154
! Node: Tagging Insns1109903
! Node: Attr Example1114256
! Node: Insn Lengths1116630
! Node: Constant Attributes1120038
! Node: Mnemonic Attribute1121214
! Node: Delay Slots1122733
! Node: Processor pipeline description1125956
! Ref: Processor pipeline description-Footnote-11144768
! Node: Conditional Execution1145090
! Node: Define Subst1148570
! Node: Define Subst Example1150604
! Node: Define Subst Pattern Matching1153598
! Node: Define Subst Output Template1154823
! Node: Constant Definitions1156893
! Ref: define_enum1160675
! Node: Iterators1161163
! Node: Mode Iterators1161741
! Node: Defining Mode Iterators1162719
! Node: Substitutions1164213
! Node: Examples1166454
! Node: Code Iterators1167902
! Node: Int Iterators1170181
! Node: Subst Iterators1172624
! Node: Target Macros1174316
! Node: Target Structure1177328
! Node: Driver1179443
! Node: Run-time Target1198411
! Node: Per-Function Data1208109
! Node: Storage Layout1210874
! Node: Type Layout1237840
! Node: Registers1251185
! Node: Register Basics1252159
! Node: Allocation Order1257594
! Node: Values in Registers1260082
! Node: Leaf Functions1267571
! Node: Stack Registers1270429
! Node: Register Classes1271701
! Node: Stack and Calling1305316
! Node: Frame Layout1305922
! Node: Exception Handling1316773
! Node: Stack Checking1322993
! Node: Frame Registers1327833
! Node: Elimination1336098
! Node: Stack Arguments1339484
! Node: Register Arguments1346665
! Node: Scalar Return1368971
! Node: Aggregate Return1375426
! Node: Caller Saves1379614
! Node: Function Entry1380357
! Node: Profiling1391459
! Node: Tail Calls1393573
! Node: Shrink-wrapping separate components1395484
! Node: Stack Smashing Protection1398525
! Node: Miscellaneous Register Hooks1400448
! Node: Varargs1401314
! Node: Trampolines1411436
! Node: Library Calls1418600
! Node: Addressing Modes1423284
! Node: Anchored Addresses1446804
! Node: Condition Code1449453
! Node: CC0 Condition Codes1451780
! Node: MODE_CC Condition Codes1455026
! Node: Costs1461819
! Node: Scheduling1482460
! Node: Sections1506392
! Node: PIC1522321
! Node: Assembler Format1524381
! Node: File Framework1525519
! Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS1533152
! Node: Data Output1536417
! Node: Uninitialized Data1544370
! Node: Label Output1549381
! Node: Initialization1574004
! Node: Macros for Initialization1579966
! Node: Instruction Output1586689
! Node: Dispatch Tables1597324
! Node: Exception Region Output1601724
! Node: Alignment Output1608823
! Node: Debugging Info1613425
! Node: All Debuggers1614095
! Node: DBX Options1616950
! Node: DBX Hooks1622399
! Node: File Names and DBX1623708
! Node: SDB and DWARF1625820
! Node: VMS Debug1632109
! Node: Floating Point1632696
! Node: Mode Switching1635451
! Node: Target Attributes1639885
! Node: Emulated TLS1648849
! Node: MIPS Coprocessors1652239
! Node: PCH Target1653398
! Node: C++ ABI1655240
! Node: Named Address Spaces1660032
! Node: Misc1665944
! Ref: TARGET_SHIFT_TRUNCATION_MASK1673493
! Node: Host Config1728920
! Node: Host Common1729989
! Node: Filesystem1732368
! Node: Host Misc1736483
! Node: Fragments1738932
! Node: Target Fragment1740127
! Node: Host Fragment1750854
! Node: Collect21751094
! Node: Header Dirs1753730
! Node: Type Information1755153
! Node: GTY Options1758433
! Node: Inheritance and GTY1769690
! Ref: Inheritance and GTY-Footnote-11771255
! Node: User GC1771523
! Node: GGC Roots1775258
! Node: Files1775974
! Node: Invoking the garbage collector1778681
! Node: Troubleshooting1780184
! Node: Plugins1781260
! Node: Plugins loading1782389
! Node: Plugin API1783258
! Node: Plugins pass1790985
! Node: Plugins GC1792954
! Node: Plugins description1794669
! Node: Plugins attr1795204
! Node: Plugins recording1797475
! Node: Plugins gate1798325
! Node: Plugins tracking1798916
! Node: Plugins building1799504
! Node: LTO1801293
! Node: LTO Overview1802165
! Node: LTO object file layout1807992
! Node: IPA1812624
! Node: WHOPR1821589
! Node: Internal flags1826150
! Node: Match and Simplify1827562
! Node: GIMPLE API1828523
! Node: The Language1831318
! Node: Funding1842684
! Node: GNU Project1845182
! Node: Copying1845831
! Node: GNU Free Documentation License1883362
! Node: Contributors1908502
! Node: Option Index1947948
! Node: Concept Index1948825
  
  End Tag Table
--- 52392,52607 ----
  Node: Special Accessors617959
  Node: Flags623729
  Node: Machine Modes638491
! Node: Constants652169
! Node: Regs and Memory660255
! Node: Arithmetic678164
! Node: Comparisons688218
! Node: Bit-Fields692510
! Node: Vector Operations694062
! Node: Conversions695944
! Node: RTL Declarations700442
! Node: Side Effects701263
! Node: Incdec718278
! Node: Assembler721613
! Node: Debug Information723158
! Node: Insns724356
! Node: Calls750764
! Node: Sharing753357
! Node: Reading RTL756467
! Node: Control Flow757459
! Node: Basic Blocks759227
! Node: Edges764683
! Node: Profile information773305
! Node: Maintaining the CFG777989
! Node: Liveness information783758
! Node: Loop Analysis and Representation785884
! Node: Loop representation786920
! Node: Loop querying794485
! Node: Loop manipulation797323
! Node: LCSSA799666
! Node: Scalar evolutions801738
! Node: loop-iv804982
! Node: Number of iterations806908
! Node: Dependency analysis810993
! Node: Machine Desc817347
! Node: Overview819910
! Node: Patterns821951
! Node: Example825459
! Node: RTL Template826920
! Node: Output Template837576
! Node: Output Statement841541
! Node: Predicates845880
! Node: Machine-Independent Predicates848798
! Node: Defining Predicates853743
! Node: Constraints859708
! Node: Simple Constraints861177
! Node: Multi-Alternative874033
! Node: Class Preferences877242
! Node: Modifiers878134
! Node: Machine Constraints882866
! Node: Disable Insn Alternatives942244
! Node: Define Constraints945733
! Node: C Constraint Interface953130
! Node: Standard Names956270
! Ref: shift patterns982326
! Ref: prologue instruction pattern1033214
! Ref: window_save instruction pattern1033707
! Ref: epilogue instruction pattern1033982
! Node: Pattern Ordering1052866
! Node: Dependent Patterns1054102
! Node: Jump Patterns1055722
! Ref: Jump Patterns-Footnote-11057866
! Node: Looping Patterns1057912
! Node: Insn Canonicalizations1062640
! Node: Expander Definitions1067231
! Node: Insn Splitting1075443
! Node: Including Patterns1085045
! Node: Peephole Definitions1086825
! Node: define_peephole1088078
! Node: define_peephole21094409
! Node: Insn Attributes1097475
! Node: Defining Attributes1098657
! Ref: define_enum_attr1102145
! Node: Expressions1103180
! Node: Tagging Insns1109929
! Node: Attr Example1114282
! Node: Insn Lengths1116656
! Node: Constant Attributes1120064
! Node: Mnemonic Attribute1121240
! Node: Delay Slots1122759
! Node: Processor pipeline description1125982
! Ref: Processor pipeline description-Footnote-11144794
! Node: Conditional Execution1145116
! Node: Define Subst1148596
! Node: Define Subst Example1150630
! Node: Define Subst Pattern Matching1153624
! Node: Define Subst Output Template1154849
! Node: Constant Definitions1156919
! Ref: define_enum1160701
! Node: Iterators1161189
! Node: Mode Iterators1161767
! Node: Defining Mode Iterators1162745
! Node: Substitutions1164239
! Node: Examples1166480
! Node: Code Iterators1167928
! Node: Int Iterators1170207
! Node: Subst Iterators1172650
! Node: Target Macros1174342
! Node: Target Structure1177354
! Node: Driver1179469
! Node: Run-time Target1198437
! Node: Per-Function Data1208135
! Node: Storage Layout1210900
! Node: Type Layout1237866
! Node: Registers1251211
! Node: Register Basics1252185
! Node: Allocation Order1257620
! Node: Values in Registers1260108
! Node: Leaf Functions1267597
! Node: Stack Registers1270455
! Node: Register Classes1271727
! Node: Stack and Calling1305342
! Node: Frame Layout1305948
! Node: Exception Handling1316799
! Node: Stack Checking1323019
! Node: Frame Registers1327859
! Node: Elimination1336124
! Node: Stack Arguments1339510
! Node: Register Arguments1346691
! Node: Scalar Return1368997
! Node: Aggregate Return1375452
! Node: Caller Saves1379640
! Node: Function Entry1380383
! Node: Profiling1391485
! Node: Tail Calls1393599
! Node: Shrink-wrapping separate components1395510
! Node: Stack Smashing Protection1398551
! Node: Miscellaneous Register Hooks1400474
! Node: Varargs1401340
! Node: Trampolines1411462
! Node: Library Calls1418626
! Node: Addressing Modes1423310
! Node: Anchored Addresses1446830
! Node: Condition Code1449479
! Node: CC0 Condition Codes1451806
! Node: MODE_CC Condition Codes1455052
! Node: Costs1461845
! Node: Scheduling1482486
! Node: Sections1506418
! Node: PIC1522347
! Node: Assembler Format1524407
! Node: File Framework1525545
! Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS1533178
! Node: Data Output1536443
! Node: Uninitialized Data1544396
! Node: Label Output1549407
! Node: Initialization1574030
! Node: Macros for Initialization1579992
! Node: Instruction Output1586715
! Node: Dispatch Tables1597350
! Node: Exception Region Output1601750
! Node: Alignment Output1608849
! Node: Debugging Info1613451
! Node: All Debuggers1614121
! Node: DBX Options1616976
! Node: DBX Hooks1622425
! Node: File Names and DBX1623734
! Node: SDB and DWARF1625846
! Node: VMS Debug1632135
! Node: Floating Point1632722
! Node: Mode Switching1635477
! Node: Target Attributes1639911
! Node: Emulated TLS1648875
! Node: MIPS Coprocessors1652265
! Node: PCH Target1653424
! Node: C++ ABI1655266
! Node: Named Address Spaces1660058
! Node: Misc1665970
! Ref: TARGET_SHIFT_TRUNCATION_MASK1673830
! Node: Host Config1729257
! Node: Host Common1730326
! Node: Filesystem1732705
! Node: Host Misc1736820
! Node: Fragments1739269
! Node: Target Fragment1740464
! Node: Host Fragment1751191
! Node: Collect21751431
! Node: Header Dirs1754067
! Node: Type Information1755490
! Node: GTY Options1758770
! Node: Inheritance and GTY1770027
! Ref: Inheritance and GTY-Footnote-11771592
! Node: User GC1771860
! Node: GGC Roots1775595
! Node: Files1776311
! Node: Invoking the garbage collector1779018
! Node: Troubleshooting1780521
! Node: Plugins1781597
! Node: Plugins loading1782726
! Node: Plugin API1783595
! Node: Plugins pass1791322
! Node: Plugins GC1793291
! Node: Plugins description1795006
! Node: Plugins attr1795541
! Node: Plugins recording1797812
! Node: Plugins gate1798662
! Node: Plugins tracking1799253
! Node: Plugins building1799841
! Node: LTO1801630
! Node: LTO Overview1802502
! Node: LTO object file layout1808329
! Node: IPA1812961
! Node: WHOPR1821926
! Node: Internal flags1826487
! Node: Match and Simplify1827899
! Node: GIMPLE API1828860
! Node: The Language1831655
! Node: Funding1843021
! Node: GNU Project1845519
! Node: Copying1846168
! Node: GNU Free Documentation License1883699
! Node: Contributors1908839
! Node: Option Index1948285
! Node: Concept Index1949162
  
  End Tag Table
diff -Nrcpad gcc-7.3.0/gcc/doc/gcov-dump.1 gcc-7.4.0/gcc/doc/gcov-dump.1
*** gcc-7.3.0/gcc/doc/gcov-dump.1	Thu Jan 25 08:19:42 2018
--- gcc-7.4.0/gcc/doc/gcov-dump.1	Thu Dec  6 09:59:45 2018
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GCOV-DUMP 1"
! .TH GCOV-DUMP 1 "2018-01-25" "gcc-7.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 "2018-12-06" "gcc-7.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-7.3.0/gcc/doc/gcov-tool.1 gcc-7.4.0/gcc/doc/gcov-tool.1
*** gcc-7.3.0/gcc/doc/gcov-tool.1	Thu Jan 25 08:19:42 2018
--- gcc-7.4.0/gcc/doc/gcov-tool.1	Thu Dec  6 09:59:45 2018
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GCOV-TOOL 1"
! .TH GCOV-TOOL 1 "2018-01-25" "gcc-7.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 "2018-12-06" "gcc-7.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-7.3.0/gcc/doc/gcov.1 gcc-7.4.0/gcc/doc/gcov.1
*** gcc-7.3.0/gcc/doc/gcov.1	Thu Jan 25 08:19:42 2018
--- gcc-7.4.0/gcc/doc/gcov.1	Thu Dec  6 09:59:45 2018
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GCOV 1"
! .TH GCOV 1 "2018-01-25" "gcc-7.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 "2018-12-06" "gcc-7.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
*************** program source code.  The format is
*** 447,453 ****
  Additional block information may succeed each line, when requested by
  command line option.  The \fIexecution_count\fR is \fB\-\fR for lines
  containing no code.  Unexecuted lines are marked \fB#####\fR or
! \&\fB====\fR, depending on whether they are reachable by
  non-exceptional paths or only exceptional paths such as \*(C+ exception
  handlers, respectively. Given \fB\-a\fR option, unexecuted blocks are
  marked \fB$$$$$\fR or \fB%%%%%\fR, depending on whether a basic block
--- 447,453 ----
  Additional block information may succeed each line, when requested by
  command line option.  The \fIexecution_count\fR is \fB\-\fR for lines
  containing no code.  Unexecuted lines are marked \fB#####\fR or
! \&\fB=====\fR, depending on whether they are reachable by
  non-exceptional paths or only exceptional paths such as \*(C+ exception
  handlers, respectively. Given \fB\-a\fR option, unexecuted blocks are
  marked \fB$$$$$\fR or \fB%%%%%\fR, depending on whether a basic block
*************** Instrumented applications use a static d
*** 739,744 ****
--- 739,746 ----
  to invoke the \f(CW\*(C`_\|_gcov_dump\*(C'\fR function. Thus \f(CW\*(C`_\|_gcov_dump\*(C'\fR
  is executed after all user defined static destructors,
  as well as handlers registered with \f(CW\*(C`atexit\*(C'\fR.
+ If an executable loads a dynamic shared object via dlopen functionality,
+ \&\fB\-Wl,\-\-dynamic\-list\-data\fR is needed to dump all profile data.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
  \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7), \fIgcc\fR\|(1) and the Info entry for \fIgcc\fR.
diff -Nrcpad gcc-7.3.0/gcc/doc/gcov.texi gcc-7.4.0/gcc/doc/gcov.texi
*** gcc-7.3.0/gcc/doc/gcov.texi	Tue Nov 21 16:01:16 2017
--- gcc-7.4.0/gcc/doc/gcov.texi	Tue Mar  6 20:06:56 2018
*************** program source code.  The format is
*** 322,328 ****
  Additional block information may succeed each line, when requested by
  command line option.  The @var{execution_count} is @samp{-} for lines
  containing no code.  Unexecuted lines are marked @samp{#####} or
! @samp{====}, depending on whether they are reachable by
  non-exceptional paths or only exceptional paths such as C++ exception
  handlers, respectively. Given @samp{-a} option, unexecuted blocks are
  marked @samp{$$$$$} or @samp{%%%%%}, depending on whether a basic block
--- 322,328 ----
  Additional block information may succeed each line, when requested by
  command line option.  The @var{execution_count} is @samp{-} for lines
  containing no code.  Unexecuted lines are marked @samp{#####} or
! @samp{=====}, depending on whether they are reachable by
  non-exceptional paths or only exceptional paths such as C++ exception
  handlers, respectively. Given @samp{-a} option, unexecuted blocks are
  marked @samp{$$$$$} or @samp{%%%%%}, depending on whether a basic block
*************** Instrumented applications use a static d
*** 618,623 ****
--- 618,625 ----
  to invoke the @code{__gcov_dump} function. Thus @code{__gcov_dump}
  is executed after all user defined static destructors,
  as well as handlers registered with @code{atexit}.
+ If an executable loads a dynamic shared object via dlopen functionality,
+ @option{-Wl,--dynamic-list-data} is needed to dump all profile data.
  
  @c man end
  
diff -Nrcpad gcc-7.3.0/gcc/doc/gfdl.7 gcc-7.4.0/gcc/doc/gfdl.7
*** gcc-7.3.0/gcc/doc/gfdl.7	Thu Jan 25 08:19:42 2018
--- gcc-7.4.0/gcc/doc/gfdl.7	Thu Dec  6 09:59:45 2018
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GFDL 7"
! .TH GFDL 7 "2018-01-25" "gcc-7.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 "2018-12-06" "gcc-7.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-7.3.0/gcc/doc/gfortran.1 gcc-7.4.0/gcc/doc/gfortran.1
*** gcc-7.3.0/gcc/doc/gfortran.1	Thu Jan 25 08:41:38 2018
--- gcc-7.4.0/gcc/doc/gfortran.1	Thu Dec  6 10:20:52 2018
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GFORTRAN 1"
! .TH GFORTRAN 1 "2018-01-25" "gcc-7.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 "2018-12-06" "gcc-7.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-7.3.0/gcc/doc/gpl.7 gcc-7.4.0/gcc/doc/gpl.7
*** gcc-7.3.0/gcc/doc/gpl.7	Thu Jan 25 08:19:42 2018
--- gcc-7.4.0/gcc/doc/gpl.7	Thu Dec  6 09:59:45 2018
***************
*** 133,139 ****
  .\" ========================================================================
  .\"
  .IX Title "GPL 7"
! .TH GPL 7 "2018-01-25" "gcc-7.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 "2018-12-06" "gcc-7.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-7.3.0/gcc/doc/install.texi2html gcc-7.4.0/gcc/doc/install.texi2html
*** gcc-7.3.0/gcc/doc/install.texi2html	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/doc/install.texi2html	Fri Jun 22 21:20:02 2018
*************** for x in index.html specific.html prereq
*** 52,58 ****
  do
      define=`echo $x | sed -e 's/\.//g'`
      echo "define = $define"
!     $MAKEINFO --no-number-sections -I $SOURCEDIR -I $SOURCEDIR/include -I $DESTDIR $SOURCEDIR/install.texi --html --no-split -D$define -o$DESTDIR/$x
  done
  
  rm $DESTDIR/gcc-vers.texi
--- 52,61 ----
  do
      define=`echo $x | sed -e 's/\.//g'`
      echo "define = $define"
!     $MAKEINFO --no-number-sections -I $SOURCEDIR -I $SOURCEDIR/include -I $DESTDIR $SOURCEDIR/install.texi --html --no-split -D$define -o$DESTDIR/temp.html
!     # Use sed to work around makeinfo 4.7 brokenness.
!     sed -e 's/_002d/-/g' -e 's/_002a/*/g' $DESTDIR/temp.html > $DESTDIR/$x
!     rm $DESTDIR/temp.html
  done
  
  rm $DESTDIR/gcc-vers.texi
diff -Nrcpad gcc-7.3.0/gcc/doc/invoke.texi gcc-7.4.0/gcc/doc/invoke.texi
*** gcc-7.3.0/gcc/doc/invoke.texi	Tue Jan 16 11:22:01 2018
--- gcc-7.4.0/gcc/doc/invoke.texi	Mon Nov 26 15:08:49 2018
*************** Objective-C and Objective-C++ Dialects}.
*** 257,263 ****
  @xref{Warning Options,,Options to Request or Suppress Warnings}.
  @gccoptlist{-fsyntax-only  -fmax-errors=@var{n}  -Wpedantic @gol
  -pedantic-errors @gol
! -w  -Wextra  -Wall  -Waddress  -Waggregate-return  @gol
  -Walloc-zero  -Walloc-size-larger-than=@var{n}
  -Walloca  -Walloca-larger-than=@var{n} @gol
  -Wno-aggressive-loop-optimizations  -Warray-bounds  -Warray-bounds=@var{n} @gol
--- 257,263 ----
  @xref{Warning Options,,Options to Request or Suppress Warnings}.
  @gccoptlist{-fsyntax-only  -fmax-errors=@var{n}  -Wpedantic @gol
  -pedantic-errors @gol
! -w  -Wextra  -Wall  -Waddress  -Waggregate-return  -Waligned-new @gol
  -Walloc-zero  -Walloc-size-larger-than=@var{n}
  -Walloca  -Walloca-larger-than=@var{n} @gol
  -Wno-aggressive-loop-optimizations  -Warray-bounds  -Warray-bounds=@var{n} @gol
*************** See RS/6000 and PowerPC Options.
*** 1025,1031 ****
  -mfloat-gprs=yes  -mfloat-gprs=no  -mfloat-gprs=single  -mfloat-gprs=double @gol
  -mprototype  -mno-prototype @gol
  -msim  -mmvme  -mads  -myellowknife  -memb  -msdata @gol
! -msdata=@var{opt}  -mvxworks  -G @var{num} @gol
  -mrecip  -mrecip=@var{opt}  -mno-recip  -mrecip-precision @gol
  -mno-recip-precision @gol
  -mveclibabi=@var{type}  -mfriz  -mno-friz @gol
--- 1025,1031 ----
  -mfloat-gprs=yes  -mfloat-gprs=no  -mfloat-gprs=single  -mfloat-gprs=double @gol
  -mprototype  -mno-prototype @gol
  -msim  -mmvme  -mads  -myellowknife  -memb  -msdata @gol
! -msdata=@var{opt}  -mreadonly-in-sdata  -mvxworks  -G @var{num} @gol
  -mrecip  -mrecip=@var{opt}  -mno-recip  -mrecip-precision @gol
  -mno-recip-precision @gol
  -mveclibabi=@var{type}  -mfriz  -mno-friz @gol
*************** See RS/6000 and PowerPC Options.
*** 1211,1217 ****
  -mavx256-split-unaligned-load  -mavx256-split-unaligned-store @gol
  -malign-data=@var{type}  -mstack-protector-guard=@var{guard} @gol
  -mmitigate-rop  -mgeneral-regs-only @gol
! -mindirect-branch=@var{choice} -mfunction-return==@var{choice} @gol
  -mindirect-branch-register}
  
  @emph{x86 Windows Options}
--- 1211,1217 ----
  -mavx256-split-unaligned-load  -mavx256-split-unaligned-store @gol
  -malign-data=@var{type}  -mstack-protector-guard=@var{guard} @gol
  -mmitigate-rop  -mgeneral-regs-only @gol
! -mindirect-branch=@var{choice} -mfunction-return=@var{choice} @gol
  -mindirect-branch-register}
  
  @emph{x86 Windows Options}
*************** precision would exceed @code{SIZE_MAX /
*** 5171,5176 ****
--- 5171,5179 ----
  may end in one of the standard suffixes designating a multiple of bytes
  such as @code{kB} and @code{KiB} for kilobyte and kibibyte, respectively,
  @code{MB} and @code{MiB} for megabyte and mebibyte, and so on.
+ @option{-Walloc-size-larger-than=}@var{PTRDIFF_MAX} is enabled by default.
+ Warnings controlled by the option can be disabled by specifying @var{n}
+ of @var{SIZE_MAX} or more.
  @xref{Function Attributes}.
  
  @item -Walloca
*************** This flag is enabled by default at @opti
*** 8132,8138 ****
  
  @item -fisolate-erroneous-paths-attribute
  @opindex fisolate-erroneous-paths-attribute
! Detect paths that trigger erroneous or undefined behavior due a null value
  being used in a way forbidden by a @code{returns_nonnull} or @code{nonnull}
  attribute.  Isolate those paths from the main control flow and turn the
  statement with erroneous or undefined behavior into a trap.  This is not
--- 8135,8141 ----
  
  @item -fisolate-erroneous-paths-attribute
  @opindex fisolate-erroneous-paths-attribute
! Detect paths that trigger erroneous or undefined behavior due to a null value
  being used in a way forbidden by a @code{returns_nonnull} or @code{nonnull}
  attribute.  Isolate those paths from the main control flow and turn the
  statement with erroneous or undefined behavior into a trap.  This is not
*************** Some assemblers only support this flag w
*** 8690,8695 ****
--- 8693,8699 ----
  in that case, it is rounded up.
  
  If @var{n} is not specified or is zero, use a machine-dependent default.
+ The maximum allowed @var{n} option value is 65536.
  
  Enabled at levels @option{-O2}, @option{-O3}.
  
*************** are greater than this value, then their
*** 8715,8720 ****
--- 8719,8725 ----
  
  If @var{n} is not specified or is zero, use a machine-dependent default
  which is very likely to be @samp{1}, meaning no alignment.
+ The maximum allowed @var{n} option value is 65536.
  
  Enabled at levels @option{-O2}, @option{-O3}.
  
*************** operations.
*** 8728,8733 ****
--- 8733,8739 ----
  
  @option{-fno-align-loops} and @option{-falign-loops=1} are
  equivalent and mean that loops are not aligned.
+ The maximum allowed @var{n} option value is 65536.
  
  If @var{n} is not specified or is zero, use a machine-dependent default.
  
*************** need be executed.
*** 8745,8750 ****
--- 8751,8757 ----
  equivalent and mean that loops are not aligned.
  
  If @var{n} is not specified or is zero, use a machine-dependent default.
+ The maximum allowed @var{n} option value is 65536.
  
  Enabled at levels @option{-O2}, @option{-O3}.
  
*************** of these is when the application wishes
*** 11684,11692 ****
  across different shared libraries.  In that case, each of the libraries
  as well as the application itself should use the shared @file{libgcc}.
  
! Therefore, the G++ and driver automatically adds @option{-shared-libgcc}
!  whenever you build a shared library or a main executable, because C++
!  programs typically use exceptions, so this is the right thing to do.
  
  If, instead, you use the GCC driver to create shared libraries, you may
  find that they are not always linked with the shared @file{libgcc}.
--- 11691,11699 ----
  across different shared libraries.  In that case, each of the libraries
  as well as the application itself should use the shared @file{libgcc}.
  
! Therefore, the G++ driver automatically adds @option{-shared-libgcc}
! whenever you build a shared library or a main executable, because C++
! programs typically use exceptions, so this is the right thing to do.
  
  If, instead, you use the GCC driver to create shared libraries, you may
  find that they are not always linked with the shared @file{libgcc}.
*************** propagate through such shared libraries,
*** 11700,11707 ****
  costs at library load time.
  
  However, if a library or main executable is supposed to throw or catch
! exceptions, you must link it using the G++ driver, as appropriate
! for the languages used in the program, or using the option
  @option{-shared-libgcc}, such that it is linked with the shared
  @file{libgcc}.
  
--- 11707,11713 ----
  costs at library load time.
  
  However, if a library or main executable is supposed to throw or catch
! exceptions, you must link it using the G++ driver, or using the option
  @option{-shared-libgcc}, such that it is linked with the shared
  @file{libgcc}.
  
*************** On embedded PowerPC systems, put all ini
*** 22070,22075 ****
--- 22076,22088 ----
  in the @code{.data} section, and all uninitialized data in the
  @code{.bss} section.
  
+ @item -mreadonly-in-sdata
+ @itemx -mreadonly-in-sdata
+ @opindex mreadonly-in-sdata
+ @opindex mno-readonly-in-sdata
+ Put read-only objects in the @code{.sdata} section as well.  This is the
+ default.
+ 
  @item -mblock-move-inline-limit=@var{num}
  @opindex mblock-move-inline-limit
  Inline all block moves (such as calls to @code{memcpy} or structure
*************** Generate code that runs on @var{cpu-type
*** 22689,22696 ****
  system representing a certain processor type.  Possible values for
  @var{cpu-type} are @samp{z900}/@samp{arch5}, @samp{z990}/@samp{arch6},
  @samp{z9-109}, @samp{z9-ec}/@samp{arch7}, @samp{z10}/@samp{arch8},
! @samp{z196}/@samp{arch9}, @samp{zEC12}, @samp{z13}/@samp{arch11}, and
! @samp{native}.
  
  The default is @option{-march=z900}.  @samp{g5}/@samp{arch3} and
  @samp{g6} are deprecated and will be removed with future releases.
--- 22702,22709 ----
  system representing a certain processor type.  Possible values for
  @var{cpu-type} are @samp{z900}/@samp{arch5}, @samp{z990}/@samp{arch6},
  @samp{z9-109}, @samp{z9-ec}/@samp{arch7}, @samp{z10}/@samp{arch8},
! @samp{z196}/@samp{arch9}, @samp{zEC12}, @samp{z13}/@samp{arch11},
! @samp{z14}/@samp{arch12}, and @samp{native}.
  
  The default is @option{-march=z900}.  @samp{g5}/@samp{arch3} and
  @samp{g6} are deprecated and will be removed with future releases.
*************** preferred alignment to @option{-mpreferr
*** 25091,25098 ****
  @itemx -mpclmul
  @opindex mpclmul
  @need 200
! @itemx -mclfushopt
! @opindex mclfushopt
  @need 200
  @itemx -mfsgsbase
  @opindex mfsgsbase
--- 25104,25111 ----
  @itemx -mpclmul
  @opindex mpclmul
  @need 200
! @itemx -mclflushopt
! @opindex mclflushopt
  @need 200
  @itemx -mfsgsbase
  @opindex mfsgsbase
diff -Nrcpad gcc-7.3.0/gcc/doc/rtl.texi gcc-7.4.0/gcc/doc/rtl.texi
*** gcc-7.3.0/gcc/doc/rtl.texi	Tue Mar 21 21:37:29 2017
--- gcc-7.4.0/gcc/doc/rtl.texi	Sat Feb 17 00:25:15 2018
*************** point values.  The floating point values
*** 1291,1300 ****
  @findex CDImode
  @findex CTImode
  @findex COImode
! @item CQImode, CHImode, CSImode, CDImode, CTImode, COImode
  These modes stand for a complex number represented as a pair of integer
  values.  The integer values are in @code{QImode}, @code{HImode},
! @code{SImode}, @code{DImode}, @code{TImode}, and @code{OImode},
  respectively.
  
  @findex BND32mode
--- 1291,1301 ----
  @findex CDImode
  @findex CTImode
  @findex COImode
! @findex CPSImode
! @item CQImode, CHImode, CSImode, CDImode, CTImode, COImode, CPSImode
  These modes stand for a complex number represented as a pair of integer
  values.  The integer values are in @code{QImode}, @code{HImode},
! @code{SImode}, @code{DImode}, @code{TImode}, @code{OImode}, and @code{PSImode},
  respectively.
  
  @findex BND32mode
diff -Nrcpad gcc-7.3.0/gcc/doc/tm.texi gcc-7.4.0/gcc/doc/tm.texi
*** gcc-7.3.0/gcc/doc/tm.texi	Tue Apr  4 17:52:27 2017
--- gcc-7.4.0/gcc/doc/tm.texi	Wed Jan 31 15:01:53 2018
*************** five otherwise.  This is best for most m
*** 10645,10652 ****
  
  @defmac WORD_REGISTER_OPERATIONS
  Define this macro to 1 if operations between registers with integral mode
! smaller than a word are always performed on the entire register.
! Most RISC machines have this property and most CISC machines do not.
  @end defmac
  
  @deftypefn {Target Hook} {unsigned int} TARGET_MIN_ARITHMETIC_PRECISION (void)
--- 10645,10656 ----
  
  @defmac WORD_REGISTER_OPERATIONS
  Define this macro to 1 if operations between registers with integral mode
! smaller than a word are always performed on the entire register.  To be
! more explicit, if you start with a pair of @code{word_mode} registers with
! known values and you do a subword, for example @code{QImode}, addition on
! the low part of the registers, then the compiler may consider that the
! result has a known value in @code{word_mode} too if the macro is defined
! to 1.  Most RISC machines have this property and most CISC machines do not.
  @end defmac
  
  @deftypefn {Target Hook} {unsigned int} TARGET_MIN_ARITHMETIC_PRECISION (void)
diff -Nrcpad gcc-7.3.0/gcc/doc/tm.texi.in gcc-7.4.0/gcc/doc/tm.texi.in
*** gcc-7.3.0/gcc/doc/tm.texi.in	Tue Apr  4 17:52:27 2017
--- gcc-7.4.0/gcc/doc/tm.texi.in	Wed Jan 31 15:01:53 2018
*************** is in effect.
*** 7581,7588 ****
  
  @defmac WORD_REGISTER_OPERATIONS
  Define this macro to 1 if operations between registers with integral mode
! smaller than a word are always performed on the entire register.
! Most RISC machines have this property and most CISC machines do not.
  @end defmac
  
  @hook TARGET_MIN_ARITHMETIC_PRECISION
--- 7581,7592 ----
  
  @defmac WORD_REGISTER_OPERATIONS
  Define this macro to 1 if operations between registers with integral mode
! smaller than a word are always performed on the entire register.  To be
! more explicit, if you start with a pair of @code{word_mode} registers with
! known values and you do a subword, for example @code{QImode}, addition on
! the low part of the registers, then the compiler may consider that the
! result has a known value in @code{word_mode} too if the macro is defined
! to 1.  Most RISC machines have this property and most CISC machines do not.
  @end defmac
  
  @hook TARGET_MIN_ARITHMETIC_PRECISION
diff -Nrcpad gcc-7.3.0/gcc/dse.c gcc-7.4.0/gcc/dse.c
*** gcc-7.3.0/gcc/dse.c	Wed Nov 22 09:04:47 2017
--- gcc-7.4.0/gcc/dse.c	Tue Nov 20 14:47:49 2018
*************** record_store (rtx body, bb_info_t bb_inf
*** 1342,1347 ****
--- 1342,1350 ----
    else
      width = GET_MODE_SIZE (GET_MODE (mem));
  
+   if (width == 0)
+     return 0;
+ 
    if (group_id >= 0)
      {
        /* In the restrictive case where the base is a constant or the
*************** record_store (rtx body, bb_info_t bb_inf
*** 1447,1453 ****
  	      && offset >= s_info->begin
  	      && offset + width <= s_info->end
  	      && all_positions_needed_p (s_info, offset - s_info->begin,
! 					 width))
  	    {
  	      if (GET_MODE (mem) == BLKmode)
  		{
--- 1450,1461 ----
  	      && offset >= s_info->begin
  	      && offset + width <= s_info->end
  	      && all_positions_needed_p (s_info, offset - s_info->begin,
! 					 width)
! 	      /* We can only remove the later store if the earlier aliases
! 		 at least all accesses the later one.  */
! 	      && (MEM_ALIAS_SET (mem) == MEM_ALIAS_SET (s_info->mem)
! 		  || alias_set_subset_of (MEM_ALIAS_SET (mem),
! 					  MEM_ALIAS_SET (s_info->mem))))
  	    {
  	      if (GET_MODE (mem) == BLKmode)
  		{
diff -Nrcpad gcc-7.3.0/gcc/dwarf2asm.c gcc-7.4.0/gcc/dwarf2asm.c
*** gcc-7.3.0/gcc/dwarf2asm.c	Fri Jul 28 13:25:40 2017
--- gcc-7.4.0/gcc/dwarf2asm.c	Fri Jun 22 20:51:42 2018
*************** along with GCC; see the file COPYING3.
*** 33,38 ****
--- 33,39 ----
  #include "dwarf2.h"
  #include "function.h"
  #include "emit-rtl.h"
+ #include "fold-const.h"
  
  #ifndef XCOFF_DEBUGGING_INFO
  #define XCOFF_DEBUGGING_INFO 0
*************** dw2_output_indirect_constant_1 (const ch
*** 925,931 ****
    SET_DECL_ASSEMBLER_NAME (decl, id);
    DECL_ARTIFICIAL (decl) = 1;
    DECL_IGNORED_P (decl) = 1;
!   DECL_INITIAL (decl) = decl;
    TREE_READONLY (decl) = 1;
    TREE_STATIC (decl) = 1;
  
--- 926,932 ----
    SET_DECL_ASSEMBLER_NAME (decl, id);
    DECL_ARTIFICIAL (decl) = 1;
    DECL_IGNORED_P (decl) = 1;
!   DECL_INITIAL (decl) = build_fold_addr_expr (decl);
    TREE_READONLY (decl) = 1;
    TREE_STATIC (decl) = 1;
  
*************** dw2_output_indirect_constant_1 (const ch
*** 938,945 ****
--- 939,961 ----
      }
  
    sym_ref = gen_rtx_SYMBOL_REF (Pmode, sym);
+   /* Disable ASan for decl because redzones cause ABI breakage between GCC and
+      libstdc++ for `.LDFCM*' variables.  See PR 78651 for details.  */
+   unsigned int save_flag_sanitize = flag_sanitize;
+   flag_sanitize &= ~(SANITIZE_ADDRESS | SANITIZE_USER_ADDRESS
+ 		     | SANITIZE_KERNEL_ADDRESS);
+   /* And also temporarily disable -fsection-anchors.  These indirect constants
+      are never referenced from code, so it doesn't make any sense to aggregate
+      them in blocks.  */
+   int save_flag_section_anchors = flag_section_anchors;
+   flag_section_anchors = 0;
    assemble_variable (decl, 1, 1, 1);
+   flag_section_anchors = save_flag_section_anchors;
+   flag_sanitize = save_flag_sanitize;
    assemble_integer (sym_ref, POINTER_SIZE_UNITS, POINTER_SIZE, 1);
+   /* The following is a hack recognized by use_blocks_for_decl_p to disable
+      section anchor handling of the decl.  */
+   DECL_INITIAL (decl) = decl;
  
    return 0;
  }
diff -Nrcpad gcc-7.3.0/gcc/dwarf2out.c gcc-7.4.0/gcc/dwarf2out.c
*** gcc-7.3.0/gcc/dwarf2out.c	Wed Nov 15 11:54:11 2017
--- gcc-7.4.0/gcc/dwarf2out.c	Mon Nov 26 19:49:19 2018
*************** static unsigned int rnglist_idx;
*** 297,302 ****
--- 297,306 ----
  #define FUNC_BEGIN_LABEL	"LFB"
  #endif
  
+ #ifndef FUNC_SECOND_SECT_LABEL
+ #define FUNC_SECOND_SECT_LABEL	"LFSB"
+ #endif
+ 
  #ifndef FUNC_END_LABEL
  #define FUNC_END_LABEL		"LFE"
  #endif
*************** static void set_cur_line_info_table (sec
*** 1200,1220 ****
  void
  dwarf2out_switch_text_section (void)
  {
    section *sect;
    dw_fde_ref fde = cfun->fde;
  
    gcc_assert (cfun && fde && fde->dw_fde_second_begin == NULL);
  
    if (!in_cold_section_p)
      {
        fde->dw_fde_end = crtl->subsections.cold_section_end_label;
-       fde->dw_fde_second_begin = crtl->subsections.hot_section_label;
        fde->dw_fde_second_end = crtl->subsections.hot_section_end_label;
      }
    else
      {
        fde->dw_fde_end = crtl->subsections.hot_section_end_label;
-       fde->dw_fde_second_begin = crtl->subsections.cold_section_label;
        fde->dw_fde_second_end = crtl->subsections.cold_section_end_label;
      }
    have_multiple_function_sections = true;
--- 1204,1227 ----
  void
  dwarf2out_switch_text_section (void)
  {
+   char label[MAX_ARTIFICIAL_LABEL_BYTES];
    section *sect;
    dw_fde_ref fde = cfun->fde;
  
    gcc_assert (cfun && fde && fde->dw_fde_second_begin == NULL);
  
+   ASM_GENERATE_INTERNAL_LABEL (label, FUNC_SECOND_SECT_LABEL,
+ 			       current_function_funcdef_no);
+ 
+   fde->dw_fde_second_begin = ggc_strdup (label);
    if (!in_cold_section_p)
      {
        fde->dw_fde_end = crtl->subsections.cold_section_end_label;
        fde->dw_fde_second_end = crtl->subsections.hot_section_end_label;
      }
    else
      {
        fde->dw_fde_end = crtl->subsections.hot_section_end_label;
        fde->dw_fde_second_end = crtl->subsections.cold_section_end_label;
      }
    have_multiple_function_sections = true;
*************** rtl_for_decl_init (tree init, tree type)
*** 18749,18754 ****
--- 18756,18763 ----
  
        if (GET_MODE_CLASS (mode) == MODE_INT && GET_MODE_SIZE (mode) == 1
  	  && domain
+ 	  && TYPE_MAX_VALUE (domain)
+ 	  && TREE_CODE (TYPE_MAX_VALUE (domain)) == INTEGER_CST
  	  && integer_zerop (TYPE_MIN_VALUE (domain))
  	  && compare_tree_int (TYPE_MAX_VALUE (domain),
  			       TREE_STRING_LENGTH (init) - 1) == 0
*************** dwarf2out_finish (const char *)
*** 29720,29725 ****
--- 29729,29736 ----
      FOR_EACH_CHILD (die, c, gcc_assert (! c->die_mark));
    }
  #endif
+   for (ctnode = comdat_type_list; ctnode != NULL; ctnode = ctnode->next)
+     resolve_addr (ctnode->root_die);
    resolve_addr (comp_unit_die ());
    move_marked_base_types ();
  
diff -Nrcpad gcc-7.3.0/gcc/emit-rtl.c gcc-7.4.0/gcc/emit-rtl.c
*** gcc-7.3.0/gcc/emit-rtl.c	Thu Feb  2 12:39:09 2017
--- gcc-7.4.0/gcc/emit-rtl.c	Fri Jun 22 20:58:44 2018
*************** init_emit_regs (void)
*** 5851,5857 ****
        attrs = ggc_cleared_alloc<mem_attrs> ();
        attrs->align = BITS_PER_UNIT;
        attrs->addrspace = ADDR_SPACE_GENERIC;
!       if (mode != BLKmode)
  	{
  	  attrs->size_known_p = true;
  	  attrs->size = GET_MODE_SIZE (mode);
--- 5851,5857 ----
        attrs = ggc_cleared_alloc<mem_attrs> ();
        attrs->align = BITS_PER_UNIT;
        attrs->addrspace = ADDR_SPACE_GENERIC;
!       if (mode != BLKmode && mode != VOIDmode)
  	{
  	  attrs->size_known_p = true;
  	  attrs->size = GET_MODE_SIZE (mode);
diff -Nrcpad gcc-7.3.0/gcc/expmed.c gcc-7.4.0/gcc/expmed.c
*** gcc-7.3.0/gcc/expmed.c	Mon Jan  1 11:27:17 2018
--- gcc-7.4.0/gcc/expmed.c	Fri Oct 12 14:53:11 2018
*************** expand_divmod (int rem_flag, enum tree_c
*** 4314,4319 ****
--- 4314,4324 ----
  		HOST_WIDE_INT d = INTVAL (op1);
  		unsigned HOST_WIDE_INT abs_d;
  
+ 		/* Not prepared to handle division/remainder by
+ 		   0xffffffffffffffff8000000000000000 etc.  */
+ 		if (d == HOST_WIDE_INT_MIN && size > HOST_BITS_PER_WIDE_INT)
+ 		  break;
+ 
  		/* Since d might be INT_MIN, we have to cast to
  		   unsigned HOST_WIDE_INT before negating to avoid
  		   undefined signed overflow.  */
*************** expand_divmod (int rem_flag, enum tree_c
*** 4357,4365 ****
  						compute_mode)
  				 != CODE_FOR_nothing)))
  		  ;
! 		else if (EXACT_POWER_OF_2_OR_ZERO_P (abs_d)
! 			 && (size <= HOST_BITS_PER_WIDE_INT
! 			     || abs_d != (unsigned HOST_WIDE_INT) d))
  		  {
  		    if (rem_flag)
  		      {
--- 4362,4368 ----
  						compute_mode)
  				 != CODE_FOR_nothing)))
  		  ;
! 		else if (EXACT_POWER_OF_2_OR_ZERO_P (abs_d))
  		  {
  		    if (rem_flag)
  		      {
*************** emit_store_flag_force (rtx target, enum
*** 5886,5891 ****
--- 5889,5906 ----
    if (tem != 0)
      return tem;
  
+   /* If one operand is constant, make it the second one.  Only do this
+      if the other operand is not constant as well.  */
+ 
+   if (swap_commutative_operands_p (op0, op1))
+     {
+       std::swap (op0, op1);
+       code = swap_condition (code);
+     }
+ 
+   if (mode == VOIDmode)
+     mode = GET_MODE (op0);
+ 
    if (!target)
      target = gen_reg_rtx (word_mode);
  
diff -Nrcpad gcc-7.3.0/gcc/expr.c gcc-7.4.0/gcc/expr.c
*** gcc-7.3.0/gcc/expr.c	Mon Jan  1 11:30:28 2018
--- gcc-7.4.0/gcc/expr.c	Fri Jun 22 21:30:06 2018
*************** expand_assignment (tree to, tree from, b
*** 5109,5115 ****
  	      && bitpos == 0
  	      && bitsize == mode_bitsize)
  	    result = store_expr (from, to_rtx, false, nontemporal, reversep);
! 	  else if (bitsize == mode_bitsize / 2
  		   && (bitpos == 0 || bitpos == mode_bitsize / 2))
  	    result = store_expr (from, XEXP (to_rtx, bitpos != 0), false,
  				 nontemporal, reversep);
--- 5109,5118 ----
  	      && bitpos == 0
  	      && bitsize == mode_bitsize)
  	    result = store_expr (from, to_rtx, false, nontemporal, reversep);
! 	  else if (COMPLEX_MODE_P (GET_MODE (to_rtx))
! 		   && (TYPE_MODE (TREE_TYPE (from))
! 		       == GET_MODE_INNER (GET_MODE (to_rtx)))
! 		   && bitsize == mode_bitsize / 2
  		   && (bitpos == 0 || bitpos == mode_bitsize / 2))
  	    result = store_expr (from, XEXP (to_rtx, bitpos != 0), false,
  				 nontemporal, reversep);
*************** store_field (rtx target, HOST_WIDE_INT b
*** 6893,6900 ****
        if (GET_CODE (temp) == PARALLEL)
  	{
  	  HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp));
! 	  machine_mode temp_mode
! 	    = smallest_mode_for_size (size * BITS_PER_UNIT, MODE_INT);
  	  rtx temp_target = gen_reg_rtx (temp_mode);
  	  emit_group_store (temp_target, temp, TREE_TYPE (exp), size);
  	  temp = temp_target;
--- 6896,6904 ----
        if (GET_CODE (temp) == PARALLEL)
  	{
  	  HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp));
! 	  machine_mode temp_mode = GET_MODE (temp);
! 	  if (temp_mode == BLKmode || temp_mode == VOIDmode)
! 	    temp_mode = smallest_mode_for_size (size * BITS_PER_UNIT, MODE_INT);
  	  rtx temp_target = gen_reg_rtx (temp_mode);
  	  emit_group_store (temp_target, temp, TREE_TYPE (exp), size);
  	  temp = temp_target;
*************** expand_expr_real_1 (tree exp, rtx target
*** 10862,10879 ****
  	tree fndecl = get_callee_fndecl (exp), attr;
  
  	if (fndecl
  	    && (attr = lookup_attribute ("error",
  					 DECL_ATTRIBUTES (fndecl))) != NULL)
! 	  error ("%Kcall to %qs declared with attribute error: %s",
! 		 exp, identifier_to_locale (lang_hooks.decl_printable_name (fndecl, 1)),
! 		 TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr))));
  	if (fndecl
  	    && (attr = lookup_attribute ("warning",
  					 DECL_ATTRIBUTES (fndecl))) != NULL)
! 	  warning_at (tree_nonartificial_location (exp),
! 		      0, "%Kcall to %qs declared with attribute warning: %s",
! 		      exp, identifier_to_locale (lang_hooks.decl_printable_name (fndecl, 1)),
! 		      TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr))));
  
  	/* Check for a built-in function.  */
  	if (fndecl && DECL_BUILT_IN (fndecl))
--- 10866,10895 ----
  	tree fndecl = get_callee_fndecl (exp), attr;
  
  	if (fndecl
+ 	    /* Don't diagnose the error attribute in thunks, those are
+ 	       artificially created.  */
+ 	    && !CALL_FROM_THUNK_P (exp)
  	    && (attr = lookup_attribute ("error",
  					 DECL_ATTRIBUTES (fndecl))) != NULL)
! 	  {
! 	    const char *ident = lang_hooks.decl_printable_name (fndecl, 1);
! 	    error ("%Kcall to %qs declared with attribute error: %s", exp,
! 		   identifier_to_locale (ident),
! 		   TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr))));
! 	  }
  	if (fndecl
+ 	    /* Don't diagnose the warning attribute in thunks, those are
+ 	       artificially created.  */
+ 	    && !CALL_FROM_THUNK_P (exp)
  	    && (attr = lookup_attribute ("warning",
  					 DECL_ATTRIBUTES (fndecl))) != NULL)
! 	  {
! 	    const char *ident = lang_hooks.decl_printable_name (fndecl, 1);
! 	    warning_at (tree_nonartificial_location (exp), 0,
! 			"%Kcall to %qs declared with attribute warning: %s",
! 			exp, identifier_to_locale (ident),
! 			TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr))));
! 	  }
  
  	/* Check for a built-in function.  */
  	if (fndecl && DECL_BUILT_IN (fndecl))
diff -Nrcpad gcc-7.3.0/gcc/final.c gcc-7.4.0/gcc/final.c
*** gcc-7.3.0/gcc/final.c	Sat Feb 18 16:11:40 2017
--- gcc-7.4.0/gcc/final.c	Mon Nov 26 19:49:19 2018
*************** shorten_branches (rtx_insn *first)
*** 906,912 ****
    char *varying_length;
    rtx body;
    int uid;
!   rtx align_tab[MAX_CODE_ALIGN];
  
    /* Compute maximum UID and allocate label_align / uid_shuid.  */
    max_uid = get_max_uid ();
--- 906,912 ----
    char *varying_length;
    rtx body;
    int uid;
!   rtx align_tab[MAX_CODE_ALIGN + 1];
  
    /* Compute maximum UID and allocate label_align / uid_shuid.  */
    max_uid = get_max_uid ();
*************** shorten_branches (rtx_insn *first)
*** 1015,1021 ****
       alignment of n.  */
    uid_align = XCNEWVEC (rtx, max_uid);
  
!   for (i = MAX_CODE_ALIGN; --i >= 0;)
      align_tab[i] = NULL_RTX;
    seq = get_last_insn ();
    for (; seq; seq = PREV_INSN (seq))
--- 1015,1021 ----
       alignment of n.  */
    uid_align = XCNEWVEC (rtx, max_uid);
  
!   for (i = MAX_CODE_ALIGN + 1; --i >= 0;)
      align_tab[i] = NULL_RTX;
    seq = get_last_insn ();
    for (; seq; seq = PREV_INSN (seq))
*************** final_scan_insn (rtx_insn *insn, FILE *f
*** 2232,2237 ****
--- 2232,2240 ----
  	      ASM_OUTPUT_LABEL (asm_out_file,
  				IDENTIFIER_POINTER (cold_function_name));
  #endif
+ 	      if (dwarf2out_do_frame ()
+ 	          && cfun->fde->dw_fde_second_begin != NULL)
+ 		ASM_OUTPUT_LABEL (asm_out_file, cfun->fde->dw_fde_second_begin);
  	    }
  	  break;
  
diff -Nrcpad gcc-7.3.0/gcc/fold-const.c gcc-7.4.0/gcc/fold-const.c
*** gcc-7.3.0/gcc/fold-const.c	Sat Dec 23 08:43:10 2017
--- gcc-7.4.0/gcc/fold-const.c	Wed Oct 17 17:53:02 2018
*************** negate_expr_p (tree t)
*** 473,484 ****
      case EXACT_DIV_EXPR:
        if (TYPE_UNSIGNED (type))
  	break;
!       if (negate_expr_p (TREE_OPERAND (t, 0)))
  	return true;
        /* In general we can't negate B in A / B, because if A is INT_MIN and
  	 B is 1, we may turn this into INT_MIN / -1 which is undefined
  	 and actually traps on some architectures.  */
!       if (! INTEGRAL_TYPE_P (TREE_TYPE (t))
  	  || TYPE_OVERFLOW_WRAPS (TREE_TYPE (t))
  	  || (TREE_CODE (TREE_OPERAND (t, 1)) == INTEGER_CST
  	      && ! integer_onep (TREE_OPERAND (t, 1))))
--- 473,487 ----
      case EXACT_DIV_EXPR:
        if (TYPE_UNSIGNED (type))
  	break;
!       /* In general we can't negate A in A / B, because if A is INT_MIN and
!          B is not 1 we change the sign of the result.  */
!       if (TREE_CODE (TREE_OPERAND (t, 0)) == INTEGER_CST
! 	  && negate_expr_p (TREE_OPERAND (t, 0)))
  	return true;
        /* In general we can't negate B in A / B, because if A is INT_MIN and
  	 B is 1, we may turn this into INT_MIN / -1 which is undefined
  	 and actually traps on some architectures.  */
!       if (! ANY_INTEGRAL_TYPE_P (TREE_TYPE (t))
  	  || TYPE_OVERFLOW_WRAPS (TREE_TYPE (t))
  	  || (TREE_CODE (TREE_OPERAND (t, 1)) == INTEGER_CST
  	      && ! integer_onep (TREE_OPERAND (t, 1))))
*************** fold_negate_expr_1 (location_t loc, tree
*** 652,665 ****
      case EXACT_DIV_EXPR:
        if (TYPE_UNSIGNED (type))
  	break;
!       if (negate_expr_p (TREE_OPERAND (t, 0)))
  	return fold_build2_loc (loc, TREE_CODE (t), type,
  				negate_expr (TREE_OPERAND (t, 0)),
  				TREE_OPERAND (t, 1));
        /* In general we can't negate B in A / B, because if A is INT_MIN and
  	 B is 1, we may turn this into INT_MIN / -1 which is undefined
  	 and actually traps on some architectures.  */
!       if ((! INTEGRAL_TYPE_P (TREE_TYPE (t))
  	   || TYPE_OVERFLOW_WRAPS (TREE_TYPE (t))
  	   || (TREE_CODE (TREE_OPERAND (t, 1)) == INTEGER_CST
  	       && ! integer_onep (TREE_OPERAND (t, 1))))
--- 655,671 ----
      case EXACT_DIV_EXPR:
        if (TYPE_UNSIGNED (type))
  	break;
!       /* In general we can't negate A in A / B, because if A is INT_MIN and
! 	 B is not 1 we change the sign of the result.  */
!       if (TREE_CODE (TREE_OPERAND (t, 0)) == INTEGER_CST
! 	  && negate_expr_p (TREE_OPERAND (t, 0)))
  	return fold_build2_loc (loc, TREE_CODE (t), type,
  				negate_expr (TREE_OPERAND (t, 0)),
  				TREE_OPERAND (t, 1));
        /* In general we can't negate B in A / B, because if A is INT_MIN and
  	 B is 1, we may turn this into INT_MIN / -1 which is undefined
  	 and actually traps on some architectures.  */
!       if ((! ANY_INTEGRAL_TYPE_P (TREE_TYPE (t))
  	   || TYPE_OVERFLOW_WRAPS (TREE_TYPE (t))
  	   || (TREE_CODE (TREE_OPERAND (t, 1)) == INTEGER_CST
  	       && ! integer_onep (TREE_OPERAND (t, 1))))
*************** fold_truth_andor_1 (location_t loc, enum
*** 5816,5827 ****
      }
  
    /* If the right sides are not constant, do the same for it.  Also,
!      disallow this optimization if a size or signedness mismatch occurs
!      between the left and right sides.  */
    if (l_const == 0)
      {
        if (ll_bitsize != lr_bitsize || rl_bitsize != rr_bitsize
  	  || ll_unsignedp != lr_unsignedp || rl_unsignedp != rr_unsignedp
  	  /* Make sure the two fields on the right
  	     correspond to the left without being swapped.  */
  	  || ll_bitpos - rl_bitpos != lr_bitpos - rr_bitpos)
--- 5822,5834 ----
      }
  
    /* If the right sides are not constant, do the same for it.  Also,
!      disallow this optimization if a size, signedness or storage order
!      mismatch occurs between the left and right sides.  */
    if (l_const == 0)
      {
        if (ll_bitsize != lr_bitsize || rl_bitsize != rr_bitsize
  	  || ll_unsignedp != lr_unsignedp || rl_unsignedp != rr_unsignedp
+ 	  || ll_reversep != lr_reversep
  	  /* Make sure the two fields on the right
  	     correspond to the left without being swapped.  */
  	  || ll_bitpos - rl_bitpos != lr_bitpos - rr_bitpos)
*************** native_encode_vector (const_tree expr, u
*** 7199,7205 ****
  	return 0;
        offset += res;
        if (offset >= len)
! 	return offset;
        if (off != -1)
  	off = 0;
      }
--- 7206,7212 ----
  	return 0;
        offset += res;
        if (offset >= len)
! 	return (off == -1 && i < count - 1) ? 0 : offset;
        if (off != -1)
  	off = 0;
      }
*************** fold_ternary_loc (location_t loc, enum t
*** 11583,11592 ****
  	  && integer_pow2p (arg1)
  	  && TREE_CODE (TREE_OPERAND (arg0, 0)) == BIT_AND_EXPR
  	  && operand_equal_p (TREE_OPERAND (TREE_OPERAND (arg0, 0), 1),
! 			      arg1, OEP_ONLY_CONST))
  	return pedantic_non_lvalue_loc (loc,
! 				    fold_convert_loc (loc, type,
! 						      TREE_OPERAND (arg0, 0)));
  
        /* Disable the transformations below for vectors, since
  	 fold_binary_op_with_conditional_arg may undo them immediately,
--- 11590,11605 ----
  	  && integer_pow2p (arg1)
  	  && TREE_CODE (TREE_OPERAND (arg0, 0)) == BIT_AND_EXPR
  	  && operand_equal_p (TREE_OPERAND (TREE_OPERAND (arg0, 0), 1),
! 			      arg1, OEP_ONLY_CONST)
! 	  /* operand_equal_p compares just value, not precision, so e.g.
! 	     arg1 could be 8-bit -128 and be power of two, but BIT_AND_EXPR
! 	     second operand 32-bit -128, which is not a power of two (or vice
! 	     versa.  */
! 	  && integer_pow2p (TREE_OPERAND (TREE_OPERAND (arg0, 0), 1)))
  	return pedantic_non_lvalue_loc (loc,
! 					fold_convert_loc (loc, type,
! 							  TREE_OPERAND (arg0,
! 									0)));
  
        /* Disable the transformations below for vectors, since
  	 fold_binary_op_with_conditional_arg may undo them immediately,
*************** fold_indirect_ref_1 (location_t loc, tre
*** 14082,14087 ****
--- 14095,14101 ----
      {
        tree op = TREE_OPERAND (sub, 0);
        tree optype = TREE_TYPE (op);
+ 
        /* *&CONST_DECL -> to the value of the const decl.  */
        if (TREE_CODE (op) == CONST_DECL)
  	return DECL_INITIAL (op);
*************** fold_indirect_ref_1 (location_t loc, tre
*** 14115,14126 ****
  	       && type == TREE_TYPE (optype))
  	return fold_build1_loc (loc, REALPART_EXPR, type, op);
        /* *(foo *)&vectorfoo => BIT_FIELD_REF<vectorfoo,...> */
!       else if (TREE_CODE (optype) == VECTOR_TYPE
  	       && type == TREE_TYPE (optype))
  	{
  	  tree part_width = TYPE_SIZE (type);
  	  tree index = bitsize_int (0);
! 	  return fold_build3_loc (loc, BIT_FIELD_REF, type, op, part_width, index);
  	}
      }
  
--- 14129,14141 ----
  	       && type == TREE_TYPE (optype))
  	return fold_build1_loc (loc, REALPART_EXPR, type, op);
        /* *(foo *)&vectorfoo => BIT_FIELD_REF<vectorfoo,...> */
!       else if (VECTOR_TYPE_P (optype)
  	       && type == TREE_TYPE (optype))
  	{
  	  tree part_width = TYPE_SIZE (type);
  	  tree index = bitsize_int (0);
! 	  return fold_build3_loc (loc, BIT_FIELD_REF, type, op, part_width,
! 				  index);
  	}
      }
  
*************** fold_indirect_ref_1 (location_t loc, tre
*** 14138,14145 ****
  	  op00type = TREE_TYPE (op00);
  
  	  /* ((foo*)&vectorfoo)[1] => BIT_FIELD_REF<vectorfoo,...> */
! 	  if (TREE_CODE (op00type) == VECTOR_TYPE
! 	      && type == TREE_TYPE (op00type))
  	    {
  	      tree part_width = TYPE_SIZE (type);
  	      unsigned HOST_WIDE_INT max_offset
--- 14153,14169 ----
  	  op00type = TREE_TYPE (op00);
  
  	  /* ((foo*)&vectorfoo)[1] => BIT_FIELD_REF<vectorfoo,...> */
! 	  if (VECTOR_TYPE_P (op00type)
! 	      && type == TREE_TYPE (op00type)
! 	      /* POINTER_PLUS_EXPR second operand is sizetype, unsigned,
! 		 but we want to treat offsets with MSB set as negative.
! 		 For the code below negative offsets are invalid and
! 		 TYPE_SIZE of the element is something unsigned, so
! 		 check whether op01 fits into HOST_WIDE_INT, which
! 		 implies it is from 0 to INTTYPE_MAXIMUM (HOST_WIDE_INT), and
! 		 then just use unsigned HOST_WIDE_INT because we want to treat
! 		 the value as unsigned.  */
! 	      && tree_fits_shwi_p (op01))
  	    {
  	      tree part_width = TYPE_SIZE (type);
  	      unsigned HOST_WIDE_INT max_offset
diff -Nrcpad gcc-7.3.0/gcc/fortran/ChangeLog gcc-7.4.0/gcc/fortran/ChangeLog
*** gcc-7.3.0/gcc/fortran/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/fortran/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,579 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-11-25  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/88073
+ 	* frontend-passes.c (combine_array_constructor): Do not do
+ 	anything if in a WHERE statement.
+ 
+ 2018-11-24  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	PR fortran/88143
+ 	* resolve.c (resolve_variable): Check for associate names with
+ 	NULL target.
+ 
+ 2019-11-03  Tobias Burnus  <burnus@net-b.de>
+ 	Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/87597
+ 	* expr.c (gfc_simplify_expr): Avoid simplifying
+ 	the 'array' argument to lbound/ubound/lcobound/
+ 	ucobound.
+ 
+ 2018-10-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-07-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/86421
+ 	* module.c (omp_declare_simd_clauses): Add LINEAR with _REF, _VAL and
+ 	_UVAL suffixes.
+ 	(mio_omp_declare_simd): Save and restore ref, val and uval modifiers
+ 	on linear clauses.  Initialize n->where to gfc_current_locus.
+ 
+ 2018-09-13  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from trunk
+ 	PR fortran/87284
+ 	* trans-expr.c (gfc_trans_class_init_assign): Access to
+ 	to array elements of the dynamic type requires that the array
+ 	reference be added to the class expression and not the _data
+ 	component, unlike scalar expressions.
+ 
+ 2018-09-07  Janus Weil  <janus@gcc.gnu.org>
+ 
+ 	Backported from trunk
+ 	PR fortran/86116
+ 	* interface.c (compare_type): Remove a CLASS/TYPE check.
+ 	(compare_type_characteristics): New function that behaves like the old
+ 	'compare_type'.
+ 	(gfc_check_dummy_characteristics, gfc_check_result_characteristics):
+ 	Call 'compare_type_characteristics' instead of 'compare_type'.
+ 
+ 2018-07-16  Fritz Reese  <fritzoreese@gmail.com>
+ 
+ 	PR fortran/83184
+ 	Backport from trunk.
+ 	* decl.c (match_old_style_init): Initialize locus of variable expr when
+ 	creating a data variable.
+ 	(match_clist_expr): Verify array is explicit shape/size before
+ 	attempting to allocate constant array constructor.
+ 
+ 2018-07-16  Fritz Reese  <fritzoreese@gmail.com>
+ 
+ 	Backport from trunk:
+ 
+ 	PR fortran/86417
+ 	* module.c (mio_component): Set component->loc when loading from module.
+ 
+ 	PR fortran/83183
+ 	PR fortran/86325
+ 	* expr.c (class_allocatable, class_pointer, comp_allocatable,
+ 	comp_pointer): New helpers.
+ 	(component_initializer): Generate EXPR_NULL for allocatable or pointer
+ 	components. Do not generate initializers for components within BT_CLASS.
+ 	Do not assign to comp->initializer.
+ 	(gfc_generate_initializer): Use new helpers; move code to generate
+ 	EXPR_NULL for class allocatable components into component_initializer().
+ 
+ 2018-07-03  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/82969
+ 	PR fortran/86242
+ 	* trans-array.c (structure_alloc_comps): Do not explicitly copy
+ 	procedure pointer components.
+ 
+ 2018-06-25  Fritz Reese  <fritzoreese@gmail.com>
+ 
+ 	PR fortran/82972
+ 	PR fortran/83088
+ 	PR fortran/85851
+ 	Backport from trunk.
+ 	* expr.c (component_initializer): Assign init expr to c->initializer.
+ 	(generate_isocbinding_initializer): New.
+ 	(gfc_generate_initializer): Call generate_isocbinding_initializer to
+ 	generate initializers for c_ptr and c_funptr with -finit-derived.
+ 
+ 2018-06-25  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/83118
+ 	Back port from trunk
+ 	* resolve.c (resolve_ordinary_assign): Force the creation of a
+ 	vtable for assignment of non-polymorphic expressions to an
+ 	unlimited polymorphic object.
+ 	* trans-array.c (gfc_alloc_allocatable_for_assignment): Use the
+ 	size of the rhs type for such assignments. Set the dtype, _len
+ 	and vptrs appropriately.
+ 	* trans-expr.c (gfc_trans_assignment): Force the use of the
+ 	_copy function for these assignments.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/85313
+ 	* openmp.c (resolve_omp_do): Remove bogus if (j < i) break;.
+ 	(resolve_oacc_nested_loops): Likewise.  Formatting fix.
+ 
+ 2018-06-13  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/86110
+ 	* array.c (gfc_resolve_character_array_constructor): Avoid NULL
+ 	pointer dereference.
+ 
+ 2018-06-12  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/44491
+ 	* expr.c (gfc_check_assign): Select non-NULL locus.
+ 
+ 2018-06-09  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/38351
+ 	* resolve.c (resolve_operator): Provide better error message for
+ 	derived type entity used in an binary intrinsic numeric operator.
+ 
+ 2018-06-09  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/63514
+ 	* symbol.c (gfc_add_volatile): Enforce F2008:C1282 and F2018:C1588.
+ 
+ 2018-06-09  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/78278
+ 	* data.c (gfc_assign_data_value): Re-arrange code to allow for
+ 	an error for double initialization of CHARACTER entities.
+ 
+ 2018-06-09  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/86059
+ 	* array.c (match_array_cons_element): NULL() cannot be in an
+ 	array constructor.
+ 
+ 2018-06-09  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85138
+ 	PR fortran/85996
+ 	PR fortran/86051
+ 	* decl.c (gfc_match_char_spec): Use private namespace in attempt to
+ 	reduce a charlen to a constant.
+ 
+ 2018-06-07  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/86045
+ 	Backport from trunk.
+ 	* simplify.c (gfc_simplify_mod): Re-arrange code to test whether
+ 	'P' is zero and issue an error if it is.
+ 
+ 2018-06-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/85641
+ 	Backport from trunk.
+ 	* frontend-passes.c (is_fe_temp): Add prototype.
+ 	(realloc_string_callback): Early return for frontend-generated
+ 	temporary.
+ 
+ 2018-06-04  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85981
+ 	* resolve.c (resolve_allocate_deallocate): Check errmsg is default
+ 	character kind.
+ 
+ 2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85543
+ 	Backport from trunk
+ 	* resolve.c (update_current_proc_array_outer_dependency): Avoid NULL
+ 	pointer dereference.
+ 
+ 2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85779
+ 	Backport from trunk
+ 	* decl.c (gfc_match_derived_decl): Fix NULL point dereference.
+ 
+ 2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85780
+ 	Backport from trunk
+ 	* resolve.c (resolve_fl_procedure): Avoid NULL dereference.
+ 
+ 2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85895
+ 	Backport from trunk
+ 	* resolve.c (resolve_sync): Resolve expression before checking for
+ 	an error.
+ 
+ 2018-05-20  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/80657
+ 	Backport from trunk
+ 	* resolve.c (flag_fn_result_spec): Use the 'sym' argument to
+ 	test for self refs to the function result in the character len
+ 	expression. If a self reference is found, emit an error and
+ 	return true.
+ 	(resolve_fntype): Use the function symbol in the calls to the
+ 	above.
+ 
+ 2018-05-20  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/82275
+ 	Backport from trunk
+ 	* match.c (gfc_match_type_spec): Go through the array ref and
+ 	decrement 'rank' for every dimension that is an element.
+ 
+ 2018-05-19  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/82923
+ 	PR fortran/66694
+ 	PR fortran/82617
+ 	Backport from trunk
+ 	* trans-array.c (gfc_alloc_allocatable_for_assignment): Set the
+ 	charlen backend_decl of the rhs expr to ss->info->string_length
+ 	so that the value in the current scope is used.
+ 
+ 2018-05-16  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/83149
+ 	Backport from trunk
+ 	* trans-decl.c (gfc_finish_var_decl): Test sym->ns->proc_name
+ 	before accessing its components.
+ 	* trans-types.c (gfc_sym_type): If a character result has null
+ 	backend_decl, try the procedure symbol..
+ 
+ 2018-16-05  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/83898
+ 	Backport from trunk
+ 	* trans-stmt.c (trans_associate_var): Do not set cst_array_ctor
+ 	for characters.
+ 
+ 2018-05-16  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/84546
+ 	Backport from trunk
+ 	* trans-array.c (structure_alloc_comps): Make sure that the
+ 	vptr is copied and that the unlimited polymorphic _len is used
+ 	to compute the size to be allocated.
+ 	(build_array_ref): Set the 'unlimited' argument false in the
+ 	call to gfc_get_class_array_ref.
+ 	* trans-expr.c (gfc_get_class_array_ref): If unlimited, use the
+ 	unlimited polymorphic _len for the offset to the element.
+ 	(gfc_copy_class_to_class): Set the new 'unlimited' argument.
+ 	* trans.h : Add the boolean 'unlimited' to the prototype.
+ 
+ 2018-05-12  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85542
+ 	Backport from trunk
+ 	* expr.c (check_inquiry): Avoid NULL pointer dereference.
+ 
+ 2018-05-12  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/68846
+ 	PR fortran/70864
+ 	Backport from trunk
+ 	* resolve.c (get_temp_from_expr): The temporary must not have
+ 	dummy or intent attributes.
+ 
+ 2018-05-11  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/70870
+ 	Backport from trunk
+ 	* data.c (gfc_assign_data_value): Check that a data object does
+ 	not also have default initialization.
+ 
+ 2018-05-11  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85521
+ 	Backport from trunk
+ 	* array.c (gfc_resolve_character_array_constructor): Substrings
+ 	with upper bound smaller than lower bound are zero length strings.
+ 
+ 2018-05-11  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85687
+ 	Backport from trunk
+ 	* check.c (gfc_check_rank): Check that the argument is a data object.
+ 
+ 2018-05-06  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/85507
+ 	Backport from trunk.
+ 	* dependency.c (gfc_dep_resolver): Revert looking at coarray dimension
+ 	introduced by r259385.
+ 	* trans-intrinsic.c (conv_caf_send): Always report a dependency for
+ 	same variables in coarray assignments.
+ 
+ 2018-04-28  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/81773
+ 	PR fortran/83606
+ 	Backport from trunk.
+ 	* dependency.c (gfc_dep_resolver): Coarray indexes are to be ignored
+ 	during dependency computation.  They define no data dependency.
+ 	* trans-array.c (conv_array_index_offset): The stride can not be set
+ 	here, prevent fail.
+ 	* trans-intrinsic.c (conv_caf_send): Add creation of temporary array
+ 	for caf_get's result and copying to the array with vectorial
+ 	indexing.
+ 
+ 2018-04-24  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85520
+ 	* decl.c (gfc_match_char_spec): Check for negative length and set to 0.
+ 
+ 2018-03-28  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/85084
+ 	Backport from trunk.
+ 	* frontend-passes.c (gfc_run_passes): Do not run front-end
+ 	optimizations if a previous error occurred.
+ 
+ 2018-03-20  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85001
+ 	* interface.c (symbol_rank): Remove bogus null pointer check that
+ 	crept in when translating a ternary operator into an if-else
+ 	constructor.
+ 
+ 2018-03-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/84931
+ 	Backport from trunk
+ 	* simplify.c (gfc_convert_constant): Correctly handle iterators
+ 	for type conversion.
+ 
+ 2018-03-19  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/77414
+ 	* decl.c (get_proc_name):  Check for a subroutine re-defined in
+ 	the contain portion of a subroutine.  Change language of existing
+ 	error message to better describe the issue. While here fix whitespace
+ 	issues.
+ 
+ 2018-03-19  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/65453
+ 	* decl.c (get_proc_name): Catch clash between a procedure statement
+ 	and a contained subprogram
+ 
+ 2018-03-15  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/78741
+ 	* decl.c (get_proc_name):  Check for clash of entry name with
+ 	subroutine name.
+ 
+ 2018-03-12  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/83939
+ 	* resolve.c (resolve_fl_procedure): Enforce F2018:C15100.
+ 
+ 2018-03-10  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/84734
+ 	* arith.c (check_result, eval_intrinsic):  If result overflows, pass
+ 	the expression up the chain instead of a NULL pointer.
+ 
+ 2018-03-08  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/64124
+ 	PR fortran/70409
+ 	* decl.c (gfc_match_char_spec): Try to reduce a charlen to a constant.
+ 
+ 2018-03-06  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/56667
+ 	* primary.c (match_sym_complex_part): Give the matcher for an implied
+ 	do-loop a chance to run.
+ 
+ 2018-03-04  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/83076
+ 	* resolve.c (resolve_fl_derived0): Add caf_token fields for
+ 	allocatable and pointer scalars, when -fcoarray selected.
+ 	* trans-types.c (gfc_copy_dt_decls_ifequal): Copy the token
+ 	field as well as the backend_decl.
+ 	(gfc_get_derived_type): Flag GFC_FCOARRAY_LIB for module
+ 	derived types that are not vtypes. Components with caf_token
+ 	attribute are pvoid types. For a component requiring it, find
+ 	the caf_token field and have the component token field point to
+ 	its backend_decl.
+ 
+ 2018-03-03  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/71085
+ 	* trans-expr.c (gfc_apply_interface_mapping_to_expr): Do not
+ 	dereference NULL pointer.
+ 
+ 2018-03-03  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/51434
+ 	* simplify.c (gfc_simplify_transfer): Resolve mold.
+ 
+ 2018-03-03  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/80965
+ 	* resolve.c (build_loc_call): Change symtree name from 'loc' to
+ 	'_loc'.
+ 
+ 2018-03-03  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from trunk.
+ 	PR fortran/78990
+ 	* expr.c (gfc_is_class_array_function): Renamed from
+ 	'gfc_is_alloc_class_array_function' and modified to return true
+ 	for pointers as well as allocatable results.
+ 	* gfortran.h : Change of name for prototype of above function.
+ 	* trans-array.c (gfc_add_loop_ss_code): Force finalization of
+ 	class array results.
+ 	(build_class_array_ref): Change assertion into a condition.
+ 	(build_class_array_ref): Set the se class_vptr for class array
+ 	function results.
+ 	(gfc_walk_function_expr): Reference gfc_is_class_array_function
+ 	as above.
+ 	* trans-decl.c (get_proc_result): Move it up before
+ 	gfc_trans_deferred_vars.
+ 	(gfc_trans_deferred_vars): Nullify explicit return class arrays
+ 	on entry.
+ 	* trans-expr.c (gfc_conv_class_to_class): Allow conversion of
+ 	class array functions that have an se class_vptr and use it
+ 	for the result vptr.
+ 	(gfc_conv_subref_array_arg): Rename reference to the above
+ 	function.
+ 	(gfc_conv_procedure_call): Ditto. Add the se pre block to the
+ 	loop pre block before the function is evaluated. Do not
+ 	finalize class pointer results.
+ 	(arrayfunc_assign_needs_temporary, gfc_trans_assignment_1) More
+ 	renamed references.
+ 	* trans-intrinsic.c (gfc_conv_intrinsic_size): Ditto.
+ 
+ 2018-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-02-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/84418
+ 	* trans-openmp.c (gfc_trans_omp_clauses): For OMP_CLAUSE_LINEAR_REF
+ 	kind set OMP_CLAUSE_LINEAR_STEP to TYPE_SIZE_UNIT times last_step.
+ 
+ 	2018-01-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/84116
+ 	* openmp.c (gfc_match_omp_clauses): If all the linear
+ 	gfc_match_omp_variable_list calls failed, don't gfc_free_omp_namelist
+ 	nor set *head = NULL.  Formatting fixes.
+ 
+ 2018-02-25  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	ChangeLog for r257972
+ 	PR fortran/83633
+ 	* decl.c (variable_decl): Check that an explicit-shape-array with
+ 	nonconstant bounds is allowed.
+ 
+ 2018-02-25  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/78238
+ 	Backport from trunk
+ 	* gfortran.h (gfc_integer_4_kind): Define.
+ 	* resolve.c (resolve_select_type): Make sure that the
+ 	kind of c->high is gfc_integer_4_kind.
+ 
+ 2018-02-24  Steven G. Kargl <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/30792
+ 	* decl.c (gfc_match_data): Check for invalid substring in
+ 	data-implied-do
+ 
+ 2018-02-23  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/84511
+ 	* trans-io.c (transfer_expr): Deal with C_LOC in transfer statement.
+ 
+ 2018-02-23  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/84346
+ 	* interface.c (compare_actual_formal): Issue error if keyword is
+ 	used in a statement function.
+ 
+ 2018-02-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/84506
+ 	* trans-io.c (set_parameter_value_inquire): Adjust range check of
+ 	negative unit values for kind=8 units to the kind=4 negative limit.
+ 
+ 2018-02-22  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/81116
+ 	PR fortran/84495
+ 	* gfortran.dg/realloc_on_assignment_29.f90:  New test.
+ 
+ 2018-02-19  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/82007
+ 	* resolve.c (resolve_transfer): Delete code looking for 'DT'
+ 	format specifiers in format strings. Set formatted to true if a
+ 	format string or format label is present.
+ 	* trans-io.c (get_dtio_proc): Likewise. (transfer_expr): Fix
+ 	whitespace.
+ 
+ 2018-02-17  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/84270
+ 	* frontend-passes (scalarized_expr):  If the expression
+ 	is an assumed size array, leave in the last reference
+ 	and pass AR_SECTION instead of AR_FULL to gfc_resolve
+ 	in order to avoid an error.
+ 
+ 2018-02-13  Alastair McKinstry  <alastair.mckinstry@sceal.ie>
+ 	    Janne Blomqvist  <jb@gcc.gnu.org>
+ 
+ 	* module.c (dump_module): Use lbasename to ensure that module
+ 	files are reproducible.
+ 
+ 2018-02-12  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/68560
+ 	* trans-intrinsic.c (gfc_conv_intrinsic_shape): New function.
+ 	(gfc_conv_intrinsic_function): Call it.
+ 
+ 2018-02-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 
+ 	PR fortran/35299
+ 	ChangeLog for r257566
+ 	* resolve.c (resolve_formal_arglist): Update error message.
+ 
+ 2018-02-12  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/54223
+ 	PR fortran/84276
+ 	* interface.c (compare_actual_formal): Add in_statement_function
+ 	bool parameter.  Skip check of INTENT attribute for statement
+ 	functions.  Arguments to a statement function cannot be optional,
+ 	issue error for missing argument.
+ 	(gfc_procedure_use, gfc_ppc_use, gfc_arglist_matches_symbol): Use
+ 	in_statement_function.
+ 
+ 2018-02-07  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/82994
+ 	* match.c (gfc_match_deallocate): Check for NULL pointer.
+ 
+ 2018-02-07  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/82049
+ 	* match.c (gfc_match_type_spec): If the charlen is non-NULL, then
+ 	try to resolve it.  While here return early if possible.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/gcc/fortran/arith.c gcc-7.4.0/gcc/fortran/arith.c
*** gcc-7.3.0/gcc/fortran/arith.c	Mon Jan 23 19:43:28 2017
--- gcc-7.4.0/gcc/fortran/arith.c	Sat Mar 10 18:44:25 2018
*************** check_result (arith rc, gfc_expr *x, gfc
*** 555,564 ****
        val = ARITH_OK;
      }
  
!   if (val != ARITH_OK)
!     gfc_free_expr (r);
!   else
      *rp = r;
  
    return val;
  }
--- 555,564 ----
        val = ARITH_OK;
      }
  
!   if (val == ARITH_OK || val == ARITH_OVERFLOW)
      *rp = r;
+   else
+     gfc_free_expr (r);
  
    return val;
  }
*************** eval_intrinsic (gfc_intrinsic_op op,
*** 1603,1611 ****
--- 1603,1615 ----
    if (rc != ARITH_OK)
      {
        gfc_error (gfc_arith_error (rc), &op1->where);
+       if (rc == ARITH_OVERFLOW)
+ 	goto done;
        return NULL;
      }
  
+ done:
+ 
    gfc_free_expr (op1);
    gfc_free_expr (op2);
    return result;
diff -Nrcpad gcc-7.3.0/gcc/fortran/array.c gcc-7.4.0/gcc/fortran/array.c
*** gcc-7.3.0/gcc/fortran/array.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/fortran/array.c	Wed Jun 13 22:40:46 2018
*************** match_array_cons_element (gfc_constructo
*** 1079,1084 ****
--- 1079,1093 ----
    if (m != MATCH_YES)
      return m;
  
+   if (expr->expr_type == EXPR_FUNCTION
+       && expr->ts.type == BT_UNKNOWN
+       && strcmp(expr->symtree->name, "null") == 0)
+    {
+       gfc_error ("NULL() at %C cannot appear in an array constructor");
+       gfc_free_expr (expr);
+       return MATCH_ERROR;
+    }
+ 
    gfc_constructor_append_expr (result, expr, &gfc_current_locus);
    return MATCH_YES;
  }
*************** got_charlen:
*** 1998,2004 ****
--- 2007,2015 ----
  	  gfc_ref *ref;
  	  for (ref = p->expr->ref; ref; ref = ref->next)
  	    if (ref->type == REF_SUBSTRING
+ 		&& ref->u.ss.start
  		&& ref->u.ss.start->expr_type == EXPR_CONSTANT
+ 		&& ref->u.ss.end
  		&& ref->u.ss.end->expr_type == EXPR_CONSTANT)
  	      break;
  
*************** got_charlen:
*** 2021,2027 ****
  	  else
  	    return true;
  
! 	  gcc_assert (current_length != -1);
  
  	  if (found_length == -1)
  	    found_length = current_length;
--- 2032,2039 ----
  	  else
  	    return true;
  
! 	  if (current_length < 0)
! 	    current_length = 0;
  
  	  if (found_length == -1)
  	    found_length = current_length;
diff -Nrcpad gcc-7.3.0/gcc/fortran/check.c gcc-7.4.0/gcc/fortran/check.c
*** gcc-7.3.0/gcc/fortran/check.c	Fri Jan 19 23:37:29 2018
--- gcc-7.4.0/gcc/fortran/check.c	Fri May 11 17:58:03 2018
*************** gfc_check_rank (gfc_expr *a)
*** 3764,3771 ****
  		  ? a->value.function.esym->result->attr.pointer
  		  : a->symtree->n.sym->result->attr.pointer;
  
!   if (a->expr_type == EXPR_OP || a->expr_type == EXPR_NULL
!       || a->expr_type == EXPR_COMPCALL|| a->expr_type == EXPR_PPC
        || !is_variable)
      {
        gfc_error ("The argument of the RANK intrinsic at %L must be a data "
--- 3764,3774 ----
  		  ? a->value.function.esym->result->attr.pointer
  		  : a->symtree->n.sym->result->attr.pointer;
  
!   if (a->expr_type == EXPR_OP
!       || a->expr_type == EXPR_NULL
!       || a->expr_type == EXPR_COMPCALL
!       || a->expr_type == EXPR_PPC
!       || a->ts.type == BT_PROCEDURE
        || !is_variable)
      {
        gfc_error ("The argument of the RANK intrinsic at %L must be a data "
diff -Nrcpad gcc-7.3.0/gcc/fortran/data.c gcc-7.4.0/gcc/fortran/data.c
*** gcc-7.3.0/gcc/fortran/data.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/fortran/data.c	Sat Jun  9 19:57:29 2018
*************** gfc_assign_data_value (gfc_expr *lvalue,
*** 481,486 ****
--- 481,501 ----
    mpz_clear (offset);
    gcc_assert (repeat == NULL);
  
+   /* Overwriting an existing initializer is non-standard but usually only
+      provokes a warning from other compilers.  */
+   if (init != NULL && init->where.lb && rvalue->where.lb)
+     {
+       /* Order in which the expressions arrive here depends on whether
+ 	 they are from data statements or F95 style declarations.
+ 	 Therefore, check which is the most recent.  */
+       expr = (LOCATION_LINE (init->where.lb->location)
+ 	      > LOCATION_LINE (rvalue->where.lb->location))
+ 	   ? init : rvalue;
+       if (gfc_notify_std (GFC_STD_GNU, "re-initialization of %qs at %L",
+ 			  symbol->name, &expr->where) == false)
+ 	return false;
+     }
+ 
    if (ref || last_ts->type == BT_CHARACTER)
      {
        /* An initializer has to be constant.  */
*************** gfc_assign_data_value (gfc_expr *lvalue,
*** 492,511 ****
      }
    else
      {
!       /* Overwriting an existing initializer is non-standard but usually only
! 	 provokes a warning from other compilers.  */
!       if (init != NULL)
  	{
! 	  /* Order in which the expressions arrive here depends on whether
! 	     they are from data statements or F95 style declarations.
! 	     Therefore, check which is the most recent.  */
! 	  expr = (LOCATION_LINE (init->where.lb->location)
! 		  > LOCATION_LINE (rvalue->where.lb->location))
! 	       ? init : rvalue;
! 	  if (gfc_notify_std (GFC_STD_GNU,
! 			      "re-initialization of %qs at %L",
! 			      symbol->name, &expr->where) == false)
! 	    return false;
  	}
  
        expr = gfc_copy_expr (rvalue);
--- 507,519 ----
      }
    else
      {
!       if (lvalue->ts.type == BT_DERIVED
! 	  && gfc_has_default_initializer (lvalue->ts.u.derived))
  	{
! 	  gfc_error ("Nonpointer object %qs with default initialization "
! 		     "shall not appear in a DATA statement at %L", 
! 		     symbol->name, &lvalue->where);
! 	  return false;
  	}
  
        expr = gfc_copy_expr (rvalue);
diff -Nrcpad gcc-7.3.0/gcc/fortran/decl.c gcc-7.4.0/gcc/fortran/decl.c
*** gcc-7.3.0/gcc/fortran/decl.c	Thu Jan 18 00:30:42 2018
--- gcc-7.4.0/gcc/fortran/decl.c	Mon Jul 16 23:35:39 2018
*************** match_old_style_init (const char *name)
*** 509,514 ****
--- 509,515 ----
    newdata = gfc_get_data ();
    newdata->var = gfc_get_data_variable ();
    newdata->var->expr = gfc_get_variable_expr (st);
+   newdata->var->expr->where = sym->declared_at;
    newdata->where = gfc_current_locus;
  
    /* Match initial value list. This also eats the terminal '/'.  */
*************** gfc_match_data (void)
*** 573,578 ****
--- 574,593 ----
        if (m != MATCH_YES)
  	goto cleanup;
  
+       if (new_data->var->iter.var
+ 	  && new_data->var->iter.var->ts.type == BT_INTEGER
+ 	  && new_data->var->iter.var->symtree->n.sym->attr.implied_index == 1
+ 	  && new_data->var->list
+ 	  && new_data->var->list->expr
+ 	  && new_data->var->list->expr->ts.type == BT_CHARACTER
+ 	  && new_data->var->list->expr->ref
+ 	  && new_data->var->list->expr->ref->type == REF_SUBSTRING)
+ 	{
+ 	  gfc_error ("Invalid substring in data-implied-do at %L in DATA "
+ 		     "statement", &new_data->var->list->expr->where);
+ 	  goto cleanup;
+ 	}
+ 
        m = top_val_list (new_data);
        if (m != MATCH_YES)
  	goto cleanup;
*************** match_clist_expr (gfc_expr **result, gfc
*** 620,646 ****
  {
    gfc_constructor_base array_head = NULL;
    gfc_expr *expr = NULL;
!   match m;
    locus where;
!   mpz_t repeat, size;
    bool scalar;
    int cmp;
  
    gcc_assert (ts);
  
-   mpz_init_set_ui (repeat, 0);
-   mpz_init (size);
-   scalar = !as || !as->rank;
- 
    /* We have already matched '/' - now look for a constant list, as with
       top_val_list from decl.c, but append the result to an array.  */
    if (gfc_match ("/") == MATCH_YES)
      {
        gfc_error ("Empty old style initializer list at %C");
!       goto cleanup;
      }
  
    where = gfc_current_locus;
    for (;;)
      {
        m = match_data_constant (&expr);
--- 635,669 ----
  {
    gfc_constructor_base array_head = NULL;
    gfc_expr *expr = NULL;
!   match m = MATCH_ERROR;
    locus where;
!   mpz_t repeat, cons_size, as_size;
    bool scalar;
    int cmp;
  
    gcc_assert (ts);
  
    /* We have already matched '/' - now look for a constant list, as with
       top_val_list from decl.c, but append the result to an array.  */
    if (gfc_match ("/") == MATCH_YES)
      {
        gfc_error ("Empty old style initializer list at %C");
!       return MATCH_ERROR;
      }
  
    where = gfc_current_locus;
+   scalar = !as || !as->rank;
+ 
+   if (!scalar && !spec_size (as, &as_size))
+     {
+       gfc_error ("Array in initializer list at %L must have an explicit shape",
+ 		 as->type == AS_EXPLICIT ? &as->upper[0]->where : &where);
+       /* Nothing to cleanup yet.  */
+       return MATCH_ERROR;
+     }
+ 
+   mpz_init_set_ui (repeat, 0);
+ 
    for (;;)
      {
        m = match_data_constant (&expr);
*************** match_clist_expr (gfc_expr **result, gfc
*** 670,676 ****
  
            m = match_data_constant (&expr);
            if (m == MATCH_NO)
!             gfc_error ("Expected data constant after repeat spec at %C");
            if (m != MATCH_YES)
              goto cleanup;
          }
--- 693,702 ----
  
            m = match_data_constant (&expr);
            if (m == MATCH_NO)
! 	    {
! 	      m = MATCH_ERROR;
! 	      gfc_error ("Expected data constant after repeat spec at %C");
! 	    }
            if (m != MATCH_YES)
              goto cleanup;
          }
*************** match_clist_expr (gfc_expr **result, gfc
*** 713,718 ****
--- 739,747 ----
          goto syntax;
      }
  
+   /* If we break early from here out, we encountered an error.  */
+   m = MATCH_ERROR;
+ 
    /* Set up expr as an array constructor. */
    if (!scalar)
      {
*************** match_clist_expr (gfc_expr **result, gfc
*** 723,738 ****
        expr->rank = as->rank;
        expr->shape = gfc_get_shape (expr->rank);
  
!       /* Validate sizes. */
!       gcc_assert (gfc_array_size (expr, &size));
!       gcc_assert (spec_size (as, &repeat));
!       cmp = mpz_cmp (size, repeat);
        if (cmp < 0)
!         gfc_error ("Not enough elements in array initializer at %C");
        else if (cmp > 0)
!         gfc_error ("Too many elements in array initializer at %C");
        if (cmp)
!         goto cleanup;
      }
  
    /* Make sure scalar types match. */
--- 752,769 ----
        expr->rank = as->rank;
        expr->shape = gfc_get_shape (expr->rank);
  
!       /* Validate sizes.  We built expr ourselves, so cons_size will be
! 	 constant (we fail above for non-constant expressions).
! 	 We still need to verify that the sizes match.  */
!       gcc_assert (gfc_array_size (expr, &cons_size));
!       cmp = mpz_cmp (cons_size, as_size);
        if (cmp < 0)
! 	gfc_error ("Not enough elements in array initializer at %C");
        else if (cmp > 0)
! 	gfc_error ("Too many elements in array initializer at %C");
!       mpz_clear (cons_size);
        if (cmp)
! 	goto cleanup;
      }
  
    /* Make sure scalar types match. */
*************** match_clist_expr (gfc_expr **result, gfc
*** 744,754 ****
      expr->ts.u.cl->length_from_typespec = 1;
  
    *result = expr;
!   mpz_clear (size);
!   mpz_clear (repeat);
!   return MATCH_YES;
  
  syntax:
    gfc_error ("Syntax error in old style initializer list at %C");
  
  cleanup:
--- 775,785 ----
      expr->ts.u.cl->length_from_typespec = 1;
  
    *result = expr;
!   m = MATCH_YES;
!   goto done;
  
  syntax:
+   m = MATCH_ERROR;
    gfc_error ("Syntax error in old style initializer list at %C");
  
  cleanup:
*************** cleanup:
*** 756,764 ****
      expr->value.constructor = NULL;
    gfc_free_expr (expr);
    gfc_constructor_free (array_head);
!   mpz_clear (size);
    mpz_clear (repeat);
!   return MATCH_ERROR;
  }
  
  
--- 787,798 ----
      expr->value.constructor = NULL;
    gfc_free_expr (expr);
    gfc_constructor_free (array_head);
! 
! done:
    mpz_clear (repeat);
!   if (!scalar)
!     mpz_clear (as_size);
!   return m;
  }
  
  
*************** get_proc_name (const char *name, gfc_sym
*** 1115,1128 ****
    if (sym->attr.proc == PROC_ST_FUNCTION)
      return rc;
  
!   if (sym->attr.module_procedure
!       && sym->attr.if_source == IFSRC_IFBODY)
      {
        /* Create a partially populated interface symbol to carry the
  	 characteristics of the procedure and the result.  */
        sym->tlink = gfc_new_symbol (name, sym->ns);
!       gfc_add_type (sym->tlink, &(sym->ts),
! 		    &gfc_current_locus);
        gfc_copy_attr (&sym->tlink->attr, &sym->attr, NULL);
        if (sym->attr.dimension)
  	sym->tlink->as = gfc_copy_array_spec (sym->as);
--- 1149,1160 ----
    if (sym->attr.proc == PROC_ST_FUNCTION)
      return rc;
  
!   if (sym->attr.module_procedure && sym->attr.if_source == IFSRC_IFBODY)
      {
        /* Create a partially populated interface symbol to carry the
  	 characteristics of the procedure and the result.  */
        sym->tlink = gfc_new_symbol (name, sym->ns);
!       gfc_add_type (sym->tlink, &(sym->ts), &gfc_current_locus);
        gfc_copy_attr (&sym->tlink->attr, &sym->attr, NULL);
        if (sym->attr.dimension)
  	sym->tlink->as = gfc_copy_array_spec (sym->as);
*************** get_proc_name (const char *name, gfc_sym
*** 1152,1162 ****
  	 accessible names.  */
        if (sym->attr.flavor != 0
  	  && sym->attr.proc != 0
! 	  && (sym->attr.subroutine || sym->attr.function)
  	  && sym->attr.if_source != IFSRC_UNKNOWN)
  	gfc_error_now ("Procedure %qs at %C is already defined at %L",
  		       name, &sym->declared_at);
  
        /* Trap a procedure with a name the same as interface in the
  	 encompassing scope.  */
        if (sym->attr.generic != 0
--- 1184,1205 ----
  	 accessible names.  */
        if (sym->attr.flavor != 0
  	  && sym->attr.proc != 0
! 	  && (sym->attr.subroutine || sym->attr.function || sym->attr.entry)
  	  && sym->attr.if_source != IFSRC_UNKNOWN)
  	gfc_error_now ("Procedure %qs at %C is already defined at %L",
  		       name, &sym->declared_at);
  
+       if (sym->attr.flavor != 0
+ 	  && sym->attr.entry && sym->attr.if_source != IFSRC_UNKNOWN)
+ 	gfc_error_now ("Procedure %qs at %C is already defined at %L",
+ 		       name, &sym->declared_at);
+ 
+       if (sym->attr.external && sym->attr.procedure
+ 	  && gfc_current_state () == COMP_CONTAINS)
+ 	gfc_error_now ("Contained procedure %qs at %C clashes with "
+ 			"procedure defined at %L",
+ 		       name, &sym->declared_at);
+ 
        /* Trap a procedure with a name the same as interface in the
  	 encompassing scope.  */
        if (sym->attr.generic != 0
*************** get_proc_name (const char *name, gfc_sym
*** 1176,1182 ****
  	  && sym->attr.access == 0
  	  && !module_fcn_entry)
  	gfc_error_now ("Procedure %qs at %C has an explicit interface "
! 		       "and must not have attributes declared at %L",
  		       name, &sym->declared_at);
      }
  
--- 1219,1234 ----
  	  && sym->attr.access == 0
  	  && !module_fcn_entry)
  	gfc_error_now ("Procedure %qs at %C has an explicit interface "
! 		       "from a previous declaration",  name);
!     }
! 
!     if (sym && !sym->gfc_new
! 	&& sym->attr.flavor != FL_UNKNOWN
! 	&& sym->attr.referenced == 0 && sym->attr.subroutine == 1
! 	&& gfc_state_stack->state == COMP_CONTAINS
! 	&& gfc_state_stack->previous->state == COMP_SUBROUTINE)
!     {
! 	gfc_error_now ("Procedure %qs at %C is already defined at %L",
  		       name, &sym->declared_at);
      }
  
*************** get_proc_name (const char *name, gfc_sym
*** 1201,1210 ****
    /* See if the procedure should be a module procedure.  */
  
    if (((sym->ns->proc_name != NULL
! 		&& sym->ns->proc_name->attr.flavor == FL_MODULE
! 		&& sym->attr.proc != PROC_MODULE)
! 	    || (module_fcn_entry && sym->attr.proc != PROC_MODULE))
! 	&& !gfc_add_procedure (&sym->attr, PROC_MODULE, sym->name, NULL))
      rc = 2;
  
    return rc;
--- 1253,1262 ----
    /* See if the procedure should be a module procedure.  */
  
    if (((sym->ns->proc_name != NULL
! 	&& sym->ns->proc_name->attr.flavor == FL_MODULE
! 	&& sym->attr.proc != PROC_MODULE)
!        || (module_fcn_entry && sym->attr.proc != PROC_MODULE))
!       && !gfc_add_procedure (&sym->attr, PROC_MODULE, sym->name, NULL))
      rc = 2;
  
    return rc;
*************** variable_decl (int elem)
*** 2183,2189 ****
    /* At this point, we know for sure if the symbol is PARAMETER and can thus
       determine (and check) whether it can be implied-shape.  If it
       was parsed as assumed-size, change it because PARAMETERs can not
!      be assumed-size.  */
    if (as)
      {
        if (as->type == AS_IMPLIED_SHAPE && current_attr.flavor != FL_PARAMETER)
--- 2235,2244 ----
    /* At this point, we know for sure if the symbol is PARAMETER and can thus
       determine (and check) whether it can be implied-shape.  If it
       was parsed as assumed-size, change it because PARAMETERs can not
!      be assumed-size.
! 
!      An explicit-shape-array cannot appear under several conditions.
!      That check is done here as well.  */
    if (as)
      {
        if (as->type == AS_IMPLIED_SHAPE && current_attr.flavor != FL_PARAMETER)
*************** variable_decl (int elem)
*** 2205,2210 ****
--- 2260,2309 ----
  	  m = MATCH_ERROR;
  	  goto cleanup;
  	}
+ 
+       /* 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.  */
+       if (as->type == AS_EXPLICIT
+ 	  && gfc_current_state () != COMP_BLOCK
+ 	  && gfc_current_state () != COMP_DERIVED
+ 	  && gfc_current_state () != COMP_FUNCTION
+ 	  && gfc_current_state () != COMP_INTERFACE
+ 	  && gfc_current_state () != COMP_SUBROUTINE)
+ 	{
+ 	  gfc_expr *e;
+ 	  bool not_constant = false;
+ 
+ 	  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))
+ 		{
+ 		  not_constant = true;
+ 		  break;
+ 		}
+ 	      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))
+ 		{
+ 		  not_constant = true;
+ 		  break;
+ 		}
+ 	      gfc_free_expr (e);
+ 	    }
+ 
+ 	  if (not_constant)
+ 	    { 
+ 	      gfc_error ("Explicit shaped array with nonconstant bounds at %C");
+ 	      m = MATCH_ERROR;
+ 	      goto cleanup;
+ 	    }
+ 	}
      }
  
    char_len = NULL;
*************** done:
*** 2918,2924 ****
    if (seen_length == 0)
      cl->length = gfc_get_int_expr (gfc_default_integer_kind, NULL, 1);
    else
!     cl->length = len;
  
    ts->u.cl = cl;
    ts->kind = kind == 0 ? gfc_default_character_kind : kind;
--- 3017,3054 ----
    if (seen_length == 0)
      cl->length = gfc_get_int_expr (gfc_default_integer_kind, NULL, 1);
    else
!     {
!       /* If gfortran ends up here, then len may be reducible to a constant.
! 	 Try to do that here.  If it does not reduce, simply assign len to
! 	 charlen.  A complication occurs with user-defined generic functions,
! 	 which are not resolved.  Use a private namespace to deal with
! 	 generic functions.  */
! 
!       if (len && len->expr_type != EXPR_CONSTANT)
! 	{
! 	  gfc_namespace *old_ns;
! 	  gfc_expr *e;
! 
! 	  old_ns = gfc_current_ns;
! 	  gfc_current_ns = gfc_get_namespace (NULL, 0);
! 
! 	  e = gfc_copy_expr (len);
! 	  gfc_reduce_init_expr (e);
! 	  if (e->expr_type == EXPR_CONSTANT)
! 	    {
! 	      gfc_replace_expr (len, e);
! 	      if (mpz_cmp_si (len->value.integer, 0) < 0)
! 		mpz_set_ui (len->value.integer, 0);
! 	    }
! 	  else
! 	    gfc_free_expr (e);
! 
! 	  gfc_free_namespace (gfc_current_ns);
! 	  gfc_current_ns = old_ns;
! 	}
! 
!       cl->length = len;
!     }
  
    ts->u.cl = cl;
    ts->kind = kind == 0 ? gfc_default_character_kind : kind;
*************** gfc_match_derived_decl (void)
*** 8935,8942 ****
  
    if (!gensym->attr.generic && gensym->ts.type != BT_UNKNOWN)
      {
!       gfc_error ("Derived type name %qs at %C already has a basic type "
! 		 "of %s", gensym->name, gfc_typename (&gensym->ts));
        return MATCH_ERROR;
      }
  
--- 9065,9076 ----
  
    if (!gensym->attr.generic && gensym->ts.type != BT_UNKNOWN)
      {
!       if (gensym->ts.u.derived)
! 	gfc_error ("Derived type name %qs at %C already has a basic type "
! 		   "of %s", gensym->name, gfc_typename (&gensym->ts));
!       else
! 	gfc_error ("Derived type name %qs at %C already has a basic type",
! 		   gensym->name);
        return MATCH_ERROR;
      }
  
diff -Nrcpad gcc-7.3.0/gcc/fortran/expr.c gcc-7.4.0/gcc/fortran/expr.c
*** gcc-7.3.0/gcc/fortran/expr.c	Thu Jan 18 18:27:22 2018
--- gcc-7.4.0/gcc/fortran/expr.c	Sat Nov  3 14:49:33 2018
*************** gfc_simplify_expr (gfc_expr *p, int type
*** 1823,1829 ****
        break;
  
      case EXPR_FUNCTION:
!       for (ap = p->value.function.actual; ap; ap = ap->next)
  	if (!gfc_simplify_expr (ap->expr, type))
  	  return false;
  
--- 1823,1842 ----
        break;
  
      case EXPR_FUNCTION:
!       // For array-bound functions, we don't need to optimize
!       // the 'array' argument. In particular, if the argument
!       // is a PARAMETER, simplifying might convert an EXPR_VARIABLE
!       // into an EXPR_ARRAY; the latter has lbound = 1, the former
!       // can have any lbound.
!       ap = p->value.function.actual;
!       if (p->value.function.isym &&
! 	  (p->value.function.isym->id == GFC_ISYM_LBOUND
! 	   || p->value.function.isym->id == GFC_ISYM_UBOUND
! 	   || p->value.function.isym->id == GFC_ISYM_LCOBOUND
! 	   || p->value.function.isym->id == GFC_ISYM_UCOBOUND))
! 	ap = ap->next;
! 
!       for ( ; ap; ap = ap->next)
  	if (!gfc_simplify_expr (ap->expr, type))
  	  return false;
  
*************** check_inquiry (gfc_expr *e, int not_rest
*** 2315,2321 ****
  
  	/* 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->n.sym->ts.type == BT_CHARACTER
  	    && (ap->expr->symtree->n.sym->ts.u.cl->length == NULL
  		|| ap->expr->symtree->n.sym->ts.deferred))
--- 2328,2334 ----
  
  	/* 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_check_assign (gfc_expr *lvalue, gfc_
*** 3288,3293 ****
--- 3301,3308 ----
    /* Only DATA Statements come here.  */
    if (!conform)
      {
+       locus *where;
+ 
        /* Numeric can be converted to any other numeric. And Hollerith can be
  	 converted to any other type.  */
        if ((gfc_numeric_ts (&lvalue->ts) && gfc_numeric_ts (&rvalue->ts))
*************** gfc_check_assign (gfc_expr *lvalue, gfc_
*** 3297,3304 ****
        if (lvalue->ts.type == BT_LOGICAL && rvalue->ts.type == BT_LOGICAL)
  	return true;
  
        gfc_error ("Incompatible types in DATA statement at %L; attempted "
! 		 "conversion of %s to %s", &lvalue->where,
  		 gfc_typename (&rvalue->ts), gfc_typename (&lvalue->ts));
  
        return false;
--- 3312,3320 ----
        if (lvalue->ts.type == BT_LOGICAL && rvalue->ts.type == BT_LOGICAL)
  	return true;
  
+       where = lvalue->where.lb ? &lvalue->where : &rvalue->where;
        gfc_error ("Incompatible types in DATA statement at %L; attempted "
! 		 "conversion of %s to %s", where,
  		 gfc_typename (&rvalue->ts), gfc_typename (&lvalue->ts));
  
        return false;
*************** get_union_initializer (gfc_symbol *union
*** 4274,4294 ****
    return init;
  }
  
  /* Fetch or generate an initializer for the given component.
     Only generate an initializer if generate is true.  */
  
  static gfc_expr *
! component_initializer (gfc_typespec *ts, gfc_component *c, bool generate)
  {
    gfc_expr *init = NULL;
  
    /* See if we can find the initializer immediately.  */
!   if (c->initializer || !generate
!       || (ts->type == BT_CLASS && !c->attr.allocatable))
      return c->initializer;
  
    /* Recursively handle derived type components.  */
!   if (c->ts.type == BT_DERIVED || c->ts.type == BT_CLASS)
      init = gfc_generate_initializer (&c->ts, true);
  
    else if (c->ts.type == BT_UNION && c->ts.u.derived->components)
--- 4290,4349 ----
    return init;
  }
  
+ static bool
+ class_allocatable (gfc_component *comp)
+ {
+   return comp->ts.type == BT_CLASS && CLASS_DATA (comp)
+     && CLASS_DATA (comp)->attr.allocatable;
+ }
+ 
+ static bool
+ class_pointer (gfc_component *comp)
+ {
+   return comp->ts.type == BT_CLASS && CLASS_DATA (comp)
+     && CLASS_DATA (comp)->attr.pointer;
+ }
+ 
+ static bool
+ comp_allocatable (gfc_component *comp)
+ {
+   return comp->attr.allocatable || class_allocatable (comp);
+ }
+ 
+ static bool
+ comp_pointer (gfc_component *comp)
+ {
+   return comp->attr.pointer
+     || comp->attr.pointer
+     || comp->attr.proc_pointer
+     || comp->attr.class_pointer
+     || class_pointer (comp);
+ }
+ 
  /* Fetch or generate an initializer for the given component.
     Only generate an initializer if generate is true.  */
  
  static gfc_expr *
! component_initializer (gfc_component *c, bool generate)
  {
    gfc_expr *init = NULL;
  
+   /* Allocatable components always get EXPR_NULL.
+      Pointer components are only initialized when generating, and only if they
+      do not already have an initializer.  */
+   if (comp_allocatable (c) || (generate && comp_pointer (c) && !c->initializer))
+     {
+       init = gfc_get_null_expr (&c->loc);
+       init->ts = c->ts;
+       return init;
+     }
+ 
    /* See if we can find the initializer immediately.  */
!   if (c->initializer || !generate)
      return c->initializer;
  
    /* Recursively handle derived type components.  */
!   else if (c->ts.type == BT_DERIVED || c->ts.type == BT_CLASS)
      init = gfc_generate_initializer (&c->ts, true);
  
    else if (c->ts.type == BT_UNION && c->ts.u.derived->components)
*************** gfc_default_initializer (gfc_typespec *t
*** 4347,4352 ****
--- 4402,4433 ----
    return gfc_generate_initializer (ts, false);
  }
  
+ /* Generate an initializer expression for an iso_c_binding type
+    such as c_[fun]ptr. The appropriate initializer is c_null_[fun]ptr.  */
+ 
+ static gfc_expr *
+ generate_isocbinding_initializer (gfc_symbol *derived)
+ {
+   /* The initializers have already been built into the c_null_[fun]ptr symbols
+      from gen_special_c_interop_ptr.  */
+   gfc_symtree *npsym = NULL;
+   if (0 == strcmp (derived->name, "c_ptr"))
+     gfc_find_sym_tree ("c_null_ptr", gfc_current_ns, true, &npsym);
+   else if (0 == strcmp (derived->name, "c_funptr"))
+     gfc_find_sym_tree ("c_null_funptr", gfc_current_ns, true, &npsym);
+   else
+     gfc_internal_error ("generate_isocbinding_initializer(): bad iso_c_binding"
+ 			" type, expected %<c_ptr%> or %<c_funptr%>");
+   if (npsym)
+     {
+       gfc_expr *init = gfc_copy_expr (npsym->n.sym->value);
+       init->symtree = npsym;
+       init->ts.is_iso_c = true;
+       return init;
+     }
+ 
+   return NULL;
+ }
  
  /* Get or generate an expression for a default initializer of a derived type.
     If -finit-derived is specified, generate default initialization expressions
*************** gfc_generate_initializer (gfc_typespec *
*** 4357,4364 ****
--- 4438,4449 ----
  {
    gfc_expr *init, *tmp;
    gfc_component *comp;
+ 
    generate = flag_init_derived && generate;
  
+   if (ts->u.derived->ts.is_iso_c && generate)
+     return generate_isocbinding_initializer (ts->u.derived);
+ 
    /* See if we have a default initializer in this, but not in nested
       types (otherwise we could use gfc_has_default_initializer()).
       We don't need to check if we are going to generate them.  */
*************** gfc_generate_initializer (gfc_typespec *
*** 4366,4374 ****
    if (!generate)
      {
        for (; comp; comp = comp->next)
!         if (comp->initializer || comp->attr.allocatable
!             || (comp->ts.type == BT_CLASS && CLASS_DATA (comp)
!                 && CLASS_DATA (comp)->attr.allocatable))
            break;
      }
  
--- 4451,4457 ----
    if (!generate)
      {
        for (; comp; comp = comp->next)
! 	if (comp->initializer || comp_allocatable (comp))
            break;
      }
  
*************** gfc_generate_initializer (gfc_typespec *
*** 4384,4390 ****
        gfc_constructor *ctor = gfc_constructor_get();
  
        /* Fetch or generate an initializer for the component.  */
!       tmp = component_initializer (ts, comp, generate);
        if (tmp)
  	{
  	  /* Save the component ref for STRUCTUREs and UNIONs.  */
--- 4467,4473 ----
        gfc_constructor *ctor = gfc_constructor_get();
  
        /* Fetch or generate an initializer for the component.  */
!       tmp = component_initializer (comp, generate);
        if (tmp)
  	{
  	  /* Save the component ref for STRUCTUREs and UNIONs.  */
*************** gfc_generate_initializer (gfc_typespec *
*** 4394,4401 ****
  
            /* If the initializer was not generated, we need a copy.  */
            ctor->expr = comp->initializer ? gfc_copy_expr (tmp) : tmp;
! 	  if ((comp->ts.type != tmp->ts.type
! 	       || comp->ts.kind != tmp->ts.kind)
  	      && !comp->attr.pointer && !comp->attr.proc_pointer)
  	    {
  	      bool val;
--- 4477,4483 ----
  
            /* If the initializer was not generated, we need a copy.  */
            ctor->expr = comp->initializer ? gfc_copy_expr (tmp) : tmp;
! 	  if ((comp->ts.type != tmp->ts.type || comp->ts.kind != tmp->ts.kind)
  	      && !comp->attr.pointer && !comp->attr.proc_pointer)
  	    {
  	      bool val;
*************** gfc_generate_initializer (gfc_typespec *
*** 4405,4419 ****
  	    }
  	}
  
-       if (comp->attr.allocatable
- 	  || (comp->ts.type == BT_CLASS && CLASS_DATA (comp)->attr.allocatable))
- 	{
- 	  ctor->expr = gfc_get_expr ();
- 	  ctor->expr->expr_type = EXPR_NULL;
- 	  ctor->expr->where = init->where;
- 	  ctor->expr->ts = comp->ts;
- 	}
- 
        gfc_constructor_append (&init->value.constructor, ctor);
      }
  
--- 4487,4492 ----
*************** gfc_is_alloc_class_scalar_function (gfc_
*** 4762,4775 ****
  /* Determine if an expression is a function with an allocatable class array
     result.  */
  bool
! gfc_is_alloc_class_array_function (gfc_expr *expr)
  {
    if (expr->expr_type == EXPR_FUNCTION
        && expr->value.function.esym
        && expr->value.function.esym->result
        && expr->value.function.esym->result->ts.type == BT_CLASS
        && CLASS_DATA (expr->value.function.esym->result)->attr.dimension
!       && CLASS_DATA (expr->value.function.esym->result)->attr.allocatable)
      return true;
  
    return false;
--- 4835,4849 ----
  /* Determine if an expression is a function with an allocatable class array
     result.  */
  bool
! gfc_is_class_array_function (gfc_expr *expr)
  {
    if (expr->expr_type == EXPR_FUNCTION
        && expr->value.function.esym
        && expr->value.function.esym->result
        && expr->value.function.esym->result->ts.type == BT_CLASS
        && CLASS_DATA (expr->value.function.esym->result)->attr.dimension
!       && (CLASS_DATA (expr->value.function.esym->result)->attr.allocatable
! 	  || CLASS_DATA (expr->value.function.esym->result)->attr.pointer))
      return true;
  
    return false;
diff -Nrcpad gcc-7.3.0/gcc/fortran/frontend-passes.c gcc-7.4.0/gcc/fortran/frontend-passes.c
*** gcc-7.3.0/gcc/fortran/frontend-passes.c	Fri Jun  2 17:44:19 2017
--- gcc-7.4.0/gcc/fortran/frontend-passes.c	Sun Nov 25 15:23:18 2018
*************** static gfc_code * create_do_loop (gfc_ex
*** 48,53 ****
--- 48,55 ----
  				  locus *, gfc_namespace *,
  				  char *vname=NULL);
  
+ static bool is_fe_temp (gfc_expr *e);
+ 
  #ifdef CHECKING_P
  static void check_locus (gfc_namespace *);
  #endif
*************** gfc_run_passes (gfc_namespace *ns)
*** 135,140 ****
--- 137,146 ----
    check_locus (ns);
  #endif
  
+   gfc_get_errors (&w, &e);
+   if (e > 0)
+    return;
+ 
    if (flag_frontend_optimize)
      {
        optimize_namespace (ns);
*************** gfc_run_passes (gfc_namespace *ns)
*** 145,154 ****
        expr_array.release ();
      }
  
-   gfc_get_errors (&w, &e);
-   if (e > 0)
-    return;
- 
    if (flag_realloc_lhs)
      realloc_strings (ns);
  }
--- 151,156 ----
*************** realloc_string_callback (gfc_code **c, i
*** 231,252 ****
        || !expr1->ts.deferred)
      return 0;
  
!   expr2 = gfc_discard_nops (co->expr2);
!   if (expr2->expr_type != EXPR_VARIABLE)
      return 0;
  
!   found_substr = false;
!   for (ref = expr2->ref; ref; ref = ref->next)
      {
!       if (ref->type == REF_SUBSTRING)
  	{
! 	  found_substr = true;
! 	  break;
  	}
      }
!   if (!found_substr)
      return 0;
! 
    if (!gfc_check_dependency (expr1, expr2, true))
      return 0;
  
--- 233,261 ----
        || !expr1->ts.deferred)
      return 0;
  
!   if (is_fe_temp (expr1))
      return 0;
  
!   expr2 = gfc_discard_nops (co->expr2);
! 
!   if (expr2->expr_type == EXPR_VARIABLE)
      {
!       found_substr = false;
!       for (ref = expr2->ref; ref; ref = ref->next)
  	{
! 	  if (ref->type == REF_SUBSTRING)
! 	    {
! 	      found_substr = true;
! 	      break;
! 	    }
  	}
+       if (!found_substr)
+ 	return 0;
      }
!   else if (expr2->expr_type != EXPR_OP
! 	   || expr2->value.op.op != INTRINSIC_CONCAT)
      return 0;
!   
    if (!gfc_check_dependency (expr1, expr2, true))
      return 0;
  
*************** constant_string_length (gfc_expr *e)
*** 619,625 ****
  
    /* Return length of char symbol, if constant.  */
  
!   if (e->symtree->n.sym->ts.u.cl && e->symtree->n.sym->ts.u.cl->length
        && e->symtree->n.sym->ts.u.cl->length->expr_type == EXPR_CONSTANT)
      return gfc_copy_expr (e->symtree->n.sym->ts.u.cl->length);
  
--- 628,635 ----
  
    /* Return length of char symbol, if constant.  */
  
!   if (e->symtree && e->symtree->n.sym->ts.u.cl
!       && e->symtree->n.sym->ts.u.cl->length
        && e->symtree->n.sym->ts.u.cl->length->expr_type == EXPR_CONSTANT)
      return gfc_copy_expr (e->symtree->n.sym->ts.u.cl->length);
  
*************** combine_array_constructor (gfc_expr *e)
*** 1348,1353 ****
--- 1358,1367 ----
    if (iterator_level > 0)
      return false;
  
+   /* WHERE also doesn't work.  */
+   if (in_where > 0)
+     return false;
+ 
    op1 = e->value.op.op1;
    op2 = e->value.op.op2;
  
*************** scalarized_expr (gfc_expr *e_in, gfc_exp
*** 2750,2759 ****
  			 is the lbound of a full ref.  */
  		      int j;
  		      gfc_array_ref *ar;
  
  		      ar = &ref->u.ar;
! 		      ar->type = AR_FULL;
! 		      for (j = 0; j < ar->dimen; j++)
  			{
  			  gfc_free_expr (ar->start[j]);
  			  ar->start[j] = NULL;
--- 2764,2789 ----
  			 is the lbound of a full ref.  */
  		      int j;
  		      gfc_array_ref *ar;
+ 		      int to;
  
  		      ar = &ref->u.ar;
! 
! 		      /* For assumed size, we need to keep around the final
! 			 reference in order not to get an error on resolution
! 			 below, and we cannot use AR_FULL.  */
! 			 
! 		      if (ar->as->type == AS_ASSUMED_SIZE)
! 			{
! 			  ar->type = AR_SECTION;
! 			  to = ar->dimen - 1;
! 			}
! 		      else
! 			{
! 			  to = ar->dimen;
! 			  ar->type = AR_FULL;
! 			}
! 
! 		      for (j = 0; j < to; j++)
  			{
  			  gfc_free_expr (ar->start[j]);
  			  ar->start[j] = NULL;
diff -Nrcpad gcc-7.3.0/gcc/fortran/gfortran.h gcc-7.4.0/gcc/fortran/gfortran.h
*** gcc-7.3.0/gcc/fortran/gfortran.h	Sun Mar  5 11:35:47 2017
--- gcc-7.4.0/gcc/fortran/gfortran.h	Sun Mar  4 13:56:09 2018
*************** typedef struct
*** 863,869 ****
    unsigned alloc_comp:1, pointer_comp:1, proc_pointer_comp:1,
  	   private_comp:1, zero_comp:1, coarray_comp:1, lock_comp:1,
  	   event_comp:1, defined_assign_comp:1, unlimited_polymorphic:1,
! 	   has_dtio_procs:1;
  
    /* This is a temporary selector for SELECT TYPE or an associate
       variable for SELECT_TYPE or ASSOCIATE.  */
--- 863,869 ----
    unsigned alloc_comp:1, pointer_comp:1, proc_pointer_comp:1,
  	   private_comp:1, zero_comp:1, coarray_comp:1, lock_comp:1,
  	   event_comp:1, defined_assign_comp:1, unlimited_polymorphic:1,
! 	   has_dtio_procs:1, caf_token:1;
  
    /* This is a temporary selector for SELECT TYPE or an associate
       variable for SELECT_TYPE or ASSOCIATE.  */
*************** extern int gfc_charlen_int_kind;
*** 2856,2861 ****
--- 2856,2863 ----
  extern int gfc_numeric_storage_size;
  extern int gfc_character_storage_size;
  
+ #define gfc_integer_4_kind 4
+ 
  /* symbol.c */
  void gfc_clear_new_implicit (void);
  bool gfc_add_new_implicit_range (int, int);
*************** bool gfc_expr_check_typed (gfc_expr*, gf
*** 3145,3151 ****
  gfc_component * gfc_get_proc_ptr_comp (gfc_expr *);
  bool gfc_is_proc_ptr_comp (gfc_expr *);
  bool gfc_is_alloc_class_scalar_function (gfc_expr *);
! bool gfc_is_alloc_class_array_function (gfc_expr *);
  
  bool gfc_ref_this_image (gfc_ref *ref);
  bool gfc_is_coindexed (gfc_expr *);
--- 3147,3153 ----
  gfc_component * gfc_get_proc_ptr_comp (gfc_expr *);
  bool gfc_is_proc_ptr_comp (gfc_expr *);
  bool gfc_is_alloc_class_scalar_function (gfc_expr *);
! bool gfc_is_class_array_function (gfc_expr *);
  
  bool gfc_ref_this_image (gfc_ref *ref);
  bool gfc_is_coindexed (gfc_expr *);
diff -Nrcpad gcc-7.3.0/gcc/fortran/gfortran.info gcc-7.4.0/gcc/fortran/gfortran.info
*** gcc-7.3.0/gcc/fortran/gfortran.info	Thu Jan 25 08:41:37 2018
--- gcc-7.4.0/gcc/fortran/gfortran.info	Thu Dec  6 10:20:52 2018
***************
*** 1,5 ****
  This is doc/gfortran.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/fortran/gfortran.texi.
  
  Copyright (C) 1999-2017 Free Software Foundation, Inc.
  
--- 1,5 ----
  This is doc/gfortran.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/fortran/gfortran.texi.
  
  Copyright (C) 1999-2017 Free Software Foundation, Inc.
  
diff -Nrcpad gcc-7.3.0/gcc/fortran/interface.c gcc-7.4.0/gcc/fortran/interface.c
*** gcc-7.3.0/gcc/fortran/interface.c	Sat Jan 13 18:58:56 2018
--- gcc-7.4.0/gcc/fortran/interface.c	Fri Sep  7 17:33:15 2018
*************** compare_type (gfc_symbol *s1, gfc_symbol
*** 734,746 ****
    if (s2->attr.ext_attr & (1 << EXT_ATTR_NO_ARG_CHECK))
      return true;
  
    /* TYPE and CLASS of the same declared type are type compatible,
       but have different characteristics.  */
    if ((s1->ts.type == BT_CLASS && s2->ts.type == BT_DERIVED)
        || (s1->ts.type == BT_DERIVED && s2->ts.type == BT_CLASS))
      return false;
  
!   return gfc_compare_types (&s1->ts, &s2->ts) || s2->ts.type == BT_ASSUMED;
  }
  
  
--- 734,753 ----
    if (s2->attr.ext_attr & (1 << EXT_ATTR_NO_ARG_CHECK))
      return true;
  
+   return gfc_compare_types (&s1->ts, &s2->ts) || s2->ts.type == BT_ASSUMED;
+ }
+ 
+ 
+ static bool
+ compare_type_characteristics (gfc_symbol *s1, gfc_symbol *s2)
+ {
    /* TYPE and CLASS of the same declared type are type compatible,
       but have different characteristics.  */
    if ((s1->ts.type == BT_CLASS && s2->ts.type == BT_DERIVED)
        || (s1->ts.type == BT_DERIVED && s2->ts.type == BT_CLASS))
      return false;
  
!   return compare_type (s1, s2);
  }
  
  
*************** symbol_rank (gfc_symbol *sym)
*** 1263,1269 ****
  {
    gfc_array_spec *as = NULL;
  
!   if (sym->ts.type == BT_CLASS && CLASS_DATA (sym) && CLASS_DATA (sym)->as)
      as = CLASS_DATA (sym)->as;
    else
      as = sym->as;
--- 1270,1276 ----
  {
    gfc_array_spec *as = NULL;
  
!   if (sym->ts.type == BT_CLASS && CLASS_DATA (sym))
      as = CLASS_DATA (sym)->as;
    else
      as = sym->as;
*************** gfc_check_dummy_characteristics (gfc_sym
*** 1286,1292 ****
    /* Check type and rank.  */
    if (type_must_agree)
      {
!       if (!compare_type (s1, s2) || !compare_type (s2, s1))
  	{
  	  snprintf (errmsg, err_len, "Type mismatch in argument '%s' (%s/%s)",
  		    s1->name, gfc_typename (&s1->ts), gfc_typename (&s2->ts));
--- 1293,1300 ----
    /* Check type and rank.  */
    if (type_must_agree)
      {
!       if (!compare_type_characteristics (s1, s2)
! 	  || !compare_type_characteristics (s2, s1))
  	{
  	  snprintf (errmsg, err_len, "Type mismatch in argument '%s' (%s/%s)",
  		    s1->name, gfc_typename (&s1->ts), gfc_typename (&s2->ts));
*************** gfc_check_result_characteristics (gfc_sy
*** 1505,1511 ****
      return true;
  
    /* Check type and rank.  */
!   if (!compare_type (r1, r2))
      {
        snprintf (errmsg, err_len, "Type mismatch in function result (%s/%s)",
  		gfc_typename (&r1->ts), gfc_typename (&r2->ts));
--- 1513,1519 ----
      return true;
  
    /* Check type and rank.  */
!   if (!compare_type_characteristics (r1, r2))
      {
        snprintf (errmsg, err_len, "Type mismatch in function result (%s/%s)",
  		gfc_typename (&r1->ts), gfc_typename (&r2->ts));
*************** is_procptr_result (gfc_expr *expr)
*** 2791,2797 ****
  
  static bool
  compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal,
! 	 	       int ranks_must_agree, int is_elemental, locus *where)
  {
    gfc_actual_arglist **new_arg, *a, *actual;
    gfc_formal_arglist *f;
--- 2799,2806 ----
  
  static bool
  compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal,
! 	 	       int ranks_must_agree, int is_elemental,
! 		       bool in_statement_function, locus *where)
  {
    gfc_actual_arglist **new_arg, *a, *actual;
    gfc_formal_arglist *f;
*************** compare_actual_formal (gfc_actual_arglis
*** 2820,2825 ****
--- 2829,2841 ----
  
    for (a = actual; a; a = a->next, f = f->next)
      {
+       if (a->name != NULL && in_statement_function)
+ 	{
+ 	  gfc_error ("Keyword argument %qs at %L is invalid in "
+ 		     "a statement function", a->name, &a->expr->where);
+ 	  return false;
+ 	}
+ 
        /* Look for keywords but ignore g77 extensions like %VAL.  */
        if (a->name != NULL && a->name[0] != '%')
  	{
*************** compare_actual_formal (gfc_actual_arglis
*** 3143,3150 ****
  	}
  
        /* Check intent = OUT/INOUT for definable actual argument.  */
!       if ((f->sym->attr.intent == INTENT_OUT
! 	  || f->sym->attr.intent == INTENT_INOUT))
  	{
  	  const char* context = (where
  				 ? _("actual argument to INTENT = OUT/INOUT")
--- 3159,3167 ----
  	}
  
        /* Check intent = OUT/INOUT for definable actual argument.  */
!       if (!in_statement_function
! 	  && (f->sym->attr.intent == INTENT_OUT
! 	      || f->sym->attr.intent == INTENT_INOUT))
  	{
  	  const char* context = (where
  				 ? _("actual argument to INTENT = OUT/INOUT")
*************** compare_actual_formal (gfc_actual_arglis
*** 3249,3255 ****
  		       "at %L", where);
  	  return false;
  	}
!       if (!f->sym->attr.optional)
  	{
  	  if (where)
  	    gfc_error ("Missing actual argument for argument %qs at %L",
--- 3266,3273 ----
  		       "at %L", where);
  	  return false;
  	}
!       if (!f->sym->attr.optional
! 	  || (in_statement_function && f->sym->attr.optional))
  	{
  	  if (where)
  	    gfc_error ("Missing actual argument for argument %qs at %L",
*************** check_intents (gfc_formal_arglist *f, gf
*** 3535,3540 ****
--- 3553,3559 ----
  bool
  gfc_procedure_use (gfc_symbol *sym, gfc_actual_arglist **ap, locus *where)
  {
+   gfc_actual_arglist *a;
    gfc_formal_arglist *dummy_args;
  
    /* Warn about calls with an implicit interface.  Special case
*************** gfc_procedure_use (gfc_symbol *sym, gfc_
*** 3561,3568 ****
  
    if (sym->attr.if_source == IFSRC_UNKNOWN)
      {
-       gfc_actual_arglist *a;
- 
        if (sym->attr.pointer)
  	{
  	  gfc_error ("The pointer object %qs at %L must have an explicit "
--- 3580,3585 ----
*************** gfc_procedure_use (gfc_symbol *sym, gfc_
*** 3654,3662 ****
  
    dummy_args = gfc_sym_get_dummy_args (sym);
  
!   if (!compare_actual_formal (ap, dummy_args, 0, sym->attr.elemental, where))
      return false;
! 
    if (!check_intents (dummy_args, *ap))
      return false;
  
--- 3671,3682 ----
  
    dummy_args = gfc_sym_get_dummy_args (sym);
  
!   /* For a statement function, check that types and type parameters of actual
!      arguments and dummy arguments match.  */
!   if (!compare_actual_formal (ap, dummy_args, 0, sym->attr.elemental,
! 			      sym->attr.proc == PROC_ST_FUNCTION, where))
      return false;
!  
    if (!check_intents (dummy_args, *ap))
      return false;
  
*************** gfc_ppc_use (gfc_component *comp, gfc_ac
*** 3703,3709 ****
      }
  
    if (!compare_actual_formal (ap, comp->ts.interface->formal, 0,
! 			      comp->attr.elemental, where))
      return;
  
    check_intents (comp->ts.interface->formal, *ap);
--- 3723,3729 ----
      }
  
    if (!compare_actual_formal (ap, comp->ts.interface->formal, 0,
! 			      comp->attr.elemental, false, where))
      return;
  
    check_intents (comp->ts.interface->formal, *ap);
*************** gfc_arglist_matches_symbol (gfc_actual_a
*** 3728,3734 ****
    dummy_args = gfc_sym_get_dummy_args (sym);
  
    r = !sym->attr.elemental;
!   if (compare_actual_formal (args, dummy_args, r, !r, NULL))
      {
        check_intents (dummy_args, *args);
        if (warn_aliasing)
--- 3748,3754 ----
    dummy_args = gfc_sym_get_dummy_args (sym);
  
    r = !sym->attr.elemental;
!   if (compare_actual_formal (args, dummy_args, r, !r, false, NULL))
      {
        check_intents (dummy_args, *args);
        if (warn_aliasing)
diff -Nrcpad gcc-7.3.0/gcc/fortran/match.c gcc-7.4.0/gcc/fortran/match.c
*** gcc-7.3.0/gcc/fortran/match.c	Thu Dec 28 20:43:38 2017
--- gcc-7.4.0/gcc/fortran/match.c	Sun May 20 17:16:09 2018
*************** gfc_match_type_spec (gfc_typespec *ts)
*** 2001,2012 ****
  {
    match m;
    locus old_locus;
!   char name[GFC_MAX_SYMBOL_LEN + 1];
  
    gfc_clear_ts (ts);
    gfc_gobble_whitespace ();
    old_locus = gfc_current_locus;
  
    if (match_derived_type_spec (ts) == MATCH_YES)
      {
        /* Enforce F03:C401.  */
--- 2001,2017 ----
  {
    match m;
    locus old_locus;
!   char c, name[GFC_MAX_SYMBOL_LEN + 1];
  
    gfc_clear_ts (ts);
    gfc_gobble_whitespace ();
    old_locus = gfc_current_locus;
  
+   /* If c isn't [a-z], then return immediately.  */
+   c = gfc_peek_ascii_char ();
+   if (!ISALPHA(c))
+     return MATCH_NO;
+ 
    if (match_derived_type_spec (ts) == MATCH_YES)
      {
        /* Enforce F03:C401.  */
*************** gfc_match_type_spec (gfc_typespec *ts)
*** 2045,2050 ****
--- 2050,2057 ----
        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;
*************** gfc_match_type_spec (gfc_typespec *ts)
*** 2056,2062 ****
       or list item in a type-list of an OpenMP reduction clause.  Need to
       differentiate REAL([KIND]=scalar-int-initialization-expr) from
       REAL(A,[KIND]) and REAL(KIND,A).  Logically, when this code was
!      written the use of LOGICAL as a type-spec or intrinsic subprogram 
       was overlooked.  */
  
    m = gfc_match (" %n", name);
--- 2063,2069 ----
       or list item in a type-list of an OpenMP reduction clause.  Need to
       differentiate REAL([KIND]=scalar-int-initialization-expr) from
       REAL(A,[KIND]) and REAL(KIND,A).  Logically, when this code was
!      written the use of LOGICAL as a type-spec or intrinsic subprogram
       was overlooked.  */
  
    m = gfc_match (" %n", name);
*************** gfc_match_deallocate (void)
*** 4404,4411 ****
  	   && (tail->expr->ref->type == REF_COMPONENT
  	       || tail->expr->ref->type == REF_ARRAY));
        if (sym && sym->ts.type == BT_CLASS)
! 	b2 = !(CLASS_DATA (sym)->attr.allocatable
! 	       || CLASS_DATA (sym)->attr.class_pointer);
        else
  	b2 = sym && !(sym->attr.allocatable || sym->attr.pointer
  		      || sym->attr.proc_pointer);
--- 4411,4418 ----
  	   && (tail->expr->ref->type == REF_COMPONENT
  	       || tail->expr->ref->type == REF_ARRAY));
        if (sym && sym->ts.type == BT_CLASS)
! 	b2 = !(CLASS_DATA (sym) && (CLASS_DATA (sym)->attr.allocatable
! 	       || CLASS_DATA (sym)->attr.class_pointer));
        else
  	b2 = sym && !(sym->attr.allocatable || sym->attr.pointer
  		      || sym->attr.proc_pointer);
*************** copy_ts_from_selector_to_associate (gfc_
*** 5707,5712 ****
--- 5714,5720 ----
  {
    gfc_ref *ref;
    gfc_symbol *assoc_sym;
+   int rank = 0;
  
    assoc_sym = associate->symtree->n.sym;
  
*************** copy_ts_from_selector_to_associate (gfc_
*** 5743,5756 ****
  	selector->rank = ref->u.ar.dimen;
        else
  	selector->rank = 0;
      }
  
!   if (selector->rank)
      {
!       assoc_sym->attr.dimension = 1;
!       assoc_sym->as = gfc_get_array_spec ();
!       assoc_sym->as->rank = selector->rank;
!       assoc_sym->as->type = AS_DEFERRED;
      }
    else
      assoc_sym->as = NULL;
--- 5751,5778 ----
  	selector->rank = ref->u.ar.dimen;
        else
  	selector->rank = 0;
+ 
+       rank = selector->rank;
      }
  
!   if (rank)
      {
!       for (int i = 0; i < ref->u.ar.dimen + ref->u.ar.codimen; i++)
! 	if (ref->u.ar.dimen_type[i] == DIMEN_ELEMENT
! 	    || (ref->u.ar.dimen_type[i] == DIMEN_UNKNOWN
! 		&& ref->u.ar.end[i] == NULL
! 		&& ref->u.ar.stride[i] == NULL))
! 	  rank--;
! 
!       if (rank)
! 	{
! 	  assoc_sym->attr.dimension = 1;
! 	  assoc_sym->as = gfc_get_array_spec ();
! 	  assoc_sym->as->rank = rank;
! 	  assoc_sym->as->type = AS_DEFERRED;
! 	}
!       else
! 	assoc_sym->as = NULL;
      }
    else
      assoc_sym->as = NULL;
diff -Nrcpad gcc-7.3.0/gcc/fortran/module.c gcc-7.4.0/gcc/fortran/module.c
*** gcc-7.3.0/gcc/fortran/module.c	Thu May  4 18:45:50 2017
--- gcc-7.4.0/gcc/fortran/module.c	Fri Oct 12 14:47:57 2018
*************** mio_component (gfc_component *c, int vty
*** 2791,2796 ****
--- 2791,2798 ----
    if (c->attr.proc_pointer)
      mio_typebound_proc (&c->tb);
  
+   c->loc = gfc_current_locus;
+ 
    mio_rparen ();
  }
  
*************** static const mstring omp_declare_simd_cl
*** 4016,4021 ****
--- 4018,4026 ----
      minit ("UNIFORM", 3),
      minit ("LINEAR", 4),
      minit ("ALIGNED", 5),
+     minit ("LINEAR_REF", 33),
+     minit ("LINEAR_VAL", 34),
+     minit ("LINEAR_UVAL", 35),
      minit (NULL, -1)
  };
  
*************** mio_omp_declare_simd (gfc_namespace *ns,
*** 4058,4064 ****
  	    }
  	  for (n = ods->clauses->lists[OMP_LIST_LINEAR]; n; n = n->next)
  	    {
! 	      mio_name (4, omp_declare_simd_clauses);
  	      mio_symbol_ref (&n->sym);
  	      mio_expr (&n->expr);
  	    }
--- 4063,4072 ----
  	    }
  	  for (n = ods->clauses->lists[OMP_LIST_LINEAR]; n; n = n->next)
  	    {
! 	      if (n->u.linear_op == OMP_LINEAR_DEFAULT)
! 		mio_name (4, omp_declare_simd_clauses);
! 	      else
! 		mio_name (32 + n->u.linear_op, omp_declare_simd_clauses);
  	      mio_symbol_ref (&n->sym);
  	      mio_expr (&n->expr);
  	    }
*************** mio_omp_declare_simd (gfc_namespace *ns,
*** 4099,4109 ****
--- 4107,4126 ----
  	    case 4:
  	    case 5:
  	      *ptrs[t - 3] = n = gfc_get_omp_namelist ();
+ 	    finish_namelist:
+ 	      n->where = gfc_current_locus;
  	      ptrs[t - 3] = &n->next;
  	      mio_symbol_ref (&n->sym);
  	      if (t != 3)
  		mio_expr (&n->expr);
  	      break;
+ 	    case 33:
+ 	    case 34:
+ 	    case 35:
+ 	      *ptrs[1] = n = gfc_get_omp_namelist ();
+ 	      n->u.linear_op = (enum gfc_omp_linear_op) (t - 32);
+ 	      t = 4;
+ 	      goto finish_namelist;
  	    }
  	}
      }
*************** dump_module (const char *name, int dump_
*** 6063,6070 ****
      gfc_fatal_error ("Can't open module file %qs for writing at %C: %s",
  		     filename_tmp, xstrerror (errno));
  
    gzprintf (module_fp, "GFORTRAN module version '%s' created from %s\n",
! 	    MOD_VERSION, gfc_source_file);
  
    /* Write the module itself.  */
    iomode = IO_OUTPUT;
--- 6080,6089 ----
      gfc_fatal_error ("Can't open module file %qs for writing at %C: %s",
  		     filename_tmp, xstrerror (errno));
  
+   /* Use lbasename to ensure module files are reproducible regardless
+      of the build path (see the reproducible builds project).  */
    gzprintf (module_fp, "GFORTRAN module version '%s' created from %s\n",
! 	    MOD_VERSION, lbasename (gfc_source_file));
  
    /* Write the module itself.  */
    iomode = IO_OUTPUT;
diff -Nrcpad gcc-7.3.0/gcc/fortran/openmp.c gcc-7.4.0/gcc/fortran/openmp.c
*** gcc-7.3.0/gcc/fortran/openmp.c	Fri Jun  2 07:10:10 2017
--- gcc-7.4.0/gcc/fortran/openmp.c	Fri Jun 22 21:09:32 2018
*************** gfc_match_omp_clauses (gfc_omp_clauses *
*** 1312,1334 ****
  	      else if (gfc_match_omp_variable_list (" val (",
  						    &c->lists[OMP_LIST_LINEAR],
  						    false, NULL, &head)
! 		  == MATCH_YES)
  		linear_op = OMP_LINEAR_VAL;
  	      else if (gfc_match_omp_variable_list (" uval (",
  						    &c->lists[OMP_LIST_LINEAR],
  						    false, NULL, &head)
! 		  == MATCH_YES)
  		linear_op = OMP_LINEAR_UVAL;
  	      else if (gfc_match_omp_variable_list ("",
  						    &c->lists[OMP_LIST_LINEAR],
  						    false, &end_colon, &head)
! 		  == MATCH_YES)
  		linear_op = OMP_LINEAR_DEFAULT;
  	      else
  		{
- 		  gfc_free_omp_namelist (*head);
  		  gfc_current_locus = old_loc;
- 		  *head = NULL;
  		  break;
  		}
  	      if (linear_op != OMP_LINEAR_DEFAULT)
--- 1312,1332 ----
  	      else if (gfc_match_omp_variable_list (" val (",
  						    &c->lists[OMP_LIST_LINEAR],
  						    false, NULL, &head)
! 		       == MATCH_YES)
  		linear_op = OMP_LINEAR_VAL;
  	      else if (gfc_match_omp_variable_list (" uval (",
  						    &c->lists[OMP_LIST_LINEAR],
  						    false, NULL, &head)
! 		       == MATCH_YES)
  		linear_op = OMP_LINEAR_UVAL;
  	      else if (gfc_match_omp_variable_list ("",
  						    &c->lists[OMP_LIST_LINEAR],
  						    false, &end_colon, &head)
! 		       == MATCH_YES)
  		linear_op = OMP_LINEAR_DEFAULT;
  	      else
  		{
  		  gfc_current_locus = old_loc;
  		  break;
  		}
  	      if (linear_op != OMP_LINEAR_DEFAULT)
*************** resolve_omp_do (gfc_code *code)
*** 5577,5584 ****
  			     "iteration space at %L", name, &do_code->loc);
  		  break;
  		}
- 	      if (j < i)
- 		break;
  	      do_code2 = do_code2->block->next;
  	    }
  	}
--- 5575,5580 ----
*************** resolve_oacc_nested_loops (gfc_code *cod
*** 5742,5753 ****
  		  || gfc_find_sym_in_expr (ivar, do_code->ext.iterator->end)
  		  || gfc_find_sym_in_expr (ivar, do_code->ext.iterator->step))
  		{
! 		  gfc_error ("!$ACC LOOP %s loops don't form rectangular iteration space at %L",
! 			     clause, &do_code->loc);
  		  break;
  		}
- 	      if (j < i)
- 		break;
  	      do_code2 = do_code2->block->next;
  	    }
  	}
--- 5738,5747 ----
  		  || gfc_find_sym_in_expr (ivar, do_code->ext.iterator->end)
  		  || gfc_find_sym_in_expr (ivar, do_code->ext.iterator->step))
  		{
! 		  gfc_error ("!$ACC LOOP %s loops don't form rectangular "
! 			     "iteration space at %L", clause, &do_code->loc);
  		  break;
  		}
  	      do_code2 = do_code2->block->next;
  	    }
  	}
diff -Nrcpad gcc-7.3.0/gcc/fortran/primary.c gcc-7.4.0/gcc/fortran/primary.c
*** gcc-7.3.0/gcc/fortran/primary.c	Mon Oct 16 19:44:04 2017
--- gcc-7.4.0/gcc/fortran/primary.c	Tue Mar  6 19:27:48 2018
*************** match_sym_complex_part (gfc_expr **resul
*** 1247,1254 ****
  
    if (sym->attr.flavor != FL_PARAMETER)
      {
!       gfc_error ("Expected PARAMETER symbol in complex constant at %C");
!       return MATCH_ERROR;
      }
  
    if (!sym->value)
--- 1247,1268 ----
  
    if (sym->attr.flavor != FL_PARAMETER)
      {
!       /* Give the matcher for implied do-loops a chance to run.  This yields
! 	 a much saner error message for "write(*,*) (i, i=1, 6" where the 
! 	 right parenthesis is missing.  */
!       char c;
!       gfc_gobble_whitespace ();
!       c = gfc_peek_ascii_char ();
!       if (c == '=' || c == ',')
! 	{
! 	  m = MATCH_NO;
! 	}
!       else
! 	{
! 	  gfc_error ("Expected PARAMETER symbol in complex constant at %C");
! 	  m = MATCH_ERROR;
! 	}
!       return m;
      }
  
    if (!sym->value)
diff -Nrcpad gcc-7.3.0/gcc/fortran/resolve.c gcc-7.4.0/gcc/fortran/resolve.c
*** gcc-7.3.0/gcc/fortran/resolve.c	Wed Jan 10 23:41:48 2018
--- gcc-7.4.0/gcc/fortran/resolve.c	Sat Nov 24 18:54:52 2018
*************** resolve_formal_arglist (gfc_symbol *proc
*** 512,519 ****
  	{
  	  if (sym->as != NULL)
  	    {
! 	      gfc_error ("Argument %qs of statement function at %L must "
! 			 "be scalar", sym->name, &sym->declared_at);
  	      continue;
  	    }
  
--- 512,522 ----
  	{
  	  if (sym->as != NULL)
  	    {
! 	      /* F03:C1263 (R1238) The function-name and each dummy-arg-name
! 		 shall be specified, explicitly or implicitly, to be scalar.  */
! 	      gfc_error ("Argument '%s' of statement function '%s' at %L "
! 			 "must be scalar", sym->name, proc->name,
! 			 &proc->declared_at);
  	      continue;
  	    }
  
*************** update_current_proc_array_outer_dependen
*** 2903,2910 ****
  
    /* If SYM has references to outer arrays, so has the procedure calling
       SYM.  If SYM is a procedure pointer, we can assume the worst.  */
!   if (sym->attr.array_outer_dependency
!       || sym->attr.proc_pointer)
      gfc_current_ns->proc_name->attr.array_outer_dependency = 1;
  }
  
--- 2906,2913 ----
  
    /* If SYM has references to outer arrays, so has the procedure calling
       SYM.  If SYM is a procedure pointer, we can assume the worst.  */
!   if ((sym->attr.array_outer_dependency || sym->attr.proc_pointer)
!       && gfc_current_ns->proc_name)
      gfc_current_ns->proc_name->attr.array_outer_dependency = 1;
  }
  
*************** resolve_operator (gfc_expr *e)
*** 3682,3688 ****
  	  break;
  	}
  
!       sprintf (msg,
  	       _("Operands of binary numeric operator %%<%s%%> at %%L are %s/%s"),
  	       gfc_op2string (e->value.op.op), gfc_typename (&op1->ts),
  	       gfc_typename (&op2->ts));
--- 3685,3697 ----
  	  break;
  	}
  
!       if (op1->ts.type == BT_DERIVED || op2->ts.type == BT_DERIVED)
! 	sprintf (msg,
! 	       _("Unexpected derived-type entities in binary intrinsic "
! 		 "numeric operator %%<%s%%> at %%L"),
! 	       gfc_op2string (e->value.op.op));
!       else
!       	sprintf (msg,
  	       _("Operands of binary numeric operator %%<%s%%> at %%L are %s/%s"),
  	       gfc_op2string (e->value.op.op), gfc_typename (&op1->ts),
  	       gfc_typename (&op2->ts));
*************** resolve_variable (gfc_expr *e)
*** 5123,5129 ****
       the ts' type of the component refs is still array valued, which
       can't be translated that way.  */
    if (sym->assoc && e->rank == 0 && e->ref && sym->ts.type == BT_CLASS
!       && sym->assoc->target->ts.type == BT_CLASS
        && CLASS_DATA (sym->assoc->target)->as)
      {
        gfc_ref *ref = e->ref;
--- 5132,5138 ----
       the ts' type of the component refs is still array valued, which
       can't be translated that way.  */
    if (sym->assoc && e->rank == 0 && e->ref && sym->ts.type == BT_CLASS
!       && sym->assoc->target && sym->assoc->target->ts.type == BT_CLASS
        && CLASS_DATA (sym->assoc->target)->as)
      {
        gfc_ref *ref = e->ref;
*************** resolve_allocate_deallocate (gfc_code *c
*** 7551,7562 ****
        gfc_check_vardef_context (errmsg, false, false, false,
  				_("ERRMSG variable"));
  
        if ((errmsg->ts.type != BT_CHARACTER
  	   && !(errmsg->ref
  		&& (errmsg->ref->type == REF_ARRAY
  		    || errmsg->ref->type == REF_COMPONENT)))
! 	  || errmsg->rank > 0 )
! 	gfc_error ("Errmsg-variable at %L must be a scalar CHARACTER "
  		   "variable", &errmsg->where);
  
        for (p = code->ext.alloc.list; p; p = p->next)
--- 7560,7576 ----
        gfc_check_vardef_context (errmsg, false, false, false,
  				_("ERRMSG variable"));
  
+       /* F18:R928  alloc-opt             is ERRMSG = errmsg-variable
+ 	 F18:R930  errmsg-variable       is scalar-default-char-variable
+ 	 F18:R906  default-char-variable is variable
+ 	 F18:C906  default-char-variable shall be default character.  */
        if ((errmsg->ts.type != BT_CHARACTER
  	   && !(errmsg->ref
  		&& (errmsg->ref->type == REF_ARRAY
  		    || errmsg->ref->type == REF_COMPONENT)))
! 	  || errmsg->rank > 0
! 	  || errmsg->ts.kind != gfc_default_character_kind)
! 	gfc_error ("ERRMSG variable at %L shall be a scalar default CHARACTER "
  		   "variable", &errmsg->where);
  
        for (p = code->ext.alloc.list; p; p = p->next)
*************** build_loc_call (gfc_expr *sym_expr)
*** 8495,8501 ****
    gfc_expr *loc_call;
    loc_call = gfc_get_expr ();
    loc_call->expr_type = EXPR_FUNCTION;
!   gfc_get_sym_tree ("loc", gfc_current_ns, &loc_call->symtree, false);
    loc_call->symtree->n.sym->attr.flavor = FL_PROCEDURE;
    loc_call->symtree->n.sym->attr.intrinsic = 1;
    loc_call->symtree->n.sym->result = loc_call->symtree->n.sym;
--- 8509,8515 ----
    gfc_expr *loc_call;
    loc_call = gfc_get_expr ();
    loc_call->expr_type = EXPR_FUNCTION;
!   gfc_get_sym_tree ("_loc", gfc_current_ns, &loc_call->symtree, false);
    loc_call->symtree->n.sym->attr.flavor = FL_PROCEDURE;
    loc_call->symtree->n.sym->attr.intrinsic = 1;
    loc_call->symtree->n.sym->result = loc_call->symtree->n.sym;
*************** resolve_select_type (gfc_code *code, gfc
*** 8548,8553 ****
--- 8562,8570 ----
  	code->expr1->symtree->n.sym->ts = code->expr2->ts;
        selector_type = CLASS_DATA (code->expr2)->ts.u.derived;
  
+       if (code->expr2->rank && CLASS_DATA (code->expr1)->as)
+ 	CLASS_DATA (code->expr1)->as->rank = code->expr2->rank;
+ 
        /* F2008: C803 The selector expression must not be coindexed.  */
        if (gfc_is_coindexed (code->expr2))
  	{
*************** resolve_select_type (gfc_code *code, gfc
*** 8742,8748 ****
  	    {
  	      vtab = gfc_find_derived_vtab (c->ts.u.derived);
  	      gcc_assert (vtab);
! 	      c->high = gfc_get_int_expr (gfc_default_integer_kind, NULL,
  					  c->ts.u.derived->hash_value);
  	    }
  	  else
--- 8759,8765 ----
  	    {
  	      vtab = gfc_find_derived_vtab (c->ts.u.derived);
  	      gcc_assert (vtab);
! 	      c->high = gfc_get_int_expr (gfc_integer_4_kind, NULL,
  					  c->ts.u.derived->hash_value);
  	    }
  	  else
*************** resolve_select_type (gfc_code *code, gfc
*** 8751,8756 ****
--- 8768,8780 ----
  	      gcc_assert (vtab && CLASS_DATA (vtab)->initializer);
  	      e = CLASS_DATA (vtab)->initializer;
  	      c->high = gfc_copy_expr (e);
+ 	      if (c->high->ts.kind != gfc_integer_4_kind)
+ 		{
+ 		  gfc_typespec ts;
+ 		  ts.kind = gfc_integer_4_kind;
+ 		  ts.type = BT_INTEGER;
+ 		  gfc_convert_type_warn (c->high, &ts, 2, 0);
+ 		}
  	    }
  
  	  e = gfc_lval_expr_from_sym (vtab);
*************** resolve_transfer (gfc_code *code)
*** 8996,9014 ****
        else
  	derived = ts->u.derived->components->ts.u.derived;
  
!       if (dt->format_expr)
! 	{
! 	  char *fmt;
! 	  fmt = gfc_widechar_to_char (dt->format_expr->value.character.string,
! 				      -1);
! 	  if (strtok (fmt, "DT") != NULL)
! 	    formatted = true;
! 	}
!       else if (dt->format_label == &format_asterisk)
! 	{
! 	  /* List directed io must call the formatted DTIO procedure.  */
! 	  formatted = true;
! 	}
  
        write = dt->dt_io_kind->value.iokind == M_WRITE
  	      || dt->dt_io_kind->value.iokind == M_PRINT;
--- 9020,9028 ----
        else
  	derived = ts->u.derived->components->ts.u.derived;
  
!       /* Determine when to use the formatted DTIO procedure.  */
!       if (dt && (dt->format_expr || dt->format_label))
! 	formatted = true;
  
        write = dt->dt_io_kind->value.iokind == M_WRITE
  	      || dt->dt_io_kind->value.iokind == M_PRINT;
*************** resolve_sync (gfc_code *code)
*** 9296,9301 ****
--- 9310,9316 ----
      }
  
    /* Check STAT.  */
+   gfc_resolve_expr (code->expr2);
    if (code->expr2
        && (code->expr2->ts.type != BT_INTEGER || code->expr2->rank != 0
  	  || code->expr2->expr_type != EXPR_VARIABLE))
*************** resolve_sync (gfc_code *code)
*** 9303,9308 ****
--- 9318,9324 ----
  	       &code->expr2->where);
  
    /* Check ERRMSG.  */
+   gfc_resolve_expr (code->expr3);
    if (code->expr3
        && (code->expr3->ts.type != BT_CHARACTER || code->expr3->rank != 0
  	  || code->expr3->expr_type != EXPR_VARIABLE))
*************** resolve_ordinary_assign (gfc_code *code,
*** 10135,10140 ****
--- 10151,10161 ----
        && rhs->expr_type != EXPR_ARRAY)
      gfc_add_data_component (rhs);
  
+   /* Make sure there is a vtable and, in particular, a _copy for the
+      rhs type.  */
+   if (UNLIMITED_POLY (lhs) && lhs->rank && rhs->ts.type != BT_CLASS)
+     gfc_find_vtab (&rhs->ts);
+ 
    bool caf_convert_to_send = flag_coarray == GFC_FCOARRAY_LIB
        && (lhs_coindexed
  	  || (code->expr2->expr_type == EXPR_FUNCTION
*************** get_temp_from_expr (gfc_expr *e, gfc_nam
*** 10273,10278 ****
--- 10294,10301 ----
    tmp->n.sym->attr.function = 0;
    tmp->n.sym->attr.result = 0;
    tmp->n.sym->attr.flavor = FL_VARIABLE;
+   tmp->n.sym->attr.dummy = 0;
+   tmp->n.sym->attr.intent = INTENT_UNKNOWN;
  
    if (as)
      {
*************** resolve_fl_procedure (gfc_symbol *sym, i
*** 12225,12230 ****
--- 12248,12266 ----
  	}
      }
  
+   /* F2018, C15100: "The result of an elemental function shall be scalar,
+      and shall not have the POINTER or ALLOCATABLE attribute."  The scalar
+      pointer is tested and caught elsewhere.  */
+   if (sym->attr.elemental && sym->result
+       && (sym->result->attr.allocatable || sym->result->attr.pointer))
+     {
+       gfc_error ("Function result variable %qs at %L of elemental "
+ 		 "function %qs shall not have an ALLOCATABLE or POINTER "
+ 		 "attribute", sym->result->name,
+ 		 &sym->result->declared_at, sym->name);
+       return false;
+     }
+ 
    if (sym->attr.is_bind_c && sym->attr.is_c_interop != 1)
      {
        gfc_formal_arglist *curr_arg;
*************** resolve_fl_procedure (gfc_symbol *sym, i
*** 12250,12256 ****
        while (curr_arg != NULL)
          {
            /* Skip implicitly typed dummy args here.  */
! 	  if (curr_arg->sym->attr.implicit_type == 0)
  	    if (!gfc_verify_c_interop_param (curr_arg->sym))
  	      /* If something is found to fail, record the fact so we
  		 can mark the symbol for the procedure as not being
--- 12286,12292 ----
        while (curr_arg != NULL)
          {
            /* Skip implicitly typed dummy args here.  */
! 	  if (curr_arg->sym && curr_arg->sym->attr.implicit_type == 0)
  	    if (!gfc_verify_c_interop_param (curr_arg->sym))
  	      /* If something is found to fail, record the fact so we
  		 can mark the symbol for the procedure as not being
*************** resolve_fl_derived0 (gfc_symbol *sym)
*** 13799,13804 ****
--- 13835,13865 ----
    if (!success)
      return false;
  
+   /* Now add the caf token field, where needed.  */
+   if (flag_coarray != GFC_FCOARRAY_NONE
+       && !sym->attr.is_class && !sym->attr.vtype)
+     {
+       for (c = sym->components; c; c = c->next)
+ 	if (!c->attr.dimension && !c->attr.codimension
+ 	    && (c->attr.allocatable || c->attr.pointer))
+ 	  {
+ 	    char name[GFC_MAX_SYMBOL_LEN+9];
+ 	    gfc_component *token;
+ 	    sprintf (name, "_caf_%s", c->name);
+ 	    token = gfc_find_component (sym, name, true, true, NULL);
+ 	    if (token == NULL)
+ 	      {
+ 		if (!gfc_add_component (sym, name, &token))
+ 		  return false;
+ 		token->ts.type = BT_VOID;
+ 		token->ts.kind = gfc_default_integer_kind;
+ 		token->attr.access = ACCESS_PRIVATE;
+ 		token->attr.artificial = 1;
+ 		token->attr.caf_token = 1;
+ 	      }
+ 	  }
+     }
+ 
    check_defined_assignments (sym);
  
    if (!sym->attr.defined_assign_comp && super_type)
*************** resolve_equivalence (gfc_equiv *eq)
*** 15827,15833 ****
  
  static bool
  flag_fn_result_spec (gfc_expr *expr,
!                      gfc_symbol *sym ATTRIBUTE_UNUSED,
                       int *f ATTRIBUTE_UNUSED)
  {
    gfc_namespace *ns;
--- 15888,15894 ----
  
  static bool
  flag_fn_result_spec (gfc_expr *expr,
!                      gfc_symbol *sym,
                       int *f ATTRIBUTE_UNUSED)
  {
    gfc_namespace *ns;
*************** flag_fn_result_spec (gfc_expr *expr,
*** 15840,15845 ****
--- 15901,15913 ----
  	if (!ns->parent)
  	  break;
  
+       if (sym == s)
+ 	{
+ 	  gfc_error ("Self reference in character length expression "
+ 		     "for %qs at %L", sym->name, &expr->where);
+ 	  return true;
+ 	}
+ 
        if (!s->fn_result_spec
  	  && s->attr.flavor == FL_PARAMETER)
  	{
*************** resolve_fntype (gfc_namespace *ns)
*** 15922,15928 ****
        }
  
    if (sym->ts.type == BT_CHARACTER)
!     gfc_traverse_expr (sym->ts.u.cl->length, NULL, flag_fn_result_spec, 0);
  }
  
  
--- 15990,15996 ----
        }
  
    if (sym->ts.type == BT_CHARACTER)
!     gfc_traverse_expr (sym->ts.u.cl->length, sym, flag_fn_result_spec, 0);
  }
  
  
diff -Nrcpad gcc-7.3.0/gcc/fortran/simplify.c gcc-7.4.0/gcc/fortran/simplify.c
*** gcc-7.3.0/gcc/fortran/simplify.c	Sat Jan 20 20:45:50 2018
--- gcc-7.4.0/gcc/fortran/simplify.c	Thu Jun  7 18:39:30 2018
*************** along with GCC; see the file COPYING3.
*** 25,30 ****
--- 25,31 ----
  #include "gfortran.h"
  #include "arith.h"
  #include "intrinsic.h"
+ #include "match.h"
  #include "target-memory.h"
  #include "constructor.h"
  #include "version.h"	/* For version_string.  */
*************** gfc_simplify_mod (gfc_expr *a, gfc_expr
*** 4641,4683 ****
    gfc_expr *result;
    int kind;
  
!   if (a->expr_type != EXPR_CONSTANT || p->expr_type != EXPR_CONSTANT)
      return NULL;
  
!   kind = a->ts.kind > p->ts.kind ? a->ts.kind : p->ts.kind;
!   result = gfc_get_constant_expr (a->ts.type, kind, &a->where);
! 
!   switch (a->ts.type)
      {
        case BT_INTEGER:
  	if (mpz_cmp_ui (p->value.integer, 0) == 0)
  	  {
! 	    /* Result is processor-dependent.  */
! 	    gfc_error ("Second argument MOD at %L is zero", &a->where);
! 	    gfc_free_expr (result);
  	    return &gfc_bad_expr;
  	  }
- 	mpz_tdiv_r (result->value.integer, a->value.integer, p->value.integer);
  	break;
- 
        case BT_REAL:
  	if (mpfr_cmp_ui (p->value.real, 0) == 0)
  	  {
! 	    /* Result is processor-dependent.  */
! 	    gfc_error ("Second argument of MOD at %L is zero", &p->where);
! 	    gfc_free_expr (result);
  	    return &gfc_bad_expr;
  	  }
- 
- 	gfc_set_model_kind (kind);
- 	mpfr_fmod (result->value.real, a->value.real, p->value.real,
- 		   GFC_RND_MODE);
  	break;
- 
        default:
  	gfc_internal_error ("gfc_simplify_mod(): Bad arguments");
      }
  
    return range_check (result, "MOD");
  }
  
--- 4642,4689 ----
    gfc_expr *result;
    int kind;
  
!   /* First check p.  */
!   if (p->expr_type != EXPR_CONSTANT)
      return NULL;
  
!   /* p shall not be 0.  */
!   switch (p->ts.type)
      {
        case BT_INTEGER:
  	if (mpz_cmp_ui (p->value.integer, 0) == 0)
  	  {
! 	    gfc_error ("Argument %qs of MOD at %L shall not be zero",
! 			"P", &p->where);
  	    return &gfc_bad_expr;
  	  }
  	break;
        case BT_REAL:
  	if (mpfr_cmp_ui (p->value.real, 0) == 0)
  	  {
! 	    gfc_error ("Argument %qs of MOD at %L shall not be zero",
! 			"P", &p->where);
  	    return &gfc_bad_expr;
  	  }
  	break;
        default:
  	gfc_internal_error ("gfc_simplify_mod(): Bad arguments");
      }
  
+   if (a->expr_type != EXPR_CONSTANT)
+     return NULL;
+ 
+   kind = a->ts.kind > p->ts.kind ? a->ts.kind : p->ts.kind;
+   result = gfc_get_constant_expr (a->ts.type, kind, &a->where);
+ 
+   if (a->ts.type == BT_INTEGER)
+     mpz_tdiv_r (result->value.integer, a->value.integer, p->value.integer);
+   else
+     {
+       gfc_set_model_kind (kind);
+       mpfr_fmod (result->value.real, a->value.real, p->value.real,
+ 		 GFC_RND_MODE);
+     }
+ 
    return range_check (result, "MOD");
  }
  
*************** gfc_simplify_transfer (gfc_expr *source,
*** 6579,6588 ****
    unsigned char *buffer;
    size_t result_length;
  
  
!   if (!gfc_is_constant_expr (source)
! 	|| (gfc_init_expr_flag && !gfc_is_constant_expr (mold))
! 	|| !gfc_is_constant_expr (size))
      return NULL;
  
    if (!gfc_calculate_transfer_sizes (source, mold, size, &source_size, 
--- 6585,6596 ----
    unsigned char *buffer;
    size_t result_length;
  
+   if (!gfc_is_constant_expr (source) || !gfc_is_constant_expr (size))
+     return NULL;
  
!   if (!gfc_resolve_expr (mold))
!     return NULL;
!   if (gfc_init_expr_flag && !gfc_is_constant_expr (mold))
      return NULL;
  
    if (!gfc_calculate_transfer_sizes (source, mold, size, &source_size, 
*************** gfc_convert_constant (gfc_expr *e, bt ty
*** 7172,7197 ****
  	{
  	  gfc_expr *tmp;
  	  if (c->iterator == NULL)
! 	    tmp = f (c->expr, kind);
  	  else
  	    {
  	      g = gfc_convert_constant (c->expr, type, kind);
! 	      if (g == &gfc_bad_expr)
  	        {
  		  gfc_free_expr (result);
  		  return g;
  		}
! 	      tmp = g;
! 	    }
! 
! 	  if (tmp == NULL)
! 	    {
! 	      gfc_free_expr (result);
! 	      return NULL;
  	    }
- 
- 	  gfc_constructor_append_expr (&result->value.constructor,
- 				       tmp, &c->where);
  	}
  
        break;
--- 7180,7211 ----
  	{
  	  gfc_expr *tmp;
  	  if (c->iterator == NULL)
! 	    {
! 	      tmp = f (c->expr, kind);
! 	      if (tmp == NULL)
! 		{
! 		  gfc_free_expr (result);
! 		  return NULL;
! 		}
! 
! 	      gfc_constructor_append_expr (&result->value.constructor,
! 					   tmp, &c->where);
! 	    }
  	  else
  	    {
+ 	      gfc_constructor *n;
  	      g = gfc_convert_constant (c->expr, type, kind);
! 	      if (g == NULL || g == &gfc_bad_expr)
  	        {
  		  gfc_free_expr (result);
  		  return g;
  		}
! 	      n = gfc_constructor_get ();
! 	      n->expr = g;
! 	      n->iterator = gfc_copy_iterator (c->iterator);
! 	      n->where = c->where;
! 	      gfc_constructor_append (&result->value.constructor, n);
  	    }
  	}
  
        break;
diff -Nrcpad gcc-7.3.0/gcc/fortran/symbol.c gcc-7.4.0/gcc/fortran/symbol.c
*** gcc-7.3.0/gcc/fortran/symbol.c	Tue Apr  4 13:41:41 2017
--- gcc-7.4.0/gcc/fortran/symbol.c	Sat Jun  9 20:10:34 2018
*************** gfc_add_volatile (symbol_attribute *attr
*** 1259,1264 ****
--- 1259,1278 ----
  			 where))
        return false;
  
+   /* F2008:  C1282 A designator of a variable with the VOLATILE attribute
+      shall not appear in a pure subprogram.
+ 
+      F2018: C1588 A local variable of a pure subprogram, or of a BLOCK
+      construct within a pure subprogram, shall not have the SAVE or
+      VOLATILE attribute.  */
+   if (gfc_pure (NULL))
+     {
+       gfc_error ("VOLATILE attribute at %L cannot be specified in a "
+ 		 "PURE procedure", where);
+       return false;
+     }
+ 
+ 
    attr->volatile_ = 1;
    attr->volatile_ns = gfc_current_ns;
    return check_conflict (attr, name, where);
diff -Nrcpad gcc-7.3.0/gcc/fortran/trans-array.c gcc-7.4.0/gcc/fortran/trans-array.c
*** gcc-7.3.0/gcc/fortran/trans-array.c	Mon Nov 13 20:01:20 2017
--- gcc-7.4.0/gcc/fortran/trans-array.c	Tue Jul  3 09:46:31 2018
*************** gfc_add_loop_ss_code (gfc_loopinfo * loo
*** 2652,2657 ****
--- 2652,2659 ----
  	  gfc_init_se (&se, NULL);
  	  se.loop = loop;
  	  se.ss = ss;
+ 	  if (gfc_is_class_array_function (expr))
+ 	    expr->must_finalize = 1;
  	  gfc_conv_expr (&se, expr);
  	  gfc_add_block_to_block (&outer_loop->pre, &se.pre);
  	  gfc_add_block_to_block (&outer_loop->post, &se.post);
*************** conv_array_index_offset (gfc_se * se, gf
*** 3071,3077 ****
      }
  
    /* Multiply by the stride.  */
!   if (!integer_onep (stride))
      index = fold_build2_loc (input_location, MULT_EXPR, gfc_array_index_type,
  			     index, stride);
  
--- 3073,3079 ----
      }
  
    /* Multiply by the stride.  */
!   if (stride != NULL && !integer_onep (stride))
      index = fold_build2_loc (input_location, MULT_EXPR, gfc_array_index_type,
  			     index, stride);
  
*************** build_class_array_ref (gfc_se *se, tree
*** 3102,3108 ****
      {
        if (expr == NULL
  	  || (expr->ts.type != BT_CLASS
! 	      && !gfc_is_alloc_class_array_function (expr)
  	      && !gfc_is_class_array_ref (expr, NULL)))
  	return false;
  
--- 3104,3110 ----
      {
        if (expr == NULL
  	  || (expr->ts.type != BT_CLASS
! 	      && !gfc_is_class_array_function (expr)
  	      && !gfc_is_class_array_ref (expr, NULL)))
  	return false;
  
*************** build_class_array_ref (gfc_se *se, tree
*** 3132,3143 ****
      }
  
    if (class_ref == NULL && expr && expr->symtree->n.sym->attr.function
!       && expr->symtree->n.sym == expr->symtree->n.sym->result)
      {
-       gcc_assert (expr->symtree->n.sym->backend_decl == current_function_decl);
        decl = gfc_get_fake_result_decl (expr->symtree->n.sym, 0);
      }
!   else if (expr && gfc_is_alloc_class_array_function (expr))
      {
        size = NULL_TREE;
        decl = NULL_TREE;
--- 3134,3145 ----
      }
  
    if (class_ref == NULL && expr && expr->symtree->n.sym->attr.function
!       && expr->symtree->n.sym == expr->symtree->n.sym->result
!       && expr->symtree->n.sym->backend_decl == current_function_decl)
      {
        decl = gfc_get_fake_result_decl (expr->symtree->n.sym, 0);
      }
!   else if (expr && gfc_is_class_array_function (expr))
      {
        size = NULL_TREE;
        decl = NULL_TREE;
*************** build_class_array_ref (gfc_se *se, tree
*** 3160,3165 ****
--- 3162,3169 ----
  
        if (decl == NULL_TREE)
  	return false;
+ 
+       se->class_vptr = gfc_evaluate_now (gfc_class_vptr_get (decl), &se->pre);
      }
    else if (class_ref == NULL)
      {
*************** build_array_ref (tree desc, tree offset,
*** 3334,3340 ****
      {
        type = gfc_get_element_type (type);
        tmp = TREE_OPERAND (cdecl, 0);
!       tmp = gfc_get_class_array_ref (offset, tmp, NULL_TREE);
        tmp = fold_convert (build_pointer_type (type), tmp);
        tmp = build_fold_indirect_ref_loc (input_location, tmp);
        return tmp;
--- 3338,3347 ----
      {
        type = gfc_get_element_type (type);
        tmp = TREE_OPERAND (cdecl, 0);
!       /* Note that the fourth argument in this call has been set false.
! 	 should any character dynamic types come this way, the 'len'
! 	 field of the unlimited object will not be used.  */
!       tmp = gfc_get_class_array_ref (offset, tmp, NULL_TREE, false);
        tmp = fold_convert (build_pointer_type (type), tmp);
        tmp = build_fold_indirect_ref_loc (input_location, tmp);
        return tmp;
*************** gfc_conv_expr_descriptor (gfc_se *se, gf
*** 7125,7131 ****
        else
  	{
  	  /* Otherwise make a new one.  */
! 	  parmtype = gfc_get_element_type (TREE_TYPE (desc));
  	  parmtype = gfc_get_array_type_bounds (parmtype, loop.dimen, codim,
  						loop.from, loop.to, 0,
  						GFC_ARRAY_UNKNOWN, false);
--- 7132,7142 ----
        else
  	{
  	  /* Otherwise make a new one.  */
! 	  if (expr->ts.type == BT_CHARACTER && expr->ts.deferred)
! 	    parmtype = gfc_typenode_for_spec (&expr->ts);
! 	  else
! 	    parmtype = gfc_get_element_type (TREE_TYPE (desc));
! 
  	  parmtype = gfc_get_array_type_bounds (parmtype, loop.dimen, codim,
  						loop.from, loop.to, 0,
  						GFC_ARRAY_UNKNOWN, false);
*************** structure_alloc_comps (gfc_symbol * der_
*** 8598,8604 ****
  	  break;
  
  	case COPY_ALLOC_COMP:
! 	  if (c->attr.pointer)
  	    continue;
  
  	  /* We need source and destination components.  */
--- 8609,8615 ----
  	  break;
  
  	case COPY_ALLOC_COMP:
! 	  if (c->attr.pointer || c->attr.proc_pointer)
  	    continue;
  
  	  /* We need source and destination components.  */
*************** structure_alloc_comps (gfc_symbol * der_
*** 8642,8647 ****
--- 8653,8683 ----
  
  	      gfc_init_block (&tmpblock);
  
+ 	      gfc_add_modify (&tmpblock, gfc_class_vptr_get (dcmp),
+ 			      gfc_class_vptr_get (comp));
+ 
+ 	      /* Copy the unlimited '_len' field. If it is greater than zero
+ 		 (ie. a character(_len)), multiply it by size and use this
+ 		 for the malloc call.  */
+ 	      if (UNLIMITED_POLY (c))
+ 		{
+ 		  tree ctmp;
+ 		  gfc_add_modify (&tmpblock, gfc_class_len_get (dcmp),
+ 				  gfc_class_len_get (comp));
+ 
+ 		  size = gfc_evaluate_now (size, &tmpblock);
+ 		  tmp = gfc_class_len_get (comp);
+ 		  ctmp = fold_build2_loc (input_location, MULT_EXPR,
+ 					  size_type_node, size,
+ 					  fold_convert (size_type_node, tmp));
+ 		  tmp = fold_build2_loc (input_location, GT_EXPR,
+ 					 logical_type_node, tmp,
+ 					 build_zero_cst (TREE_TYPE (tmp)));
+ 		  size = fold_build3_loc (input_location, COND_EXPR,
+ 					  size_type_node, tmp, ctmp, size);
+ 		  size = gfc_evaluate_now (size, &tmpblock);
+ 		}
+ 
  	      /* Coarray component have to have the same allocation status and
  		 shape/type-parameter/effective-type on the LHS and RHS of an
  		 intrinsic assignment. Hence, we did not deallocated them - and
*************** gfc_alloc_allocatable_for_assignment (gf
*** 9096,9101 ****
--- 9132,9143 ----
    if (expr2 && rss == gfc_ss_terminator)
      return NULL_TREE;
  
+   /* Ensure that the string length from the current scope is used.  */
+   if (expr2->ts.type == BT_CHARACTER
+       && expr2->expr_type == EXPR_FUNCTION
+       && !expr2->value.function.isym)
+     expr2->ts.u.cl->backend_decl = rss->info->string_length;
+ 
    gfc_start_block (&fblock);
  
    /* Since the lhs is allocatable, this must be a descriptor type.
*************** gfc_alloc_allocatable_for_assignment (gf
*** 9340,9345 ****
--- 9382,9389 ----
  			     gfc_array_index_type, tmp,
  			     expr1->ts.u.cl->backend_decl);
      }
+   else if (UNLIMITED_POLY (expr1) && expr2->ts.type != BT_CLASS)
+     tmp = TYPE_SIZE_UNIT (gfc_typenode_for_spec (&expr2->ts));
    else
      tmp = TYPE_SIZE_UNIT (gfc_typenode_for_spec (&expr1->ts));
    tmp = fold_convert (gfc_array_index_type, tmp);
*************** gfc_alloc_allocatable_for_assignment (gf
*** 9366,9371 ****
--- 9410,9437 ----
        gfc_add_modify (&fblock, tmp,
  		      gfc_get_dtype_rank_type (expr1->rank,type));
      }
+   else if (UNLIMITED_POLY (expr1) && expr2->ts.type != BT_CLASS)
+     {
+       tree type;
+       tmp = gfc_conv_descriptor_dtype (desc);
+       type = gfc_typenode_for_spec (&expr2->ts);
+       gfc_add_modify (&fblock, tmp,
+ 		      gfc_get_dtype_rank_type (expr2->rank,type));
+       /* Set the _len field as well...  */
+       tmp = gfc_class_len_get (TREE_OPERAND (desc, 0));
+       if (expr2->ts.type == BT_CHARACTER)
+ 	gfc_add_modify (&fblock, tmp,
+ 			fold_convert (TREE_TYPE (tmp),
+ 				      TYPE_SIZE_UNIT (type)));
+       else
+ 	gfc_add_modify (&fblock, tmp,
+ 			build_int_cst (TREE_TYPE (tmp), 0));
+       /* ...and the vptr.  */
+       tmp = gfc_class_vptr_get (TREE_OPERAND (desc, 0));
+       tmp2 = gfc_get_symbol_decl (gfc_find_vtab (&expr2->ts));
+       tmp2 = gfc_build_addr_expr (TREE_TYPE (tmp), tmp2);
+       gfc_add_modify (&fblock, tmp, tmp2);
+     }
    else if (coarray && GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc)))
      {
        gfc_add_modify (&fblock, gfc_conv_descriptor_dtype (desc),
*************** gfc_alloc_allocatable_for_assignment (gf
*** 9471,9480 ****
  
  
    /* We already set the dtype in the case of deferred character
!      length arrays.  */
    if (!(GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc))
  	&& ((expr1->ts.type == BT_CHARACTER && expr1->ts.deferred)
! 	    || coarray)))
      {
        tmp = gfc_conv_descriptor_dtype (desc);
        gfc_add_modify (&alloc_block, tmp, gfc_get_dtype (TREE_TYPE (desc)));
--- 9537,9547 ----
  
  
    /* We already set the dtype in the case of deferred character
!      length arrays and unlimited polymorphic arrays.  */
    if (!(GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc))
  	&& ((expr1->ts.type == BT_CHARACTER && expr1->ts.deferred)
! 	    || coarray))
!       && !UNLIMITED_POLY (expr1))
      {
        tmp = gfc_conv_descriptor_dtype (desc);
        gfc_add_modify (&alloc_block, tmp, gfc_get_dtype (TREE_TYPE (desc)));
*************** gfc_walk_function_expr (gfc_ss * ss, gfc
*** 10007,10013 ****
    if (!sym)
      sym = expr->symtree->n.sym;
  
!   if (gfc_is_alloc_class_array_function (expr))
      return gfc_get_array_ss (ss, expr,
  			     CLASS_DATA (expr->value.function.esym->result)->as->rank,
  			     GFC_SS_FUNCTION);
--- 10074,10080 ----
    if (!sym)
      sym = expr->symtree->n.sym;
  
!   if (gfc_is_class_array_function (expr))
      return gfc_get_array_ss (ss, expr,
  			     CLASS_DATA (expr->value.function.esym->result)->as->rank,
  			     GFC_SS_FUNCTION);
diff -Nrcpad gcc-7.3.0/gcc/fortran/trans-decl.c gcc-7.4.0/gcc/fortran/trans-decl.c
*** gcc-7.3.0/gcc/fortran/trans-decl.c	Mon Nov 13 20:01:20 2017
--- gcc-7.4.0/gcc/fortran/trans-decl.c	Wed May 16 11:17:10 2018
*************** gfc_finish_var_decl (tree decl, gfc_symb
*** 603,612 ****
       function scope.  */
    if (current_function_decl != NULL_TREE)
      {
!       if (sym->ns->proc_name->backend_decl == current_function_decl
! 	  || sym->result == sym)
  	gfc_add_decl_to_function (decl);
!       else if (sym->ns->proc_name->attr.flavor == FL_LABEL)
  	/* This is a BLOCK construct.  */
  	add_decl_as_local (decl);
        else
--- 603,614 ----
       function scope.  */
    if (current_function_decl != NULL_TREE)
      {
!       if (sym->ns->proc_name
! 	  && (sym->ns->proc_name->backend_decl == current_function_decl
! 	      || sym->result == sym))
  	gfc_add_decl_to_function (decl);
!       else if (sym->ns->proc_name
! 	       && sym->ns->proc_name->attr.flavor == FL_LABEL)
  	/* This is a BLOCK construct.  */
  	add_decl_as_local (decl);
        else
*************** gfc_finish_var_decl (tree decl, gfc_symb
*** 698,704 ****
      }
  
    /* Keep variables larger than max-stack-var-size off stack.  */
!   if (!sym->ns->proc_name->attr.recursive && !sym->attr.automatic
        && INTEGER_CST_P (DECL_SIZE_UNIT (decl))
        && !gfc_can_put_var_on_stack (DECL_SIZE_UNIT (decl))
  	 /* Put variable length auto array pointers always into stack.  */
--- 700,707 ----
      }
  
    /* Keep variables larger than max-stack-var-size off stack.  */
!   if (!(sym->ns->proc_name && sym->ns->proc_name->attr.recursive)
!       && !sym->attr.automatic
        && INTEGER_CST_P (DECL_SIZE_UNIT (decl))
        && !gfc_can_put_var_on_stack (DECL_SIZE_UNIT (decl))
  	 /* Put variable length auto array pointers always into stack.  */
*************** gfc_null_and_pass_deferred_len (gfc_symb
*** 4142,4147 ****
--- 4145,4168 ----
    return tmp;
  }
  
+ 
+ /* Get the result expression for a procedure.  */
+ 
+ static tree
+ get_proc_result (gfc_symbol* sym)
+ {
+   if (sym->attr.subroutine || sym == sym->result)
+     {
+       if (current_fake_result_decl != NULL)
+ 	return TREE_VALUE (current_fake_result_decl);
+ 
+       return NULL_TREE;
+     }
+ 
+   return sym->result->backend_decl;
+ }
+ 
+ 
  /* Generate function entry and exit code, and add it to the function body.
     This includes:
      Allocation and initialization of array variables.
*************** gfc_trans_deferred_vars (gfc_symbol * pr
*** 4251,4256 ****
--- 4272,4292 ----
        else
  	gcc_assert (flag_f2c && proc_sym->ts.type == BT_COMPLEX);
      }
+   else if (proc_sym == proc_sym->result && IS_CLASS_ARRAY (proc_sym))
+     {
+       /* Nullify explicit return class arrays on entry.  */
+       tree type;
+       tmp = get_proc_result (proc_sym);
+ 	if (tmp && GFC_CLASS_TYPE_P (TREE_TYPE (tmp)))
+ 	  {
+ 	    gfc_start_block (&init);
+ 	    tmp = gfc_class_data_get (tmp);
+ 	    type = TREE_TYPE (gfc_conv_descriptor_data_get (tmp));
+ 	    gfc_conv_descriptor_data_set (&init, tmp, build_int_cst (type, 0));
+ 	    gfc_add_init_cleanup (block, gfc_finish_block (&init), NULL_TREE);
+ 	  }
+     }
+ 
  
    /* Initialize the INTENT(OUT) derived type dummy arguments.  This
       should be done here so that the offsets and lbounds of arrays
*************** create_main_function (tree fndecl)
*** 5981,6003 ****
  }
  
  
- /* Get the result expression for a procedure.  */
- 
- static tree
- get_proc_result (gfc_symbol* sym)
- {
-   if (sym->attr.subroutine || sym == sym->result)
-     {
-       if (current_fake_result_decl != NULL)
- 	return TREE_VALUE (current_fake_result_decl);
- 
-       return NULL_TREE;
-     }
- 
-   return sym->result->backend_decl;
- }
- 
- 
  /* Generate an appropriate return-statement for a procedure.  */
  
  tree
--- 6017,6022 ----
diff -Nrcpad gcc-7.3.0/gcc/fortran/trans-expr.c gcc-7.4.0/gcc/fortran/trans-expr.c
*** gcc-7.3.0/gcc/fortran/trans-expr.c	Thu Nov 23 21:02:48 2017
--- gcc-7.4.0/gcc/fortran/trans-expr.c	Thu Sep 13 19:46:05 2018
*************** gfc_conv_class_to_class (gfc_se *parmse,
*** 960,965 ****
--- 960,966 ----
      }
  
    if ((ref == NULL || class_ref == ref)
+       && !(gfc_is_class_array_function (e) && parmse->class_vptr != NULL_TREE)
        && (!class_ts.u.derived->components->as
  	  || class_ts.u.derived->components->as->rank != -1))
      return;
*************** gfc_conv_class_to_class (gfc_se *parmse,
*** 1030,1037 ****
       First we have to find the corresponding class reference.  */
  
    tmp = NULL_TREE;
!   if (class_ref == NULL
! 	&& e->symtree && e->symtree->n.sym->ts.type == BT_CLASS)
      {
        tmp = e->symtree->n.sym->backend_decl;
  
--- 1031,1041 ----
       First we have to find the corresponding class reference.  */
  
    tmp = NULL_TREE;
!   if (gfc_is_class_array_function (e)
!       && parmse->class_vptr != NULL_TREE)
!     tmp = parmse->class_vptr;
!   else if (class_ref == NULL
! 	   && e->symtree && e->symtree->n.sym->ts.type == BT_CLASS)
      {
        tmp = e->symtree->n.sym->backend_decl;
  
*************** gfc_conv_class_to_class (gfc_se *parmse,
*** 1063,1069 ****
    if (TREE_CODE (TREE_TYPE (tmp)) == REFERENCE_TYPE)
      tmp = build_fold_indirect_ref_loc (input_location, tmp);
  
!   vptr = gfc_class_vptr_get (tmp);
    gfc_add_modify (&block, ctree,
  		  fold_convert (TREE_TYPE (ctree), vptr));
  
--- 1067,1077 ----
    if (TREE_CODE (TREE_TYPE (tmp)) == REFERENCE_TYPE)
      tmp = build_fold_indirect_ref_loc (input_location, tmp);
  
!   if (!(gfc_is_class_array_function (e) && parmse->class_vptr))
!     vptr = gfc_class_vptr_get (tmp);
!   else
!     vptr = tmp;
! 
    gfc_add_modify (&block, ctree,
  		  fold_convert (TREE_TYPE (ctree), vptr));
  
*************** gfc_conv_class_to_class (gfc_se *parmse,
*** 1148,1162 ****
     of the referenced element.  */
  
  tree
! gfc_get_class_array_ref (tree index, tree class_decl, tree data_comp)
  {
!   tree data = data_comp != NULL_TREE ? data_comp :
! 				       gfc_class_data_get (class_decl);
!   tree size = gfc_class_vtab_size_get (class_decl);
!   tree offset = fold_build2_loc (input_location, MULT_EXPR,
! 				 gfc_array_index_type,
! 				 index, size);
!   tree ptr;
    data = gfc_conv_descriptor_data_get (data);
    ptr = fold_convert (pvoid_type_node, data);
    ptr = fold_build_pointer_plus_loc (input_location, ptr, offset);
--- 1156,1187 ----
     of the referenced element.  */
  
  tree
! gfc_get_class_array_ref (tree index, tree class_decl, tree data_comp,
! 			 bool unlimited)
  {
!   tree data, size, tmp, ctmp, offset, ptr;
! 
!   data = data_comp != NULL_TREE ? data_comp :
! 				  gfc_class_data_get (class_decl);
!   size = gfc_class_vtab_size_get (class_decl);
! 
!   if (unlimited)
!     {
!       tmp = fold_convert (gfc_array_index_type,
! 			  gfc_class_len_get (class_decl));
!       ctmp = fold_build2_loc (input_location, MULT_EXPR,
! 			      gfc_array_index_type, size, tmp);
!       tmp = fold_build2_loc (input_location, GT_EXPR,
! 			     logical_type_node, tmp,
! 			     build_zero_cst (TREE_TYPE (tmp)));
!       size = fold_build3_loc (input_location, COND_EXPR,
! 			      gfc_array_index_type, tmp, ctmp, size);
!     }
! 
!   offset = fold_build2_loc (input_location, MULT_EXPR,
! 			    gfc_array_index_type,
! 			    index, size);
! 
    data = gfc_conv_descriptor_data_get (data);
    ptr = fold_convert (pvoid_type_node, data);
    ptr = fold_build_pointer_plus_loc (input_location, ptr, offset);
*************** gfc_copy_class_to_class (tree from, tree
*** 1258,1271 ****
  
        if (is_from_desc)
  	{
! 	  from_ref = gfc_get_class_array_ref (index, from, from_data);
  	  vec_safe_push (args, from_ref);
  	}
        else
          vec_safe_push (args, from_data);
  
        if (is_to_class)
! 	to_ref = gfc_get_class_array_ref (index, to, to_data);
        else
  	{
  	  tmp = gfc_conv_array_data (to);
--- 1283,1297 ----
  
        if (is_from_desc)
  	{
! 	  from_ref = gfc_get_class_array_ref (index, from, from_data,
! 					      unlimited);
  	  vec_safe_push (args, from_ref);
  	}
        else
          vec_safe_push (args, from_data);
  
        if (is_to_class)
! 	to_ref = gfc_get_class_array_ref (index, to, to_data, unlimited);
        else
  	{
  	  tmp = gfc_conv_array_data (to);
*************** gfc_trans_class_init_assign (gfc_code *c
*** 1450,1456 ****
    gfc_start_block (&block);
  
    lhs = gfc_copy_expr (code->expr1);
-   gfc_add_data_component (lhs);
  
    rhs = gfc_copy_expr (code->expr1);
    gfc_add_vptr_component (rhs);
--- 1476,1481 ----
*************** gfc_trans_class_init_assign (gfc_code *c
*** 1468,1478 ****
--- 1493,1507 ----
      {
        gfc_array_spec *tmparr = gfc_get_array_spec ();
        *tmparr = *CLASS_DATA (code->expr1)->as;
+       /* Adding the array ref to the class expression results in correct
+ 	 indexing to the dynamic type.  */
        gfc_add_full_array_ref (lhs, tmparr);
        tmp = gfc_trans_class_array_init_assign (rhs, lhs, code->expr1);
      }
    else
      {
+       /* Scalar initialization needs the _data component.  */
+       gfc_add_data_component (lhs);
        sz = gfc_copy_expr (code->expr1);
        gfc_add_vptr_component (sz);
        gfc_add_size_component (sz);
*************** gfc_apply_interface_mapping_to_expr (gfc
*** 4307,4312 ****
--- 4336,4343 ----
  
        if (expr->value.function.esym == NULL
  	    && expr->value.function.isym != NULL
+ 	    && expr->value.function.actual
+ 	    && expr->value.function.actual->expr
  	    && expr->value.function.actual->expr->symtree
  	    && gfc_map_intrinsic_function (expr, mapping))
  	break;
*************** gfc_conv_subref_array_arg (gfc_se * parm
*** 4435,4441 ****
    /* Reset the offset for the function call since the loop
       is zero based on the data pointer.  Note that the temp
       comes first in the loop chain since it is added second.  */
!   if (gfc_is_alloc_class_array_function (expr))
      {
        tmp = loop.ss->loop_chain->info->data.array.descriptor;
        gfc_conv_descriptor_offset_set (&loop.pre, tmp,
--- 4466,4472 ----
    /* Reset the offset for the function call since the loop
       is zero based on the data pointer.  Note that the temp
       comes first in the loop chain since it is added second.  */
!   if (gfc_is_class_array_function (expr))
      {
        tmp = loop.ss->loop_chain->info->data.array.descriptor;
        gfc_conv_descriptor_offset_set (&loop.pre, tmp,
*************** gfc_conv_subref_array_arg (gfc_se * parm
*** 4484,4490 ****
    dimen = rse.ss->dimen;
  
    /* Skip the write-out loop for this case.  */
!   if (gfc_is_alloc_class_array_function (expr))
      goto class_array_fcn;
  
    /* Calculate the bounds of the scalarization.  */
--- 4515,4521 ----
    dimen = rse.ss->dimen;
  
    /* Skip the write-out loop for this case.  */
!   if (gfc_is_class_array_function (expr))
      goto class_array_fcn;
  
    /* Calculate the bounds of the scalarization.  */
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 4778,4784 ****
  	      gcc_assert ((!comp && gfc_return_by_reference (sym)
  			   && sym->result->attr.dimension)
  			  || (comp && comp->attr.dimension)
! 			  || gfc_is_alloc_class_array_function (expr));
  	      gcc_assert (se->loop != NULL);
  	      /* Access the previously obtained result.  */
  	      gfc_conv_tmp_array_ref (se);
--- 4809,4815 ----
  	      gcc_assert ((!comp && gfc_return_by_reference (sym)
  			   && sym->result->attr.dimension)
  			  || (comp && comp->attr.dimension)
! 			  || gfc_is_class_array_function (expr));
  	      gcc_assert (se->loop != NULL);
  	      /* Access the previously obtained result.  */
  	      gfc_conv_tmp_array_ref (se);
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 5461,5467 ****
  				fsym ? fsym->attr.intent : INTENT_INOUT,
  				fsym && fsym->attr.pointer);
  
! 	      else if (gfc_is_alloc_class_array_function (e)
  			 && fsym && fsym->ts.type == BT_DERIVED)
  		/* See previous comment.  For function actual argument,
  		   the write out is not needed so the intent is set as
--- 5492,5498 ----
  				fsym ? fsym->attr.intent : INTENT_INOUT,
  				fsym && fsym->attr.pointer);
  
! 	      else if (gfc_is_class_array_function (e)
  			 && fsym && fsym->ts.type == BT_DERIVED)
  		/* See previous comment.  For function actual argument,
  		   the write out is not needed so the intent is set as
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 6302,6308 ****
  	 call the finalization function of the temporary. Note that the
  	 nullification of allocatable components needed by the result
  	 is done in gfc_trans_assignment_1.  */
!       if (expr && ((gfc_is_alloc_class_array_function (expr)
  		    && se->ss && se->ss->loop)
  		   || gfc_is_alloc_class_scalar_function (expr))
  	  && se->expr && GFC_CLASS_TYPE_P (TREE_TYPE (se->expr))
--- 6333,6339 ----
  	 call the finalization function of the temporary. Note that the
  	 nullification of allocatable components needed by the result
  	 is done in gfc_trans_assignment_1.  */
!       if (expr && ((gfc_is_class_array_function (expr)
  		    && se->ss && se->ss->loop)
  		   || gfc_is_alloc_class_scalar_function (expr))
  	  && se->expr && GFC_CLASS_TYPE_P (TREE_TYPE (se->expr))
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 6313,6318 ****
--- 6344,6350 ----
  	  int n;
  	  if (se->ss && se->ss->loop)
  	    {
+ 	      gfc_add_block_to_block (&se->ss->loop->pre, &se->pre);
  	      se->expr = gfc_evaluate_now (se->expr, &se->ss->loop->pre);
  	      tmp = gfc_class_data_get (se->expr);
  	      info->descriptor = tmp;
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 6335,6340 ****
--- 6367,6377 ----
  			CLASS_DATA (expr->value.function.esym->result)->attr);
  	    }
  
+ 	  if ((gfc_is_class_array_function (expr)
+ 	       || gfc_is_alloc_class_scalar_function (expr))
+ 	      && CLASS_DATA (expr->value.function.esym->result)->attr.pointer)
+ 	    goto no_finalization;
+ 
  	  final_fndecl = gfc_class_vtab_final_get (se->expr);
  	  is_final = fold_build2_loc (input_location, NE_EXPR,
  				      logical_type_node,
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 6365,6370 ****
--- 6402,6409 ----
  	      tmp = gfc_call_free (tmp);
  	      gfc_add_expr_to_block (&se->post, tmp);
  	    }
+ 
+ no_finalization:
  	  expr->must_finalize = 0;
  	}
  
*************** gfc_trans_scalar_assign (gfc_se * lse, g
*** 8835,8841 ****
  	  gfc_add_expr_to_block (&block, tmp);
  	}
      }
!   else if (gfc_bt_struct (ts.type) || ts.type == BT_CLASS)
      {
        gfc_add_block_to_block (&block, &lse->pre);
        gfc_add_block_to_block (&block, &rse->pre);
--- 8874,8880 ----
  	  gfc_add_expr_to_block (&block, tmp);
  	}
      }
!   else if (gfc_bt_struct (ts.type) || ts.type == BT_CLASS || ts.type == BT_COMPLEX)
      {
        gfc_add_block_to_block (&block, &lse->pre);
        gfc_add_block_to_block (&block, &rse->pre);
*************** arrayfunc_assign_needs_temporary (gfc_ex
*** 8871,8877 ****
    gfc_symbol *sym = expr1->symtree->n.sym;
  
    /* Play it safe with class functions assigned to a derived type.  */
!   if (gfc_is_alloc_class_array_function (expr2)
        && expr1->ts.type == BT_DERIVED)
      return true;
  
--- 8910,8916 ----
    gfc_symbol *sym = expr1->symtree->n.sym;
  
    /* Play it safe with class functions assigned to a derived type.  */
!   if (gfc_is_class_array_function (expr2)
        && expr1->ts.type == BT_DERIVED)
      return true;
  
*************** gfc_trans_assignment_1 (gfc_expr * expr1
*** 9878,9884 ****
    rss = NULL;
  
    if ((expr1->ts.type == BT_DERIVED)
!       && (gfc_is_alloc_class_array_function (expr2)
  	  || gfc_is_alloc_class_scalar_function (expr2)))
      expr2->must_finalize = 1;
  
--- 9917,9923 ----
    rss = NULL;
  
    if ((expr1->ts.type == BT_DERIVED)
!       && (gfc_is_class_array_function (expr2)
  	  || gfc_is_alloc_class_scalar_function (expr2)))
      expr2->must_finalize = 1;
  
*************** gfc_trans_assignment_1 (gfc_expr * expr1
*** 10085,10091 ****
       a scalar to array assignment, this is done in gfc_trans_scalar_assign
       as part of the deep copy.  */
    if (!scalar_to_array && expr1->ts.type == BT_DERIVED
! 		       && (gfc_is_alloc_class_array_function (expr2)
  			   || gfc_is_alloc_class_scalar_function (expr2)))
      {
        tmp = rse.expr;
--- 10124,10130 ----
       a scalar to array assignment, this is done in gfc_trans_scalar_assign
       as part of the deep copy.  */
    if (!scalar_to_array && expr1->ts.type == BT_DERIVED
! 		       && (gfc_is_class_array_function (expr2)
  			   || gfc_is_alloc_class_scalar_function (expr2)))
      {
        tmp = rse.expr;
*************** gfc_trans_assignment (gfc_expr * expr1,
*** 10294,10299 ****
--- 10333,10342 ----
  	return tmp;
      }
  
+   if (UNLIMITED_POLY (expr1) && expr1->rank
+       && expr2->ts.type != BT_CLASS)
+     use_vptr_copy = true;
+ 
    /* Fallback to the scalarizer to generate explicit loops.  */
    return gfc_trans_assignment_1 (expr1, expr2, init_flag, dealloc,
  				 use_vptr_copy, may_alias);
diff -Nrcpad gcc-7.3.0/gcc/fortran/trans-intrinsic.c gcc-7.4.0/gcc/fortran/trans-intrinsic.c
*** gcc-7.3.0/gcc/fortran/trans-intrinsic.c	Mon Nov 13 20:01:20 2017
--- gcc-7.4.0/gcc/fortran/trans-intrinsic.c	Sun May  6 11:52:46 2018
*************** conv_caf_send (gfc_code *code) {
*** 1860,1866 ****
  
    lhs_expr = code->ext.actual->expr;
    rhs_expr = code->ext.actual->next->expr;
!   may_require_tmp = gfc_check_dependency (lhs_expr, rhs_expr, false) == 0
  		    ? boolean_false_node : boolean_true_node;
    gfc_init_block (&block);
  
--- 1860,1866 ----
  
    lhs_expr = code->ext.actual->expr;
    rhs_expr = code->ext.actual->next->expr;
!   may_require_tmp = gfc_check_dependency (lhs_expr, rhs_expr, true) == 0
  		    ? boolean_false_node : boolean_true_node;
    gfc_init_block (&block);
  
*************** conv_caf_send (gfc_code *code) {
*** 1906,1939 ****
      }
    else
      {
!       /* If has_vector, pass descriptor for whole array and the
!          vector bounds separately.  */
!       gfc_array_ref *ar, ar2;
!       bool has_vector = false;
  
!       if (gfc_is_coindexed (lhs_expr) && gfc_has_vector_subscript (lhs_expr))
  	{
!           has_vector = true;
!           ar = gfc_find_array_ref (lhs_expr);
! 	  ar2 = *ar;
! 	  memset (ar, '\0', sizeof (*ar));
! 	  ar->as = ar2.as;
! 	  ar->type = AR_FULL;
  	}
!       lhs_se.want_pointer = 1;
!       gfc_conv_expr_descriptor (&lhs_se, lhs_expr);
!       /* Using gfc_conv_expr_descriptor, we only get the descriptor, but that
!          has the wrong type if component references are done.  */
!       lhs_type = gfc_typenode_for_spec (&lhs_expr->ts);
!       tmp = build_fold_indirect_ref_loc (input_location, lhs_se.expr);
!       gfc_add_modify (&lhs_se.pre, gfc_conv_descriptor_dtype (tmp),
!                       gfc_get_dtype_rank_type (has_vector ? ar2.dimen
! 							  : lhs_expr->rank,
! 		      lhs_type));
!       if (has_vector)
  	{
! 	  vec = conv_caf_vector_subscript (&block, lhs_se.expr, &ar2);
! 	  *ar = ar2;
  	}
      }
  
--- 1906,2029 ----
      }
    else
      {
!       bool has_vector = gfc_has_vector_subscript (lhs_expr);
  
!       if (gfc_is_coindexed (lhs_expr) || !has_vector)
  	{
! 	  /* If has_vector, pass descriptor for whole array and the
! 	     vector bounds separately.  */
! 	  gfc_array_ref *ar, ar2;
! 	  bool has_tmp_lhs_array = false;
! 	  if (has_vector)
! 	    {
! 	      has_tmp_lhs_array = true;
! 	      ar = gfc_find_array_ref (lhs_expr);
! 	      ar2 = *ar;
! 	      memset (ar, '\0', sizeof (*ar));
! 	      ar->as = ar2.as;
! 	      ar->type = AR_FULL;
! 	    }
! 	  lhs_se.want_pointer = 1;
! 	  gfc_conv_expr_descriptor (&lhs_se, lhs_expr);
! 	  /* Using gfc_conv_expr_descriptor, we only get the descriptor, but
! 	     that has the wrong type if component references are done.  */
! 	  lhs_type = gfc_typenode_for_spec (&lhs_expr->ts);
! 	  tmp = build_fold_indirect_ref_loc (input_location, lhs_se.expr);
! 	  gfc_add_modify (&lhs_se.pre, gfc_conv_descriptor_dtype (tmp),
! 			  gfc_get_dtype_rank_type (has_vector ? ar2.dimen
! 							      : lhs_expr->rank,
! 						   lhs_type));
! 	  if (has_tmp_lhs_array)
! 	    {
! 	      vec = conv_caf_vector_subscript (&block, lhs_se.expr, &ar2);
! 	      *ar = ar2;
! 	    }
  	}
!       else
  	{
! 	  /* Special casing for arr1 ([...]) = arr2[...], i.e. caf_get to
! 	     indexed array expression.  This is rewritten to:
! 
! 	     tmp_array = arr2[...]
! 	     arr1 ([...]) = tmp_array
! 
! 	     because using the standard gfc_conv_expr (lhs_expr) did the
! 	     assignment with lhs and rhs exchanged.  */
! 
! 	  gfc_ss *lss_for_tmparray, *lss_real;
! 	  gfc_loopinfo loop;
! 	  gfc_se se;
! 	  stmtblock_t body;
! 	  tree tmparr_desc, src;
! 	  tree index = gfc_index_zero_node;
! 	  tree stride = gfc_index_zero_node;
! 	  int n;
! 
! 	  /* Walk both sides of the assignment, once to get the shape of the
! 	     temporary array to create right.  */
! 	  lss_for_tmparray = gfc_walk_expr (lhs_expr);
! 	  /* And a second time to be able to create an assignment of the
! 	     temporary to the lhs_expr.  gfc_trans_create_temp_array replaces
! 	     the tree in the descriptor with the one for the temporary
! 	     array.  */
! 	  lss_real = gfc_walk_expr (lhs_expr);
! 	  gfc_init_loopinfo (&loop);
! 	  gfc_add_ss_to_loop (&loop, lss_for_tmparray);
! 	  gfc_add_ss_to_loop (&loop, lss_real);
! 	  gfc_conv_ss_startstride (&loop);
! 	  gfc_conv_loop_setup (&loop, &lhs_expr->where);
! 	  lhs_type = gfc_typenode_for_spec (&lhs_expr->ts);
! 	  gfc_trans_create_temp_array (&lhs_se.pre, &lhs_se.post,
! 				       lss_for_tmparray, lhs_type, NULL_TREE,
! 				       false, true, false,
! 				       &lhs_expr->where);
! 	  tmparr_desc = lss_for_tmparray->info->data.array.descriptor;
! 	  gfc_start_scalarized_body (&loop, &body);
! 	  gfc_init_se (&se, NULL);
! 	  gfc_copy_loopinfo_to_se (&se, &loop);
! 	  se.ss = lss_real;
! 	  gfc_conv_expr (&se, lhs_expr);
! 	  gfc_add_block_to_block (&body, &se.pre);
! 
! 	  /* Walk over all indexes of the loop.  */
! 	  for (n = loop.dimen - 1; n > 0; --n)
! 	    {
! 	      tmp = loop.loopvar[n];
! 	      tmp = fold_build2_loc (input_location, MINUS_EXPR,
! 				     gfc_array_index_type, tmp, loop.from[n]);
! 	      tmp = fold_build2_loc (input_location, PLUS_EXPR,
! 				     gfc_array_index_type, tmp, index);
! 
! 	      stride = fold_build2_loc (input_location, MINUS_EXPR,
! 					gfc_array_index_type,
! 					loop.to[n - 1], loop.from[n - 1]);
! 	      stride = fold_build2_loc (input_location, PLUS_EXPR,
! 					gfc_array_index_type,
! 					stride, gfc_index_one_node);
! 
! 	      index = fold_build2_loc (input_location, MULT_EXPR,
! 				       gfc_array_index_type, tmp, stride);
! 	    }
! 
! 	  index = fold_build2_loc (input_location, MINUS_EXPR,
! 				   gfc_array_index_type,
! 				   index, loop.from[0]);
! 
! 	  index = fold_build2_loc (input_location, PLUS_EXPR,
! 				   gfc_array_index_type,
! 				   loop.loopvar[0], index);
! 
! 	  src = build_fold_indirect_ref (gfc_conv_array_data (tmparr_desc));
! 	  src = gfc_build_array_ref (src, index, NULL);
! 	  /* Now create the assignment of lhs_expr = tmp_array.  */
! 	  gfc_add_modify (&body, se.expr, src);
! 	  gfc_add_block_to_block (&body, &se.post);
! 	  lhs_se.expr = gfc_build_addr_expr (NULL_TREE, tmparr_desc);
! 	  gfc_trans_scalarizing_loops (&loop, &body);
! 	  gfc_add_block_to_block (&loop.pre, &loop.post);
! 	  gfc_add_expr_to_block (&lhs_se.post, gfc_finish_block (&loop.pre));
! 	  gfc_free_ss (lss_for_tmparray);
! 	  gfc_free_ss (lss_real);
  	}
      }
  
*************** gfc_conv_intrinsic_ibits (gfc_se * se, g
*** 5478,5483 ****
--- 5568,5589 ----
  }
  
  static void
+ gfc_conv_intrinsic_shape (gfc_se *se, gfc_expr *expr)
+ {
+   gfc_actual_arglist *s, *k;
+   gfc_expr *e;
+ 
+   /* Remove the KIND argument, if present. */
+   s = expr->value.function.actual;
+   k = s->next;
+   e = k->expr;
+   gfc_free_expr (e);
+   k->expr = NULL;
+ 
+   gfc_conv_intrinsic_funcall (se, expr);
+ }
+ 
+ static void
  gfc_conv_intrinsic_shift (gfc_se * se, gfc_expr * expr, bool right_shift,
  			  bool arithmetic)
  {
*************** gfc_conv_intrinsic_size (gfc_se * se, gf
*** 6601,6607 ****
      gfc_add_class_array_ref (actual->expr);
  
    argse.data_not_needed = 1;
!   if (gfc_is_alloc_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.  */
--- 6707,6713 ----
      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_intrinsic_function (gfc_se * se
*** 8589,8594 ****
--- 8695,8704 ----
  	      conv_generic_with_optional_char_arg (se, expr, 1, 3);
  	      break;
  
+ 	    case GFC_ISYM_SHAPE:
+ 	      gfc_conv_intrinsic_shape (se, expr);
+ 	      break;
+ 
  	    default:
  	      gfc_conv_intrinsic_funcall (se, expr);
  	      break;
diff -Nrcpad gcc-7.3.0/gcc/fortran/trans-io.c gcc-7.4.0/gcc/fortran/trans-io.c
*** gcc-7.3.0/gcc/fortran/trans-io.c	Mon Nov 13 20:01:20 2017
--- gcc-7.4.0/gcc/fortran/trans-io.c	Fri Feb 23 19:37:57 2018
*************** set_parameter_value_inquire (stmtblock_t
*** 639,650 ****
        /* Don't evaluate the UNIT number multiple times.  */
        se.expr = gfc_evaluate_now (se.expr, &se.pre);
  
!       /* UNIT numbers should be greater than zero.  */
        i = gfc_validate_kind (BT_INTEGER, 4, false);
        cond1 = build2_loc (input_location, LT_EXPR, logical_type_node,
  			  se.expr,
! 			  fold_convert (TREE_TYPE (se.expr),
! 			  integer_zero_node));
        /* UNIT numbers should be less than the max.  */
        val = gfc_conv_mpz_to_tree (gfc_integer_kinds[i].huge, 4);
        cond2 = build2_loc (input_location, GT_EXPR, logical_type_node,
--- 639,650 ----
        /* Don't evaluate the UNIT number multiple times.  */
        se.expr = gfc_evaluate_now (se.expr, &se.pre);
  
!       /* UNIT numbers should be greater than the min.  */
        i = gfc_validate_kind (BT_INTEGER, 4, false);
+       val = gfc_conv_mpz_to_tree (gfc_integer_kinds[i].pedantic_min_int, 4);
        cond1 = build2_loc (input_location, LT_EXPR, logical_type_node,
  			  se.expr,
! 			  fold_convert (TREE_TYPE (se.expr), val));
        /* UNIT numbers should be less than the max.  */
        val = gfc_conv_mpz_to_tree (gfc_integer_kinds[i].huge, 4);
        cond2 = build2_loc (input_location, GT_EXPR, logical_type_node,
*************** get_dtio_proc (gfc_typespec * ts, gfc_co
*** 2214,2238 ****
    bool formatted = false;
    gfc_dt *dt = code->ext.dt;
  
!   if (dt)
!     {
!       char *fmt = NULL;
! 
!       if (dt->format_label == &format_asterisk)
! 	{
! 	  /* List directed io must call the formatted DTIO procedure.  */
! 	  formatted = true;
! 	}
!       else if (dt->format_expr)
! 	fmt = gfc_widechar_to_char (dt->format_expr->value.character.string,
! 				      -1);
!       else if (dt->format_label)
! 	fmt = gfc_widechar_to_char (dt->format_label->format->value.character.string,
! 				      -1);
!       if (fmt && strtok (fmt, "DT") != NULL)
! 	formatted = true;
! 
!     }
  
    if (ts->type == BT_CLASS)
      derived = ts->u.derived->components->ts.u.derived;
--- 2214,2222 ----
    bool formatted = false;
    gfc_dt *dt = code->ext.dt;
  
!   /* Determine when to use the formatted DTIO procedure.  */
!   if (dt && (dt->format_expr || dt->format_label))
!     formatted = true;
  
    if (ts->type == BT_CLASS)
      derived = ts->u.derived->components->ts.u.derived;
*************** transfer_expr (gfc_se * se, gfc_typespec
*** 2293,2298 ****
--- 2277,2292 ----
        ts->kind = gfc_index_integer_kind;
      }
  
+   /* gfortran reaches here for "print *, c_loc(xxx)".  */
+   if (ts->type == BT_VOID
+       && code->expr1 && code->expr1->ts.type == BT_VOID
+       && code->expr1->symtree
+       && strcmp (code->expr1->symtree->name, "c_loc") == 0)
+     {
+       ts->type = BT_INTEGER;
+       ts->kind = gfc_index_integer_kind;
+     }
+ 
    kind = ts->kind;
    function = NULL;
    arg2 = NULL;
*************** transfer_expr (gfc_se * se, gfc_typespec
*** 2442,2449 ****
  	    {
  	      /* Recurse into the elements of the derived type.  */
  	      expr = gfc_evaluate_now (addr_expr, &se->pre);
! 	      expr = build_fold_indirect_ref_loc (input_location,
! 				      expr);
  
  	      /* Make sure that the derived type has been built.  An external
  		 function, if only referenced in an io statement, requires this
--- 2436,2442 ----
  	    {
  	      /* Recurse into the elements of the derived type.  */
  	      expr = gfc_evaluate_now (addr_expr, &se->pre);
! 	      expr = build_fold_indirect_ref_loc (input_location, expr);
  
  	      /* Make sure that the derived type has been built.  An external
  		 function, if only referenced in an io statement, requires this
diff -Nrcpad gcc-7.3.0/gcc/fortran/trans-openmp.c gcc-7.4.0/gcc/fortran/trans-openmp.c
*** gcc-7.3.0/gcc/fortran/trans-openmp.c	Fri Dec 15 22:00:48 2017
--- gcc-7.4.0/gcc/fortran/trans-openmp.c	Sat Mar  3 13:33:26 2018
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 1949,1957 ****
  			  }
  			else
  			  {
! 			    tree type = gfc_typenode_for_spec (&n->sym->ts);
! 			    OMP_CLAUSE_LINEAR_STEP (node)
! 			      = fold_convert (type, last_step);
  			  }
  			if (n->sym->attr.dimension || n->sym->attr.allocatable)
  			  OMP_CLAUSE_LINEAR_ARRAY (node) = 1;
--- 1949,1980 ----
  			  }
  			else
  			  {
! 			    if (kind == OMP_CLAUSE_LINEAR_REF)
! 			      {
! 				tree type;
! 				if (n->sym->attr.flavor == FL_PROCEDURE)
! 				  {
! 				    type = gfc_get_function_type (n->sym);
! 				    type = build_pointer_type (type);
! 				  }
! 				else
! 				  type = gfc_sym_type (n->sym);
! 				if (POINTER_TYPE_P (type))
! 				  type = TREE_TYPE (type);
! 				/* Otherwise to be determined what exactly
! 				   should be done.  */
! 				tree t = fold_convert (sizetype, last_step);
! 				t = size_binop (MULT_EXPR, t,
! 						TYPE_SIZE_UNIT (type));
! 				OMP_CLAUSE_LINEAR_STEP (node) = t;
! 			      }
! 			    else
! 			      {
! 				tree type
! 				  = gfc_typenode_for_spec (&n->sym->ts);
! 				OMP_CLAUSE_LINEAR_STEP (node)
! 				  = fold_convert (type, last_step);
! 			      }
  			  }
  			if (n->sym->attr.dimension || n->sym->attr.allocatable)
  			  OMP_CLAUSE_LINEAR_ARRAY (node) = 1;
diff -Nrcpad gcc-7.3.0/gcc/fortran/trans-stmt.c gcc-7.4.0/gcc/fortran/trans-stmt.c
*** gcc-7.3.0/gcc/fortran/trans-stmt.c	Thu Nov 23 21:02:48 2017
--- gcc-7.4.0/gcc/fortran/trans-stmt.c	Wed May 16 10:18:20 2018
*************** trans_associate_var (gfc_symbol *sym, gf
*** 1566,1572 ****
  
        desc = sym->backend_decl;
        cst_array_ctor = e->expr_type == EXPR_ARRAY
! 	      && gfc_constant_array_constructor_p (e->value.constructor);
  
        /* If association is to an expression, evaluate it and create temporary.
  	 Otherwise, get descriptor of target for pointer assignment.  */
--- 1566,1573 ----
  
        desc = sym->backend_decl;
        cst_array_ctor = e->expr_type == EXPR_ARRAY
! 	      && gfc_constant_array_constructor_p (e->value.constructor)
! 	      && e->ts.type != BT_CHARACTER;
  
        /* If association is to an expression, evaluate it and create temporary.
  	 Otherwise, get descriptor of target for pointer assignment.  */
diff -Nrcpad gcc-7.3.0/gcc/fortran/trans-types.c gcc-7.4.0/gcc/fortran/trans-types.c
*** gcc-7.3.0/gcc/fortran/trans-types.c	Mon Nov 13 20:01:20 2017
--- gcc-7.4.0/gcc/fortran/trans-types.c	Wed May 16 11:17:10 2018
*************** gfc_get_array_descriptor_base (int dimen
*** 1804,1810 ****
        TREE_NO_WARNING (decl) = 1;
      }
  
!   if (flag_coarray == GFC_FCOARRAY_LIB && codimen)
      {
        decl = gfc_add_field_to_struct_1 (fat_type,
  					get_identifier ("token"),
--- 1804,1810 ----
        TREE_NO_WARNING (decl) = 1;
      }
  
!   if (flag_coarray == GFC_FCOARRAY_LIB)
      {
        decl = gfc_add_field_to_struct_1 (fat_type,
  					get_identifier ("token"),
*************** gfc_sym_type (gfc_symbol * sym)
*** 2168,2173 ****
--- 2168,2181 ----
    if (sym->backend_decl && !sym->attr.function)
      return TREE_TYPE (sym->backend_decl);
  
+   if (sym->attr.result
+       && sym->ts.type == BT_CHARACTER
+       && sym->ts.u.cl->backend_decl == NULL_TREE
+       && sym->ns->proc_name
+       && sym->ns->proc_name->ts.u.cl
+       && sym->ns->proc_name->ts.u.cl->backend_decl != NULL_TREE)
+     sym->ts.u.cl->backend_decl = sym->ns->proc_name->ts.u.cl->backend_decl;
+ 
    if (sym->ts.type == BT_CHARACTER
        && ((sym->attr.function && sym->attr.is_bind_c)
  	  || (sym->attr.result
*************** gfc_copy_dt_decls_ifequal (gfc_symbol *f
*** 2334,2339 ****
--- 2342,2348 ----
    for (; to_cm; to_cm = to_cm->next, from_cm = from_cm->next)
      {
        to_cm->backend_decl = from_cm->backend_decl;
+       to_cm->caf_token = from_cm->caf_token;
        if (from_cm->ts.type == BT_UNION)
          gfc_get_union_type (to_cm->ts.u.derived);
        else if (from_cm->ts.type == BT_DERIVED
*************** gfc_get_derived_type (gfc_symbol * deriv
*** 2444,2449 ****
--- 2453,2462 ----
    gfc_dt_list *dt;
    gfc_namespace *ns;
    tree tmp;
+   bool coarray_flag;
+ 
+   coarray_flag = flag_coarray == GFC_FCOARRAY_LIB
+ 		 && derived->module && !derived->attr.vtype;
  
    if (derived->attr.unlimited_polymorphic
        || (flag_coarray == GFC_FCOARRAY_LIB
*************** gfc_get_derived_type (gfc_symbol * deriv
*** 2636,2642 ****
  	  field_type = build_pointer_type (tmp);
  	}
        else if (c->ts.type == BT_DERIVED || c->ts.type == BT_CLASS)
!         field_type = c->ts.u.derived->backend_decl;
        else
  	{
  	  if (c->ts.type == BT_CHARACTER && !c->ts.deferred)
--- 2649,2657 ----
  	  field_type = build_pointer_type (tmp);
  	}
        else if (c->ts.type == BT_DERIVED || c->ts.type == BT_CLASS)
! 	field_type = c->ts.u.derived->backend_decl;
!       else if (c->attr.caf_token)
! 	field_type = pvoid_type_node;
        else
  	{
  	  if (c->ts.type == BT_CHARACTER && !c->ts.deferred)
*************** gfc_get_derived_type (gfc_symbol * deriv
*** 2715,2733 ****
        gcc_assert (field);
        if (!c->backend_decl)
  	c->backend_decl = field;
- 
-       /* Do not add a caf_token field for classes' data components.  */
-       if (codimen && !c->attr.dimension && !c->attr.codimension
- 	  && (c->attr.allocatable || c->attr.pointer)
- 	  && c->caf_token == NULL_TREE && strcmp ("_data", c->name) != 0)
- 	{
- 	  char caf_name[GFC_MAX_SYMBOL_LEN];
- 	  snprintf (caf_name, GFC_MAX_SYMBOL_LEN, "_caf_%s", c->name);
- 	  c->caf_token = gfc_add_field_to_struct (typenode,
- 						  get_identifier (caf_name),
- 						  pvoid_type_node, &chain);
- 	  TREE_NO_WARNING (c->caf_token) = 1;
- 	}
      }
  
    /* Now lay out the derived type, including the fields.  */
--- 2730,2735 ----
*************** gfc_get_derived_type (gfc_symbol * deriv
*** 2753,2758 ****
--- 2755,2778 ----
  
  copy_derived_types:
  
+   for (c = derived->components; c; c = c->next)
+     {
+       /* Do not add a caf_token field for class container components.  */
+       if ((codimen || coarray_flag)
+ 	  && !c->attr.dimension && !c->attr.codimension
+ 	  && (c->attr.allocatable || c->attr.pointer)
+ 	  && !derived->attr.is_class)
+ 	{
+ 	  char caf_name[GFC_MAX_SYMBOL_LEN];
+ 	  gfc_component *token;
+ 	  snprintf (caf_name, GFC_MAX_SYMBOL_LEN, "_caf_%s", c->name);
+ 	  token = gfc_find_component (derived, caf_name, true, true, NULL);
+ 	  gcc_assert (token);
+ 	  c->caf_token = token->backend_decl;
+ 	  TREE_NO_WARNING (c->caf_token) = 1;
+ 	}
+     }
+ 
    for (dt = gfc_derived_types; dt; dt = dt->next)
      gfc_copy_dt_decls_ifequal (derived, dt->derived, false);
  
diff -Nrcpad gcc-7.3.0/gcc/fortran/trans.h gcc-7.4.0/gcc/fortran/trans.h
*** gcc-7.3.0/gcc/fortran/trans.h	Sun Mar  5 11:35:47 2017
--- gcc-7.4.0/gcc/fortran/trans.h	Wed May 16 09:35:19 2018
*************** tree gfc_vptr_deallocate_get (tree);
*** 431,437 ****
  void gfc_reset_vptr (stmtblock_t *, gfc_expr *);
  void gfc_reset_len (stmtblock_t *, gfc_expr *);
  tree gfc_get_vptr_from_expr (tree);
! tree gfc_get_class_array_ref (tree, tree, tree);
  tree gfc_copy_class_to_class (tree, tree, tree, bool);
  bool gfc_add_finalizer_call (stmtblock_t *, gfc_expr *);
  bool gfc_add_comp_finalizer_call (stmtblock_t *, tree, gfc_component *, bool);
--- 431,437 ----
  void gfc_reset_vptr (stmtblock_t *, gfc_expr *);
  void gfc_reset_len (stmtblock_t *, gfc_expr *);
  tree gfc_get_vptr_from_expr (tree);
! tree gfc_get_class_array_ref (tree, tree, tree, bool);
  tree gfc_copy_class_to_class (tree, tree, tree, bool);
  bool gfc_add_finalizer_call (stmtblock_t *, gfc_expr *);
  bool gfc_add_comp_finalizer_call (stmtblock_t *, tree, gfc_component *, bool);
diff -Nrcpad gcc-7.3.0/gcc/function.c gcc-7.4.0/gcc/function.c
*** gcc-7.3.0/gcc/function.c	Tue Aug  8 13:21:12 2017
--- gcc-7.4.0/gcc/function.c	Fri Jun 22 20:58:02 2018
*************** match_asm_constraints_1 (rtx_insn *insn,
*** 6576,6583 ****
        /* Only do the transformation for pseudos.  */
        if (! REG_P (output)
  	  || rtx_equal_p (output, input)
! 	  || (GET_MODE (input) != VOIDmode
! 	      && GET_MODE (input) != GET_MODE (output)))
  	continue;
  
        /* We can't do anything if the output is also used as input,
--- 6576,6584 ----
        /* Only do the transformation for pseudos.  */
        if (! REG_P (output)
  	  || rtx_equal_p (output, input)
! 	  || !(REG_P (input) || SUBREG_P (input)
! 	       || MEM_P (input) || CONSTANT_P (input))
! 	  || !general_operand (input, GET_MODE (output)))
  	continue;
  
        /* We can't do anything if the output is also used as input,
diff -Nrcpad gcc-7.3.0/gcc/gcc.c gcc-7.4.0/gcc/gcc.c
*** gcc-7.3.0/gcc/gcc.c	Fri Sep 15 08:18:34 2017
--- gcc-7.4.0/gcc/gcc.c	Sat Mar  3 13:28:15 2018
*************** proper position among the other output f
*** 677,683 ****
  
  #ifndef LIBASAN_SPEC
  #define STATIC_LIBASAN_LIBS \
!   " %{static-libasan:%:include(libsanitizer.spec)%(link_libasan)}"
  #ifdef LIBASAN_EARLY_SPEC
  #define LIBASAN_SPEC STATIC_LIBASAN_LIBS
  #elif defined(HAVE_LD_STATIC_DYNAMIC)
--- 677,683 ----
  
  #ifndef LIBASAN_SPEC
  #define STATIC_LIBASAN_LIBS \
!   " %{static-libasan|static:%:include(libsanitizer.spec)%(link_libasan)}"
  #ifdef LIBASAN_EARLY_SPEC
  #define LIBASAN_SPEC STATIC_LIBASAN_LIBS
  #elif defined(HAVE_LD_STATIC_DYNAMIC)
*************** proper position among the other output f
*** 695,701 ****
  
  #ifndef LIBTSAN_SPEC
  #define STATIC_LIBTSAN_LIBS \
!   " %{static-libtsan:%:include(libsanitizer.spec)%(link_libtsan)}"
  #ifdef LIBTSAN_EARLY_SPEC
  #define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS
  #elif defined(HAVE_LD_STATIC_DYNAMIC)
--- 695,701 ----
  
  #ifndef LIBTSAN_SPEC
  #define STATIC_LIBTSAN_LIBS \
!   " %{static-libtsan|static:%:include(libsanitizer.spec)%(link_libtsan)}"
  #ifdef LIBTSAN_EARLY_SPEC
  #define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS
  #elif defined(HAVE_LD_STATIC_DYNAMIC)
*************** proper position among the other output f
*** 713,719 ****
  
  #ifndef LIBLSAN_SPEC
  #define STATIC_LIBLSAN_LIBS \
!   " %{static-liblsan:%:include(libsanitizer.spec)%(link_liblsan)}"
  #ifdef LIBLSAN_EARLY_SPEC
  #define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS
  #elif defined(HAVE_LD_STATIC_DYNAMIC)
--- 713,719 ----
  
  #ifndef LIBLSAN_SPEC
  #define STATIC_LIBLSAN_LIBS \
!   " %{static-liblsan|static:%:include(libsanitizer.spec)%(link_liblsan)}"
  #ifdef LIBLSAN_EARLY_SPEC
  #define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS
  #elif defined(HAVE_LD_STATIC_DYNAMIC)
*************** proper position among the other output f
*** 731,737 ****
  
  #ifndef LIBUBSAN_SPEC
  #define STATIC_LIBUBSAN_LIBS \
!   " %{static-libubsan:%:include(libsanitizer.spec)%(link_libubsan)}"
  #ifdef HAVE_LD_STATIC_DYNAMIC
  #define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION \
  		     "} -lubsan %{static-libubsan:" LD_DYNAMIC_OPTION "}" \
--- 731,737 ----
  
  #ifndef LIBUBSAN_SPEC
  #define STATIC_LIBUBSAN_LIBS \
!   " %{static-libubsan|static:%:include(libsanitizer.spec)%(link_libubsan)}"
  #ifdef HAVE_LD_STATIC_DYNAMIC
  #define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION \
  		     "} -lubsan %{static-libubsan:" LD_DYNAMIC_OPTION "}" \
*************** try_generate_repro (const char **argv)
*** 6970,6977 ****
  
      /* In final attempt we append compiler options and preprocesssed code to last
         generated .out file with configuration and backtrace.  */
!     char **output = &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1];
!     do_report_bug (new_argv, nargs, stderr_commented, output);
    }
  
  out:
--- 6970,6977 ----
  
      /* In final attempt we append compiler options and preprocesssed code to last
         generated .out file with configuration and backtrace.  */
!     char **err = &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1];
!     do_report_bug (new_argv, nargs, stderr_commented, err);
    }
  
  out:
diff -Nrcpad gcc-7.3.0/gcc/gengtype-lex.c gcc-7.4.0/gcc/gengtype-lex.c
*** gcc-7.3.0/gcc/gengtype-lex.c	Thu Jan 25 08:19:42 2018
--- gcc-7.4.0/gcc/gengtype-lex.c	Thu Dec  6 09:59:44 2018
*************** int yy_flex_debug = 0;
*** 1188,1194 ****
  #define YY_MORE_ADJ 0
  #define YY_RESTORE_YY_MORE_OFFSET
  char *yytext;
! #line 1 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  /* -*- indented-text -*- */
  /* Process source files and output type information.
     Copyright (C) 2002-2017 Free Software Foundation, Inc.
--- 1188,1194 ----
  #define YY_MORE_ADJ 0
  #define YY_RESTORE_YY_MORE_OFFSET
  char *yytext;
! #line 1 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  /* -*- indented-text -*- */
  /* Process source files and output type information.
     Copyright (C) 2002-2017 Free Software Foundation, Inc.
*************** You should have received a copy of the G
*** 1209,1215 ****
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  #define YY_NO_INPUT 1
! #line 24 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  #ifdef HOST_GENERATOR_FILE
  #include "config.h"
  #define GENERATOR_FILE 1
--- 1209,1215 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  #define YY_NO_INPUT 1
! #line 24 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  #ifdef HOST_GENERATOR_FILE
  #include "config.h"
  #define GENERATOR_FILE 1
*************** YY_DECL
*** 1425,1431 ****
  	register char *yy_cp, *yy_bp;
  	register int yy_act;
      
! #line 66 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  
    /* Do this on entry to yylex():  */
    *yylval = 0;
--- 1425,1431 ----
  	register char *yy_cp, *yy_bp;
  	register int yy_act;
      
! #line 66 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  
    /* Do this on entry to yylex():  */
    *yylval = 0;
*************** case 1:
*** 1522,1528 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 77 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return TYPEDEF;
--- 1522,1528 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 77 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return TYPEDEF;
*************** case 2:
*** 1534,1540 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 81 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STRUCT;
--- 1534,1540 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 81 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STRUCT;
*************** case 3:
*** 1546,1552 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 85 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return UNION;
--- 1546,1552 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 85 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return UNION;
*************** case 4:
*** 1558,1564 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 89 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STRUCT;
--- 1558,1564 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 89 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STRUCT;
*************** case 5:
*** 1570,1576 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 93 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return EXTERN;
--- 1570,1576 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 93 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return EXTERN;
*************** case 6:
*** 1582,1588 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 97 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STATIC;
--- 1582,1588 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 97 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STATIC;
*************** YY_RULE_SETUP
*** 1593,1617 ****
  
  case 7:
  YY_RULE_SETUP
! #line 105 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { BEGIN(in_struct_comment); }
  	YY_BREAK
  case 8:
  /* rule 8 can match eol */
  YY_RULE_SETUP
! #line 106 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 9:
  /* rule 9 can match eol */
  YY_RULE_SETUP
! #line 108 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { update_lineno (yytext, yyleng); }
  	YY_BREAK
  case 10:
  /* rule 10 can match eol */
  YY_RULE_SETUP
! #line 109 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 11:
--- 1593,1617 ----
  
  case 7:
  YY_RULE_SETUP
! #line 105 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { BEGIN(in_struct_comment); }
  	YY_BREAK
  case 8:
  /* rule 8 can match eol */
  YY_RULE_SETUP
! #line 106 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 9:
  /* rule 9 can match eol */
  YY_RULE_SETUP
! #line 108 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { update_lineno (yytext, yyleng); }
  	YY_BREAK
  case 10:
  /* rule 10 can match eol */
  YY_RULE_SETUP
! #line 109 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 11:
*************** case 11:
*** 1620,1626 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 111 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  /* don't care */
  	YY_BREAK
  case 12:
--- 1620,1626 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 111 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  /* don't care */
  	YY_BREAK
  case 12:
*************** case 12:
*** 1628,1644 ****
  *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
! #line 113 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  case 13:
  /* rule 13 can match eol */
! #line 114 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  case 14:
  /* rule 14 can match eol */
! #line 115 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  case 15:
  /* rule 15 can match eol */
  YY_RULE_SETUP
! #line 115 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {
      *yylval = XDUPVAR (const char, yytext, yyleng, yyleng + 1);
      return IGNORABLE_CXX_KEYWORD;
--- 1628,1644 ----
  *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
! #line 113 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  case 13:
  /* rule 13 can match eol */
! #line 114 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  case 14:
  /* rule 14 can match eol */
! #line 115 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  case 15:
  /* rule 15 can match eol */
  YY_RULE_SETUP
! #line 115 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {
      *yylval = XDUPVAR (const char, yytext, yyleng, yyleng + 1);
      return IGNORABLE_CXX_KEYWORD;
*************** case 16:
*** 1650,1656 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 3;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 119 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { return GTY_TOKEN; }
  	YY_BREAK
  case 17:
--- 1650,1656 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 3;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 119 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { return GTY_TOKEN; }
  	YY_BREAK
  case 17:
*************** case 17:
*** 1659,1665 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 120 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { return UNION; }
  	YY_BREAK
  case 18:
--- 1659,1665 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 120 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { return UNION; }
  	YY_BREAK
  case 18:
*************** case 18:
*** 1668,1674 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 6;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 121 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { return STRUCT; }
  	YY_BREAK
  case 19:
--- 1668,1674 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 6;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 121 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { return STRUCT; }
  	YY_BREAK
  case 19:
*************** case 19:
*** 1677,1683 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 122 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { return STRUCT; }
  	YY_BREAK
  case 20:
--- 1677,1683 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 122 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { return STRUCT; }
  	YY_BREAK
  case 20:
*************** case 20:
*** 1686,1692 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 7;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 123 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { return TYPEDEF; }
  	YY_BREAK
  case 21:
--- 1686,1692 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 7;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 123 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { return TYPEDEF; }
  	YY_BREAK
  case 21:
*************** case 21:
*** 1695,1701 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 4;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 124 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { return ENUM; }
  	YY_BREAK
  case 22:
--- 1695,1701 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 4;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 124 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { return ENUM; }
  	YY_BREAK
  case 22:
*************** case 22:
*** 1704,1710 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 9;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 125 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { return PTR_ALIAS; }
  	YY_BREAK
  case 23:
--- 1704,1710 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 9;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 125 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { return PTR_ALIAS; }
  	YY_BREAK
  case 23:
*************** case 23:
*** 1713,1719 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 10;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 126 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { return NESTED_PTR; }
  	YY_BREAK
  case 24:
--- 1713,1719 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 10;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 126 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { return NESTED_PTR; }
  	YY_BREAK
  case 24:
*************** case 24:
*** 1722,1733 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 4;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 127 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { return USER_GTY; }
  	YY_BREAK
  case 25:
  YY_RULE_SETUP
! #line 128 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { return NUM; }
  	YY_BREAK
  case 26:
--- 1722,1733 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 4;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 127 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { return USER_GTY; }
  	YY_BREAK
  case 25:
  YY_RULE_SETUP
! #line 128 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { return NUM; }
  	YY_BREAK
  case 26:
*************** case 26:
*** 1735,1745 ****
  *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
! #line 131 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  case 27:
  /* rule 27 can match eol */
  YY_RULE_SETUP
! #line 131 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {
    size_t len;
  
--- 1735,1745 ----
  *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
! #line 131 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  case 27:
  /* rule 27 can match eol */
  YY_RULE_SETUP
! #line 131 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {
    size_t len;
  
*************** case 28:
*** 1757,1763 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 142 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
    return ID;
--- 1757,1763 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 142 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
    return ID;
*************** YY_RULE_SETUP
*** 1766,1772 ****
  case 29:
  /* rule 29 can match eol */
  YY_RULE_SETUP
! #line 147 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
    return STRING;
--- 1766,1772 ----
  case 29:
  /* rule 29 can match eol */
  YY_RULE_SETUP
! #line 147 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
    return STRING;
*************** YY_RULE_SETUP
*** 1776,1782 ****
  case 30:
  /* rule 30 can match eol */
  YY_RULE_SETUP
! #line 152 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
    return ARRAY;
--- 1776,1782 ----
  case 30:
  /* rule 30 can match eol */
  YY_RULE_SETUP
! #line 152 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
    return ARRAY;
*************** YY_RULE_SETUP
*** 1785,1791 ****
  case 31:
  /* rule 31 can match eol */
  YY_RULE_SETUP
! #line 156 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng);
    return CHAR;
--- 1785,1791 ----
  case 31:
  /* rule 31 can match eol */
  YY_RULE_SETUP
! #line 156 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng);
    return CHAR;
*************** YY_RULE_SETUP
*** 1793,1816 ****
  	YY_BREAK
  case 32:
  YY_RULE_SETUP
! #line 161 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { return ELLIPSIS; }
  	YY_BREAK
  case 33:
  YY_RULE_SETUP
! #line 162 "/space/rguenther/gcc-7.3.0/gcc-7.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 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {lexer_line.line++;}
  	YY_BREAK
  case 35:
  YY_RULE_SETUP
! #line 167 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {
    error_at_line (&lexer_line, "unexpected character `%s'", yytext);
  }
--- 1793,1816 ----
  	YY_BREAK
  case 32:
  YY_RULE_SETUP
! #line 161 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { return ELLIPSIS; }
  	YY_BREAK
  case 33:
  YY_RULE_SETUP
! #line 162 "/space/rguenther/gcc-7.4.0/gcc-7.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 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {lexer_line.line++;}
  	YY_BREAK
  case 35:
  YY_RULE_SETUP
! #line 167 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {
    error_at_line (&lexer_line, "unexpected character `%s'", yytext);
  }
*************** YY_RULE_SETUP
*** 1818,1853 ****
  
  case 36:
  YY_RULE_SETUP
! #line 172 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { BEGIN(in_comment); }
  	YY_BREAK
  case 37:
  /* rule 37 can match eol */
  YY_RULE_SETUP
! #line 173 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 38:
  /* rule 38 can match eol */
  YY_RULE_SETUP
! #line 174 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 39:
! #line 176 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  case 40:
  /* rule 40 can match eol */
! #line 177 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  case 41:
  /* rule 41 can match eol */
  YY_RULE_SETUP
! #line 177 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 42:
  /* rule 42 can match eol */
  YY_RULE_SETUP
! #line 178 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { update_lineno (yytext, yyleng); }
  	YY_BREAK
  case 43:
--- 1818,1853 ----
  
  case 36:
  YY_RULE_SETUP
! #line 172 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { BEGIN(in_comment); }
  	YY_BREAK
  case 37:
  /* rule 37 can match eol */
  YY_RULE_SETUP
! #line 173 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 38:
  /* rule 38 can match eol */
  YY_RULE_SETUP
! #line 174 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 39:
! #line 176 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  case 40:
  /* rule 40 can match eol */
! #line 177 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  case 41:
  /* rule 41 can match eol */
  YY_RULE_SETUP
! #line 177 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 42:
  /* rule 42 can match eol */
  YY_RULE_SETUP
! #line 178 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { update_lineno (yytext, yyleng); }
  	YY_BREAK
  case 43:
*************** case 43:
*** 1856,1876 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 179 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  
  case 44:
  /* rule 44 can match eol */
  YY_RULE_SETUP
! #line 182 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 45:
! #line 184 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  case 46:
  YY_RULE_SETUP
! #line 184 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 47:
--- 1856,1876 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 179 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  
  case 44:
  /* rule 44 can match eol */
  YY_RULE_SETUP
! #line 182 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 45:
! #line 184 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  case 46:
  YY_RULE_SETUP
! #line 184 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 47:
*************** case 47:
*** 1879,1903 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 185 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  
  case 48:
  YY_RULE_SETUP
! #line 188 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { BEGIN(INITIAL); } 
  	YY_BREAK
  case 49:
  YY_RULE_SETUP
! #line 189 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  { BEGIN(in_struct); }
  	YY_BREAK
  case 50:
! #line 192 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  case 51:
  YY_RULE_SETUP
! #line 192 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  {
    error_at_line (&lexer_line, 
  		 "unterminated comment or string; unexpected EOF");
--- 1879,1903 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 185 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  
  case 48:
  YY_RULE_SETUP
! #line 188 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { BEGIN(INITIAL); } 
  	YY_BREAK
  case 49:
  YY_RULE_SETUP
! #line 189 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  { BEGIN(in_struct); }
  	YY_BREAK
  case 50:
! #line 192 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  case 51:
  YY_RULE_SETUP
! #line 192 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  {
    error_at_line (&lexer_line, 
  		 "unterminated comment or string; unexpected EOF");
*************** YY_RULE_SETUP
*** 1906,1917 ****
  case 52:
  /* rule 52 can match eol */
  YY_RULE_SETUP
! #line 197 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 53:
  YY_RULE_SETUP
! #line 199 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  YY_FATAL_ERROR( "flex scanner jammed" );
  	YY_BREAK
  #line 1917 "gengtype-lex.c"
--- 1906,1917 ----
  case 52:
  /* rule 52 can match eol */
  YY_RULE_SETUP
! #line 197 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 53:
  YY_RULE_SETUP
! #line 199 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  YY_FATAL_ERROR( "flex scanner jammed" );
  	YY_BREAK
  #line 1917 "gengtype-lex.c"
*************** void yyfree (void * ptr )
*** 2878,2884 ****
  
  #define YYTABLES_NAME "yytables"
  
! #line 199 "/space/rguenther/gcc-7.3.0/gcc-7.3.0/gcc/gengtype-lex.l"
  
  
  
--- 2878,2884 ----
  
  #define YYTABLES_NAME "yytables"
  
! #line 199 "/space/rguenther/gcc-7.4.0/gcc-7.4.0/gcc/gengtype-lex.l"
  
  
  
diff -Nrcpad gcc-7.3.0/gcc/genmatch.c gcc-7.4.0/gcc/genmatch.c
*** gcc-7.3.0/gcc/genmatch.c	Tue Apr  4 19:14:47 2017
--- gcc-7.4.0/gcc/genmatch.c	Tue Mar  6 10:01:52 2018
*************** capture_info::walk_match (operand *o, un
*** 2054,2060 ****
        if (c->what
  	  && (e = dyn_cast <expr *> (c->what)))
  	{
! 	  info[where].expr_p = true;
  	  info[where].force_single_use |= e->force_single_use;
  	}
      }
--- 2054,2064 ----
        if (c->what
  	  && (e = dyn_cast <expr *> (c->what)))
  	{
! 	  /* Zero-operand expression captures like ADDR_EXPR@0 are
! 	     similar as predicates -- if they are not mentioned in
! 	     the result we have to force them to have no side-effects.  */
! 	  if (e->ops.length () != 0)
! 	    info[where].expr_p = true;
  	  info[where].force_single_use |= e->force_single_use;
  	}
      }
diff -Nrcpad gcc-7.3.0/gcc/genmodes.c gcc-7.4.0/gcc/genmodes.c
*** gcc-7.3.0/gcc/genmodes.c	Fri Mar 24 14:09:33 2017
--- gcc-7.4.0/gcc/genmodes.c	Sat Feb 17 00:25:15 2018
*************** complex_class (enum mode_class c)
*** 116,121 ****
--- 116,122 ----
    switch (c)
      {
      case MODE_INT: return MODE_COMPLEX_INT;
+     case MODE_PARTIAL_INT: return MODE_COMPLEX_INT;
      case MODE_FLOAT: return MODE_COMPLEX_FLOAT;
      default:
        error ("no complex class for class %s", mode_class_names[c]);
diff -Nrcpad gcc-7.3.0/gcc/gimple-match-head.c gcc-7.4.0/gcc/gimple-match-head.c
*** gcc-7.3.0/gcc/gimple-match-head.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/gimple-match-head.c	Mon Nov 26 14:16:01 2018
*************** gimple_resimplify1 (gimple_seq *seq,
*** 99,115 ****
--- 99,132 ----
  	}
      }
  
+   /* Limit recursion, there are cases like PR80887 and others, for
+      example when value-numbering presents us with unfolded expressions
+      that we are really not prepared to handle without eventual
+      oscillation like ((_50 + 0) + 8) where _50 gets mapped to _50
+      itself as available expression.  */
+   static unsigned depth;
+   if (depth > 10)
+     {
+       if (dump_file && (dump_flags & TDF_DETAILS))
+ 	fprintf (dump_file, "Aborting expression simplification due to "
+ 		 "deep recursion\n");
+       return false;
+     }
+ 
+   ++depth;
    code_helper res_code2;
    tree res_ops2[3] = {};
    if (gimple_simplify (&res_code2, res_ops2, seq, valueize,
  		       *res_code, type, res_ops[0]))
      {
+       --depth;
        *res_code = res_code2;
        res_ops[0] = res_ops2[0];
        res_ops[1] = res_ops2[1];
        res_ops[2] = res_ops2[2];
        return true;
      }
+   --depth;
  
    return false;
  }
*************** gimple_resimplify2 (gimple_seq *seq,
*** 159,175 ****
--- 176,205 ----
        canonicalized = true;
      }
  
+   /* Limit recursion, see gimple_resimplify1.  */
+   static unsigned depth;
+   if (depth > 10)
+     {
+       if (dump_file && (dump_flags & TDF_DETAILS))
+ 	fprintf (dump_file, "Aborting expression simplification due to "
+ 		 "deep recursion\n");
+       return false;
+     }
+ 
+   ++depth;
    code_helper res_code2;
    tree res_ops2[3] = {};
    if (gimple_simplify (&res_code2, res_ops2, seq, valueize,
  		       *res_code, type, res_ops[0], res_ops[1]))
      {
+       --depth;
        *res_code = res_code2;
        res_ops[0] = res_ops2[0];
        res_ops[1] = res_ops2[1];
        res_ops[2] = res_ops2[2];
        return true;
      }
+   --depth;
  
    return canonicalized;
  }
*************** gimple_resimplify3 (gimple_seq *seq,
*** 218,235 ****
--- 248,278 ----
        canonicalized = true;
      }
  
+   /* Limit recursion, see gimple_resimplify1.  */
+   static unsigned depth;
+   if (depth > 10)
+     {
+       if (dump_file && (dump_flags & TDF_DETAILS))
+ 	fprintf (dump_file, "Aborting expression simplification due to "
+ 		 "deep recursion\n");
+       return false;
+     }
+ 
+   ++depth;
    code_helper res_code2;
    tree res_ops2[3] = {};
    if (gimple_simplify (&res_code2, res_ops2, seq, valueize,
  		       *res_code, type,
  		       res_ops[0], res_ops[1], res_ops[2]))
      {
+       --depth;
        *res_code = res_code2;
        res_ops[0] = res_ops2[0];
        res_ops[1] = res_ops2[1];
        res_ops[2] = res_ops2[2];
        return true;
      }
+   --depth;
  
    return canonicalized;
  }
diff -Nrcpad gcc-7.3.0/gcc/gimple-ssa-backprop.c gcc-7.4.0/gcc/gimple-ssa-backprop.c
*** gcc-7.3.0/gcc/gimple-ssa-backprop.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/gimple-ssa-backprop.c	Sat Jun 23 12:21:18 2018
*************** private:
*** 260,265 ****
--- 260,270 ----
       post-order walk.  */
    auto_sbitmap m_visited_blocks;
  
+   /* A bitmap of phis that we have finished processing in the initial
+      post-order walk, excluding those from blocks mentioned in
+      M_VISITED_BLOCKS.  */
+   auto_bitmap m_visited_phis;
+ 
    /* A worklist of SSA names whose definitions need to be reconsidered.  */
    auto_vec <tree, 64> m_worklist;
  
*************** backprop::intersect_uses (tree var, usag
*** 500,507 ****
      {
        if (is_gimple_debug (stmt))
  	continue;
!       if (is_a <gphi *> (stmt)
! 	  && !bitmap_bit_p (m_visited_blocks, gimple_bb (stmt)->index))
  	{
  	  /* Skip unprocessed phis.  */
  	  if (dump_file && (dump_flags & TDF_DETAILS))
--- 505,515 ----
      {
        if (is_gimple_debug (stmt))
  	continue;
!       gphi *phi = dyn_cast <gphi *> (stmt);
!       if (phi
! 	  && !bitmap_bit_p (m_visited_blocks, gimple_bb (phi)->index)
! 	  && !bitmap_bit_p (m_visited_phis,
! 			    SSA_NAME_VERSION (gimple_phi_result (phi))))
  	{
  	  /* Skip unprocessed phis.  */
  	  if (dump_file && (dump_flags & TDF_DETAILS))
*************** backprop::intersect_uses (tree var, usag
*** 509,515 ****
  	      fprintf (dump_file, "[BACKEDGE] ");
  	      print_generic_expr (dump_file, var, 0);
  	      fprintf (dump_file, " in ");
! 	      print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
  	    }
  	}
        else
--- 517,523 ----
  	      fprintf (dump_file, "[BACKEDGE] ");
  	      print_generic_expr (dump_file, var, 0);
  	      fprintf (dump_file, " in ");
! 	      print_gimple_stmt (dump_file, phi, 0, TDF_SLIM);
  	    }
  	}
        else
*************** backprop::process_block (basic_block bb)
*** 633,639 ****
      }
    for (gphi_iterator gpi = gsi_start_phis (bb); !gsi_end_p (gpi);
         gsi_next (&gpi))
!     process_var (gimple_phi_result (gpi.phi ()));
  }
  
  /* Delete the definition of VAR, which has no uses.  */
--- 641,652 ----
      }
    for (gphi_iterator gpi = gsi_start_phis (bb); !gsi_end_p (gpi);
         gsi_next (&gpi))
!     {
!       tree result = gimple_phi_result (gpi.phi ());
!       process_var (result);
!       bitmap_set_bit (m_visited_phis, SSA_NAME_VERSION (result));
!     }
!   bitmap_clear (m_visited_phis);
  }
  
  /* Delete the definition of VAR, which has no uses.  */
diff -Nrcpad gcc-7.3.0/gcc/gimple-ssa-store-merging.c gcc-7.4.0/gcc/gimple-ssa-store-merging.c
*** gcc-7.3.0/gcc/gimple-ssa-store-merging.c	Fri Mar 17 13:14:42 2017
--- gcc-7.4.0/gcc/gimple-ssa-store-merging.c	Sat Mar  3 13:38:48 2018
*************** pass_store_merging::terminate_all_aliasi
*** 812,823 ****
  	{
  	  struct store_immediate_info *info;
  	  unsigned int i;
  	  FOR_EACH_VEC_ELT ((*chain_info)->m_store_info, i, info)
  	    {
! 	      if (ref_maybe_used_by_stmt_p (stmt,
! 					    gimple_assign_lhs (info->stmt))
! 		  || stmt_may_clobber_ref_p (stmt,
! 					     gimple_assign_lhs (info->stmt)))
  		{
  		  if (dump_file && (dump_flags & TDF_DETAILS))
  		    {
--- 812,825 ----
  	{
  	  struct store_immediate_info *info;
  	  unsigned int i;
+ 	  tree store_lhs
+ 	    = gimple_store_p (stmt) ? gimple_get_lhs (stmt) : NULL_TREE;
  	  FOR_EACH_VEC_ELT ((*chain_info)->m_store_info, i, info)
  	    {
! 	      tree lhs = gimple_assign_lhs (info->stmt);
! 	      if (ref_maybe_used_by_stmt_p (stmt, lhs)
! 		  || stmt_may_clobber_ref_p (stmt, lhs)
! 		  || (store_lhs && refs_output_dependent_p (store_lhs, lhs)))
  		{
  		  if (dump_file && (dump_flags & TDF_DETAILS))
  		    {
diff -Nrcpad gcc-7.3.0/gcc/gimple-ssa-strength-reduction.c gcc-7.4.0/gcc/gimple-ssa-strength-reduction.c
*** gcc-7.3.0/gcc/gimple-ssa-strength-reduction.c	Mon Oct  2 18:07:45 2017
--- gcc-7.4.0/gcc/gimple-ssa-strength-reduction.c	Fri Oct 26 19:38:45 2018
*************** along with GCC; see the file COPYING3.
*** 55,60 ****
--- 55,61 ----
  #include "params.h"
  #include "tree-ssa-address.h"
  #include "tree-affine.h"
+ #include "tree-eh.h"
  #include "builtins.h"
  
  /* Information about a strength reduction candidate.  Each statement
*************** struct slsr_cand_d
*** 265,270 ****
--- 266,275 ----
       of a statement.  */
    cand_idx next_interp;
  
+   /* Index of the first candidate record in a chain for the same
+      statement.  */
+   cand_idx first_interp;
+ 
    /* Index of the basis statement S0, if any, in the candidate vector.  */
    cand_idx basis;
  
*************** alloc_cand_and_find_basis (enum cand_kin
*** 642,647 ****
--- 647,653 ----
    c->kind = kind;
    c->cand_num = cand_vec.length () + 1;
    c->next_interp = 0;
+   c->first_interp = c->cand_num;
    c->dependent = 0;
    c->sibling = 0;
    c->def_phi = kind == CAND_MULT ? find_phi_def (base) : 0;
*************** slsr_process_mul (gimple *gs, tree rhs1,
*** 1212,1217 ****
--- 1218,1224 ----
  	 is the stride and RHS2 is the base expression.  */
        c2 = create_mul_ssa_cand (gs, rhs2, rhs1, speed);
        c->next_interp = c2->cand_num;
+       c2->first_interp = c->cand_num;
      }
    else
      {
*************** slsr_process_add (gimple *gs, tree rhs1,
*** 1449,1455 ****
  	{
  	  c2 = create_add_ssa_cand (gs, rhs2, rhs1, false, speed);
  	  if (c)
! 	    c->next_interp = c2->cand_num;
  	  else
  	    add_cand_for_stmt (gs, c2);
  	}
--- 1456,1465 ----
  	{
  	  c2 = create_add_ssa_cand (gs, rhs2, rhs1, false, speed);
  	  if (c)
! 	    {
! 	      c->next_interp = c2->cand_num;
! 	      c2->first_interp = c->cand_num;
! 	    }
  	  else
  	    add_cand_for_stmt (gs, c2);
  	}
*************** slsr_process_cast (gimple *gs, tree rhs1
*** 1572,1577 ****
--- 1582,1589 ----
  
    if (base_cand && base_cand->kind != CAND_PHI)
      {
+       slsr_cand_t first_cand = NULL;
+ 
        while (base_cand)
  	{
  	  /* Propagate all data from the base candidate except the type,
*************** slsr_process_cast (gimple *gs, tree rhs1
*** 1586,1591 ****
--- 1598,1609 ----
  					 base_cand->index, base_cand->stride,
  					 ctype, base_cand->stride_type,
  					 savings);
+ 	  if (!first_cand)
+ 	    first_cand = c;
+ 
+ 	  if (first_cand != c)
+ 	    c->first_interp = first_cand->cand_num;
+ 
  	  if (base_cand->next_interp)
  	    base_cand = lookup_cand (base_cand->next_interp);
  	  else
*************** slsr_process_cast (gimple *gs, tree rhs1
*** 1608,1613 ****
--- 1626,1632 ----
        c2 = alloc_cand_and_find_basis (CAND_MULT, gs, rhs1, 0,
  				      integer_one_node, ctype, sizetype, 0);
        c->next_interp = c2->cand_num;
+       c2->first_interp = c->cand_num;
      }
  
    /* Add the first (or only) interpretation to the statement-candidate
*************** slsr_process_copy (gimple *gs, tree rhs1
*** 1632,1637 ****
--- 1651,1658 ----
  
    if (base_cand && base_cand->kind != CAND_PHI)
      {
+       slsr_cand_t first_cand = NULL;
+ 
        while (base_cand)
  	{
  	  /* Propagate all data from the base candidate.  */
*************** slsr_process_copy (gimple *gs, tree rhs1
*** 1644,1649 ****
--- 1665,1676 ----
  					 base_cand->index, base_cand->stride,
  					 base_cand->cand_type,
  					 base_cand->stride_type, savings);
+ 	  if (!first_cand)
+ 	    first_cand = c;
+ 
+ 	  if (first_cand != c)
+ 	    c->first_interp = first_cand->cand_num;
+ 
  	  if (base_cand->next_interp)
  	    base_cand = lookup_cand (base_cand->next_interp);
  	  else
*************** slsr_process_copy (gimple *gs, tree rhs1
*** 1668,1673 ****
--- 1695,1701 ----
  				      integer_one_node, TREE_TYPE (rhs1),
  				      sizetype, 0);
        c->next_interp = c2->cand_num;
+       c2->first_interp = c->cand_num;
      }
  
    /* Add the first (or only) interpretation to the statement-candidate
*************** find_candidates_dom_walker::before_dom_c
*** 1699,1704 ****
--- 1727,1735 ----
      {
        gimple *gs = gsi_stmt (gsi);
  
+       if (stmt_could_throw_p (gs))
+ 	continue;
+ 
        if (gimple_vuse (gs) && gimple_assign_single_p (gs))
  	slsr_process_ref (gs);
  
*************** dump_candidate (slsr_cand_t c)
*** 1835,1842 ****
    print_generic_expr (dump_file, c->cand_type, 0);
    fprintf (dump_file, "\n     basis: %d  dependent: %d  sibling: %d\n",
  	   c->basis, c->dependent, c->sibling);
!   fprintf (dump_file, "     next-interp: %d  dead-savings: %d\n",
! 	   c->next_interp, c->dead_savings);
    if (c->def_phi)
      fprintf (dump_file, "     phi:  %d\n", c->def_phi);
    fputs ("\n", dump_file);
--- 1866,1874 ----
    print_generic_expr (dump_file, c->cand_type, 0);
    fprintf (dump_file, "\n     basis: %d  dependent: %d  sibling: %d\n",
  	   c->basis, c->dependent, c->sibling);
!   fprintf (dump_file,
! 	   "     next-interp: %d  first-interp: %d  dead-savings: %d\n",
! 	   c->next_interp, c->first_interp, c->dead_savings);
    if (c->def_phi)
      fprintf (dump_file, "     phi:  %d\n", c->def_phi);
    fputs ("\n", dump_file);
*************** replace_mult_candidate (slsr_cand_t c, t
*** 2094,2107 ****
        tree lhs = gimple_assign_lhs (c->cand_stmt);
        gassign *copy_stmt = gimple_build_assign (lhs, basis_name);
        gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
!       slsr_cand_t cc = c;
        gimple_set_location (copy_stmt, gimple_location (c->cand_stmt));
        gsi_replace (&gsi, copy_stmt, false);
!       c->cand_stmt = copy_stmt;
!       while (cc->next_interp)
  	{
- 	  cc = lookup_cand (cc->next_interp);
  	  cc->cand_stmt = copy_stmt;
  	}
        if (dump_file && (dump_flags & TDF_DETAILS))
  	stmt_to_print = copy_stmt;
--- 2126,2138 ----
        tree lhs = gimple_assign_lhs (c->cand_stmt);
        gassign *copy_stmt = gimple_build_assign (lhs, basis_name);
        gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
!       slsr_cand_t cc = lookup_cand (c->first_interp);
        gimple_set_location (copy_stmt, gimple_location (c->cand_stmt));
        gsi_replace (&gsi, copy_stmt, false);
!       while (cc)
  	{
  	  cc->cand_stmt = copy_stmt;
+ 	  cc = cc->next_interp ? lookup_cand (cc->next_interp) : NULL;
  	}
        if (dump_file && (dump_flags & TDF_DETAILS))
  	stmt_to_print = copy_stmt;
*************** replace_mult_candidate (slsr_cand_t c, t
*** 2128,2142 ****
        else
  	{
  	  gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
! 	  slsr_cand_t cc = c;
  	  gimple_assign_set_rhs_with_ops (&gsi, code,
  					  basis_name, bump_tree);
  	  update_stmt (gsi_stmt (gsi));
! 	  c->cand_stmt = gsi_stmt (gsi);
! 	  while (cc->next_interp)
  	    {
- 	      cc = lookup_cand (cc->next_interp);
  	      cc->cand_stmt = gsi_stmt (gsi);
  	    }
  	  if (dump_file && (dump_flags & TDF_DETAILS))
  	    stmt_to_print = gsi_stmt (gsi);
--- 2159,2172 ----
        else
  	{
  	  gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
! 	  slsr_cand_t cc = lookup_cand (c->first_interp);
  	  gimple_assign_set_rhs_with_ops (&gsi, code,
  					  basis_name, bump_tree);
  	  update_stmt (gsi_stmt (gsi));
! 	  while (cc)
  	    {
  	      cc->cand_stmt = gsi_stmt (gsi);
+ 	      cc = cc->next_interp ? lookup_cand (cc->next_interp) : NULL;
  	    }
  	  if (dump_file && (dump_flags & TDF_DETAILS))
  	    stmt_to_print = gsi_stmt (gsi);
*************** record_phi_increments (slsr_cand_t basis
*** 2636,2652 ****
    for (i = 0; i < gimple_phi_num_args (phi); i++)
      {
        tree arg = gimple_phi_arg_def (phi, i);
  
!       if (!operand_equal_p (arg, phi_cand->base_expr, 0))
  	{
! 	  gimple *arg_def = SSA_NAME_DEF_STMT (arg);
  
! 	  if (gimple_code (arg_def) == GIMPLE_PHI)
! 	    record_phi_increments (basis, arg_def);
  	  else
  	    {
  	      slsr_cand_t arg_cand = base_cand_from_table (arg);
! 	      widest_int diff = arg_cand->index - basis->index;
  	      record_increment (arg_cand, diff, PHI_ADJUST);
  	    }
  	}
--- 2666,2688 ----
    for (i = 0; i < gimple_phi_num_args (phi); i++)
      {
        tree arg = gimple_phi_arg_def (phi, i);
+       gimple *arg_def = SSA_NAME_DEF_STMT (arg);
  
!       if (gimple_code (arg_def) == GIMPLE_PHI)
! 	record_phi_increments (basis, arg_def);
!       else
  	{
! 	  widest_int diff;
  
! 	  if (operand_equal_p (arg, phi_cand->base_expr, 0))
! 	    {
! 	      diff = -basis->index;
! 	      record_increment (phi_cand, diff, PHI_ADJUST);
! 	    }
  	  else
  	    {
  	      slsr_cand_t arg_cand = base_cand_from_table (arg);
! 	      diff = arg_cand->index - basis->index;
  	      record_increment (arg_cand, diff, PHI_ADJUST);
  	    }
  	}
*************** phi_incr_cost (slsr_cand_t c, const wide
*** 2708,2735 ****
    for (i = 0; i < gimple_phi_num_args (phi); i++)
      {
        tree arg = gimple_phi_arg_def (phi, i);
  
!       if (!operand_equal_p (arg, phi_cand->base_expr, 0))
  	{
! 	  gimple *arg_def = SSA_NAME_DEF_STMT (arg);
!       
! 	  if (gimple_code (arg_def) == GIMPLE_PHI)
  	    {
! 	      int feeding_savings = 0;
! 	      cost += phi_incr_cost (c, incr, arg_def, &feeding_savings);
! 	      if (has_single_use (gimple_phi_result (arg_def)))
! 		*savings += feeding_savings;
  	    }
  	  else
  	    {
! 	      slsr_cand_t arg_cand = base_cand_from_table (arg);
! 	      widest_int diff = arg_cand->index - basis->index;
! 
! 	      if (incr == diff)
  		{
- 		  tree basis_lhs = gimple_assign_lhs (basis->cand_stmt);
  		  tree lhs = gimple_assign_lhs (arg_cand->cand_stmt);
- 		  cost += add_cost (true, TYPE_MODE (TREE_TYPE (basis_lhs)));
  		  if (has_single_use (lhs))
  		    *savings += stmt_cost (arg_cand->cand_stmt, true);
  		}
--- 2744,2785 ----
    for (i = 0; i < gimple_phi_num_args (phi); i++)
      {
        tree arg = gimple_phi_arg_def (phi, i);
+       gimple *arg_def = SSA_NAME_DEF_STMT (arg);
  
!       if (gimple_code (arg_def) == GIMPLE_PHI)
  	{
! 	  int feeding_savings = 0;
! 	  cost += phi_incr_cost (c, incr, arg_def, &feeding_savings);
! 	  if (has_single_use (gimple_phi_result (arg_def)))
! 	    *savings += feeding_savings;
! 	}
!       else
! 	{
! 	  widest_int diff;
! 	  slsr_cand_t arg_cand;
! 
! 	  /* When the PHI argument is just a pass-through to the base
! 	     expression of the hidden basis, the difference is zero minus
! 	     the index of the basis.  There is no potential savings by
! 	     eliminating a statement in this case.  */
! 	  if (operand_equal_p (arg, phi_cand->base_expr, 0))
  	    {
! 	      arg_cand = (slsr_cand_t) NULL;
! 	      diff = -basis->index;
  	    }
  	  else
  	    {
! 	      arg_cand = base_cand_from_table (arg);
! 	      diff = arg_cand->index - basis->index;
! 	    }
! 	  
! 	  if (incr == diff)
! 	    {
! 	      tree basis_lhs = gimple_assign_lhs (basis->cand_stmt);
! 	      cost += add_cost (true, TYPE_MODE (TREE_TYPE (basis_lhs)));
! 	      if (arg_cand)
  		{
  		  tree lhs = gimple_assign_lhs (arg_cand->cand_stmt);
  		  if (has_single_use (lhs))
  		    *savings += stmt_cost (arg_cand->cand_stmt, true);
  		}
*************** ncd_with_phi (slsr_cand_t c, const wides
*** 3046,3068 ****
    for (i = 0; i < gimple_phi_num_args (phi); i++)
      {
        tree arg = gimple_phi_arg_def (phi, i);
  
!       if (!operand_equal_p (arg, phi_cand->base_expr, 0))
  	{
! 	  gimple *arg_def = SSA_NAME_DEF_STMT (arg);
  
! 	  if (gimple_code (arg_def) == GIMPLE_PHI)
! 	    ncd = ncd_with_phi (c, incr, as_a <gphi *> (arg_def), ncd,
! 				where);
! 	  else 
  	    {
  	      slsr_cand_t arg_cand = base_cand_from_table (arg);
! 	      widest_int diff = arg_cand->index - basis->index;
! 	      basic_block pred = gimple_phi_arg_edge (phi, i)->src;
! 
! 	      if ((incr == diff) || (!address_arithmetic_p && incr == -diff))
! 		ncd = ncd_for_two_cands (ncd, pred, *where, NULL, where);
  	    }
  	}
      }
  
--- 3096,3121 ----
    for (i = 0; i < gimple_phi_num_args (phi); i++)
      {
        tree arg = gimple_phi_arg_def (phi, i);
+       gimple *arg_def = SSA_NAME_DEF_STMT (arg);
  
!       if (gimple_code (arg_def) == GIMPLE_PHI)
! 	ncd = ncd_with_phi (c, incr, as_a <gphi *> (arg_def), ncd, where);
!       else 
  	{
! 	  widest_int diff;
  
! 	  if (operand_equal_p (arg, phi_cand->base_expr, 0))
! 	    diff = -basis->index;
! 	  else
  	    {
  	      slsr_cand_t arg_cand = base_cand_from_table (arg);
! 	      diff = arg_cand->index - basis->index;
  	    }
+ 	  
+ 	  basic_block pred = gimple_phi_arg_edge (phi, i)->src;
+ 	  
+ 	  if ((incr == diff) || (!address_arithmetic_p && incr == -diff))
+ 	    ncd = ncd_for_two_cands (ncd, pred, *where, NULL, where);
  	}
      }
  
*************** all_phi_incrs_profitable (slsr_cand_t c,
*** 3328,3376 ****
  	return false;
  
        tree arg = gimple_phi_arg_def (phi, i);
  
!       if (!operand_equal_p (arg, phi_cand->base_expr, 0))
  	{
! 	  gimple *arg_def = SSA_NAME_DEF_STMT (arg);
  
! 	  if (gimple_code (arg_def) == GIMPLE_PHI)
! 	    {
! 	      if (!all_phi_incrs_profitable (c, as_a <gphi *> (arg_def)))
! 		return false;
! 	    }
  	  else
  	    {
- 	      int j;
  	      slsr_cand_t arg_cand = base_cand_from_table (arg);
! 	      widest_int increment = arg_cand->index - basis->index;
! 
! 	      if (!address_arithmetic_p && wi::neg_p (increment))
! 		increment = -increment;
  
! 	      j = incr_vec_index (increment);
  
! 	      if (dump_file && (dump_flags & TDF_DETAILS))
! 		{
! 		  fprintf (dump_file, "  Conditional candidate %d, phi: ",
! 			   c->cand_num);
! 		  print_gimple_stmt (dump_file, phi, 0, 0);
! 		  fputs ("    increment: ", dump_file);
! 		  print_decs (increment, dump_file);
! 		  if (j < 0)
! 		    fprintf (dump_file,
! 			     "\n  Not replaced; incr_vec overflow.\n");
! 		  else {
! 		    fprintf (dump_file, "\n    cost: %d\n", incr_vec[j].cost);
! 		    if (profitable_increment_p (j))
! 		      fputs ("  Replacing...\n", dump_file);
! 		    else
! 		      fputs ("  Not replaced.\n", dump_file);
! 		  }
! 		}
  
! 	      if (j < 0 || !profitable_increment_p (j))
! 		return false;
  	    }
  	}
      }
  
--- 3381,3432 ----
  	return false;
  
        tree arg = gimple_phi_arg_def (phi, i);
+       gimple *arg_def = SSA_NAME_DEF_STMT (arg);
  
!       if (gimple_code (arg_def) == GIMPLE_PHI)
  	{
! 	  if (!all_phi_incrs_profitable (c, as_a <gphi *> (arg_def)))
! 	    return false;
! 	}
!       else
! 	{
! 	  int j;
! 	  widest_int increment;
  
! 	  if (operand_equal_p (arg, phi_cand->base_expr, 0))
! 	    increment = -basis->index;
  	  else
  	    {
  	      slsr_cand_t arg_cand = base_cand_from_table (arg);
! 	      increment = arg_cand->index - basis->index;
! 	    }
  
! 	  if (!address_arithmetic_p && wi::neg_p (increment))
! 	    increment = -increment;
  
! 	  j = incr_vec_index (increment);
  
! 	  if (dump_file && (dump_flags & TDF_DETAILS))
! 	    {
! 	      fprintf (dump_file, "  Conditional candidate %d, phi: ",
! 		       c->cand_num);
! 	      print_gimple_stmt (dump_file, phi, 0, 0);
! 	      fputs ("    increment: ", dump_file);
! 	      print_decs (increment, dump_file);
! 	      if (j < 0)
! 		fprintf (dump_file,
! 			 "\n  Not replaced; incr_vec overflow.\n");
! 	      else {
! 		fprintf (dump_file, "\n    cost: %d\n", incr_vec[j].cost);
! 		if (profitable_increment_p (j))
! 		  fputs ("  Replacing...\n", dump_file);
! 		else
! 		  fputs ("  Not replaced.\n", dump_file);
! 	      }
  	    }
+ 
+ 	  if (j < 0 || !profitable_increment_p (j))
+ 	    return false;
  	}
      }
  
*************** replace_rhs_if_not_dup (enum tree_code n
*** 3422,3435 ****
  	      || !operand_equal_p (new_rhs2, old_rhs1, 0))))
      {
        gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
!       slsr_cand_t cc = c;
        gimple_assign_set_rhs_with_ops (&gsi, new_code, new_rhs1, new_rhs2);
        update_stmt (gsi_stmt (gsi));
!       c->cand_stmt = gsi_stmt (gsi);
!       while (cc->next_interp)
  	{
- 	  cc = lookup_cand (cc->next_interp);
  	  cc->cand_stmt = gsi_stmt (gsi);
  	}
  
        if (dump_file && (dump_flags & TDF_DETAILS))
--- 3478,3490 ----
  	      || !operand_equal_p (new_rhs2, old_rhs1, 0))))
      {
        gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
!       slsr_cand_t cc = lookup_cand (c->first_interp);
        gimple_assign_set_rhs_with_ops (&gsi, new_code, new_rhs1, new_rhs2);
        update_stmt (gsi_stmt (gsi));
!       while (cc)
  	{
  	  cc->cand_stmt = gsi_stmt (gsi);
+ 	  cc = cc->next_interp ? lookup_cand (cc->next_interp) : NULL;
  	}
  
        if (dump_file && (dump_flags & TDF_DETAILS))
*************** replace_one_candidate (slsr_cand_t c, un
*** 3462,3467 ****
--- 3517,3527 ----
    orig_rhs2 = gimple_assign_rhs2 (c->cand_stmt);
    cand_incr = cand_increment (c);
  
+   /* If orig_rhs2 is NULL, we have already replaced this in situ with
+      a copy statement under another interpretation.  */
+   if (!orig_rhs2)
+     return;
+ 
    if (dump_file && (dump_flags & TDF_DETAILS))
      {
        fputs ("Replacing: ", dump_file);
*************** replace_one_candidate (slsr_cand_t c, un
*** 3534,3547 ****
  	  || !operand_equal_p (rhs2, orig_rhs2, 0))
  	{
  	  gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
! 	  slsr_cand_t cc = c;
  	  gimple_assign_set_rhs_with_ops (&gsi, MINUS_EXPR, basis_name, rhs2);
  	  update_stmt (gsi_stmt (gsi));
!           c->cand_stmt = gsi_stmt (gsi);
! 	  while (cc->next_interp)
  	    {
- 	      cc = lookup_cand (cc->next_interp);
  	      cc->cand_stmt = gsi_stmt (gsi);
  	    }
  
  	  if (dump_file && (dump_flags & TDF_DETAILS))
--- 3594,3606 ----
  	  || !operand_equal_p (rhs2, orig_rhs2, 0))
  	{
  	  gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
! 	  slsr_cand_t cc = lookup_cand (c->first_interp);
  	  gimple_assign_set_rhs_with_ops (&gsi, MINUS_EXPR, basis_name, rhs2);
  	  update_stmt (gsi_stmt (gsi));
! 	  while (cc)
  	    {
  	      cc->cand_stmt = gsi_stmt (gsi);
+ 	      cc = cc->next_interp ? lookup_cand (cc->next_interp) : NULL;
  	    }
  
  	  if (dump_file && (dump_flags & TDF_DETAILS))
*************** replace_one_candidate (slsr_cand_t c, un
*** 3561,3574 ****
  	{
  	  gassign *copy_stmt = gimple_build_assign (lhs, basis_name);
  	  gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
! 	  slsr_cand_t cc = c;
  	  gimple_set_location (copy_stmt, gimple_location (c->cand_stmt));
  	  gsi_replace (&gsi, copy_stmt, false);
! 	  c->cand_stmt = copy_stmt;
! 	  while (cc->next_interp)
  	    {
- 	      cc = lookup_cand (cc->next_interp);
  	      cc->cand_stmt = copy_stmt;
  	    }
  
  	  if (dump_file && (dump_flags & TDF_DETAILS))
--- 3620,3632 ----
  	{
  	  gassign *copy_stmt = gimple_build_assign (lhs, basis_name);
  	  gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
! 	  slsr_cand_t cc = lookup_cand (c->first_interp);
  	  gimple_set_location (copy_stmt, gimple_location (c->cand_stmt));
  	  gsi_replace (&gsi, copy_stmt, false);
! 	  while (cc)
  	    {
  	      cc->cand_stmt = copy_stmt;
+ 	      cc = cc->next_interp ? lookup_cand (cc->next_interp) : NULL;
  	    }
  
  	  if (dump_file && (dump_flags & TDF_DETAILS))
*************** replace_one_candidate (slsr_cand_t c, un
*** 3578,3591 ****
  	{
  	  gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
  	  gassign *cast_stmt = gimple_build_assign (lhs, NOP_EXPR, basis_name);
! 	  slsr_cand_t cc = c;
  	  gimple_set_location (cast_stmt, gimple_location (c->cand_stmt));
  	  gsi_replace (&gsi, cast_stmt, false);
! 	  c->cand_stmt = cast_stmt;
! 	  while (cc->next_interp)
  	    {
- 	      cc = lookup_cand (cc->next_interp);
  	      cc->cand_stmt = cast_stmt;
  	    }
  
  	  if (dump_file && (dump_flags & TDF_DETAILS))
--- 3636,3648 ----
  	{
  	  gimple_stmt_iterator gsi = gsi_for_stmt (c->cand_stmt);
  	  gassign *cast_stmt = gimple_build_assign (lhs, NOP_EXPR, basis_name);
! 	  slsr_cand_t cc = lookup_cand (c->first_interp);
  	  gimple_set_location (cast_stmt, gimple_location (c->cand_stmt));
  	  gsi_replace (&gsi, cast_stmt, false);
! 	  while (cc)
  	    {
  	      cc->cand_stmt = cast_stmt;
+ 	      cc = cc->next_interp ? lookup_cand (cc->next_interp) : NULL;
  	    }
  
  	  if (dump_file && (dump_flags & TDF_DETAILS))
diff -Nrcpad gcc-7.3.0/gcc/gimplify.c gcc-7.4.0/gcc/gimplify.c
*** gcc-7.3.0/gcc/gimplify.c	Tue Nov 21 16:02:04 2017
--- gcc-7.4.0/gcc/gimplify.c	Fri Oct 12 14:49:32 2018
*************** static void
*** 1125,1134 ****
  asan_poison_variable (tree decl, bool poison, gimple_stmt_iterator *it,
  		      bool before)
  {
-   /* When within an OMP context, do not emit ASAN_MARK internal fns.  */
-   if (gimplify_omp_ctxp)
-     return;
- 
    tree unit_size = DECL_SIZE_UNIT (decl);
    tree base = build_fold_addr_expr (decl);
  
--- 1125,1130 ----
*************** gimplify_decl_expr (tree *stmt_p, gimple
*** 1640,1646 ****
  	  && TREE_ADDRESSABLE (decl)
  	  && !TREE_STATIC (decl)
  	  && !DECL_HAS_VALUE_EXPR_P (decl)
! 	  && dbg_cnt (asan_use_after_scope))
  	{
  	  asan_poisoned_variables->add (decl);
  	  asan_poison_variable (decl, false, seq_p);
--- 1636,1643 ----
  	  && TREE_ADDRESSABLE (decl)
  	  && !TREE_STATIC (decl)
  	  && !DECL_HAS_VALUE_EXPR_P (decl)
! 	  && dbg_cnt (asan_use_after_scope)
! 	  && !gimplify_omp_ctxp)
  	{
  	  asan_poisoned_variables->add (decl);
  	  asan_poison_variable (decl, false, seq_p);
*************** gimplify_init_constructor (tree *expr_p,
*** 4684,4690 ****
  	     objects.  Initializers for such objects must explicitly set
  	     every field that needs to be set.  */
  	  cleared = false;
! 	else if (!complete_p && !CONSTRUCTOR_NO_CLEARING (ctor))
  	  /* If the constructor isn't complete, clear the whole object
  	     beforehand, unless CONSTRUCTOR_NO_CLEARING is set on it.
  
--- 4681,4687 ----
  	     objects.  Initializers for such objects must explicitly set
  	     every field that needs to be set.  */
  	  cleared = false;
! 	else if (!complete_p)
  	  /* If the constructor isn't complete, clear the whole object
  	     beforehand, unless CONSTRUCTOR_NO_CLEARING is set on it.
  
*************** gimplify_init_constructor (tree *expr_p,
*** 4693,4699 ****
  	     we'd need to *find* the elements that are not present, and that
  	     requires trickery to avoid quadratic compile-time behavior in
  	     large cases or excessive memory use in small cases.  */
! 	  cleared = true;
  	else if (num_ctor_elements - num_nonzero_elements
  		 > CLEAR_RATIO (optimize_function_for_speed_p (cfun))
  		 && num_nonzero_elements < num_ctor_elements / 4)
--- 4690,4696 ----
  	     we'd need to *find* the elements that are not present, and that
  	     requires trickery to avoid quadratic compile-time behavior in
  	     large cases or excessive memory use in small cases.  */
! 	  cleared = !CONSTRUCTOR_NO_CLEARING (ctor);
  	else if (num_ctor_elements - num_nonzero_elements
  		 > CLEAR_RATIO (optimize_function_for_speed_p (cfun))
  		 && num_nonzero_elements < num_ctor_elements / 4)
*************** gimplify_save_expr (tree *expr_p, gimple
*** 5776,5783 ****
  	}
        else
  	/* The temporary may not be an SSA name as later abnormal and EH
! 	   control flow may invalidate use/def domination.  */
! 	val = get_initialized_tmp_var (val, pre_p, post_p, false);
  
        TREE_OPERAND (*expr_p, 0) = val;
        SAVE_EXPR_RESOLVED_P (*expr_p) = 1;
--- 5773,5783 ----
  	}
        else
  	/* The temporary may not be an SSA name as later abnormal and EH
! 	   control flow may invalidate use/def domination.  When in SSA
! 	   form then assume there are no such issues and SAVE_EXPRs only
! 	   appear via GENERIC foldings.  */
! 	val = get_initialized_tmp_var (val, pre_p, post_p,
! 				       gimple_in_ssa_p (cfun));
  
        TREE_OPERAND (*expr_p, 0) = val;
        SAVE_EXPR_RESOLVED_P (*expr_p) = 1;
*************** gimplify_target_expr (tree *expr_p, gimp
*** 6458,6464 ****
  	      clobber = build2 (MODIFY_EXPR, TREE_TYPE (temp), temp, clobber);
  	      gimple_push_cleanup (temp, clobber, false, pre_p, true);
  	    }
! 	  if (asan_poisoned_variables && dbg_cnt (asan_use_after_scope))
  	    {
  	      tree asan_cleanup = build_asan_poison_call_expr (temp);
  	      if (asan_cleanup)
--- 6458,6465 ----
  	      clobber = build2 (MODIFY_EXPR, TREE_TYPE (temp), temp, clobber);
  	      gimple_push_cleanup (temp, clobber, false, pre_p, true);
  	    }
! 	  if (asan_poisoned_variables && dbg_cnt (asan_use_after_scope)
! 	      && !gimplify_omp_ctxp)
  	    {
  	      tree asan_cleanup = build_asan_poison_call_expr (temp);
  	      if (asan_cleanup)
*************** gimplify_omp_for (tree *expr_p, gimple_s
*** 9546,9554 ****
  	  t = TREE_VEC_ELT (OMP_FOR_INIT (for_stmt), i);
  	  if (!is_gimple_constant (TREE_OPERAND (t, 1)))
  	    {
  	      TREE_OPERAND (t, 1)
  		= get_initialized_tmp_var (TREE_OPERAND (t, 1),
! 					   pre_p, NULL, false);
  	      tree c = build_omp_clause (input_location,
  					 OMP_CLAUSE_FIRSTPRIVATE);
  	      OMP_CLAUSE_DECL (c) = TREE_OPERAND (t, 1);
--- 9547,9572 ----
  	  t = TREE_VEC_ELT (OMP_FOR_INIT (for_stmt), i);
  	  if (!is_gimple_constant (TREE_OPERAND (t, 1)))
  	    {
+ 	      tree type = TREE_TYPE (TREE_OPERAND (t, 0));
  	      TREE_OPERAND (t, 1)
  		= get_initialized_tmp_var (TREE_OPERAND (t, 1),
! 					   gimple_seq_empty_p (for_pre_body)
! 					   ? pre_p : &for_pre_body, NULL,
! 					   false);
! 	      /* Reference to pointer conversion is considered useless,
! 		 but is significant for firstprivate clause.  Force it
! 		 here.  */
! 	      if (TREE_CODE (type) == POINTER_TYPE
! 		  && (TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 1)))
! 		      == REFERENCE_TYPE))
! 		{
! 		  tree v = create_tmp_var (TYPE_MAIN_VARIANT (type));
! 		  tree m = build2 (INIT_EXPR, TREE_TYPE (v), v,
! 				   TREE_OPERAND (t, 1));
! 		  gimplify_and_add (m, gimple_seq_empty_p (for_pre_body)
! 				       ? pre_p : &for_pre_body);
! 		  TREE_OPERAND (t, 1) = v;
! 		}
  	      tree c = build_omp_clause (input_location,
  					 OMP_CLAUSE_FIRSTPRIVATE);
  	      OMP_CLAUSE_DECL (c) = TREE_OPERAND (t, 1);
*************** gimplify_omp_for (tree *expr_p, gimple_s
*** 9560,9570 ****
--- 9578,9603 ----
  	  t = TREE_VEC_ELT (OMP_FOR_COND (for_stmt), i);
  	  if (!is_gimple_constant (TREE_OPERAND (t, 1)))
  	    {
+ 	      tree type = TREE_TYPE (TREE_OPERAND (t, 0));
  	      TREE_OPERAND (t, 1)
  		= get_initialized_tmp_var (TREE_OPERAND (t, 1),
  					   gimple_seq_empty_p (for_pre_body)
  					   ? pre_p : &for_pre_body, NULL,
  					   false);
+ 	      /* Reference to pointer conversion is considered useless,
+ 		 but is significant for firstprivate clause.  Force it
+ 		 here.  */
+ 	      if (TREE_CODE (type) == POINTER_TYPE
+ 		  && (TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 1)))
+ 		      == REFERENCE_TYPE))
+ 		{
+ 		  tree v = create_tmp_var (TYPE_MAIN_VARIANT (type));
+ 		  tree m = build2 (INIT_EXPR, TREE_TYPE (v), v,
+ 				   TREE_OPERAND (t, 1));
+ 		  gimplify_and_add (m, gimple_seq_empty_p (for_pre_body)
+ 				       ? pre_p : &for_pre_body);
+ 		  TREE_OPERAND (t, 1) = v;
+ 		}
  	      tree c = build_omp_clause (input_location,
  					 OMP_CLAUSE_FIRSTPRIVATE);
  	      OMP_CLAUSE_DECL (c) = TREE_OPERAND (t, 1);
diff -Nrcpad gcc-7.3.0/gcc/go/ChangeLog gcc-7.4.0/gcc/go/ChangeLog
*** gcc-7.3.0/gcc/go/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/go/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/gcc/go/gofrontend/expressions.cc gcc-7.4.0/gcc/go/gofrontend/expressions.cc
*** gcc-7.3.0/gcc/go/gofrontend/expressions.cc	Fri Jan 27 15:08:23 2017
--- gcc-7.4.0/gcc/go/gofrontend/expressions.cc	Mon Nov  5 20:59:38 2018
*************** Builtin_call_expression::do_numeric_cons
*** 8065,8071 ****
        if (arg_type->is_error())
  	return false;
        if (arg_type->is_abstract())
! 	return false;
        if (this->seen_)
          return false;
  
--- 8065,8071 ----
        if (arg_type->is_error())
  	return false;
        if (arg_type->is_abstract())
! 	arg_type = arg_type->make_non_abstract_type();
        if (this->seen_)
          return false;
  
diff -Nrcpad gcc-7.3.0/gcc/graphite.h gcc-7.4.0/gcc/graphite.h
*** gcc-7.3.0/gcc/graphite.h	Thu Feb 16 07:53:53 2017
--- gcc-7.4.0/gcc/graphite.h	Wed Aug  1 08:07:16 2018
*************** along with GCC; see the file COPYING3.
*** 37,42 ****
--- 37,44 ----
  #include <isl/schedule.h>
  #include <isl/ast_build.h>
  #include <isl/schedule_node.h>
+ #include <isl/id.h>
+ #include <isl/space.h>
  
  typedef struct poly_dr *poly_dr_p;
  
diff -Nrcpad gcc-7.3.0/gcc/hsa-gen.c gcc-7.4.0/gcc/hsa-gen.c
*** gcc-7.3.0/gcc/hsa-gen.c	Tue Feb 28 08:42:06 2017
--- gcc-7.4.0/gcc/hsa-gen.c	Fri Feb  9 15:49:20 2018
*************** get_symbol_for_decl (tree decl)
*** 917,925 ****
  	  else if (lookup_attribute ("hsa_group_segment",
  				     DECL_ATTRIBUTES (decl)))
  	    segment = BRIG_SEGMENT_GROUP;
! 	  else if (TREE_STATIC (decl)
! 		   || lookup_attribute ("hsa_global_segment",
! 					DECL_ATTRIBUTES (decl)))
  	    segment = BRIG_SEGMENT_GLOBAL;
  	  else
  	    segment = BRIG_SEGMENT_PRIVATE;
--- 917,929 ----
  	  else if (lookup_attribute ("hsa_group_segment",
  				     DECL_ATTRIBUTES (decl)))
  	    segment = BRIG_SEGMENT_GROUP;
! 	  else if (TREE_STATIC (decl))
! 	    {
! 	      segment = BRIG_SEGMENT_GLOBAL;
! 	      allocation = BRIG_ALLOCATION_PROGRAM;
! 	    }
! 	  else if (lookup_attribute ("hsa_global_segment",
! 				     DECL_ATTRIBUTES (decl)))
  	    segment = BRIG_SEGMENT_GLOBAL;
  	  else
  	    segment = BRIG_SEGMENT_PRIVATE;
diff -Nrcpad gcc-7.3.0/gcc/ipa-cp.c gcc-7.4.0/gcc/ipa-cp.c
*** gcc-7.3.0/gcc/ipa-cp.c	Wed Nov 29 22:13:34 2017
--- gcc-7.4.0/gcc/ipa-cp.c	Thu May 17 12:23:34 2018
*************** determine_versionability (struct cgraph_
*** 621,626 ****
--- 621,644 ----
        reason = "calls comdat-local function";
      }
  
+   /* Functions calling BUILT_IN_VA_ARG_PACK and BUILT_IN_VA_ARG_PACK_LEN
+      works only when inlined.  Cloning them may still lead to better code
+      becuase ipa-cp will not give up on cloning further.  If the function is
+      external this however leads to wrong code becuase we may end up producing
+      offline copy of the function.  */
+   if (DECL_EXTERNAL (node->decl))
+     for (cgraph_edge *edge = node->callees; !reason && edge;
+ 	 edge = edge->next_callee)
+       if (DECL_BUILT_IN (edge->callee->decl)
+ 	  && DECL_BUILT_IN_CLASS (edge->callee->decl) == BUILT_IN_NORMAL)
+         {
+ 	  if (DECL_FUNCTION_CODE (edge->callee->decl) == BUILT_IN_VA_ARG_PACK)
+ 	    reason = "external function which calls va_arg_pack";
+ 	  if (DECL_FUNCTION_CODE (edge->callee->decl)
+ 	      == BUILT_IN_VA_ARG_PACK_LEN)
+ 	    reason = "external function which calls va_arg_pack_len";
+         }
+ 
    if (reason && dump_file && !node->alias && !node->thunk.thunk_p)
      fprintf (dump_file, "Function %s/%i is not versionable, reason: %s.\n",
  	     node->name (), node->order, reason);
*************** intersect_with_plats (struct ipcp_param_
*** 4009,4015 ****
  	  if (aglat->offset - offset == item->offset)
  	    {
  	      gcc_checking_assert (item->value);
! 	      if (values_equal_for_ipcp_p (item->value, aglat->values->value))
  		found = true;
  	      break;
  	    }
--- 4027,4035 ----
  	  if (aglat->offset - offset == item->offset)
  	    {
  	      gcc_checking_assert (item->value);
! 	      if (aglat->is_single_const ()
! 		  && values_equal_for_ipcp_p (item->value,
! 					      aglat->values->value))
  		found = true;
  	      break;
  	    }
diff -Nrcpad gcc-7.3.0/gcc/ipa-devirt.c gcc-7.4.0/gcc/ipa-devirt.c
*** gcc-7.3.0/gcc/ipa-devirt.c	Thu Jun 22 11:39:26 2017
--- gcc-7.4.0/gcc/ipa-devirt.c	Tue Apr 24 15:19:11 2018
*************** odr_types_equivalent_p (tree t1, tree t2
*** 1577,1584 ****
  				 "in another translation unit"));
  		    return false;
  		  }
! 		gcc_assert (DECL_NONADDRESSABLE_P (f1)
! 			    == DECL_NONADDRESSABLE_P (f2));
  	      }
  
  	    /* If one aggregate has more fields than the other, they
--- 1577,1591 ----
  				 "in another translation unit"));
  		    return false;
  		  }
! 		if (DECL_BIT_FIELD (f1) != DECL_BIT_FIELD (f2))
! 		  {
! 		    warn_odr (t1, t2, f1, f2, warn, warned,
! 			      G_("one field is bitfield while other is not"));
! 		    return false;
! 		  }
! 		else
! 		  gcc_assert (DECL_NONADDRESSABLE_P (f1)
! 			      == DECL_NONADDRESSABLE_P (f2));
  	      }
  
  	    /* If one aggregate has more fields than the other, they
diff -Nrcpad gcc-7.3.0/gcc/ipa-icf.c gcc-7.4.0/gcc/ipa-icf.c
*** gcc-7.3.0/gcc/ipa-icf.c	Wed Jan 17 11:46:31 2018
--- gcc-7.4.0/gcc/ipa-icf.c	Tue Apr 24 15:17:19 2018
*************** sem_variable::get_hash (void)
*** 2132,2154 ****
    return m_hash;
  }
  
- /* Set all points-to UIDs of aliases pointing to node N as UID.  */
- 
- static void
- set_alias_uids (symtab_node *n, int uid)
- {
-   ipa_ref *ref;
-   FOR_EACH_ALIAS (n, ref)
-     {
-       if (dump_file)
- 	fprintf (dump_file, "  Setting points-to UID of [%s] as %d\n",
- 		 xstrdup_for_dump (ref->referring->asm_name ()), uid);
- 
-       SET_DECL_PT_UID (ref->referring->decl, uid);
-       set_alias_uids (ref->referring, uid);
-     }
- }
- 
  /* Merges instance with an ALIAS_ITEM, where alias, thunk or redirection can
     be applied.  */
  
--- 2132,2137 ----
*************** sem_variable::merge (sem_item *alias_ite
*** 2275,2281 ****
        if (dump_file)
  	fprintf (dump_file, "Unified; Variable alias has been created.\n");
  
-       set_alias_uids (original, DECL_UID (original->decl));
        return true;
      }
  }
--- 2258,2263 ----
*************** unsigned int sem_item_optimizer::class_i
*** 2295,2301 ****
  
  sem_item_optimizer::sem_item_optimizer ()
  : worklist (0), m_classes (0), m_classes_count (0), m_cgraph_node_hooks (NULL),
!   m_varpool_node_hooks (NULL)
  {
    m_items.create (0);
    bitmap_obstack_initialize (&m_bmstack);
--- 2277,2283 ----
  
  sem_item_optimizer::sem_item_optimizer ()
  : worklist (0), m_classes (0), m_classes_count (0), m_cgraph_node_hooks (NULL),
!   m_varpool_node_hooks (NULL), m_merged_variables ()
  {
    m_items.create (0);
    bitmap_obstack_initialize (&m_bmstack);
*************** sem_item_optimizer::~sem_item_optimizer
*** 2320,2325 ****
--- 2302,2308 ----
    m_items.release ();
  
    bitmap_obstack_release (&m_bmstack);
+   m_merged_variables.release ();
  }
  
  /* Write IPA ICF summary for symbols.  */
*************** sem_item_optimizer::merge_classes (unsig
*** 3571,3583 ****
  	      }
  
  	    if (dbg_cnt (merged_ipa_icf))
! 	      merged_p |= source->merge (alias);
  	  }
        }
  
    return merged_p;
  }
  
  /* Dump function prints all class members to a FILE with an INDENT.  */
  
  void
--- 3554,3656 ----
  	      }
  
  	    if (dbg_cnt (merged_ipa_icf))
! 	      {
! 		bool merged = source->merge (alias);
! 		merged_p |= merged;
! 
! 		if (merged && alias->type == VAR)
! 		  {
! 		    symtab_pair p = symtab_pair (source->node, alias->node);
! 		    m_merged_variables.safe_push (p);
! 		  }
! 	      }
  	  }
        }
  
+   if (!m_merged_variables.is_empty ())
+     fixup_points_to_sets ();
+ 
    return merged_p;
  }
  
+ /* Fixup points to set PT.  */
+ 
+ void
+ sem_item_optimizer::fixup_pt_set (struct pt_solution *pt)
+ {
+   if (pt->vars == NULL)
+     return;
+ 
+   unsigned i;
+   symtab_pair *item;
+   FOR_EACH_VEC_ELT (m_merged_variables, i, item)
+     if (bitmap_bit_p (pt->vars, DECL_UID (item->second->decl)))
+       bitmap_set_bit (pt->vars, DECL_UID (item->first->decl));
+ }
+ 
+ /* Set all points-to UIDs of aliases pointing to node N as UID.  */
+ 
+ static void
+ set_alias_uids (symtab_node *n, int uid)
+ {
+   ipa_ref *ref;
+   FOR_EACH_ALIAS (n, ref)
+     {
+       if (dump_file)
+ 	fprintf (dump_file, "  Setting points-to UID of [%s] as %d\n",
+ 		 xstrdup_for_dump (ref->referring->asm_name ()), uid);
+ 
+       SET_DECL_PT_UID (ref->referring->decl, uid);
+       set_alias_uids (ref->referring, uid);
+     }
+ }
+ 
+ /* Fixup points to analysis info.  */
+ 
+ void
+ sem_item_optimizer::fixup_points_to_sets (void)
+ {
+   /* TODO: remove in GCC 9 and trigger PTA re-creation after IPA passes.  */
+   cgraph_node *cnode;
+ 
+   FOR_EACH_DEFINED_FUNCTION (cnode)
+     {
+       tree name;
+       unsigned i;
+       function *fn = DECL_STRUCT_FUNCTION (cnode->decl);
+       if (!gimple_in_ssa_p (fn))
+ 	continue;
+ 
+       FOR_EACH_SSA_NAME (i, name, fn)
+ 	if (POINTER_TYPE_P (TREE_TYPE (name))
+ 	    && SSA_NAME_PTR_INFO (name))
+ 	  fixup_pt_set (&SSA_NAME_PTR_INFO (name)->pt);
+       fixup_pt_set (&fn->gimple_df->escaped);
+ 
+        /* The above get's us to 99% I guess, at least catching the
+ 	  address compares.  Below also gets us aliasing correct
+ 	  but as said we're giving leeway to the situation with
+ 	  readonly vars anyway, so ... */
+        basic_block bb;
+        FOR_EACH_BB_FN (bb, fn)
+ 	for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi);
+ 	     gsi_next (&gsi))
+ 	  {
+ 	    gcall *call = dyn_cast<gcall *> (gsi_stmt (gsi));
+ 	    if (call)
+ 	      {
+ 		fixup_pt_set (gimple_call_use_set (call));
+ 		fixup_pt_set (gimple_call_clobber_set (call));
+ 	      }
+ 	  }
+     }
+ 
+   unsigned i;
+   symtab_pair *item;
+   FOR_EACH_VEC_ELT (m_merged_variables, i, item)
+     set_alias_uids (item->first, DECL_UID (item->first->decl));
+ }
+ 
  /* Dump function prints all class members to a FILE with an INDENT.  */
  
  void
diff -Nrcpad gcc-7.3.0/gcc/ipa-icf.h gcc-7.4.0/gcc/ipa-icf.h
*** gcc-7.3.0/gcc/ipa-icf.h	Tue Jan 10 14:37:55 2017
--- gcc-7.4.0/gcc/ipa-icf.h	Tue Apr 24 15:17:00 2018
*************** public:
*** 141,146 ****
--- 141,148 ----
    unsigned int index;
  };
  
+ typedef std::pair<symtab_node *, symtab_node *> symtab_pair;
+ 
  /* Semantic item is a base class that encapsulates all shared functionality
     for both semantic function and variable items.  */
  class sem_item
*************** private:
*** 563,568 ****
--- 565,576 ----
       processed.  */
    bool merge_classes (unsigned int prev_class_count);
  
+   /* Fixup points to analysis info.  */
+   void fixup_points_to_sets (void);
+ 
+   /* Fixup points to set PT.  */
+   void fixup_pt_set (struct pt_solution *pt);
+ 
    /* Adds a newly created congruence class CLS to worklist.  */
    void worklist_push (congruence_class *cls);
  
*************** private:
*** 632,637 ****
--- 640,649 ----
  
    /* Bitmap stack.  */
    bitmap_obstack m_bmstack;
+ 
+   /* Vector of merged variables.  Needed for fixup of points-to-analysis
+      info.  */
+   vec <symtab_pair> m_merged_variables;
  }; // class sem_item_optimizer
  
  } // ipa_icf namespace
diff -Nrcpad gcc-7.3.0/gcc/ipa-inline.c gcc-7.4.0/gcc/ipa-inline.c
*** gcc-7.3.0/gcc/ipa-inline.c	Fri Dec 22 08:50:30 2017
--- gcc-7.4.0/gcc/ipa-inline.c	Sat Mar  3 13:34:07 2018
*************** inline_small_functions (void)
*** 1773,1779 ****
  		struct cgraph_node *n2;
  		int id = dfs->scc_no + 1;
  		for (n2 = node; n2;
! 		     n2 = ((struct ipa_dfs_info *) node->aux)->next_cycle)
  		  {
  		    struct inline_summary *info2 = inline_summaries->get (n2);
  		    if (info2->scc_no)
--- 1773,1779 ----
  		struct cgraph_node *n2;
  		int id = dfs->scc_no + 1;
  		for (n2 = node; n2;
! 		     n2 = ((struct ipa_dfs_info *) n2->aux)->next_cycle)
  		  {
  		    struct inline_summary *info2 = inline_summaries->get (n2);
  		    if (info2->scc_no)
diff -Nrcpad gcc-7.3.0/gcc/ipa-prop.c gcc-7.4.0/gcc/ipa-prop.c
*** gcc-7.3.0/gcc/ipa-prop.c	Thu Jun 29 08:53:27 2017
--- gcc-7.4.0/gcc/ipa-prop.c	Sat Mar  3 13:39:18 2018
*************** struct ipa_vr_ggc_hash_traits : public g
*** 111,122 ****
    typedef value_range *compare_type;
    static hashval_t
    hash (const value_range *p)
!   {
!     gcc_checking_assert (!p->equiv);
!     hashval_t t = (hashval_t) p->type;
!     t = iterative_hash_expr (p->min, t);
!     return iterative_hash_expr (p->max, t);
!   }
    static bool
    equal (const value_range *a, const value_range *b)
      {
--- 111,123 ----
    typedef value_range *compare_type;
    static hashval_t
    hash (const value_range *p)
!     {
!       gcc_checking_assert (!p->equiv);
!       inchash::hash hstate (p->type);
!       hstate.add_ptr (p->min);
!       hstate.add_ptr (p->max);
!       return hstate.end ();
!     }
    static bool
    equal (const value_range *a, const value_range *b)
      {
*************** ipa_modify_call_arguments (struct cgraph
*** 4352,4359 ****
  
  	  gcc_checking_assert (adj->offset % BITS_PER_UNIT == 0);
  	  base = gimple_call_arg (stmt, adj->base_index);
! 	  loc = DECL_P (base) ? DECL_SOURCE_LOCATION (base)
! 			      : EXPR_LOCATION (base);
  
  	  if (TREE_CODE (base) != ADDR_EXPR
  	      && POINTER_TYPE_P (TREE_TYPE (base)))
--- 4353,4359 ----
  
  	  gcc_checking_assert (adj->offset % BITS_PER_UNIT == 0);
  	  base = gimple_call_arg (stmt, adj->base_index);
! 	  loc = gimple_location (stmt);
  
  	  if (TREE_CODE (base) != ADDR_EXPR
  	      && POINTER_TYPE_P (TREE_TYPE (base)))
*************** ipa_modify_call_arguments (struct cgraph
*** 4445,4450 ****
--- 4445,4451 ----
  		  else
  		    expr = create_tmp_reg (TREE_TYPE (expr));
  		  gimple_assign_set_lhs (tem, expr);
+ 		  gimple_set_location (tem, loc);
  		  gsi_insert_before (&gsi, tem, GSI_SAME_STMT);
  		}
  	    }
diff -Nrcpad gcc-7.3.0/gcc/ipa-utils.c gcc-7.4.0/gcc/ipa-utils.c
*** gcc-7.3.0/gcc/ipa-utils.c	Tue Mar 14 12:47:42 2017
--- gcc-7.4.0/gcc/ipa-utils.c	Tue Mar  6 20:05:36 2018
*************** ipa_merge_profiles (struct cgraph_node *
*** 404,409 ****
--- 404,411 ----
  
    if (!dst->count)
      return;
+   if (!src->count || src->alias)
+     return;
    if (symtab->dump_file)
      {
        fprintf (symtab->dump_file, "Merging profiles of %s/%i to %s/%i\n",
diff -Nrcpad gcc-7.3.0/gcc/jit/ChangeLog gcc-7.4.0/gcc/jit/ChangeLog
*** gcc-7.3.0/gcc/jit/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/jit/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/gcc/loop-unroll.c gcc-7.4.0/gcc/loop-unroll.c
*** gcc-7.3.0/gcc/loop-unroll.c	Tue Apr 25 07:27:47 2017
--- gcc-7.4.0/gcc/loop-unroll.c	Tue Mar  6 20:06:10 2018
*************** unroll_loop_constant_iterations (struct
*** 477,483 ****
  
    exit_mod = niter % (max_unroll + 1);
  
!   auto_sbitmap wont_exit (max_unroll + 1);
    bitmap_ones (wont_exit);
  
    auto_vec<edge> remove_edges;
--- 477,483 ----
  
    exit_mod = niter % (max_unroll + 1);
  
!   auto_sbitmap wont_exit (max_unroll + 2);
    bitmap_ones (wont_exit);
  
    auto_vec<edge> remove_edges;
diff -Nrcpad gcc-7.3.0/gcc/lower-subreg.c gcc-7.4.0/gcc/lower-subreg.c
*** gcc-7.3.0/gcc/lower-subreg.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/lower-subreg.c	Fri Jun 22 21:29:24 2018
*************** find_decomposable_subregs (rtx *loc, enu
*** 490,496 ****
  	     were the same number and size of pieces.  Hopefully this
  	     doesn't happen much.  */
  
! 	  if (outer_words == 1 && inner_words > 1)
  	    {
  	      bitmap_set_bit (decomposable_context, regno);
  	      iter.skip_subrtxes ();
--- 490,505 ----
  	     were the same number and size of pieces.  Hopefully this
  	     doesn't happen much.  */
  
! 	  if (outer_words == 1
! 	      && inner_words > 1
! 	      /* Don't allow to decompose floating point subregs of
! 		 multi-word pseudos if the floating point mode does
! 		 not have word size, because otherwise we'd generate
! 		 a subreg with that floating mode from a different
! 		 sized integral pseudo which is not allowed by
! 		 validate_subreg.  */
! 	      && (!FLOAT_MODE_P (GET_MODE (x))
! 		  || outer_size == UNITS_PER_WORD))
  	    {
  	      bitmap_set_bit (decomposable_context, regno);
  	      iter.skip_subrtxes ();
diff -Nrcpad gcc-7.3.0/gcc/lra-constraints.c gcc-7.4.0/gcc/lra-constraints.c
*** gcc-7.3.0/gcc/lra-constraints.c	Tue Nov  7 07:44:58 2017
--- gcc-7.4.0/gcc/lra-constraints.c	Tue Mar  6 15:54:30 2018
*************** curr_insn_transform (bool check_only_p)
*** 3724,3730 ****
  
    curr_insn_set = single_set (curr_insn);
    if (curr_insn_set != NULL_RTX && simple_move_p ())
!     return false;
  
    no_input_reloads_p = no_output_reloads_p = false;
    goal_alt_number = -1;
--- 3724,3736 ----
  
    curr_insn_set = single_set (curr_insn);
    if (curr_insn_set != NULL_RTX && simple_move_p ())
!     {
!       /* We assume that the corresponding insn alternative has no
! 	 earlier clobbers.  If it is not the case, don't define move
! 	 cost equal to 2 for the corresponding register classes.  */
!       lra_set_used_insn_alternative (curr_insn, LRA_NON_CLOBBERED_ALT);
!       return false;
!     }
  
    no_input_reloads_p = no_output_reloads_p = false;
    goal_alt_number = -1;
*************** curr_insn_transform (bool check_only_p)
*** 3832,3838 ****
    if (change_p)
      /* If we've changed the instruction then any alternative that
         we chose previously may no longer be valid.  */
!     lra_set_used_insn_alternative (curr_insn, -1);
  
    if (! check_only_p && curr_insn_set != NULL_RTX
        && check_and_process_move (&change_p, &sec_mem_p))
--- 3838,3844 ----
    if (change_p)
      /* If we've changed the instruction then any alternative that
         we chose previously may no longer be valid.  */
!     lra_set_used_insn_alternative (curr_insn, LRA_UNKNOWN_ALT);
  
    if (! check_only_p && curr_insn_set != NULL_RTX
        && check_and_process_move (&change_p, &sec_mem_p))
*************** curr_insn_transform (bool check_only_p)
*** 3840,3846 ****
  
   try_swapped:
  
!   reused_alternative_num = check_only_p ? -1 : curr_id->used_insn_alternative;
    if (lra_dump_file != NULL && reused_alternative_num >= 0)
      fprintf (lra_dump_file, "Reusing alternative %d for insn #%u\n",
  	     reused_alternative_num, INSN_UID (curr_insn));
--- 3846,3852 ----
  
   try_swapped:
  
!   reused_alternative_num = check_only_p ? LRA_UNKNOWN_ALT : curr_id->used_insn_alternative;
    if (lra_dump_file != NULL && reused_alternative_num >= 0)
      fprintf (lra_dump_file, "Reusing alternative %d for insn #%u\n",
  	     reused_alternative_num, INSN_UID (curr_insn));
*************** remove_inheritance_pseudos (bitmap remov
*** 6708,6714 ****
  			}
  		      lra_push_insn_and_update_insn_regno_info (curr_insn);
  		      lra_set_used_insn_alternative_by_uid
! 			(INSN_UID (curr_insn), -1);
  		      done_p = true;
  		      if (lra_dump_file != NULL)
  			{
--- 6714,6720 ----
  			}
  		      lra_push_insn_and_update_insn_regno_info (curr_insn);
  		      lra_set_used_insn_alternative_by_uid
! 			(INSN_UID (curr_insn), LRA_UNKNOWN_ALT);
  		      done_p = true;
  		      if (lra_dump_file != NULL)
  			{
*************** remove_inheritance_pseudos (bitmap remov
*** 6747,6753 ****
  		     constraints pass.  */
  		  lra_push_insn_and_update_insn_regno_info (curr_insn);
  		  lra_set_used_insn_alternative_by_uid
! 		    (INSN_UID (curr_insn), -1);
  		}
  	      else if (restored_regs_p)
  		/* The instruction has been restored to the form that
--- 6753,6759 ----
  		     constraints pass.  */
  		  lra_push_insn_and_update_insn_regno_info (curr_insn);
  		  lra_set_used_insn_alternative_by_uid
! 		    (INSN_UID (curr_insn), LRA_UNKNOWN_ALT);
  		}
  	      else if (restored_regs_p)
  		/* The instruction has been restored to the form that
diff -Nrcpad gcc-7.3.0/gcc/lra-eliminations.c gcc-7.4.0/gcc/lra-eliminations.c
*** gcc-7.3.0/gcc/lra-eliminations.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/lra-eliminations.c	Tue Mar  6 15:54:30 2018
*************** spill_pseudos (HARD_REG_SET set)
*** 1178,1184 ****
      if (bitmap_bit_p (&to_process, INSN_UID (insn)))
        {
  	lra_push_insn (insn);
! 	lra_set_used_insn_alternative (insn, -1);
        }
    bitmap_clear (&to_process);
  }
--- 1178,1184 ----
      if (bitmap_bit_p (&to_process, INSN_UID (insn)))
        {
  	lra_push_insn (insn);
! 	lra_set_used_insn_alternative (insn, LRA_UNKNOWN_ALT);
        }
    bitmap_clear (&to_process);
  }
*************** process_insn_for_elimination (rtx_insn *
*** 1409,1415 ****
  	}
        lra_update_insn_regno_info (insn);
        lra_push_insn (insn);
!       lra_set_used_insn_alternative (insn, -1);
      }
  }
  
--- 1409,1415 ----
  	}
        lra_update_insn_regno_info (insn);
        lra_push_insn (insn);
!       lra_set_used_insn_alternative (insn, LRA_UNKNOWN_ALT);
      }
  }
  
diff -Nrcpad gcc-7.3.0/gcc/lra-int.h gcc-7.4.0/gcc/lra-int.h
*** gcc-7.3.0/gcc/lra-int.h	Tue Feb 14 22:17:19 2017
--- gcc-7.4.0/gcc/lra-int.h	Tue Mar  6 15:54:30 2018
*************** struct lra_static_insn_data
*** 202,216 ****
    const struct operand_alternative *operand_alternative;
  };
  
  /* LRA internal info about an insn (LRA internal insn
     representation).  */
  struct lra_insn_recog_data
  {
    /* The insn code.  */
    int icode;
!   /* The alternative should be used for the insn, -1 if invalid, or we
!      should try to use any alternative, or the insn is a debug
!      insn.  */
    int used_insn_alternative;
    /* SP offset before the insn relative to one at the func start.  */
    HOST_WIDE_INT sp_offset;
--- 202,221 ----
    const struct operand_alternative *operand_alternative;
  };
  
+ /* Negative insn alternative numbers used for special cases.  */
+ #define LRA_UNKNOWN_ALT -1
+ #define LRA_NON_CLOBBERED_ALT -2
+ 
  /* LRA internal info about an insn (LRA internal insn
     representation).  */
  struct lra_insn_recog_data
  {
    /* The insn code.  */
    int icode;
!   /* The alternative should be used for the insn, LRA_UNKNOWN_ALT if
!      unknown, or we should assume any alternative, or the insn is a
!      debug insn.  LRA_NON_CLOBBERED_ALT means ignoring any earlier
!      clobbers for the insn.  */
    int used_insn_alternative;
    /* SP offset before the insn relative to one at the func start.  */
    HOST_WIDE_INT sp_offset;
diff -Nrcpad gcc-7.3.0/gcc/lra-lives.c gcc-7.4.0/gcc/lra-lives.c
*** gcc-7.3.0/gcc/lra-lives.c	Tue Feb 14 22:17:19 2017
--- gcc-7.4.0/gcc/lra-lives.c	Tue Mar  6 15:54:30 2018
*************** static inline bool
*** 593,599 ****
  reg_early_clobber_p (const struct lra_insn_reg *reg, int n_alt)
  {
    return (reg->early_clobber
! 	  && (n_alt < 0 || TEST_BIT (reg->early_clobber_alts, n_alt)));
  }
  
  /* Process insns of the basic block BB to update pseudo live ranges,
--- 593,601 ----
  reg_early_clobber_p (const struct lra_insn_reg *reg, int n_alt)
  {
    return (reg->early_clobber
! 	  && (n_alt == LRA_UNKNOWN_ALT
! 	      || (n_alt != LRA_NON_CLOBBERED_ALT
! 		  && TEST_BIT (reg->early_clobber_alts, n_alt))));
  }
  
  /* Process insns of the basic block BB to update pseudo live ranges,
diff -Nrcpad gcc-7.3.0/gcc/lra-spills.c gcc-7.4.0/gcc/lra-spills.c
*** gcc-7.3.0/gcc/lra-spills.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/lra-spills.c	Tue Mar  6 15:54:30 2018
*************** spill_pseudos (void)
*** 503,509 ****
  			 INSN_UID (insn));
  	      lra_push_insn (insn);
  	      if (lra_reg_spill_p || targetm.different_addr_displacement_p ())
! 		lra_set_used_insn_alternative (insn, -1);
  	    }
  	  else if (CALL_P (insn)
  		   /* Presence of any pseudo in CALL_INSN_FUNCTION_USAGE
--- 503,509 ----
  			 INSN_UID (insn));
  	      lra_push_insn (insn);
  	      if (lra_reg_spill_p || targetm.different_addr_displacement_p ())
! 		lra_set_used_insn_alternative (insn, LRA_UNKNOWN_ALT);
  	    }
  	  else if (CALL_P (insn)
  		   /* Presence of any pseudo in CALL_INSN_FUNCTION_USAGE
diff -Nrcpad gcc-7.3.0/gcc/lra.c gcc-7.4.0/gcc/lra.c
*** gcc-7.3.0/gcc/lra.c	Mon Apr  3 22:30:56 2017
--- gcc-7.4.0/gcc/lra.c	Tue Mar  6 15:54:30 2018
*************** lra_set_insn_recog_data (rtx_insn *insn)
*** 946,952 ****
    data = XNEW (struct lra_insn_recog_data);
    lra_insn_recog_data[uid] = data;
    data->insn = insn;
!   data->used_insn_alternative = -1;
    data->icode = icode;
    data->regs = NULL;
    if (DEBUG_INSN_P (insn))
--- 946,952 ----
    data = XNEW (struct lra_insn_recog_data);
    lra_insn_recog_data[uid] = data;
    data->insn = insn;
!   data->used_insn_alternative = LRA_UNKNOWN_ALT;
    data->icode = icode;
    data->regs = NULL;
    if (DEBUG_INSN_P (insn))
*************** lra_update_insn_recog_data (rtx_insn *in
*** 1187,1193 ****
        return data;
      }
    insn_static_data = data->insn_static_data;
!   data->used_insn_alternative = -1;
    if (DEBUG_INSN_P (insn))
      return data;
    if (data->icode < 0)
--- 1187,1193 ----
        return data;
      }
    insn_static_data = data->insn_static_data;
!   data->used_insn_alternative = LRA_UNKNOWN_ALT;
    if (DEBUG_INSN_P (insn))
      return data;
    if (data->icode < 0)
diff -Nrcpad gcc-7.3.0/gcc/lto/ChangeLog gcc-7.4.0/gcc/lto/ChangeLog
*** gcc-7.3.0/gcc/lto/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/lto/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,106 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-04-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-04-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	* lto-symtab.c (lto_symtab_resolve_symbols): Do not bail out
+ 	for multiple PREVAILING_DEF_IRONLY for common symbols.
+ 
+ 2018-04-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-04-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/85248
+ 	* lto-symtab.c (lto_symtab_merge_p): Do not check for
+ 	TREE_VALUES of error attributes.
+ 
+ 2018-04-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-04-10  Richard Biener  <rguenther@suse.de>
+ 		    Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/85248
+ 	* lto-symtab.c (lto_symtab_merge_p): Handle noreturn attribute.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-01-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/81440
+ 	* lto-symtab.c (lto_symtab_merge): Handle and do not warn about
+ 	trailing arrays at the end of a struct.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* lto-partition.c (lto_balanced_map): Watch overflow.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/81360
+ 	* lto.c (unify_scc): Register prevailing trees, not trees to be freed.
+ 	(read_cgraph_and_symbols): Use
+ 	symtab_node::output_to_lto_symbol_table_p.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* lto.c (register_resolution): Remove forgotten sanity check.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/81004
+ 	* lto.c: Include builtins.h
+ 	(register_resolution): Merge resolutions in case trees was
+ 	merged across units.
+ 	(lto_maybe_register_decl): Break out from ...
+ 	(lto_read_decls): ... here.
+ 	(unify_scc): Also register decls here.
+ 	(read_cgraph_and_symbols): Sanity check that all resolutions was
+ 	read.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-02-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR lto/83954
+ 	* lto-symtab.c (warn_type_compatibility_p): Do not recurse into the
+ 	component type of array types with non-aliased component.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/83954
+ 	* lto-symtab.c (warn_type_compatibility_p): Silence false positive
+ 	for type match warning on arrays of pointers.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-10-13  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* lto-lang.c (lto_post_options): Clean shlib flag when not doing PIC.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/gcc/lto/lto-lang.c gcc-7.4.0/gcc/lto/lto-lang.c
*** gcc-7.3.0/gcc/lto/lto-lang.c	Thu Jan 19 17:27:54 2017
--- gcc-7.4.0/gcc/lto/lto-lang.c	Tue Mar  6 20:00:48 2018
*************** lto_post_options (const char **pfilename
*** 840,850 ****
--- 840,852 ----
           flag_pie is 2.  */
        flag_pie = MAX (flag_pie, flag_pic);
        flag_pic = flag_pie;
+       flag_shlib = 0;
        break;
  
      case LTO_LINKER_OUTPUT_EXEC: /* Normal executable */
        flag_pic = 0;
        flag_pie = 0;
+       flag_shlib = 0;
        break;
  
      case LTO_LINKER_OUTPUT_UNKNOWN:
diff -Nrcpad gcc-7.3.0/gcc/lto/lto-partition.c gcc-7.4.0/gcc/lto/lto-partition.c
*** gcc-7.3.0/gcc/lto/lto-partition.c	Fri Jan  6 14:08:02 2017
--- gcc-7.4.0/gcc/lto/lto-partition.c	Tue Mar  6 20:05:06 2018
*************** lto_balanced_map (int n_lto_partitions,
*** 756,762 ****
  	  if (npartitions < n_lto_partitions)
  	    partition_size = total_size / (n_lto_partitions - npartitions);
  	  else
! 	    partition_size = INT_MAX;
  
  	  if (partition_size < PARAM_VALUE (MIN_PARTITION_SIZE))
  	    partition_size = PARAM_VALUE (MIN_PARTITION_SIZE);
--- 756,763 ----
  	  if (npartitions < n_lto_partitions)
  	    partition_size = total_size / (n_lto_partitions - npartitions);
  	  else
! 	    /* Watch for overflow.  */
! 	    partition_size = INT_MAX / 16;
  
  	  if (partition_size < PARAM_VALUE (MIN_PARTITION_SIZE))
  	    partition_size = PARAM_VALUE (MIN_PARTITION_SIZE);
diff -Nrcpad gcc-7.3.0/gcc/lto/lto-symtab.c gcc-7.4.0/gcc/lto/lto-symtab.c
*** gcc-7.3.0/gcc/lto/lto-symtab.c	Mon Jan  9 21:48:33 2017
--- gcc-7.4.0/gcc/lto/lto-symtab.c	Tue Apr 24 15:19:46 2018
*************** warn_type_compatibility_p (tree prevaili
*** 283,293 ****
        alias_set_type set1 = get_alias_set (type);
        alias_set_type set2 = get_alias_set (prevailing_type);
  
!       if (set1 && set2 && set1 != set2 
!           && (!POINTER_TYPE_P (type) || !POINTER_TYPE_P (prevailing_type)
  	      || (set1 != TYPE_ALIAS_SET (ptr_type_node)
! 		  && set2 != TYPE_ALIAS_SET (ptr_type_node))))
!         lev |= 5;
      }
  
    return lev;
--- 283,307 ----
        alias_set_type set1 = get_alias_set (type);
        alias_set_type set2 = get_alias_set (prevailing_type);
  
!       if (set1 && set2 && set1 != set2)
! 	{
!           tree t1 = type, t2 = prevailing_type;
! 
! 	  /* Alias sets of arrays with aliased components are the same as alias
! 	     sets of the inner types.  */
! 	  while (TREE_CODE (t1) == ARRAY_TYPE
! 		 && !TYPE_NONALIASED_COMPONENT (t1)
! 		 && TREE_CODE (t2) == ARRAY_TYPE
! 		 && !TYPE_NONALIASED_COMPONENT (t2))
! 	    {
! 	      t1 = TREE_TYPE (t1);
! 	      t2 = TREE_TYPE (t2);
! 	    }
!           if ((!POINTER_TYPE_P (t1) || !POINTER_TYPE_P (t2))
  	      || (set1 != TYPE_ALIAS_SET (ptr_type_node)
! 		  && set2 != TYPE_ALIAS_SET (ptr_type_node)))
!              lev |= 5;
! 	}
      }
  
    return lev;
*************** lto_symtab_merge (symtab_node *prevailin
*** 351,368 ****
      return false;
  
    if (DECL_SIZE (decl) && DECL_SIZE (prevailing_decl)
!       && !tree_int_cst_equal (DECL_SIZE (decl), DECL_SIZE (prevailing_decl))
        /* As a special case do not warn about merging
  	 int a[];
  	 and
  	 int a[]={1,2,3};
  	 here the first declaration is COMMON
  	 and sizeof(a) == sizeof (int).  */
!       && ((!DECL_COMMON (decl) && !DECL_EXTERNAL (decl))
! 	  || TREE_CODE (TREE_TYPE (decl)) != ARRAY_TYPE
! 	  || TYPE_SIZE (TREE_TYPE (decl))
! 	     != TYPE_SIZE (TREE_TYPE (TREE_TYPE (decl)))))
!     return false;
  
    return true;
  }
--- 365,395 ----
      return false;
  
    if (DECL_SIZE (decl) && DECL_SIZE (prevailing_decl)
!       && !tree_int_cst_equal (DECL_SIZE (decl), DECL_SIZE (prevailing_decl)))
!       {
! 	if (!DECL_COMMON (decl) && !DECL_EXTERNAL (decl))
! 	  return false;
! 
! 	tree type = TREE_TYPE (decl);
! 
! 	/* For record type, check for array at the end of the structure.  */
! 	if (TREE_CODE (type) == RECORD_TYPE)
! 	  {
! 	    tree field = TYPE_FIELDS (type);
! 	    while (DECL_CHAIN (field) != NULL_TREE)
! 	      field = DECL_CHAIN (field);
! 
! 	    return TREE_CODE (TREE_TYPE (field)) == ARRAY_TYPE;
! 	  }
        /* As a special case do not warn about merging
  	 int a[];
  	 and
  	 int a[]={1,2,3};
  	 here the first declaration is COMMON
  	 and sizeof(a) == sizeof (int).  */
! 	else if (TREE_CODE (type) == ARRAY_TYPE)
! 	  return (TYPE_SIZE (decl) == TYPE_SIZE (TREE_TYPE (type)));
!       }
  
    return true;
  }
*************** lto_symtab_resolve_symbols (symtab_node
*** 438,446 ****
    /* If the chain is already resolved there is nothing else to do.  */
    if (prevailing)
      {
!       /* Assert it's the only one.  */
        for (e = prevailing->next_sharing_asm_name; e; e = e->next_sharing_asm_name)
  	if (lto_symtab_symbol_p (e)
  	    && (e->resolution == LDPR_PREVAILING_DEF_IRONLY
  		|| e->resolution == LDPR_PREVAILING_DEF_IRONLY_EXP
  		|| e->resolution == LDPR_PREVAILING_DEF))
--- 465,478 ----
    /* If the chain is already resolved there is nothing else to do.  */
    if (prevailing)
      {
!       /* Assert it's the only one.
! 	 GCC should silence multiple PREVAILING_DEF_IRONLY defs error
! 	 on COMMON symbols since it isn't error.
! 	 See: https://sourceware.org/bugzilla/show_bug.cgi?id=23079.  */
        for (e = prevailing->next_sharing_asm_name; e; e = e->next_sharing_asm_name)
  	if (lto_symtab_symbol_p (e)
+ 	    && !DECL_COMMON (prevailing->decl)
+ 	    && !DECL_COMMON (e->decl)
  	    && (e->resolution == LDPR_PREVAILING_DEF_IRONLY
  		|| e->resolution == LDPR_PREVAILING_DEF_IRONLY_EXP
  		|| e->resolution == LDPR_PREVAILING_DEF))
*************** lto_symtab_merge_p (tree prevailing, tre
*** 544,549 ****
--- 576,584 ----
  	  return false;
  	}
      }
+ 
+   /* FIXME: after MPX is removed, use flags_from_decl_or_type
+      function instead.  PR lto/85248.  */
    if (DECL_ATTRIBUTES (prevailing) != DECL_ATTRIBUTES (decl))
      {
        tree prev_attr = lookup_attribute ("error", DECL_ATTRIBUTES (prevailing));
*************** lto_symtab_merge_p (tree prevailing, tre
*** 571,576 ****
--- 606,621 ----
  		     "warning attribute mismatch\n");
  	  return false;
  	}
+ 
+       prev_attr = lookup_attribute ("noreturn", DECL_ATTRIBUTES (prevailing));
+       attr = lookup_attribute ("noreturn", DECL_ATTRIBUTES (decl));
+       if ((prev_attr == NULL) != (attr == NULL))
+ 	{
+           if (symtab->dump_file)
+ 	    fprintf (symtab->dump_file, "Not merging decls; "
+ 		     "noreturn attribute mismatch\n");
+ 	  return false;
+ 	}
      }
    return true;
  }
diff -Nrcpad gcc-7.3.0/gcc/lto/lto.c gcc-7.4.0/gcc/lto/lto.c
*** gcc-7.3.0/gcc/lto/lto.c	Wed Apr 12 07:35:49 2017
--- gcc-7.4.0/gcc/lto/lto.c	Tue Mar  6 20:04:20 2018
*************** along with GCC; see the file COPYING3.
*** 53,58 ****
--- 53,59 ----
  #include "lto-symtab.h"
  #include "stringpool.h"
  #include "fold-const.h"
+ #include "builtins.h"
  
  
  /* Number of parallel tasks to run, -1 if we want to use GNU Make jobserver.  */
*************** static void
*** 829,840 ****
  register_resolution (struct lto_file_decl_data *file_data, tree decl,
  		     enum ld_plugin_symbol_resolution resolution)
  {
    if (resolution == LDPR_UNKNOWN)
      return;
    if (!file_data->resolution_map)
      file_data->resolution_map
        = new hash_map<tree, ld_plugin_symbol_resolution>;
!   file_data->resolution_map->put (decl, resolution);
  }
  
  /* Register DECL with the global symbol table and change its
--- 830,848 ----
  register_resolution (struct lto_file_decl_data *file_data, tree decl,
  		     enum ld_plugin_symbol_resolution resolution)
  {
+   bool existed;
    if (resolution == LDPR_UNKNOWN)
      return;
    if (!file_data->resolution_map)
      file_data->resolution_map
        = new hash_map<tree, ld_plugin_symbol_resolution>;
!   ld_plugin_symbol_resolution_t &res
!      = file_data->resolution_map->get_or_insert (decl, &existed);
!   if (!existed
!       || resolution == LDPR_PREVAILING_DEF_IRONLY
!       || resolution == LDPR_PREVAILING_DEF
!       || resolution == LDPR_PREVAILING_DEF_IRONLY_EXP)
!     res = resolution;
  }
  
  /* Register DECL with the global symbol table and change its
*************** lto_register_function_decl_in_symtab (st
*** 877,882 ****
--- 885,902 ----
  			 decl, get_resolution (data_in, ix));
  }
  
+ /* Check if T is a decl and needs register its resolution info.  */
+ 
+ static void
+ lto_maybe_register_decl (struct data_in *data_in, tree t, unsigned ix)
+ {
+   if (TREE_CODE (t) == VAR_DECL)
+     lto_register_var_decl_in_symtab (data_in, t, ix);
+   else if (TREE_CODE (t) == FUNCTION_DECL
+ 	   && !DECL_BUILT_IN (t))
+     lto_register_function_decl_in_symtab (data_in, t, ix);
+ }
+ 
  
  /* For the type T re-materialize it in the type variant list and
     the pointer/reference-to chains.  */
*************** unify_scc (struct data_in *data_in, unsi
*** 1607,1613 ****
  	  /* Fixup the streamer cache with the prevailing nodes according
  	     to the tree node mapping computed by compare_tree_sccs.  */
  	  if (len == 1)
! 	    streamer_tree_cache_replace_tree (cache, pscc->entries[0], from);
  	  else
  	    {
  	      tree *map2 = XALLOCAVEC (tree, 2 * len);
--- 1627,1636 ----
  	  /* Fixup the streamer cache with the prevailing nodes according
  	     to the tree node mapping computed by compare_tree_sccs.  */
  	  if (len == 1)
! 	    {
! 	      lto_maybe_register_decl (data_in, pscc->entries[0], from);
! 	      streamer_tree_cache_replace_tree (cache, pscc->entries[0], from);
! 	    }
  	  else
  	    {
  	      tree *map2 = XALLOCAVEC (tree, 2 * len);
*************** unify_scc (struct data_in *data_in, unsi
*** 1619,1626 ****
  	      qsort (map2, len, 2 * sizeof (tree), cmp_tree);
  	      qsort (map, len, 2 * sizeof (tree), cmp_tree);
  	      for (unsigned i = 0; i < len; ++i)
! 		streamer_tree_cache_replace_tree (cache, map[2*i],
! 						  (uintptr_t)map2[2*i]);
  	    }
  
  	  /* Free the tree nodes from the read SCC.  */
--- 1642,1653 ----
  	      qsort (map2, len, 2 * sizeof (tree), cmp_tree);
  	      qsort (map, len, 2 * sizeof (tree), cmp_tree);
  	      for (unsigned i = 0; i < len; ++i)
! 		{
! 		  lto_maybe_register_decl (data_in, map[2*i],
! 					   (uintptr_t)map2[2*i]);
! 		  streamer_tree_cache_replace_tree (cache, map[2*i],
! 						    (uintptr_t)map2[2*i]);
! 		}
  	    }
  
  	  /* Free the tree nodes from the read SCC.  */
*************** lto_read_decls (struct lto_file_decl_dat
*** 1759,1771 ****
  		}
  	      if (!flag_ltrans)
  		{
! 		  /* Register variables and functions with the
! 		     symbol table.  */
! 		  if (TREE_CODE (t) == VAR_DECL)
! 		    lto_register_var_decl_in_symtab (data_in, t, from + i);
! 		  else if (TREE_CODE (t) == FUNCTION_DECL
! 			   && !DECL_BUILT_IN (t))
! 		    lto_register_function_decl_in_symtab (data_in, t, from + i);
  		  /* Scan the tree for references to global functions or
  		     variables and record those for later fixup.  */
  		  if (mentions_vars_p (t))
--- 1786,1792 ----
  		}
  	      if (!flag_ltrans)
  		{
! 		  lto_maybe_register_decl (data_in, t, from + i);
  		  /* Scan the tree for references to global functions or
  		     variables and record those for later fixup.  */
  		  if (mentions_vars_p (t))
*************** read_cgraph_and_symbols (unsigned nfiles
*** 2858,2870 ****
  
    /* Store resolutions into the symbol table.  */
  
-   ld_plugin_symbol_resolution_t *res;
    FOR_EACH_SYMBOL (snode)
!     if (snode->real_symbol_p ()
! 	&& snode->lto_file_data
! 	&& snode->lto_file_data->resolution_map
! 	&& (res = snode->lto_file_data->resolution_map->get (snode->decl)))
!       snode->resolution = *res;
    for (i = 0; all_file_decl_data[i]; i++)
      if (all_file_decl_data[i]->resolution_map)
        {
--- 2879,2903 ----
  
    /* Store resolutions into the symbol table.  */
  
    FOR_EACH_SYMBOL (snode)
!     if (snode->externally_visible && snode->real_symbol_p ()
! 	&& snode->lto_file_data && snode->lto_file_data->resolution_map
! 	&& !is_builtin_fn (snode->decl)
! 	&& !(VAR_P (snode->decl) && DECL_HARD_REGISTER (snode->decl)))
!       {
! 	ld_plugin_symbol_resolution_t *res;
! 
! 	res = snode->lto_file_data->resolution_map->get (snode->decl);
! 	if (!res || *res == LDPR_UNKNOWN)
! 	  {
! 	    if (snode->output_to_lto_symbol_table_p ())
! 	      fatal_error (input_location, "missing resolution data for %s",
! 		           IDENTIFIER_POINTER
! 			     (DECL_ASSEMBLER_NAME (snode->decl)));
! 	  }
! 	else
!           snode->resolution = *res;
!       }
    for (i = 0; all_file_decl_data[i]; i++)
      if (all_file_decl_data[i]->resolution_map)
        {
diff -Nrcpad gcc-7.3.0/gcc/lto-streamer-out.c gcc-7.4.0/gcc/lto-streamer-out.c
*** gcc-7.3.0/gcc/lto-streamer-out.c	Wed Apr 12 07:35:49 2017
--- gcc-7.4.0/gcc/lto-streamer-out.c	Tue Mar  6 20:04:20 2018
*************** write_symbol (struct streamer_tree_cache
*** 2524,2536 ****
    const char *comdat;
    unsigned char c;
  
!   /* None of the following kinds of symbols are needed in the
!      symbol table.  */
!   if (!TREE_PUBLIC (t)
!       || is_builtin_fn (t)
!       || DECL_ABSTRACT_P (t)
!       || (VAR_P (t) && DECL_HARD_REGISTER (t)))
!     return;
  
    gcc_assert (VAR_OR_FUNCTION_DECL_P (t));
  
--- 2524,2533 ----
    const char *comdat;
    unsigned char c;
  
!   gcc_checking_assert (TREE_PUBLIC (t)
! 		       && !is_builtin_fn (t)
! 		       && !DECL_ABSTRACT_P (t)
! 		       && (!VAR_P (t) || !DECL_HARD_REGISTER (t)));
  
    gcc_assert (VAR_OR_FUNCTION_DECL_P (t));
  
*************** write_symbol (struct streamer_tree_cache
*** 2618,2662 ****
    lto_write_data (&slot_num, 4);
  }
  
- /* Return true if NODE should appear in the plugin symbol table.  */
- 
- bool
- output_symbol_p (symtab_node *node)
- {
-   struct cgraph_node *cnode;
-   if (!node->real_symbol_p ())
-     return false;
-   /* We keep external functions in symtab for sake of inlining
-      and devirtualization.  We do not want to see them in symbol table as
-      references unless they are really used.  */
-   cnode = dyn_cast <cgraph_node *> (node);
-   if (cnode && (!node->definition || DECL_EXTERNAL (cnode->decl))
-       && cnode->callers)
-     return true;
- 
-  /* Ignore all references from external vars initializers - they are not really
-     part of the compilation unit until they are used by folding.  Some symbols,
-     like references to external construction vtables can not be referred to at all.
-     We decide this at can_refer_decl_in_current_unit_p.  */
-  if (!node->definition || DECL_EXTERNAL (node->decl))
-     {
-       int i;
-       struct ipa_ref *ref;
-       for (i = 0; node->iterate_referring (i, ref); i++)
- 	{
- 	  if (ref->use == IPA_REF_ALIAS)
- 	    continue;
-           if (is_a <cgraph_node *> (ref->referring))
- 	    return true;
- 	  if (!DECL_EXTERNAL (ref->referring->decl))
- 	    return true;
- 	}
-       return false;
-     }
-   return true;
- }
- 
- 
  /* Write an IL symbol table to OB.
     SET and VSET are cgraph/varpool node sets we are outputting.  */
  
--- 2615,2620 ----
*************** produce_symtab (struct output_block *ob)
*** 2681,2687 ****
      {
        symtab_node *node = lsei_node (lsei);
  
!       if (!output_symbol_p (node) || DECL_EXTERNAL (node->decl))
  	continue;
        write_symbol (cache, node->decl, &seen, false);
      }
--- 2639,2645 ----
      {
        symtab_node *node = lsei_node (lsei);
  
!       if (DECL_EXTERNAL (node->decl) || !node->output_to_lto_symbol_table_p ())
  	continue;
        write_symbol (cache, node->decl, &seen, false);
      }
*************** produce_symtab (struct output_block *ob)
*** 2690,2696 ****
      {
        symtab_node *node = lsei_node (lsei);
  
!       if (!output_symbol_p (node) || !DECL_EXTERNAL (node->decl))
  	continue;
        write_symbol (cache, node->decl, &seen, false);
      }
--- 2648,2654 ----
      {
        symtab_node *node = lsei_node (lsei);
  
!       if (!DECL_EXTERNAL (node->decl) || !node->output_to_lto_symbol_table_p ())
  	continue;
        write_symbol (cache, node->decl, &seen, false);
      }
diff -Nrcpad gcc-7.3.0/gcc/machmode.def gcc-7.4.0/gcc/machmode.def
*** gcc-7.3.0/gcc/machmode.def	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/machmode.def	Sat Feb 17 00:25:15 2018
*************** UACCUM_MODE (UTA, 16, 64, 64); /* 64.64
*** 243,248 ****
--- 243,249 ----
  
  /* Complex modes.  */
  COMPLEX_MODES (INT);
+ COMPLEX_MODES (PARTIAL_INT);
  COMPLEX_MODES (FLOAT);
  
  /* Decimal floating point modes.  */
diff -Nrcpad gcc-7.3.0/gcc/match.pd gcc-7.4.0/gcc/match.pd
*** gcc-7.3.0/gcc/match.pd	Mon Jul 17 19:45:59 2017
--- gcc-7.4.0/gcc/match.pd	Fri Jun 22 21:18:32 2018
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 2789,2803 ****
  (simplify
   (cond
    (ne (bit_and @0 integer_pow2p@1) integer_zerop)
!   integer_pow2p@2 integer_zerop)
!  (with {
!     int shift = wi::exact_log2 (@2) - wi::exact_log2 (@1);
!   }
!   (if (shift > 0)
!    (bit_and
!     (lshift (convert @0) { build_int_cst (integer_type_node, shift); }) @2)
!    (bit_and
!     (convert (rshift @0 { build_int_cst (integer_type_node, -shift); })) @2))))
  
  /* If we have (A & C) != 0 where C is the sign bit of A, convert
     this into A < 0.  Similarly for (A & C) == 0 into A >= 0.  */
--- 2789,2805 ----
  (simplify
   (cond
    (ne (bit_and @0 integer_pow2p@1) integer_zerop)
!   INTEGER_CST@2 integer_zerop)
!  (if (integer_pow2p (@2))
!   (with {
!      int shift = wi::exact_log2 (@2) - wi::exact_log2 (@1);
!    }
!    (if (shift > 0)
!     (bit_and
!      (lshift (convert @0) { build_int_cst (integer_type_node, shift); }) @2)
!     (bit_and
!      (convert (rshift @0 { build_int_cst (integer_type_node, -shift); }))
!      @2)))))
  
  /* If we have (A & C) != 0 where C is the sign bit of A, convert
     this into A < 0.  Similarly for (A & C) == 0 into A >= 0.  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 2818,2825 ****
  (simplify
   (cond
    (lt @0 integer_zerop)
!   integer_pow2p@1 integer_zerop)
!  (if (!TYPE_UNSIGNED (TREE_TYPE (@0)))
    (with {
      int shift = element_precision (@0) - wi::exact_log2 (@1) - 1;
     }
--- 2820,2828 ----
  (simplify
   (cond
    (lt @0 integer_zerop)
!   INTEGER_CST@1 integer_zerop)
!  (if (integer_pow2p (@1)
!       && !TYPE_UNSIGNED (TREE_TYPE (@0)))
    (with {
      int shift = element_precision (@0) - wi::exact_log2 (@1) - 1;
     }
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 2926,2935 ****
  (for cmp (ne eq)
   (simplify
    (cmp (convert @0) INTEGER_CST@1)
!   (if ((POINTER_TYPE_P (TREE_TYPE (@0)) && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@0)))
! 	&& INTEGRAL_TYPE_P (TREE_TYPE (@1)))
!       || (INTEGRAL_TYPE_P (TREE_TYPE (@0)) && POINTER_TYPE_P (TREE_TYPE (@1))
! 	  && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@1)))))
     (cmp @0 (convert @1)))))
  
  /* Non-equality compare simplifications from fold_binary  */
--- 2929,2941 ----
  (for cmp (ne eq)
   (simplify
    (cmp (convert @0) INTEGER_CST@1)
!   (if (((POINTER_TYPE_P (TREE_TYPE (@0))
! 	 && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@0)))
! 	 && INTEGRAL_TYPE_P (TREE_TYPE (@1)))
! 	|| (INTEGRAL_TYPE_P (TREE_TYPE (@0))
! 	    && POINTER_TYPE_P (TREE_TYPE (@1))
! 	    && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@1)))))
!        && TYPE_PRECISION (TREE_TYPE (@0)) == TYPE_PRECISION (TREE_TYPE (@1)))
     (cmp @0 (convert @1)))))
  
  /* Non-equality compare simplifications from fold_binary  */
diff -Nrcpad gcc-7.3.0/gcc/objc/ChangeLog gcc-7.4.0/gcc/objc/ChangeLog
*** gcc-7.3.0/gcc/objc/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/objc/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/gcc/objcp/ChangeLog gcc-7.4.0/gcc/objcp/ChangeLog
*** gcc-7.3.0/gcc/objcp/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/objcp/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/gcc/omp-expand.c gcc-7.4.0/gcc/omp-expand.c
*** gcc-7.3.0/gcc/omp-expand.c	Thu Sep  7 20:40:06 2017
--- gcc-7.4.0/gcc/omp-expand.c	Tue May  1 13:21:19 2018
*************** expand_oacc_for (struct omp_region *regi
*** 5628,5633 ****
--- 5628,5641 ----
  
  	  split->flags ^= EDGE_FALLTHRU | EDGE_TRUE_VALUE;
  
+ 	  /* Add a dummy exit for the tiled block when cont_bb is missing.  */
+ 	  if (cont_bb == NULL)
+ 	    {
+ 	      edge e = make_edge (body_bb, exit_bb, EDGE_FALSE_VALUE);
+ 	      e->probability = PROB_EVEN;
+ 	      split->probability = PROB_EVEN;
+ 	    }
+ 
  	  /* Initialize the user's loop vars.  */
  	  gsi = gsi_start_bb (elem_body_bb);
  	  expand_oacc_collapse_vars (fd, true, &gsi, counts, e_offset);
diff -Nrcpad gcc-7.3.0/gcc/omp-low.c gcc-7.4.0/gcc/omp-low.c
*** gcc-7.3.0/gcc/omp-low.c	Thu Sep  7 20:41:42 2017
--- gcc-7.4.0/gcc/omp-low.c	Fri Oct 12 14:52:18 2018
*************** scan_sharing_clauses (tree clauses, omp_
*** 1197,1209 ****
  	  /* Global variables with "omp declare target" attribute
  	     don't need to be copied, the receiver side will use them
  	     directly.  However, global variables with "omp declare target link"
! 	     attribute need to be copied.  */
  	  if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_MAP
  	      && DECL_P (decl)
  	      && ((OMP_CLAUSE_MAP_KIND (c) != GOMP_MAP_FIRSTPRIVATE_POINTER
  		   && (OMP_CLAUSE_MAP_KIND (c)
  		       != GOMP_MAP_FIRSTPRIVATE_REFERENCE))
  		  || TREE_CODE (TREE_TYPE (decl)) == ARRAY_TYPE)
  	      && is_global_var (maybe_lookup_decl_in_outer_ctx (decl, ctx))
  	      && varpool_node::get_create (decl)->offloadable
  	      && !lookup_attribute ("omp declare target link",
--- 1197,1212 ----
  	  /* Global variables with "omp declare target" attribute
  	     don't need to be copied, the receiver side will use them
  	     directly.  However, global variables with "omp declare target link"
! 	     attribute need to be copied.  Or when ALWAYS modifier is used.  */
  	  if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_MAP
  	      && DECL_P (decl)
  	      && ((OMP_CLAUSE_MAP_KIND (c) != GOMP_MAP_FIRSTPRIVATE_POINTER
  		   && (OMP_CLAUSE_MAP_KIND (c)
  		       != GOMP_MAP_FIRSTPRIVATE_REFERENCE))
  		  || TREE_CODE (TREE_TYPE (decl)) == ARRAY_TYPE)
+ 	      && OMP_CLAUSE_MAP_KIND (c) != GOMP_MAP_ALWAYS_TO
+ 	      && OMP_CLAUSE_MAP_KIND (c) != GOMP_MAP_ALWAYS_FROM
+ 	      && OMP_CLAUSE_MAP_KIND (c) != GOMP_MAP_ALWAYS_TOFROM
  	      && is_global_var (maybe_lookup_decl_in_outer_ctx (decl, ctx))
  	      && varpool_node::get_create (decl)->offloadable
  	      && !lookup_attribute ("omp declare target link",
*************** scan_omp (gimple_seq *body_p, omp_contex
*** 3261,3266 ****
--- 3264,3306 ----
  
  /* Re-gimplification and code generation routines.  */
  
+ /* Remove omp_member_access_dummy_var variables from gimple_bind_vars
+    of BIND if in a method.  */
+ 
+ static void
+ maybe_remove_omp_member_access_dummy_vars (gbind *bind)
+ {
+   if (DECL_ARGUMENTS (current_function_decl)
+       && DECL_ARTIFICIAL (DECL_ARGUMENTS (current_function_decl))
+       && (TREE_CODE (TREE_TYPE (DECL_ARGUMENTS (current_function_decl)))
+ 	  == POINTER_TYPE))
+     {
+       tree vars = gimple_bind_vars (bind);
+       for (tree *pvar = &vars; *pvar; )
+ 	if (omp_member_access_dummy_var (*pvar))
+ 	  *pvar = DECL_CHAIN (*pvar);
+ 	else
+ 	  pvar = &DECL_CHAIN (*pvar);
+       gimple_bind_set_vars (bind, vars);
+     }
+ }
+ 
+ /* Remove omp_member_access_dummy_var variables from BLOCK_VARS of
+    block and its subblocks.  */
+ 
+ static void
+ remove_member_access_dummy_vars (tree block)
+ {
+   for (tree *pvar = &BLOCK_VARS (block); *pvar; )
+     if (omp_member_access_dummy_var (*pvar))
+       *pvar = DECL_CHAIN (*pvar);
+     else
+       pvar = &DECL_CHAIN (*pvar);
+ 
+   for (block = BLOCK_SUBBLOCKS (block); block; block = BLOCK_CHAIN (block))
+     remove_member_access_dummy_vars (block);
+ }
+ 
  /* If a context was created for STMT when it was scanned, return it.  */
  
  static omp_context *
*************** lower_omp_for (gimple_stmt_iterator *gsi
*** 7002,7007 ****
--- 7042,7048 ----
    pop_gimplify_context (new_stmt);
  
    gimple_bind_append_vars (new_stmt, ctx->block_vars);
+   maybe_remove_omp_member_access_dummy_vars (new_stmt);
    BLOCK_VARS (block) = gimple_bind_vars (new_stmt);
    if (BLOCK_VARS (block))
      TREE_USED (block) = 1;
*************** create_task_copyfn (gomp_task *task_stmt
*** 7100,7105 ****
--- 7141,7147 ----
    splay_tree_node n;
    struct omp_taskcopy_context tcctx;
    location_t loc = gimple_location (task_stmt);
+   size_t looptempno = 0;
  
    child_fn = gimple_omp_task_copy_fn (task_stmt);
    child_cfun = DECL_STRUCT_FUNCTION (child_fn);
*************** create_task_copyfn (gomp_task *task_stmt
*** 7213,7218 ****
--- 7255,7269 ----
  	t = build2 (MODIFY_EXPR, TREE_TYPE (dst), dst, src);
  	append_to_statement_list (t, &list);
  	break;
+       case OMP_CLAUSE__LOOPTEMP_:
+ 	/* Fields for first two _looptemp_ clauses are initialized by
+ 	   GOMP_taskloop*, the rest are handled like firstprivate.  */
+         if (looptempno < 2)
+ 	  {
+ 	    looptempno++;
+ 	    break;
+ 	  }
+ 	/* FALLTHRU */
        case OMP_CLAUSE_FIRSTPRIVATE:
  	decl = OMP_CLAUSE_DECL (c);
  	if (is_variable_sized (decl))
*************** create_task_copyfn (gomp_task *task_stmt
*** 7238,7244 ****
  	  src = decl;
  	dst = build_simple_mem_ref_loc (loc, arg);
  	dst = omp_build_component_ref (dst, f);
! 	t = lang_hooks.decls.omp_clause_copy_ctor (c, dst, src);
  	append_to_statement_list (t, &list);
  	break;
        case OMP_CLAUSE_PRIVATE:
--- 7289,7298 ----
  	  src = decl;
  	dst = build_simple_mem_ref_loc (loc, arg);
  	dst = omp_build_component_ref (dst, f);
! 	if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE__LOOPTEMP_)
! 	  t = build2 (MODIFY_EXPR, TREE_TYPE (dst), dst, src);
! 	else
! 	  t = lang_hooks.decls.omp_clause_copy_ctor (c, dst, src);
  	append_to_statement_list (t, &list);
  	break;
        case OMP_CLAUSE_PRIVATE:
*************** lower_omp_taskreg (gimple_stmt_iterator
*** 7452,7457 ****
--- 7506,7512 ----
    /* Declare all the variables created by mapping and the variables
       declared in the scope of the parallel body.  */
    record_vars_into (ctx->block_vars, child_fn);
+   maybe_remove_omp_member_access_dummy_vars (par_bind);
    record_vars_into (gimple_bind_vars (par_bind), child_fn);
  
    if (ctx->record_type)
*************** lower_omp_target (gimple_stmt_iterator *
*** 7820,7825 ****
--- 7875,7881 ----
        /* Declare all the variables created by mapping and the variables
  	 declared in the scope of the target body.  */
        record_vars_into (ctx->block_vars, child_fn);
+       maybe_remove_omp_member_access_dummy_vars (tgt_bind);
        record_vars_into (gimple_bind_vars (tgt_bind), child_fn);
      }
  
*************** lower_omp_1 (gimple_stmt_iterator *gsi_p
*** 8811,8816 ****
--- 8867,8873 ----
        break;
      case GIMPLE_BIND:
        lower_omp (gimple_bind_body_ptr (as_a <gbind *> (stmt)), ctx);
+       maybe_remove_omp_member_access_dummy_vars (as_a <gbind *> (stmt));
        break;
      case GIMPLE_OMP_PARALLEL:
      case GIMPLE_OMP_TASK:
*************** execute_lower_omp (void)
*** 9015,9020 ****
--- 9072,9087 ----
        all_contexts = NULL;
      }
    BITMAP_FREE (task_shared_vars);
+ 
+   /* If current function is a method, remove artificial dummy VAR_DECL created
+      for non-static data member privatization, they aren't needed for
+      debuginfo nor anything else, have been already replaced everywhere in the
+      IL and cause problems with LTO.  */
+   if (DECL_ARGUMENTS (current_function_decl)
+       && DECL_ARTIFICIAL (DECL_ARGUMENTS (current_function_decl))
+       && (TREE_CODE (TREE_TYPE (DECL_ARGUMENTS (current_function_decl)))
+ 	  == POINTER_TYPE))
+     remove_member_access_dummy_vars (DECL_INITIAL (current_function_decl));
    return 0;
  }
  
diff -Nrcpad gcc-7.3.0/gcc/optabs.c gcc-7.4.0/gcc/optabs.c
*** gcc-7.3.0/gcc/optabs.c	Sun Jul 16 22:07:15 2017
--- gcc-7.4.0/gcc/optabs.c	Fri Jun 22 20:41:55 2018
*************** emit_conditional_move (rtx target, enum
*** 4294,4302 ****
  	  save_pending_stack_adjust (&save);
  	  last = get_last_insn ();
  	  do_pending_stack_adjust ();
  	  prepare_cmp_insn (XEXP (comparison, 0), XEXP (comparison, 1),
  			    GET_CODE (comparison), NULL_RTX, unsignedp,
! 			    OPTAB_WIDEN, &comparison, &cmode);
  	  if (comparison)
  	    {
  	      struct expand_operand ops[4];
--- 4294,4303 ----
  	  save_pending_stack_adjust (&save);
  	  last = get_last_insn ();
  	  do_pending_stack_adjust ();
+ 	  machine_mode cmpmode = cmode;
  	  prepare_cmp_insn (XEXP (comparison, 0), XEXP (comparison, 1),
  			    GET_CODE (comparison), NULL_RTX, unsignedp,
! 			    OPTAB_WIDEN, &comparison, &cmpmode);
  	  if (comparison)
  	    {
  	      struct expand_operand ops[4];
diff -Nrcpad gcc-7.3.0/gcc/opts.c gcc-7.4.0/gcc/opts.c
*** gcc-7.3.0/gcc/opts.c	Fri Sep 15 08:18:34 2017
--- gcc-7.4.0/gcc/opts.c	Tue Mar  6 20:07:38 2018
*************** finish_options (struct gcc_options *opts
*** 1014,1019 ****
--- 1014,1039 ----
    if ((opts->x_flag_sanitize & SANITIZE_KERNEL_ADDRESS) && opts->x_flag_tm)
      sorry ("transactional memory is not supported with "
  	   "%<-fsanitize=kernel-address%>");
+ 
+   /* Comes from final.c -- no real reason to change it.  */
+ #define MAX_CODE_ALIGN 16
+ #define MAX_CODE_ALIGN_VALUE (1 << MAX_CODE_ALIGN)
+ 
+   if (opts->x_align_loops > MAX_CODE_ALIGN_VALUE)
+     error_at (loc, "-falign-loops=%d is not between 0 and %d",
+ 	      opts->x_align_loops, MAX_CODE_ALIGN_VALUE);
+ 
+   if (opts->x_align_jumps > MAX_CODE_ALIGN_VALUE)
+     error_at (loc, "-falign-jumps=%d is not between 0 and %d",
+ 	      opts->x_align_jumps, MAX_CODE_ALIGN_VALUE);
+ 
+   if (opts->x_align_functions > MAX_CODE_ALIGN_VALUE)
+     error_at (loc, "-falign-functions=%d is not between 0 and %d",
+ 	      opts->x_align_functions, MAX_CODE_ALIGN_VALUE);
+ 
+   if (opts->x_align_labels > MAX_CODE_ALIGN_VALUE)
+     error_at (loc, "-falign-labels=%d is not between 0 and %d",
+ 	      opts->x_align_labels, MAX_CODE_ALIGN_VALUE);
  }
  
  #define LEFT_COLUMN	27
diff -Nrcpad gcc-7.3.0/gcc/params.def gcc-7.4.0/gcc/params.def
*** gcc-7.3.0/gcc/params.def	Thu Jun 22 11:40:00 2017
--- gcc-7.4.0/gcc/params.def	Tue Mar  6 20:07:18 2018
*************** DEFPARAM(PARAM_MAX_UNSWITCH_LEVEL,
*** 344,354 ****
  	"The maximum number of unswitchings in a single loop.",
  	3, 0, 0)
  
! /* The maximum number of insns in loop header duplicated by he copy loop
     headers pass.  */
  DEFPARAM(PARAM_MAX_LOOP_HEADER_INSNS,
  	"max-loop-header-insns",
! 	"The maximum number of insns in loop header duplicated by he copy loop headers pass.",
  	20, 0, 0)
  
  /* The maximum number of iterations of a loop the brute force algorithm
--- 344,354 ----
  	"The maximum number of unswitchings in a single loop.",
  	3, 0, 0)
  
! /* The maximum number of insns in loop header duplicated by the copy loop
     headers pass.  */
  DEFPARAM(PARAM_MAX_LOOP_HEADER_INSNS,
  	"max-loop-header-insns",
! 	"The maximum number of insns in loop header duplicated by the copy loop headers pass.",
  	20, 0, 0)
  
  /* The maximum number of iterations of a loop the brute force algorithm
diff -Nrcpad gcc-7.3.0/gcc/po/ChangeLog gcc-7.4.0/gcc/po/ChangeLog
*** gcc-7.3.0/gcc/po/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/po/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/gcc/postreload.c gcc-7.4.0/gcc/postreload.c
*** gcc-7.3.0/gcc/postreload.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/postreload.c	Fri Jun 22 20:48:57 2018
*************** reload_combine_recognize_pattern (rtx_in
*** 1160,1170 ****
  	     value in PREV, the constant loading instruction.  */
  	  validate_change (prev, &SET_DEST (prev_set), index_reg, 1);
  	  if (reg_state[regno].offset != const0_rtx)
! 	    validate_change (prev,
! 			     &SET_SRC (prev_set),
! 			     GEN_INT (INTVAL (SET_SRC (prev_set))
! 				      + INTVAL (reg_state[regno].offset)),
! 			     1);
  
  	  /* Now for every use of REG that we have recorded, replace REG
  	     with REG_SUM.  */
--- 1160,1172 ----
  	     value in PREV, the constant loading instruction.  */
  	  validate_change (prev, &SET_DEST (prev_set), index_reg, 1);
  	  if (reg_state[regno].offset != const0_rtx)
! 	    {
! 	      HOST_WIDE_INT c
! 		= trunc_int_for_mode (UINTVAL (SET_SRC (prev_set))
! 				      + UINTVAL (reg_state[regno].offset),
! 				      GET_MODE (index_reg));
! 	      validate_change (prev, &SET_SRC (prev_set), GEN_INT (c), 1);
! 	    }
  
  	  /* Now for every use of REG that we have recorded, replace REG
  	     with REG_SUM.  */
diff -Nrcpad gcc-7.3.0/gcc/regcprop.c gcc-7.4.0/gcc/regcprop.c
*** gcc-7.3.0/gcc/regcprop.c	Tue Apr 18 15:00:43 2017
--- gcc-7.4.0/gcc/regcprop.c	Mon Aug 13 17:05:48 2018
*************** copyprop_hardreg_forward_1 (basic_block
*** 854,859 ****
--- 854,865 ----
  		  && reg_overlap_mentioned_p (XEXP (link, 0), SET_SRC (set)))
  		set = NULL;
  	    }
+ 
+ 	  /* We need to keep CFI info correct, and the same on all paths,
+ 	     so we cannot normally replace the registers REG_CFA_REGISTER
+ 	     refers to.  Bail.  */
+ 	  if (REG_NOTE_KIND (link) == REG_CFA_REGISTER)
+ 	    goto did_replacement;
  	}
  
        /* Special-case plain move instructions, since we may well
diff -Nrcpad gcc-7.3.0/gcc/regrename.c gcc-7.4.0/gcc/regrename.c
*** gcc-7.3.0/gcc/regrename.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/regrename.c	Mon Aug 13 17:05:48 2018
*************** build_def_use (basic_block bb)
*** 1656,1662 ****
  	     (6) For any non-earlyclobber write we find in an operand, make
  	         a new chain or mark the hard register as live.
  	     (7) For any REG_UNUSED, close any chains we just opened.
! 	     (8) For any REG_CFA_RESTORE, kill any chain containing it.
  
  	     We cannot deal with situations where we track a reg in one mode
  	     and see a reference in another mode; these will cause the chain
--- 1656,1663 ----
  	     (6) For any non-earlyclobber write we find in an operand, make
  	         a new chain or mark the hard register as live.
  	     (7) For any REG_UNUSED, close any chains we just opened.
! 	     (8) For any REG_CFA_RESTORE or REG_CFA_REGISTER, kill any chain
! 	         containing its dest.
  
  	     We cannot deal with situations where we track a reg in one mode
  	     and see a reference in another mode; these will cause the chain
*************** build_def_use (basic_block bb)
*** 1871,1880 ****
  	      }
  
  	  /* Step 8: Kill the chains involving register restores.  Those
! 	     should restore _that_ register.  */
  	  for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
! 	    if (REG_NOTE_KIND (note) == REG_CFA_RESTORE)
! 	      scan_rtx (insn, &XEXP (note, 0), NO_REGS, mark_all_read, OP_IN);
  	}
        else if (DEBUG_INSN_P (insn)
  	       && !VAR_LOC_UNKNOWN_P (INSN_VAR_LOCATION_LOC (insn)))
--- 1872,1891 ----
  	      }
  
  	  /* Step 8: Kill the chains involving register restores.  Those
! 	     should restore _that_ register.  Similar for REG_CFA_REGISTER.  */
  	  for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
! 	    if (REG_NOTE_KIND (note) == REG_CFA_RESTORE
! 		|| REG_NOTE_KIND (note) == REG_CFA_REGISTER)
! 	      {
! 		rtx *x = &XEXP (note, 0);
! 		if (!*x)
! 		  x = &PATTERN (insn);
! 		if (GET_CODE (*x) == PARALLEL)
! 		  x = &XVECEXP (*x, 0, 0);
! 		if (GET_CODE (*x) == SET)
! 		  x = &SET_DEST (*x);
! 		scan_rtx (insn, x, NO_REGS, mark_all_read, OP_IN);
! 	      }
  	}
        else if (DEBUG_INSN_P (insn)
  	       && !VAR_LOC_UNKNOWN_P (INSN_VAR_LOCATION_LOC (insn)))
diff -Nrcpad gcc-7.3.0/gcc/reorg.c gcc-7.4.0/gcc/reorg.c
*** gcc-7.3.0/gcc/reorg.c	Thu Jun 15 13:25:33 2017
--- gcc-7.4.0/gcc/reorg.c	Mon Feb 26 16:39:41 2018
*************** check_annul_list_true_false (int annul_t
*** 1035,1041 ****
  
  static void
  steal_delay_list_from_target (rtx_insn *insn, rtx condition, rtx_sequence *seq,
! 			      vec<rtx_insn *> *delay_list, resources *sets,
  			      struct resources *needed,
  			      struct resources *other_needed,
  			      int slots_to_fill, int *pslots_filled,
--- 1035,1042 ----
  
  static void
  steal_delay_list_from_target (rtx_insn *insn, rtx condition, rtx_sequence *seq,
! 			      vec<rtx_insn *> *delay_list,
! 			      struct resources *sets,
  			      struct resources *needed,
  			      struct resources *other_needed,
  			      int slots_to_fill, int *pslots_filled,
*************** steal_delay_list_from_target (rtx_insn *
*** 1048,1054 ****
    int used_annul = 0;
    int i;
    struct resources cc_set;
!   bool *redundant;
  
    /* We can't do anything if there are more delay slots in SEQ than we
       can handle, or if we don't know that it will be a taken branch.
--- 1049,1055 ----
    int used_annul = 0;
    int i;
    struct resources cc_set;
!   rtx_insn **redundant;
  
    /* We can't do anything if there are more delay slots in SEQ than we
       can handle, or if we don't know that it will be a taken branch.
*************** steal_delay_list_from_target (rtx_insn *
*** 1087,1093 ****
    if (! targetm.can_follow_jump (insn, seq->insn (0)))
      return;
  
!   redundant = XALLOCAVEC (bool, XVECLEN (seq, 0));
    for (i = 1; i < seq->len (); i++)
      {
        rtx_insn *trial = seq->insn (i);
--- 1088,1094 ----
    if (! targetm.can_follow_jump (insn, seq->insn (0)))
      return;
  
!   redundant = XALLOCAVEC (rtx_insn *, XVECLEN (seq, 0));
    for (i = 1; i < seq->len (); i++)
      {
        rtx_insn *trial = seq->insn (i);
*************** steal_delay_list_from_target (rtx_insn *
*** 1151,1157 ****
       we therefore decided not to copy.  */
    for (i = 1; i < seq->len (); i++)
      if (redundant[i])
!       update_block (seq->insn (i), insn);
  
    /* Show the place to which we will be branching.  */
    *pnew_thread = first_active_target_insn (JUMP_LABEL (seq->insn (0)));
--- 1152,1161 ----
       we therefore decided not to copy.  */
    for (i = 1; i < seq->len (); i++)
      if (redundant[i])
!       {
! 	fix_reg_dead_note (redundant[i], insn);
! 	update_block (seq->insn (i), insn);
!       }
  
    /* Show the place to which we will be branching.  */
    *pnew_thread = first_active_target_insn (JUMP_LABEL (seq->insn (0)));
*************** steal_delay_list_from_fallthrough (rtx_i
*** 1198,1203 ****
--- 1202,1208 ----
    for (i = 1; i < seq->len (); i++)
      {
        rtx_insn *trial = seq->insn (i);
+       rtx_insn *prior_insn;
  
        /* If TRIAL sets CC0, stealing it will move it too far from the use
  	 of CC0.  */
*************** steal_delay_list_from_fallthrough (rtx_i
*** 1209,1216 ****
  	break;
  
        /* If this insn was already done, we don't need it.  */
!       if (redundant_insn (trial, insn, *delay_list))
  	{
  	  update_block (trial, insn);
  	  delete_from_delay_slot (trial);
  	  continue;
--- 1214,1222 ----
  	break;
  
        /* If this insn was already done, we don't need it.  */
!       if ((prior_insn = redundant_insn (trial, insn, *delay_list)))
  	{
+ 	  fix_reg_dead_note (prior_insn, insn);
  	  update_block (trial, insn);
  	  delete_from_delay_slot (trial);
  	  continue;
*************** fix_reg_dead_note (rtx_insn *start_insn,
*** 1790,1804 ****
        }
  }
  
! /* Delete any REG_UNUSED notes that exist on INSN but not on REDUNDANT_INSN.
  
     This handles the case of udivmodXi4 instructions which optimize their
!    output depending on whether any REG_UNUSED notes are present.
!    we must make sure that INSN calculates as many results as REDUNDANT_INSN
!    does.  */
  
  static void
! update_reg_unused_notes (rtx_insn *insn, rtx redundant_insn)
  {
    rtx link, next;
  
--- 1796,1809 ----
        }
  }
  
! /* Delete any REG_UNUSED notes that exist on INSN but not on OTHER_INSN.
  
     This handles the case of udivmodXi4 instructions which optimize their
!    output depending on whether any REG_UNUSED notes are present.  We must
!    make sure that INSN calculates as many results as OTHER_INSN does.  */
  
  static void
! update_reg_unused_notes (rtx_insn *insn, rtx other_insn)
  {
    rtx link, next;
  
*************** update_reg_unused_notes (rtx_insn *insn,
*** 1810,1817 ****
  	  || !REG_P (XEXP (link, 0)))
  	continue;
  
!       if (! find_regno_note (redundant_insn, REG_UNUSED,
! 			     REGNO (XEXP (link, 0))))
  	remove_note (insn, link);
      }
  }
--- 1815,1821 ----
  	  || !REG_P (XEXP (link, 0)))
  	continue;
  
!       if (!find_regno_note (other_insn, REG_UNUSED, REGNO (XEXP (link, 0))))
  	remove_note (insn, link);
      }
  }
*************** follow_jumps (rtx label, rtx_insn *jump,
*** 2324,2332 ****
     taken and THREAD_IF_TRUE is set.  This is used for the branch at the
     end of a loop back up to the top.
  
!    OWN_THREAD and OWN_OPPOSITE_THREAD are true if we are the only user of the
!    thread.  I.e., it is the fallthrough code of our jump or the target of the
!    jump when we are the only jump going there.
  
     If OWN_THREAD is false, it must be the "true" thread of a jump.  In that
     case, we can only take insns from the head of the thread for our delay
--- 2328,2335 ----
     taken and THREAD_IF_TRUE is set.  This is used for the branch at the
     end of a loop back up to the top.
  
!    OWN_THREAD is true if we are the only user of the thread, i.e. it is
!    the target of the jump when we are the only jump going there.
  
     If OWN_THREAD is false, it must be the "true" thread of a jump.  In that
     case, we can only take insns from the head of the thread for our delay
*************** relax_delay_slots (rtx_insn *first)
*** 3117,3123 ****
    /* Look at every JUMP_INSN and see if we can improve it.  */
    for (insn = first; insn; insn = next)
      {
!       rtx_insn *other;
        bool crossing;
  
        next = next_active_insn (insn);
--- 3120,3126 ----
    /* Look at every JUMP_INSN and see if we can improve it.  */
    for (insn = first; insn; insn = next)
      {
!       rtx_insn *other, *prior_insn;
        bool crossing;
  
        next = next_active_insn (insn);
*************** relax_delay_slots (rtx_insn *first)
*** 3223,3230 ****
        /* See if the first insn in the delay slot is redundant with some
  	 previous insn.  Remove it from the delay slot if so; then set up
  	 to reprocess this insn.  */
!       if (redundant_insn (pat->insn (1), delay_insn, vNULL))
  	{
  	  update_block (pat->insn (1), insn);
  	  delete_from_delay_slot (pat->insn (1));
  	  next = prev_active_insn (next);
--- 3226,3234 ----
        /* See if the first insn in the delay slot is redundant with some
  	 previous insn.  Remove it from the delay slot if so; then set up
  	 to reprocess this insn.  */
!       if ((prior_insn = redundant_insn (pat->insn (1), delay_insn, vNULL)))
  	{
+ 	  fix_reg_dead_note (prior_insn, insn);
  	  update_block (pat->insn (1), insn);
  	  delete_from_delay_slot (pat->insn (1));
  	  next = prev_active_insn (next);
diff -Nrcpad gcc-7.3.0/gcc/rtl.h gcc-7.4.0/gcc/rtl.h
*** gcc-7.3.0/gcc/rtl.h	Tue Mar 14 12:47:42 2017
--- gcc-7.4.0/gcc/rtl.h	Tue Nov 20 09:04:12 2018
*************** load_extend_op (machine_mode mode)
*** 3832,3837 ****
--- 3832,3856 ----
    return UNKNOWN;
  }
  
+ /* Return true if X is an operation that always operates on the full
+    registers for WORD_REGISTER_OPERATIONS architectures.  */
+ 
+ inline bool
+ word_register_operation_p (const_rtx x)
+ {
+   switch (GET_CODE (x))
+     {
+     case ROTATE:
+     case ROTATERT:
+     case SIGN_EXTRACT:
+     case ZERO_EXTRACT:
+       return false;
+     
+     default:
+       return true;
+     }
+ }
+     
  /* gtype-desc.c.  */
  extern void gt_ggc_mx (rtx &);
  extern void gt_pch_nx (rtx &);
diff -Nrcpad gcc-7.3.0/gcc/rtlanal.c gcc-7.4.0/gcc/rtlanal.c
*** gcc-7.3.0/gcc/rtlanal.c	Tue Jan 23 20:54:32 2018
--- gcc-7.4.0/gcc/rtlanal.c	Tue Nov 20 09:04:12 2018
*************** nonzero_bits1 (const_rtx x, machine_mode
*** 4339,4352 ****
       might be nonzero in its own mode, taking into account the fact that, on
       CISC machines, accessing an object in a wider mode generally causes the
       high-order bits to become undefined, so they are not known to be zero.
!      We extend this reasoning to RISC machines for rotate operations since the
!      semantics of the operations in the larger mode is not well defined.  */
    if (GET_MODE (x) != VOIDmode
        && GET_MODE (x) != mode
        && GET_MODE_PRECISION (GET_MODE (x)) <= BITS_PER_WORD
        && GET_MODE_PRECISION (GET_MODE (x)) <= HOST_BITS_PER_WIDE_INT
        && GET_MODE_PRECISION (mode) > GET_MODE_PRECISION (GET_MODE (x))
!       && (!WORD_REGISTER_OPERATIONS || code == ROTATE))
      {
        nonzero &= cached_nonzero_bits (x, GET_MODE (x),
  				      known_x, known_mode, known_ret);
--- 4339,4352 ----
       might be nonzero in its own mode, taking into account the fact that, on
       CISC machines, accessing an object in a wider mode generally causes the
       high-order bits to become undefined, so they are not known to be zero.
!      We extend this reasoning to RISC machines for operations that might not
!      operate on the full registers.  */
    if (GET_MODE (x) != VOIDmode
        && GET_MODE (x) != mode
        && GET_MODE_PRECISION (GET_MODE (x)) <= BITS_PER_WORD
        && GET_MODE_PRECISION (GET_MODE (x)) <= HOST_BITS_PER_WIDE_INT
        && GET_MODE_PRECISION (mode) > GET_MODE_PRECISION (GET_MODE (x))
!       && !(WORD_REGISTER_OPERATIONS && word_register_operation_p (x)))
      {
        nonzero &= cached_nonzero_bits (x, GET_MODE (x),
  				      known_x, known_mode, known_ret);
*************** nonzero_bits1 (const_rtx x, machine_mode
*** 4623,4635 ****
  	  nonzero &= cached_nonzero_bits (SUBREG_REG (x), mode,
  					  known_x, known_mode, known_ret);
  
!           /* On many CISC machines, accessing an object in a wider mode
  	     causes the high-order bits to become undefined.  So they are
! 	     not known to be zero.  */
  	  rtx_code extend_op;
  	  if ((!WORD_REGISTER_OPERATIONS
- 	       /* If this is a typical RISC machine, we only have to worry
- 		  about the way loads are extended.  */
  	       || ((extend_op = load_extend_op (inner_mode)) == SIGN_EXTEND
  		   ? val_signbit_known_set_p (inner_mode, nonzero)
  		   : extend_op != ZERO_EXTEND)
--- 4623,4638 ----
  	  nonzero &= cached_nonzero_bits (SUBREG_REG (x), mode,
  					  known_x, known_mode, known_ret);
  
!           /* On a typical CISC machine, accessing an object in a wider mode
  	     causes the high-order bits to become undefined.  So they are
! 	     not known to be zero.
! 
! 	     On a typical RISC machine, we only have to worry about the way
! 	     loads are extended.  Otherwise, if we get a reload for the inner
! 	     part, it may be loaded from the stack, and then we may lose all
! 	     the zero bits that existed before the store to the stack.  */
  	  rtx_code extend_op;
  	  if ((!WORD_REGISTER_OPERATIONS
  	       || ((extend_op = load_extend_op (inner_mode)) == SIGN_EXTEND
  		   ? val_signbit_known_set_p (inner_mode, nonzero)
  		   : extend_op != ZERO_EXTEND)
*************** num_sign_bit_copies1 (const_rtx x, machi
*** 4872,4881 ****
      {
        /* If this machine does not do all register operations on the entire
  	 register and MODE is wider than the mode of X, we can say nothing
! 	 at all about the high-order bits.  We extend this reasoning to every
! 	 machine for rotate operations since the semantics of the operations
! 	 in the larger mode is not well defined.  */
!       if (!WORD_REGISTER_OPERATIONS || code == ROTATE || code == ROTATERT)
  	return 1;
  
        /* Likewise on machines that do, if the mode of the object is smaller
--- 4875,4883 ----
      {
        /* If this machine does not do all register operations on the entire
  	 register and MODE is wider than the mode of X, we can say nothing
! 	 at all about the high-order bits.  We extend this reasoning to RISC
! 	 machines for operations that might not operate on full registers.  */
!       if (!(WORD_REGISTER_OPERATIONS && word_register_operation_p (x)))
  	return 1;
  
        /* Likewise on machines that do, if the mode of the object is smaller
*************** num_sign_bit_copies1 (const_rtx x, machi
*** 4965,4974 ****
  
        /* For paradoxical SUBREGs on machines where all register operations
  	 affect the entire register, just look inside.  Note that we are
! 	 passing MODE to the recursive call, so the number of sign bit copies
! 	 will remain relative to that mode, not the inner mode.  */
  
!       /* This works only if loads sign extend.  Otherwise, if we get a
  	 reload for the inner part, it may be loaded from the stack, and
  	 then we lose all sign bit copies that existed before the store
  	 to the stack.  */
--- 4967,4976 ----
  
        /* For paradoxical SUBREGs on machines where all register operations
  	 affect the entire register, just look inside.  Note that we are
! 	 passing MODE to the recursive call, so the number of sign bit
! 	 copies will remain relative to that mode, not the inner mode.
  
!          This works only if loads sign extend.  Otherwise, if we get a
  	 reload for the inner part, it may be loaded from the stack, and
  	 then we lose all sign bit copies that existed before the store
  	 to the stack.  */
diff -Nrcpad gcc-7.3.0/gcc/sched-deps.c gcc-7.4.0/gcc/sched-deps.c
*** gcc-7.3.0/gcc/sched-deps.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/sched-deps.c	Sat Mar  3 13:21:58 2018
*************** sched_macro_fuse_insns (rtx_insn *insn)
*** 2851,2859 ****
      {
        rtx insn_set = single_set (insn);
  
        prev = prev_nonnote_nondebug_insn (insn);
        if (!prev
-           || !insn_set
            || !single_set (prev))
          return;
  
--- 2851,2861 ----
      {
        rtx insn_set = single_set (insn);
  
+       if (!insn_set)
+ 	return;
+ 
        prev = prev_nonnote_nondebug_insn (insn);
        if (!prev
            || !single_set (prev))
          return;
  
*************** sched_analyze_insn (struct deps_desc *de
*** 2920,2925 ****
--- 2922,2929 ----
  	= alloc_INSN_LIST (insn, deps->sched_before_next_jump);
  
        /* Make sure epilogue insn is scheduled after preceding jumps.  */
+       add_dependence_list (insn, deps->last_pending_memory_flush, 1,
+ 			   REG_DEP_ANTI, true);
        add_dependence_list (insn, deps->pending_jump_insns, 1, REG_DEP_ANTI,
  			   true);
      }
diff -Nrcpad gcc-7.3.0/gcc/shrink-wrap.c gcc-7.4.0/gcc/shrink-wrap.c
*** gcc-7.3.0/gcc/shrink-wrap.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/shrink-wrap.c	Fri Jun 22 21:05:08 2018
*************** move_insn_for_shrink_wrap (basic_block b
*** 157,163 ****
  			   struct dead_debug_local *debug)
  {
    rtx set, src, dest;
!   bitmap live_out, live_in, bb_uses, bb_defs;
    unsigned int i, dregno, end_dregno;
    unsigned int sregno = FIRST_PSEUDO_REGISTER;
    unsigned int end_sregno = FIRST_PSEUDO_REGISTER;
--- 157,163 ----
  			   struct dead_debug_local *debug)
  {
    rtx set, src, dest;
!   bitmap live_out, live_in, bb_uses = NULL, bb_defs = NULL;
    unsigned int i, dregno, end_dregno;
    unsigned int sregno = FIRST_PSEUDO_REGISTER;
    unsigned int end_sregno = FIRST_PSEUDO_REGISTER;
*************** move_insn_for_shrink_wrap (basic_block b
*** 330,337 ****
        /* Check whether BB uses DEST or clobbers DEST.  We need to add
  	 INSN to BB if so.  Either way, DEST is no longer live on entry,
  	 except for any part that overlaps SRC (next loop).  */
!       bb_uses = &DF_LR_BB_INFO (bb)->use;
!       bb_defs = &DF_LR_BB_INFO (bb)->def;
        if (df_live)
  	{
  	  for (i = dregno; i < end_dregno; i++)
--- 330,340 ----
        /* Check whether BB uses DEST or clobbers DEST.  We need to add
  	 INSN to BB if so.  Either way, DEST is no longer live on entry,
  	 except for any part that overlaps SRC (next loop).  */
!       if (!*split_p)
! 	{
! 	  bb_uses = &DF_LR_BB_INFO (bb)->use;
! 	  bb_defs = &DF_LR_BB_INFO (bb)->def;
! 	}
        if (df_live)
  	{
  	  for (i = dregno; i < end_dregno; i++)
*************** spread_components (sbitmap components)
*** 1374,1379 ****
--- 1377,1384 ----
        bitmap_clear_bit (seen, bb->index);
      }
  
+   todo.release ();
+ 
    /* Finally, mark everything not not needed both forwards and backwards.  */
  
    FOR_EACH_BB_FN (bb, cfun)
diff -Nrcpad gcc-7.3.0/gcc/simplify-rtx.c gcc-7.4.0/gcc/simplify-rtx.c
*** gcc-7.3.0/gcc/simplify-rtx.c	Tue Jul 25 11:39:23 2017
--- gcc-7.4.0/gcc/simplify-rtx.c	Sat Mar  3 13:14:58 2018
*************** simplify_binary_operation_1 (enum rtx_co
*** 3299,3305 ****
        if (CONST_INT_P (trueop1)
  	  && exact_log2 (UINTVAL (trueop1)) > 0)
  	return simplify_gen_binary (AND, mode, op0,
! 				    gen_int_mode (INTVAL (op1) - 1, mode));
        break;
  
      case MOD:
--- 3299,3306 ----
        if (CONST_INT_P (trueop1)
  	  && exact_log2 (UINTVAL (trueop1)) > 0)
  	return simplify_gen_binary (AND, mode, op0,
! 				    gen_int_mode (UINTVAL (trueop1) - 1,
! 						  mode));
        break;
  
      case MOD:
diff -Nrcpad gcc-7.3.0/gcc/stor-layout.c gcc-7.4.0/gcc/stor-layout.c
*** gcc-7.3.0/gcc/stor-layout.c	Wed Apr 12 07:35:49 2017
--- gcc-7.4.0/gcc/stor-layout.c	Sat Mar  3 13:31:38 2018
*************** place_field (record_layout_info rli, tre
*** 1526,1531 ****
--- 1526,1555 ----
  	= size_binop (PLUS_EXPR, rli->offset, DECL_SIZE_UNIT (field));
        rli->bitpos = bitsize_zero_node;
        rli->offset_align = MIN (rli->offset_align, desired_align);
+ 
+       if (!multiple_of_p (bitsizetype, DECL_SIZE (field),
+ 			  bitsize_int (rli->offset_align)))
+ 	{
+ 	  tree type = strip_array_types (TREE_TYPE (field));
+ 	  /* The above adjusts offset_align just based on the start of the
+ 	     field.  The field might not have a size that is a multiple of
+ 	     that offset_align though.  If the field is an array of fixed
+ 	     sized elements, assume there can be any multiple of those
+ 	     sizes.  If it is a variable length aggregate or array of
+ 	     variable length aggregates, assume worst that the end is
+ 	     just BITS_PER_UNIT aligned.  */
+ 	  if (TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST)
+ 	    {
+ 	      if (TREE_INT_CST_LOW (TYPE_SIZE (type)))
+ 		{
+ 		  unsigned HOST_WIDE_INT sz
+ 		    = least_bit_hwi (TREE_INT_CST_LOW (TYPE_SIZE (type)));
+ 		  rli->offset_align = MIN (rli->offset_align, sz);
+ 		}
+ 	    }
+ 	  else
+ 	    rli->offset_align = MIN (rli->offset_align, BITS_PER_UNIT);
+ 	}
      }
    else if (targetm.ms_bitfield_layout_p (rli->t))
      {
diff -Nrcpad gcc-7.3.0/gcc/symtab.c gcc-7.4.0/gcc/symtab.c
*** gcc-7.3.0/gcc/symtab.c	Fri Apr 28 11:42:14 2017
--- gcc-7.4.0/gcc/symtab.c	Tue Mar  6 20:04:20 2018
*************** along with GCC; see the file COPYING3.
*** 35,40 ****
--- 35,41 ----
  #include "output.h"
  #include "ipa-utils.h"
  #include "calls.h"
+ #include "builtins.h"
  
  static const char *ipa_ref_use_name[] = {"read","write","addr","alias","chkp"};
  
*************** symtab_node::binds_to_current_def_p (sym
*** 2279,2281 ****
--- 2280,2337 ----
  
    return false;
  }
+ 
+ /* Return true if symbol should be output to the symbol table.  */
+ 
+ bool
+ symtab_node::output_to_lto_symbol_table_p (void)
+ {
+   /* Only externally visible symbols matter.  */
+   if (!TREE_PUBLIC (decl))
+     return false;
+   if (!real_symbol_p ())
+     return false;
+   /* FIXME: variables probably should not be considered as real symbols at
+      first place.  */
+   if (VAR_P (decl) && DECL_HARD_REGISTER (decl))
+     return false;
+   /* FIXME: Builtins corresponding to real functions probably should have
+      symbol table entries.  */
+   if (is_builtin_fn (decl))
+     return false;
+ 
+   /* We have real symbol that should be in symbol table.  However try to trim
+      down the refernces to libraries bit more because linker will otherwise
+      bring unnecesary object files into the final link.
+      FIXME: The following checks can easily be confused i.e. by self recursive
+      function or self-referring variable.  */
+ 
+   /* We keep external functions in symtab for sake of inlining
+      and devirtualization.  We do not want to see them in symbol table as
+      references unless they are really used.  */
+   cgraph_node *cnode = dyn_cast <cgraph_node *> (this);
+   if (cnode && (!definition || DECL_EXTERNAL (decl))
+       && cnode->callers)
+     return true;
+ 
+  /* Ignore all references from external vars initializers - they are not really
+     part of the compilation unit until they are used by folding.  Some symbols,
+     like references to external construction vtables can not be referred to at
+     all.  We decide this at can_refer_decl_in_current_unit_p.  */
+  if (!definition || DECL_EXTERNAL (decl))
+     {
+       int i;
+       struct ipa_ref *ref;
+       for (i = 0; iterate_referring (i, ref); i++)
+ 	{
+ 	  if (ref->use == IPA_REF_ALIAS)
+ 	    continue;
+           if (is_a <cgraph_node *> (ref->referring))
+ 	    return true;
+ 	  if (!DECL_EXTERNAL (ref->referring->decl))
+ 	    return true;
+ 	}
+       return false;
+     }
+   return true;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/ChangeLog gcc-7.4.0/gcc/testsuite/ChangeLog
*** gcc-7.3.0/gcc/testsuite/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gcc/testsuite/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,1997 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-11-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/79351
+ 	* gcc.dg/torture/pr79351.c: New testcase.
+ 
+ 2018-11-26  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-11-20  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* gcc.target/s390/flogr-1.c: New test.
+ 
+ 2018-10-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/87645
+ 	Backport from mainline
+ 	2018-07-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gcc.dg/torture/pr87645.c: New testcase.
+ 
+ 2018-11-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-10-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/87610
+ 	* gcc.dg/torture/restrict-6.c: New testcase.
+ 
+ 	2018-10-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/87665
+ 	PR tree-optimization/87745
+ 	* gfortran.dg/20181025-1.f: New testcase.
+ 
+ 	2018-10-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/87665
+ 	* gcc.dg/torture/pr87665.c: New testcase.
+ 
+ 2018-11-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/86076
+ 	* gcc.dg/pr86076.c: New testcase.
+ 
+ 2018-11-26  Matthias Klose  <doko@ubuntu.com>
+ 
+ 	* jit.dg/test-long-names.c: Fix build with -Wformat-security.
+ 
+ 2018-11-25  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/88073
+ 	* gfortran.dg/where_7.f90: New test.
+ 
+ 2018-11-24  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	PR fortran/88143
+ 	* gfortran.dg/associate_46.f90: New test.
+ 
+ 2018-11-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	Backport from mainline
+ 	2018-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/85925
+ 	* gcc.c-torture/execute/20181120-1.c: Require effective target
+ 	int32plus.
+ 	(u): New variable.
+ 	(main): Compare d against u.f1 rather than 0x101.  Use 0x4030201
+ 	instead of 0x10101.
+ 
+ 2018-11-21  Mihail Ionescu  <mihail.ionescu@arm.com>
+ 
+ 	PR target/87867
+ 	Backport from mainiline
+ 	2018-09-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* g++.dg/other/thunk2a.C: New test.
+ 	* g++.dg/other/thunk2b.C: Likewise.
+ 
+ 2018-11-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-01-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/84003
+ 	* g++.dg/torture/pr77745.C: Mark foo noinline to trigger
+ 	latent bug in DSE if NOINLINE is appropriately defined.
+ 	* g++.dg/torture/pr77745-2.C: New testcase including pr77745.C
+ 	and defining NOINLINE.
+ 
+ 2018-11-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.c-torture/execute/20181120-1.c: New test.
+ 
+ 2018-11-18  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-11-11  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/87928
+ 	* gcc.target/i386/pr87928.c: New test.
+ 
+ 2018-11-15  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR debug/88006
+ 	PR debug/87462
+ 	* g++.dg/debug/dwarf2/pr87462.C: New.
+ 	* g++.dg/debug/dwarf2/pr88006.C: New.
+ 
+ 2018-11-11  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-11-04  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR middle-end/58372
+ 	* g++.dg/pr58372.C: New test.
+ 
+ 2018-11-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/null_pointer_deref1.adb: Remove -gnatp and add pragma.
+ 	* gnat.dg/null_pointer_deref2.adb: Likewise.
+ 	* gnat.dg/null_pointer_deref3.adb: Likewise.
+ 	* gnat.dg/opt74.adb: New test.
+ 	* gnat.dg/opt74_pkg.ad[sb]: New helper.
+ 	* gnat.dg/warn12.adb: Delete.
+ 	* gnat.dg/warn12_pkg.ads: Likewise.
+ 
+ 2018-11-03  Tobias Burnus  <burnus@net-b.de>
+ 	Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/87597
+ 	* gfortran.dg/inline_matmul_24.f90: New.
+ 
+ 2018-10-26  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-10-19  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR tree-optimization/87473
+ 	* gcc.c-torture/compile/pr87473.c: New file.
+ 
+ 2018-10-23  Tom de Vries  <tdevries@suse.de>
+ 
+ 	backport from trunk:
+ 	2018-07-31  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR debug/86687
+ 	* g++.dg/guality/pr86687.C: New test.
+ 
+ 2018-10-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/sso14.adb: New test.
+ 	* gnat.dg/sso15.adb: Likewise.
+ 
+ 2018-10-19  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-10-15  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* g++.dg/vec-init-1.C: New test.
+ 
+ 2018-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.c-torture/execute/pr87623.c: New test.
+ 
+ 2018-10-16  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	Backported from mainline
+ 	PR target/87511
+ 	* gcc.target/aarch64/pr87511.c: Add new test.
+ 
+ 2018-10-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-10-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/87550
+ 	* gcc.target/i386/pr87550.c: New test.
+ 
+ 	2018-09-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/87248
+ 	* c-c++-common/torture/pr87248.c: New test.
+ 
+ 	2018-08-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/87065
+ 	* gcc.target/i386/pr87065.c: New test.
+ 
+ 	2018-07-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/86627
+ 	* gcc.target/i386/pr86627.c: New test.
+ 
+ 	2018-07-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/86421
+ 	* gfortran.dg/vect/pr86421.f90: New test.
+ 
+ 	2018-07-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/3698
+ 	PR c++/86208
+ 	* g++.dg/opt/pr3698.C: New test.
+ 
+ 2018-10-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-08-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/87024
+ 	* gcc.dg/pr87024.c: New testcase.
+ 
+ 	2018-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/86505
+ 	* gcc.dg/torture/pr86505.c: New testcase.
+ 
+ 2018-10-09  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-09-29  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/87370
+ 	* gcc.target/i386/pr87370.c: New test.
+ 
+ 2018-10-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-07-02  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* gcc.target/arm/arm-soft-strd-even.c: Skip if -mfloat-abi is
+ 	overriden.
+ 	2018-06-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* gcc.target/arm/arm-soft-strd-even.c: New test.
+ 
+ 2018-09-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/87467
+ 	* gcc.target/i386/avx512f-abspd-1.c (SIZE): Divide by two.
+ 	(CALC): Use double instead of float.
+ 	(TEST): Adjust to test _mm512_abs_pd and _mm512_mask_abs_pd rather than
+ 	_mm512_abs_ps and _mm512_mask_abs_ps.
+ 
+ 2018-09-27  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-08-20  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/87033
+ 	* gcc.target/powerpc/pr87033.c: New test.
+ 
+ 2018-09-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.dg/nested-func-11.c: New test.
+ 
+ 2018-09-13  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from trunk
+ 	PR fortran/87284
+ 	* gfortran.dg/allocate_with_mold_2.f90: New test.
+ 
+ 2018-09-12  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-09-12  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* gcc.target/s390/dfp_to_bfp_rounding.c: New test.
+ 
+ 2018-09-07  Janus Weil  <janus@gcc.gnu.org>
+ 
+ 	Backported from trunk
+ 	PR fortran/86116
+ 	* gfortran.dg/generic_34.f90: New test case.
+ 
+ 2018-09-03  Tom de Vries  <tdevries@suse.de>
+ 
+ 	backport from trunk:
+ 	2018-06-21  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR tree-optimization/85859
+ 	* gcc.dg/pr85859.c: New test.
+ 
+ 2018-08-21  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-08-20  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/87014
+ 	* g++.dg/torture/pr87014.C: New file.
+ 
+ 2018-08-21  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-08-21  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+ 
+ 	* g++.dg/torture/pr86763.C: Restrict to *-*-linux*.
+ 
+ 2018-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-08-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c++/86763
+ 	* g++.dg/torture/pr86763.C: New testcase.
+ 
+ 2018-07-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/discr55.adb: New test.
+ 
+ 2018-07-16  Fritz Reese  <fritzoreese@gmail.com>
+ 
+ 	PR fortran/83184
+ 	Backport from trunk.
+ 	* gfortran.dg/assumed_rank_14.f90: New testcase.
+ 	* gfortran.dg/assumed_rank_15.f90: New testcase.
+ 	* gfortran.dg/dec_structure_8.f90: Update error messages.
+ 	* gfortran.dg/dec_structure_23.f90: Update error messages.
+ 
+ 2018-07-16  Fritz Reese  <fritzoreese@gmail.com>
+ 
+ 	Backport from trunk:
+ 
+ 	PR fortran/83183
+ 	PR fortran/86325
+ 	* gfortran.dg/init_flag_18.f90: New testcase.
+ 	* gfortran.dg/init_flag_19.f03: New testcase.
+ 
+ 2018-07-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/84829
+ 	* gcc.target/i386/pr84829.c: New testcase.
+ 
+ 2018-07-03  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/82969
+ 	PR fortran/86242
+ 	* gfortran.dg/proc_ptr_50.f90: New test.
+ 
+ 2018-06-26  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	Backported from mainline
+ 	2018-06-20  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+ 
+ 	* gcc.target/powerpc/builtins-1.c: Add dg directives to scan
+ 	for vpkudus.
+ 
+ 2018-06-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/86314
+ 	* gcc.dg/pr86314.c: New test.
+ 
+ 2018-06-25  Fritz Reese  <fritzoreese@gmail.com>
+ 
+ 	PR fortran/82972
+ 	PR fortran/83088
+ 	PR fortran/85851
+ 	Backport from trunk.
+ 	* gfortran.dg/init_flag_17.f90: New testcase.
+ 
+ 2018-06-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/84786
+ 	* gcc.target/i386/avx512f-pr84786-3.c: New test.
+ 
+ 2018-06-25  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/83118
+ 	Back port from trunk
+ 	* gfortran.dg/unlimited_polymorphic_30.f03: New test.
+ 
+ 2018-06-23  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR tree-optimization/85989
+ 	* gcc.dg/torture/pr85989.c: New test.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85662
+ 	* g++.dg/ext/offsetof3.C: New test.
+ 
+ 	2018-06-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/86210
+ 	* g++.dg/warn/Wnonnull4.C: New test.
+ 
+ 	PR tree-optimization/86231
+ 	* gcc.dg/tree-ssa/vrp119.c: New test.
+ 	* gcc.c-torture/execute/pr86231.c: New test.
+ 
+ 	2018-06-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/85878
+ 	* gfortran.fortran-torture/compile/pr85878.f90: New test.
+ 
+ 	2018-06-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/85945
+ 	* gcc.c-torture/compile/pr85945.c: New test.
+ 
+ 	2018-06-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/86025
+ 	* c-c++-common/gomp/pr86025.c: New test.
+ 
+ 	2018-05-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85952
+ 	* g++.dg/warn/Wunused-var-33.C: New test.
+ 
+ 	2018-05-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/85696
+ 	* c-c++-common/gomp/pr85696.c: New test.
+ 
+ 	2018-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85662
+ 	* g++.dg/ext/offsetof2.C: New test.
+ 
+ 	2018-05-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85659
+ 	* g++.dg/ext/asm14.C: New test.
+ 	* g++.dg/ext/asm15.C: New test.
+ 	* g++.dg/ext/asm16.C: New test.
+ 
+ 	2018-04-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/85529
+ 	* gcc.c-torture/execute/pr85529-1.c: New test.
+ 	* gcc.c-torture/execute/pr85529-2.c: New test.
+ 	* gcc.dg/pr85529.c: New test.
+ 
+ 	2018-04-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84463
+ 	* g++.dg/cpp0x/constexpr-nullptr-1.C: Add -O1 to dg-options.
+ 	* g++.dg/cpp0x/constexpr-nullptr-2.C: Expect different diagnostics
+ 	in two cases.  Uncomment two other tests and add expected dg-error for
+ 	them.
+ 	* g++.dg/init/struct2.C: Cast to int rather than long to avoid
+ 	-Wnarrowing diagnostics on some targets for c++11.
+ 	* g++.dg/parse/array-size2.C: Remove xfail.
+ 	* g++.dg/cpp0x/constexpr-84463.C: New test.
+ 
+ 	2018-04-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/85430
+ 	* gcc.dg/pr85430.c: New test.
+ 
+ 	2018-04-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/85300
+ 	* gcc.dg/pr85300.c: New test.
+ 
+ 	PR fortran/85313
+ 	* gfortran.dg/gomp/pr85313.f90: New test.
+ 
+ 	2018-04-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/85257
+ 	* gcc.dg/pr85257.c: New test.
+ 
+ 	2018-04-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/85252
+ 	* gcc.dg/debug/pr85252.c: New test.
+ 
+ 	PR c++/85210
+ 	* g++.dg/cpp1z/decomp42.C: New test.
+ 
+ 	2018-04-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85208
+ 	* g++.dg/cpp1z/decomp41.C: New test.
+ 
+ 	2018-04-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/85172
+ 	* g++.dg/ext/builtin13.C: New test.
+ 	* g++.dg/ext/atomic-4.C: New test.
+ 
+ 	2018-04-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/85167
+ 	* gcc.dg/pr85167.c: New test.
+ 
+ 	PR c++/85147
+ 	* g++.dg/cpp0x/pr85147.C: New test.
+ 
+ 	PR c++/85140
+ 	* g++.dg/cpp0x/gen-attrs-64.C: New test.
+ 
+ 	2018-03-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84791
+ 	* g++.dg/gomp/pr84791.C: New test.
+ 
+ 	2018-03-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/85095
+ 	* gcc.target/i386/pr85095-1.c: New test.
+ 	* gcc.target/i386/pr85095-2.c: New test.
+ 	* gcc.c-torture/execute/pr85095.c: New test.
+ 
+ 	2018-03-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/85076
+ 	* g++.dg/cpp1y/pr85076.C: New test.
+ 
+ 	PR c++/85068
+ 	* g++.dg/inherit/covariant22.C: New test.
+ 
+ 	2018-03-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/85034
+ 	* gcc.target/i386/pr85034.c: New test.
+ 
+ 	PR inline-asm/85022
+ 	* c-c++-common/torture/pr85022.c: New test.
+ 
+ 	2018-03-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/84941
+ 	* gcc.dg/pr84941.c: New test.
+ 
+ 	2018-03-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/84999
+ 	* c-c++-common/pr84999.c: New test.
+ 
+ 	PR c++/84961
+ 	* c-c++-common/pr43690.c: Don't expect errors on "m" (--x) and
+ 	"m" (++x) in C++.
+ 	* g++.dg/torture/pr84961-1.C: New test.
+ 	* g++.dg/torture/pr84961-2.C: New test.
+ 
+ 	2018-03-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/84875
+ 	* gcc.dg/pr84875.c: New test.
+ 
+ 	PR c/84953
+ 	* gcc.dg/pr84953.c: New test.
+ 
+ 	2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
+ 
+ 	PR sanitizer/78651
+ 	* g++.dg/asan/pr78651.C: New test.
+ 
+ 	2018-03-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/84899
+ 	* gcc.dg/pr84899.c: New test.
+ 
+ 	PR c++/84874
+ 	* g++.dg/cpp1z/desig8.C: New test.
+ 
+ 	PR tree-optimization/84841
+ 	* gcc.dg/pr84841.c: New test.
+ 
+ 	PR c++/84874
+ 	* g++.dg/cpp1z/desig7.C: New test.
+ 
+ 	2018-03-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/79085
+ 	* g++.dg/opt/pr79085.C: New test.
+ 
+ 	PR c++/84222
+ 	* g++.dg/warn/deprecated.C (T::member3): Change dg-warning to dg-bogus.
+ 	* g++.dg/warn/deprecated-6.C (T::member3): Likewise.
+ 	* g++.dg/warn/deprecated-13.C: New test.
+ 
+ 	PR target/84860
+ 	* gcc.c-torture/compile/pr84860.c: New test.
+ 
+ 	PR c/84853
+ 	* gcc.dg/pr84853.c: New test.
+ 
+ 	2018-03-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/84834
+ 	* gcc.dg/pr84834.c: New test.
+ 
+ 	PR target/84827
+ 	* gcc.target/i386/pr84827.c: New test.
+ 
+ 	PR target/84786
+ 	* gcc.target/i386/avx512f-pr84786-1.c: New test.
+ 	* gcc.target/i386/avx512f-pr84786-2.c: New test.
+ 
+ 	2018-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/84772
+ 	* gcc.dg/pr84772.c: New test.
+ 
+ 	2018-03-09  Jason Merrill  <jason@redhat.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84076
+ 	* g++.dg/warn/Wformat-2.C: New test.
+ 
+ 	2018-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84767
+ 	* g++.dg/ext/vla18.C: New test.
+ 
+ 	2018-03-08  Jason Merrill  <jason@redhat.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/80598
+ 	* g++.dg/warn/Wunused-function4.C: New test.
+ 
+ 	2018-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/84739
+ 	* gcc.dg/pr84739.c: New test.
+ 
+ 	2018-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/84700
+ 	* gcc.target/powerpc/pr84700.c: New test.
+ 
+ 	2018-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84662
+ 	* g++.dg/cpp1y/pr84662.C: New test.
+ 
+ 2018-06-22  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* gcc.target/arm/cmse/cmse-1c99.c: New test.
+ 
+ 2018-06-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/aggr24.adb: New test.
+ 	* gnat.dg/aggr24_pkg.ad[sb]: New helper.
+ 
+ 2018-06-18  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/82063
+ 	* gcc.dg/Walloc-size-larger-than-1.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-10.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-11.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-12.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-13.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-14.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-15.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-16.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-2.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-3.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-4.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-5.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-6.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-7.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-8.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than-9.c: New test.
+ 	* gcc.dg/Walloc-size-larger-than.c: New test.
+ 
+ 2018-06-13  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/86110
+ 	* gfortran.dg/pr86110.f90: New test.
+ 
+ 2018-06-12  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/44491
+ 	* gfortran.dg/pr44491.f90: New testcase
+ 
+ 2018-06-11  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-06-08  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/85755
+ 	* gcc.target/powerpc/pr85755.c: New test.
+ 
+ 2018-06-09  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/38351
+ 	* gfortran.dg/pr38351.f90: New test.
+ 	* gfortran.dg/typebound_operator_4.f03: Adjust for new error message.
+ 
+ 2018-06-09  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/63514
+ 	* gfortran.dg/pr63514.f90: New test.
+ 
+ 2018-06-09  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/78278
+ 	* gfortran.dg/data_bounds_1.f90: Add -std=gnu option.
+ 	* gfortran.dg/data_char_1.f90: Ditto.
+ 	* gfortran.dg/pr78571.f90: Ditto.
+ 	* gfortran.dg/pr78278.f90: New test.
+ 
+ 2018-06-09  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/86059
+ 	* gfortran.dg/associate_30.f90: Remove code tested ...
+ 	* gfortran.dg/pr67803.f90: Ditto.
+ 	* gfortran.dg/pr67805.f90: Ditto.
+ 	* gfortran.dg/pr86059.f90: ... here.  New test.
+ 
+ 2018-06-09  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85138
+ 	PR fortran/85996
+ 	PR fortran/86051
+ 	* gfortran.dg/pr85138_1.f90: New test.
+ 	* gfortran.dg/pr85138_2.f90: Ditto.
+ 	* gfortran.dg/pr85996.f90: Ditto.
+ 
+ 2018-06-07  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/86045
+ 	Backport from trunk.
+ 	* gfortran.dg/pr86045.f90: New test.
+ 
+ 2018-06-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/85641
+ 	Backport from trunk.
+ 	* gfortran.dg/realloc_on_assign_30.f90: New test.
+ 
+ 2018-06-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-05-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/85588
+ 	* gcc.dg/torture/pr85588.c: New testcase.
+ 	* gcc.dg/torture/pr57656.c: Use dg-additional-options.
+ 
+ 	2018-05-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/85567
+ 	* gcc.dg/torture/pr85567.c: New testcase.
+ 
+ 	2018-05-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/85597
+ 	* gcc.dg/vect/pr85597.c: New testcase.
+ 
+ 2018-06-05  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-06-05  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* gcc.target/s390/htm-builtins-compile-4.c: New test.
+ 
+ 2018-06-04  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85981
+ 	* gfortran.dg/allocate_alloc_opt_14.f90: New test.
+ 	* gfortran.dg/allocate_alloc_opt_1.f90: Update error string.
+ 	* gfortran.dg/allocate_stat_2.f90: Ditto.
+ 	* gfortran.dg/deallocate_alloc_opt_1.f90: Ditto.
+ 
+ 2018-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/specs/opt3.ads: New test.
+ 	* gnat.dg/specs/opt3_pkg.ads: New helper.
+ 
+ 2018-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/discr53.ad[sb]: New test.
+ 	* gnat.dg/discr53_pkg.ads: New helper.
+ 
+ 2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85543
+ 	Backport from trunk
+ 	* gfortran.dg/pr85543.f90: New test.
+ 
+ 2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85779
+ 	Backport from trunk
+ 	* gfortran.dg/pr85779_1.f90: New test.
+ 	* gfortran.dg/pr85779_2.f90: Ditto.
+ 	* gfortran.dg/pr85779_3.f90: Ditto.
+ 
+ 2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85780
+ 	Backport from trunk
+ 	* gfortran.dg/pr85780.f90: New test.
+ 
+ 2018-05-25  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85895
+ 	Backport from trunk
+ 	* gfortran.dg/coarray_3.f90: Fix invalid testcase.
+ 	* gfortran.dg/pr85895.f90: New test.
+ 
+ 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* gcc.target/i386/avx512f-vcvtusi2sd64-1.c: Update scan string.
+ 	* gcc.target/i386/avx512f-vcvtusi2ss64-1.c: Ditto.
+ 
+ 2018-05-21  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	Backport from mainline:
+ 	2018-05-17  Pat Haugen  <pthaugen@us.ibm.com>
+ 
+ 	PR target/85698
+ 	* gcc.target/powerpc/pr85698.c: New test.
+ 
+ 2018-05-20  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/80657
+ 	Backport from trunk
+ 	* gfortran.dg/char_result_18.f90: New test.
+ 
+ 2018-05-20  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/82275
+ 	Backport from trunk
+ 	* gfortran.dg/select_type_42.f90: New test.
+ 
+ 2018-05-19  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/82923
+ 	Backport from trunk
+ 	* gfortran.dg/allocate_assumed_charlen_4.f90: New test. Note
+ 	that the patch fixes PR66694 & PR82617, although the testcases
+ 	are not explicitly included.
+ 
+ 2017-05-17  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/82814
+ 	Backport from trunk
+ 	* gfortran.dg/submodule_31.f08: New test.
+ 
+ 2018-05-16  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/83149
+ 	Backport from trunk
+ 	* gfortran.dg/pr83149_1.f90: New test.
+ 	* gfortran.dg/pr83149.f90: Additional source for previous.
+ 	* gfortran.dg/pr83149_b.f90: New test.
+ 	* gfortran.dg/pr83149_a.f90: Additional source for previous.
+ 
+ 2018-16-05  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/83898
+ 	Backport from trunk
+ 	* gfortran.dg/associate_33.f03 : New test.
+ 
+ 2018-05-16  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/84546
+ 	Backport from trunk
+ 	* gfortran.dg/unlimited_polymorphic_29.f90 : New test.
+ 
+ 2018-05-12  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85542
+ 	Backport from trunk
+ 	* gfortran.dg/pr85542.f90: New test.
+ 
+ 2018-05-12  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/68846
+ 	Backport from trunk
+ 	* gfortran.dg/temporary_3.f90 : New test.
+ 
+ 	PR fortran/70864
+ 	Backport from trunk
+ 	* gfortran.dg/temporary_2.f90 : New test.
+ 
+ 2018-05-11  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/70870
+ 	Backport from trunk
+ 	* gfortran.dg/pr70870_1.f90: New test.
+ 
+ 2018-05-11  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85521
+ 	Backport from trunk
+ 	* gfortran.dg/pr85521_1.f90: New test.
+ 	* gfortran.dg/pr85521_2.f90: New test.
+ 
+ 2018-05-11  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85687
+ 	Backport from trunk
+ 	* gfortran.dg/pr85687.f90: new test.
+ 
+ 2018-05-06  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/85507
+ 	Backport from trunk.
+ 	* gfortran.dg/coarray_dependency_1.f90: New test.
+ 	* gfortran.dg/coarray_lib_comm_1.f90: Fix counting caf-expressions.
+ 
+ 2018-05-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from trunk
+ 	2018-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/82518
+ 	* lib/target-supports.exp (check_effective_target_vect_load_lanes):
+ 	Use check_effective_target_arm_little_endian.
+ 
+ 2018-04-28  Andre Vehreschild  <vehre@gcc.gnu.org>
+ 
+ 	PR fortran/81773
+ 	PR fortran/83606
+ 	Backport from trunk.
+ 	* gfortran.dg/coarray/get_to_indexed_array_1.f90: New test.
+ 	* gfortran.dg/coarray/get_to_indirect_array.f90: New test.
+ 
+ 2018-04-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-04-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/85284
+ 	* gcc.dg/torture/pr85284.c: New testcase.
+ 
+ 	2018-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/85244
+ 	* gcc.dg/torture/pr85244-1.c: New testcase.
+ 	* gcc.dg/torture/pr85244-2.c: Likewise.
+ 
+ 	2018-04-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/85168
+ 	* gcc.dg/torture/pr85168.c: New testcase.
+ 
+ 	2018-03-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c/84873
+ 	* c-c++-common/pr84873.c: New testcase.
+ 
+ 2018-04-24  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85520
+ 	* gfortran.dg/pr85520.f90: New test.
+ 
+ 2018-04-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-04-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR lto/85248
+ 	* gcc.dg/lto/pr85248_0.c: New test.
+ 	* gcc.dg/lto/pr85248_1.c: New test.
+ 
+ 2018-04-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-03-28  Jakub Jelinek  <jakub@redhat.com>
+ 		    Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/85081
+ 	* g++.dg/asan/pr85081.C: New test.
+ 
+ 2018-04-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-03-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/84963
+ 	* gfortran.dg/goacc/pr84963.f90: New test.
+ 
+ 2018-04-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-03-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/84658.
+ 	* g++.dg/ipa/pr84658.C: New test.
+ 
+ 2018-04-23  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
+ 
+ 	PR target/83660
+ 	* gcc.target/powerpc/pr83660.C: New test.
+ 
+ 2018-04-23  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* g++.dg/torture/pr85496.C: New test.
+ 
+ 2018-04-20  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/85436
+ 	* go.dg/pr85436.go: New test.
+ 
+ 	Backport from mainline
+ 	2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/83969
+ 	* gcc.target/powerpc/pr83969.c: New test.
+ 
+ 2018-04-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/85464 - missing location for -Wignored-qualifiers diagnostic
+ 	* g++.dg/diagnostic/pr85464.C: New.
+ 
+ 2018-04-18  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	PR target/85261
+ 	* gcc.target/arm/fpscr.c: Add call to __builtin_arm_set_fpscr with
+ 	literal value.  Expect 2 MCR instruction.  Fix function prototype.
+ 	Remove volatile keyword.
+ 
+ 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* gcc.target/s390/nobp-no-dwarf2-cfi.c: New test.
+ 
+ 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	PR target/85203
+ 	* gcc.target/arm/cmse/cmse-1.c: Tighten cmse_nonsecure_caller RTL scan
+ 	to match a single insn of the baz function.  Move scan directives at
+ 	the end of the file below the functions they are trying to test for
+ 	better readability.
+ 	* gcc.target/arm/cmse/cmse-16.c: New testcase.
+ 
+ 2018-04-10  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR target/85056
+ 	* gcc.target/nvptx/pr85056.c (main): Initialize "sum".
+ 
+ 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/84748
+ 	* gcc.c-torture/execute/pr84748.c: New test.
+ 
+ 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* g++.dg/opt/pr85196.C: New test.
+ 
+ 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/85193
+ 	* gcc.target/i386/pr85193.c: New test.
+ 
+ 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR rtl-optimization/84878
+ 	* gcc.target/powerpc/pr84878.c: New test.
+ 
+ 2018-04-03  Cesar Philippidis  <cesar@codesourcery.com>
+ 
+ 	Backport from mainline
+ 	2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
+ 
+ 	PR target/85056
+ 	* testsuite/gcc.target/nvptx/pr85056.c: New test.
+ 	* testsuite/gcc.target/nvptx/pr85056a.c: New test.
+ 
+ 2018-04-02  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/84912
+ 	* gcc.target/powerpc/extend-divide-1.c (div_weo): Remove test for
+ 	deleted builtin function.
+ 	(div_weuo): Likewise.
+ 	* gcc.target/powerpc/extend-divide-2.c (div_deo): Likewise.
+ 	(div_deuo): Likewise.
+ 
+ 2018-04-02  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-02-08  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/81143
+ 	* gcc.target/powerpc/pr79799-2.c: Use __LITTLE_ENDIAN__.
+ 
+ 2018-03-29  Sebastian Peryt  <sebastian.peryt@intel.com>
+ 
+ 	PR c++/84783
+ 	* gcc.target/i386/avx512vl-vpermd-1.c (_mm256_permutexvar_epi32):
+ 	Test new intrinsic.
+ 	* gcc.target/i386/avx512vl-vpermq-imm-1.c (_mm256_permutex_epi64):
+ 	Ditto.
+ 	* gcc.target/i386/avx512vl-vpermq-var-1.c (_mm256_permutexvar_epi64):
+ 	Ditto.
+ 	* gcc.target/i386/avx512f-vpermd-2.c: Do not check for AVX512F_LEN.
+ 	* gcc.target/i386/avx512f-vpermq-imm-2.c: Ditto.
+ 	* gcc.target/i386/avx512f-vpermq-var-2.c: Ditto.
+ 
+ 2018-03-29  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	* gcc.target/arm/pr84826.c: Change dg-option to -fstack-check.
+ 
+ 	Backport from mainline
+ 	2018-03-23  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	PR target/84826
+ 	* gcc.target/arm/pr84826.c: Add dg directive.
+ 
+ 	Backport from mainline
+ 	2018-03-22  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	PR target/84826
+ 	* gcc.target/arm/pr84826.c: New test.
+ 
+ 2018-03-28  Carl Love  <cel@us.ibm.com>
+ 
+ 	* gcc.target/powerpc/crypto-builtin-1-runnable:  Add
+ 	p8vector_hw to dg-do run.
+ 
+ 2018-03-28  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/85084
+ 	Backport from trunk.
+ 	* gfortran.dg/matmul_rank_1.f90: New test.
+ 
+ 2018-03-28  Sudakshina Das  <sudi.das@arm.com>
+ 	    Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	2018-03-20  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/81647
+ 	* gcc.target/aarch64/pr81647.c: Require fenv_exceptions.
+ 
+ 	2018-03-19  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	PR target/81647
+ 	* gcc.target/aarch64/pr81647.c: New.
+ 
+ 2018-03-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/85026
+ 	* g++.dg/pr85026.C: New test.
+ 
+ 2018-03-28  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from mainline
+ 	2018-03-08  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/82411
+ 	* gcc.target/powerpc/ppc-sdata-2.c: Skip if -mno-readonly-in-sdata.
+ 
+ 2018-03-27  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	Backport from mainline:
+ 	2018-03-20  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	PR target/82989
+ 	* gcc.target/arm/pr82989.c: New test.
+ 
+ 	Backport from mainline:
+ 	2018-03-21  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	PR target/82989
+ 	* gcc.target/arm/pr82989.c: Change dg scan-assembly directives.
+ 
+ 2018-03-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/82518
+ 	* lib/target-supports.exp (check_effective_target_vect_load_lanes):
+ 	Disable for armeb targets.
+ 	* gcc.target/arm/pr82518.c: New test.
+ 
+ 2018-03-23  Carl Love  <cel@us.ibm.com>
+ 
+ 	* gcc.target/powerpc/crypto-builtin-1-runnable.c: New test file.
+ 
+ 2018-03-22  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	backport from trunk:
+ 	2018-03-22  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR tree-optimization/84956
+ 	* gcc.dg/pr84956.c: New test.
+ 
+ 2018-03-20  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/85001
+ 	* gfortran.dg/interface_41.f90: New test.
+ 
+ 2018-03-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/84931
+ 	Backport from trunk
+ 	* gfortran.dg/array_constructor_52.f90: New test.
+ 
+ 2018-03-19  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/77414
+ 	* gfortran.dg/pr77414.f90: New test.
+ 	* gfortran.dg/internal_references_1.f90: Adjust error message.
+ 
+ 2018-03-19  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/65453
+ 	* gfortran.dg/pr65453.f90: New test.
+ 
+ 2018-03-19  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/84574
+ 	* gcc.target/i386/ret-thunk-9.c: Expect __x86_return_thunk
+ 	label instead of __x86_indirect_thunk label.
+ 
+ 2018-03-15  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/78741
+ 	* gfortran.dg/pr78741.f90: New test.
+ 
+ 2018-03-12  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/83939
+ 	* gfortran.dg/pr83939.f90
+ 
+ 2018-03-12  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR tree-optimization/84485
+ 	* gcc.dg/vect/pr84485.c: New test.
+ 
+ 2018-03-10  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/84734
+ 	* gfortran.dg/pr84734.f90: New test.
+ 
+ 2018-03-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/prot3.adb: New test.
+ 	* gnat.dg/prot3_pkg.ad[sb]: New helper.
+ 
+ 2018-03-09  Kugan Vivekanandarajah  <kuganv@linaro.org>
+ 
+ 	Backport from mainline
+ 	2017-09-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
+ 
+ 	* gcc.target/aarch64/pr63304_1.c: Remove-mno-fix-cortex-a53-843419.
+ 
+ 2018-03-08  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/64124
+ 	PR fortran/70409
+ 	* gfortran.dg/pr64124.f90: New tests.
+ 	* gfortran.dg/pr70409.f90: New tests.
+ 
+ 2018-03-06  Carl Love  <cel@us.ibm.com>
+ 
+ 	Backport from mainline
+ 	2/16/18  commit 257748  Carl Love  <cel@us.ibm.com>
+ 
+ 	* gcc.target/powerpc/p9-vinsert4b-1.c: Remove test file for non-ABI
+ 	tests.
+ 	* gcc.target/powerpc/p9-vinsert4b-2.c: Remove test file for non-ABI
+ 	tests.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-02-23  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR testsuite/80551
+ 	* c-c++-common/tsan/race_on_mutex.c: Change regexp to allow
+ 	__GI___pthread_mutex_init as well.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-02-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c/84310
+ 	PR target/79747
+ 	* gcc.target/i386/pr84310.c: New test.
+ 	* gcc.target/i386/pr84310-2.c: Likewise.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-01-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/81440
+ 	* gcc.dg/lto/pr81440.h: New test.
+ 	* gcc.dg/lto/pr81440_0.c: New test.
+ 	* gcc.dg/lto/pr81440_1.c: New test.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2017-04-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR testsuite/79455
+ 	* c-c++-common/tsan/race_on_mutex.c: Make the scanned pattern
+ 	more generic.
+ 
+ 2018-03-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR lto/83954
+ 	* gcc.dg/lto/pr83954.h: New testcase.
+ 	* gcc.dg/lto/pr83954_0.c: New testcase.
+ 	* gcc.dg/lto/pr83954_1.c: New testcase.
+ 
+ 2018-03-06  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/56667
+ 	* gfortran.dg/implied_do_2.f90: New test.
+ 	* gfortran.dg/coarray_8.f90: Update for new error message.
+ 
+ 2018-03-06  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/81572
+ 	* gcc.target/powerpc/pr81572.c: New.
+ 
+ 2018-03-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/84607
+ 	* gcc.dg/pr84607.c: New testcase.
+ 
+ 2018-03-05  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	Backport from trunk.
+ 
+ 	2018-02-16  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	PR target/84371
+ 	* gcc.target/powerpc/builtins-3.c: Update dg-options and dg-skip-if
+ 	stanzas.
+ 	* gcc.target/powerpc/builtins-3.p8.c: Add dg-skip-if stanza.
+ 	* gcc.target/powerpc/builtins-3.p9.c: Add dg-skip-if stanza.
+ 
+ 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/84524
+ 	* gcc.c-torture/execute/pr84524.c: New test.
+ 	* gcc.target/i386/avx512bw-pr84524.c: New test.
+ 
+ 2018-03-04  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/83076
+ 	* gfortran.dg/coarray_45.f90: New test.
+ 
+ 	PR fortran/83319
+ 	* gfortran.dg/coarray_46.f90: New test.
+ 
+ 2018-03-03  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/71085
+ 	* gfortran.dg/pr71085.f90: New test.
+ 
+ 2018-03-03  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/51434
+ 	* gfortran.dg/pr51434.f90: New test.
+ 
+ 2018-03-03  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/80965
+ 	* gfortran.dg/select_type_41.f90: New test.
+ 
+ 2018-03-03  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from trunk.
+ 	PR fortran/78990
+ 	* gfortran.dg/class_67.f90: New test.
+ 
+ 2018-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/84628
+ 	* gcc.dg/pr84628.c: New test.
+ 
+ 	PR inline-asm/84625
+ 	* gcc.target/i386/pr84625.c: New test.
+ 
+ 	2018-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/70875
+ 	* gcc.dg/ubsan/bounds-3.c: Add -fno-sanitize-recover=bounds to
+ 	dg-options and dg-shouldfail "ubsan" directive.
+ 
+ 	2018-02-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84558
+ 	* g++.dg/cpp1y/pr84558.C: New test.
+ 
+ 	PR c++/84557
+ 	* g++.dg/gomp/pr84557.C: New test.
+ 
+ 	PR c++/84556
+ 	* g++.dg/gomp/pr84556.C: New test.
+ 	* g++.dg/vect/pr84556.cc: New test.
+ 
+ 	2018-02-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/84503
+ 	* gcc.dg/pr84503-1.c: New test.
+ 	* gcc.dg/pr84503-2.c: New test.
+ 
+ 	2017-11-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/82916
+ 	* gcc.dg/pr82916.c: New test.
+ 
+ 	2018-02-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84445
+ 	* g++.dg/cpp1z/launder7.C: New test.
+ 
+ 	PR c++/84449
+ 	* g++.dg/cpp0x/constexpr-84449.C: New test.
+ 
+ 	2018-02-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84444
+ 	* g++.dg/cpp1z/launder8.C: New test.
+ 
+ 	PR c++/84448
+ 	* g++.dg/gomp/pr84448.C: New test.
+ 
+ 	PR c++/84430
+ 	* g++.dg/gomp/pr84430.C: New test.
+ 
+ 	2018-02-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/84425
+ 	* gcc.c-torture/compile/pr84425.c: New test.
+ 
+ 	2018-02-16  Marek Polacek  <polacek@redhat.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84192
+ 	* g++.dg/cpp1y/constexpr-84192.C: New test.
+ 
+ 	2018-02-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/82210
+ 	* gcc.c-torture/execute/pr82210.c: New test.
+ 
+ 	2018-02-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84341
+ 	* c-c++-common/gomp/pr84341.c: New test.
+ 
+ 	2018-02-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/83987
+ 	* g++.dg/ubsan/pr83987-2.C: New test.
+ 
+ 	2018-02-09  Marek Polacek  <polacek@redhat.com>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/83659
+ 	* g++.dg/torture/pr83659.C: New test.
+ 
+ 	2018-02-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84082
+ 	* g++.dg/template/incomplete11.C: New test.
+ 	* g++.dg/parse/crash67.C: Expect an incomplete type diagnostics too.
+ 
+ 	2018-02-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/81661
+ 	PR tree-optimization/84117
+ 	* gcc.dg/pr81661.c: New test.
+ 	* gfortran.dg/pr84117.f90: New test.
+ 
+ 	2018-01-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/84116
+ 	* gfortran.dg/gomp/pr84116.f90: New test.
+ 
+ 	PR c++/83993
+ 	* g++.dg/init/pr83993-2.C: New test.
+ 
+ 	PR preprocessor/69869
+ 	* gcc.dg/cpp/trad/pr69869.c: New test.
+ 
+ 	2018-01-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/83986
+ 	* gcc.dg/pr83986.c: New test.
+ 
+ 	2018-01-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/84031
+ 	* g++.dg/cpp1z/decomp36.C: New test.
+ 
+ 	2018-01-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/83977
+ 	* c-c++-common/gomp/pr83977-1.c: New test.
+ 	* c-c++-common/gomp/pr83977-2.c: New test.
+ 	* c-c++-common/gomp/pr83977-3.c: New test.
+ 	* gfortran.dg/gomp/pr83977.f90: New test.
+ 
+ 	2018-01-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/83987
+ 	* g++.dg/ubsan/pr83987.C: New test.
+ 
+ 	PR c++/83958
+ 	* g++.dg/cpp1z/decomp35.C: New test.
+ 
+ 	2018-01-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/83945
+ 	* gcc.dg/tls/pr83945.c: New test.
+ 
+ 	PR target/83930
+ 	* gcc.dg/pr83930.c: New test.
+ 
+ 	2018-01-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/83824
+ 	* g++.dg/cpp0x/pr83824.C: New test.
+ 
+ 	2018-01-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/83817
+ 	* g++.dg/cpp1y/pr83817.C: New test.
+ 
+ 	2018-01-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/83605
+ 	* gcc.dg/pr83605.c: New test.
+ 
+ 2018-03-01  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/84039
+ 	* gcc.target/i386/indirect-thunk-1.c: Updated.
+ 	* 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-5.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-6.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-bnd-1.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-bnd-2.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-bnd-3.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-bnd-4.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-5.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-extern-6.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-5.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-inline-6.c: Likewise.
+ 	* gcc.target/i386/indirect-thunk-inline-7.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-9.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.
+ 
+ 2018-03-01  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/84530
+ 	* gcc.target/i386/ret-thunk-22.c: New test.
+ 	* gcc.target/i386/ret-thunk-23.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-24.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-25.c: Likewise.
+ 	* gcc.target/i386/ret-thunk-26.c: Likewise.
+ 
+ 2017-03-02  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	Backport from trunk r256891:
+ 	2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
+ 
+ 	PR target/83790
+ 	* gcc.target/nvptx/indirect_call.c: New test.
+ 
+ 2017-03-01  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+ 
+ 	Backport from mainline
+ 	2017-12-05  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
+ 	with follow-up r255433 commit.
+ 
+ 	* gcc.c-torture/unsorted/dump-noaddr.x: Generate dump files in
+ 	tmpdir.
+ 
+ 2018-02-28  Alan Modra  <amodra@gmail.com>
+ 
+ 	* lib/prune.exp (prune_gcc_output): Match lower case "in function"
+ 	GNU ld message.
+ 	* g++.dg/other/anon5.C: Match lower case "bad value" GNU ld message.
+ 
+ 2018-02-26  Carl Love  <cel@us.ibm.com>
+ 
+ 	Backport from mainline: commit 257747 on 2018-02-16.
+ 
+ 	* gcc.target/powerpc/builtins-7-p9-runnable.c: New runnable test file
+ 	for the ABI definitions for vec_extract4b and vec_insert4b.
+ 
+ 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.c-torture/execute/20180226-1.c: New test.
+ 
+ 2018-02-25  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	ChangeLog for r257972
+ 	PR fortran/83633
+ 	* gfortran.dg/explicit_shape_1.f90: New test.
+ 	* gfortran.dg/automatic_module_variable.f90: Update regex.
+ 	* gfortran.dg/bad_automatic_objects_1.f90: Ditto.
+ 
+ 2018-02-25  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/78238
+ 	Backport from trunk
+ 	* gfortran.dg/select_type_40.f90: New test.
+ 
+ 2018-02-24  Steven G. Kargl <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/30792
+ 	* gfortran.dg/data_substring.f90: New test.
+ 
+ 2018-02-23  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/84346
+ 	* gfortran.dg/statement_function_1.f90: Update test.
+ 
+ 2018-02-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/84506
+ 	* gfortran.dg/inquire_19.f90: New test.
+ 
+ 2018-02-22  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/81116
+ 	PR fortran/84495
+ 	* gfortran.dg/realloc_on_assignment_29.f90:  New test.
+ 
+ 2017-02-22  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	Backport from mainline:
+ 	2017-12-14  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	PR target/81228
+ 	* gcc.dg/pr81228.c: New.
+ 
+ 2018-02-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-01-02  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/81860
+ 	* g++.dg/cpp0x/inh-ctor30.C: New test.
+ 
+ 2018-02-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR libgfortran/84412
+ 	* gfortran.dg/inquire_18.f90: New test.
+ 
+ 2018-02-17  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR fortran/84270
+ 	* gfortran.dg/inline_matmul_22.f90: New test.
+ 
+ 2018-02-16  Jozef Lawrynowicz <jozefl.gcc@gmail.com>
+ 
+ 	PR target/79242
+ 	gcc.target/msp430/pr79242.c: New test.
+ 
+ 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/84277
+ 	* gnat.dg/array11.adb (Array11): Tweak index and remove warning.
+ 	* gnat.dg/dispatch1.adb: Rename into...
+ 	* gnat.dg/disp1.adb: ...this.
+ 	* gnat.dg/dispatch1_p.ads: Rename into...
+ 	* gnat.dg/disp1_pkg.ads: ...this.
+ 	* gnat.dg/disp2.adb: Rename into...
+ 	* gnat.dg/dispatch2.adb: ...this.
+ 	* gnat.dg/dispatch2_p.ads: Rename into...
+ 	* gnat.dg/disp2_pkg.ads: ...this.
+ 	* gnat.dg/dispatch2_p.adb: Rename into...
+ 	* gnat.dg/disp2_pkg.adb: this.
+ 	* gnat.dg/generic_dispatch.adb: Rename into...
+ 	* gnat.dg/generic_disp.adb: this.
+ 	* gnat.dg/generic_dispatch_p.ads: Rename into...
+ 	* gnat.dg/generic_disp_pkg.ads: ...this.
+ 	* gnat.dg/generic_dispatch_p.adb: Rename into...
+ 	* gnat.dg/generic_disp_pkg.adb: ...this.
+ 	* gnat.dg/null_pointer_deref1.adb (Null_Pointer_Deref1): Robustify.
+ 	* gnat.dg/null_pointer_deref2.adb (Null_Pointer_Deref2): Likewise.
+ 	* gnat.dg/object_overflow1.adb: Tweak index.
+ 	* gnat.dg/object_overflow2.adb: Likewise.
+ 	* gnat.dg/object_overflow3.adb: Likewise.
+ 	* gnat.dg/object_overflow4.adb: Likewise.
+ 	* gnat.dg/object_overflow5.adb: Likewise.
+ 
+ 2018-02-16  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	Backport from trunk
+ 	2018-01-12  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	* gcc.c-torture/compile/pr82096.c: Add dg-skip-if
+ 	directive.
+ 
+ 	Backport from trunk
+ 	2018-01-10  Sudakshina Das  <sudi.das@arm.com>
+ 
+ 	PR target/82096
+ 	* gcc.c-torture/compile/pr82096.c: New test.
+ 
+ 2018-02-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/84190
+ 	* g++.dg/torture/pr84190.C: New testcase.
+ 
+ 2018-02-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	Back port from trunk
+ 	2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/84154
+ 	* gcc.target/powerpc/pr84154-1.c: New tests.
+ 	* gcc.target/powerpc/pr84154-2.c: Likewise.
+ 	* gcc.target/powerpc/pr84154-3.c: Likewise.
+ 
+ 2018-02-15  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	PR target/84388
+ 	* gcc.target/powerpc/fold-vec-mult-int128-p8.c: Update dg-options
+ 	and scan-assembler stanzas.
+ 	* gcc.target/powerpc/fold-vec-mult-int128-p9.c: Same.
+ 
+ 2018-02-14  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/84390
+ 	* gcc.target/powerpc/vsxcopy.c: Also match lxv when compiling
+ 	with -mcpu=power9.
+ 
+ 2018-02-14  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Back port from mainline
+ 	2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/84279
+ 	* g++.dg/pr84279.C: New test.
+ 
+ 2018-02-12  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/68560
+ 	* gfortran.dg/shape_9.f90: New test.
+ 
+ 2018-02-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 
+ 	PR fortran/35299
+ 	ChangeLog for r257566
+ 	* gfortran.dg/statement_function_3.f: New test.
+ 
+ 2018-02-12  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/54223
+ 	PR fortran/84276
+ 	* gfortran.dg/statement_function_1.f90: New test.
+ 	* gfortran.dg/statement_function_2.f90: New test.
+ 
+ 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	PR target/PR84295
+ 	* gcc.target/s390/pr84295.c: New test.
+ 
+ 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* gcc.target/s390/nobp-function-pointer-attr.c: New test.
+ 	* gcc.target/s390/nobp-function-pointer-nothunk.c: New test.
+ 	* gcc.target/s390/nobp-function-pointer-z10.c: New test.
+ 	* gcc.target/s390/nobp-function-pointer-z900.c: New test.
+ 	* gcc.target/s390/nobp-indirect-jump-attr.c: New test.
+ 	* gcc.target/s390/nobp-indirect-jump-inline-attr.c: New test.
+ 	* gcc.target/s390/nobp-indirect-jump-inline-z10.c: New test.
+ 	* gcc.target/s390/nobp-indirect-jump-inline-z900.c: New test.
+ 	* gcc.target/s390/nobp-indirect-jump-nothunk.c: New test.
+ 	* gcc.target/s390/nobp-indirect-jump-z10.c: New test.
+ 	* gcc.target/s390/nobp-indirect-jump-z900.c: New test.
+ 	* gcc.target/s390/nobp-return-attr-all.c: New test.
+ 	* gcc.target/s390/nobp-return-attr-neg.c: New test.
+ 	* gcc.target/s390/nobp-return-mem-attr.c: New test.
+ 	* gcc.target/s390/nobp-return-mem-nothunk.c: New test.
+ 	* gcc.target/s390/nobp-return-mem-z10.c: New test.
+ 	* gcc.target/s390/nobp-return-mem-z900.c: New test.
+ 	* gcc.target/s390/nobp-return-reg-attr.c: New test.
+ 	* gcc.target/s390/nobp-return-reg-mixed.c: New test.
+ 	* gcc.target/s390/nobp-return-reg-nothunk.c: New test.
+ 	* gcc.target/s390/nobp-return-reg-z10.c: New test.
+ 	* gcc.target/s390/nobp-return-reg-z900.c: New test.
+ 	* gcc.target/s390/nobp-table-jump-inline-z10.c: New test.
+ 	* gcc.target/s390/nobp-table-jump-inline-z900.c: New test.
+ 	* gcc.target/s390/nobp-table-jump-z10.c: New test.
+ 	* gcc.target/s390/nobp-table-jump-z900.c: New test.
+ 
+ 2018-02-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/84233
+ 	* g++.dg/torture/pr84233.C: New testcase.
+ 
+ 2018-02-07  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/82994
+ 	* gfortran.dg/deallocate_error_3.f90: New test.
+ 	* gfortran.dg/deallocate_error_4.f90: New test.
+ 
+ 2018-02-07  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/82049
+ 	* gfortran.dg/assumed_charlen_parameter.f90: New test.
+ 
+ 2018-02-07  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	* gcc.target/powerpc/safe-indirect-jump-1.c: Detect deprecation
+ 	warning for -mno-speculate-indirect-jumps.
+ 	* gcc.target/powerpc/safe-indirect-jump-2.c: Likewise.
+ 	* gcc.target/powerpc/safe-indirect-jump-3.c: Likewise.
+ 	* gcc.target/powerpc/safe-indirect-jump-4.c: Likewise.
+ 	* gcc.target/powerpc/safe-indirect-jump-5.c: Likewise.
+ 	* gcc.target/powerpc/safe-indirect-jump-6.c: Likewise.
+ 	* gcc.target/powerpc/safe-indirect-jump-7.c: Likewise.
+ 
+ 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR target/79975
+ 	* gcc.dg/rtl/x86_64/final.c: Add -fdwarf2-cfi-asm to dg-options.
+ 
+ 2017-02-02  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* gfortran.dg/dec_parameter_1.f (sub1): Remove statement with no effect.
+ 	* gfortran.dg/dec_parameter_2.f90 (sub1): Ditto.
+ 
+ 2018-02-01  Renlin Li  <renlin.li@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
+ 
+ 	PR target/83370
+ 	* gcc.target/aarch64/pr83370.c: New.
+ 
+ 2018-02-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2017-11-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/82795
+ 	* gcc.target/i386/pr82795.c: New testcase.
+ 
+ 2018-02-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	Backport from mainline
+ 	2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* lib/target-supports.exp (check_effective_target_avx512f): Also
+ 	check for __builtin_ia32_addsd_round,
+ 	__builtin_ia32_getmantsd_round.
+ 	* gcc.target/i386/i386.exp (check_effective_target_avx512f):
+ 	Remove.
+ 
+ 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.c-torture/execute/20180131-1.c: New test.
+ 
+ 2018-01-29  Alan Modra  <amodra@gmail.com>
+ 
+ 	PR target/84033
+ 	* gcc.target/powerpc/swaps-p8-46.c: New.
+ 
+ 2018-01-26  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backport from trunk
+ 	2018-01-26  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* gcc.target/powerpc/safe-indirect-jump-1.c: Build on all targets.
+ 	Make expected output depend on whether we expect sibcalls or not.
+ 	* gcc.target/powerpc/safe-indirect-jump-8.c: Delete (merged into
+ 	safe-indirect-jump-1.c).
+ 
+ 	Backport from trunk
+ 	2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+ 
+ 	PR target/83946
+ 	* gcc.target/powerpc/safe-indirect-jump-8.c: Skip for AIX.
+ 
+ 2018-01-26  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	PR c++/82878
+ 	* g++.dg/cpp0x/pr82878.C: New.
+ 	* g++.dg/cpp1z/inh-ctor38.C: Check moves too.
+ 
+ 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/83985
+ 	* gcc.dg/pr83985.c: New test.
+ 
+ 2018-01-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	Back port from trunk
+ 	2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
+ 
+ 	PR target/83862
+ 	* gcc.target/powerpc/pr83862.c: New test.
+ 
+ 2018-01-25  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	Back port from mainline
+ 	2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/83399
+ 	* gcc.target/powerpc/pr83399.c: New test.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
***************
*** 920,926 ****
  
  	Backported from trunk
  	PR fortran/80850
! 	* gfortran.dg/class_64_f90 : New test.
  
  2017-10-30  Paolo Carlini  <paolo.carlini@oracle.com>
  
--- 2914,2920 ----
  
  	Backported from trunk
  	PR fortran/80850
! 	* gfortran.dg/class_64_f90: New test.
  
  2017-10-30  Paolo Carlini  <paolo.carlini@oracle.com>
  
***************
*** 971,977 ****
  
  	Backport from trunk
  	PR fortran/82312
! 	* gfortran.dg/typebound_proc_36.f90 : New test.
  
  2017-10-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
  
--- 2965,2971 ----
  
  	Backport from trunk
  	PR fortran/82312
! 	* gfortran.dg/typebound_proc_36.f90: New test.
  
  2017-10-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/c-c++-common/gomp/pr83977-1.c gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr83977-1.c
*** gcc-7.3.0/gcc/testsuite/c-c++-common/gomp/pr83977-1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr83977-1.c	Sat Mar  3 13:18:15 2018
***************
*** 0 ****
--- 1,19 ----
+ /* PR middle-end/83977 */
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O2" } */
+ 
+ struct S { int a, b, c; };
+ 
+ #pragma omp declare simd uniform(z) linear(v:1)
+ __attribute__((noinline)) static int
+ foo (int x, int y, struct S z, int u, int v)
+ {
+   return x + y + z.a;
+ }
+ 
+ int
+ bar (int x, int y, int z)
+ {
+   struct S s = { z, 1, 1 };
+   return foo (x, y, s, 0, 0);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/c-c++-common/gomp/pr83977-2.c gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr83977-2.c
*** gcc-7.3.0/gcc/testsuite/c-c++-common/gomp/pr83977-2.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr83977-2.c	Sat Mar  3 13:18:15 2018
***************
*** 0 ****
--- 1,18 ----
+ /* PR middle-end/83977 */
+ /* { dg-do compile } */
+ 
+ void bar (void);
+ 
+ #pragma omp declare simd uniform (b) linear(a:b)
+ int
+ foo (int a, int b)
+ {
+   a = a + 1;
+ /* This function can't be called from simd loops,
+    because it violates declare simd restrictions.
+    We shouldn't ICE on it though, nor attempt to generate
+    simd clones for the *omp_fn* functions.  */
+   #pragma omp parallel
+   bar ();  
+   return a;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/c-c++-common/gomp/pr83977-3.c gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr83977-3.c
*** gcc-7.3.0/gcc/testsuite/c-c++-common/gomp/pr83977-3.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr83977-3.c	Sat Mar  3 13:18:15 2018
***************
*** 0 ****
--- 1,21 ----
+ /* PR middle-end/83977 */
+ /* { dg-do compile } */
+ 
+ void bar (void);
+ int foo (int, int) __attribute__((used));
+ 
+ #pragma omp declare simd uniform (b) linear(a:b)
+ int
+ foo (int a, int b)
+ {
+   a = a + 1;
+ /* This function can't be called from simd loops,
+    because it violates declare simd restrictions.
+    We shouldn't ICE on it though, nor attempt to generate
+    simd clones for the *omp_fn* functions.  */
+   #pragma omp parallel
+   bar ();  
+   return a;
+ }
+ 
+ int foo (int, int)  __attribute__((unused));
diff -Nrcpad gcc-7.3.0/gcc/testsuite/c-c++-common/gomp/pr84341.c gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr84341.c
*** gcc-7.3.0/gcc/testsuite/c-c++-common/gomp/pr84341.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr84341.c	Sat Mar  3 13:30:57 2018
***************
*** 0 ****
--- 1,10 ----
+ /* PR c++/84341 */
+ /* { dg-do compile } */
+ /* { dg-options "-fopenmp" } */
+ 
+ void
+ foo (int i)
+ {
+   #pragma omp atomic
+     i = &i + 1;		/* { dg-error "invalid form of" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/c-c++-common/gomp/pr85696.c gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr85696.c
*** gcc-7.3.0/gcc/testsuite/c-c++-common/gomp/pr85696.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr85696.c	Fri Jun 22 21:27:25 2018
***************
*** 0 ****
--- 1,20 ----
+ /* PR c/85696 */
+ 
+ #ifndef __cplusplus
+ void
+ foo (int n, int a[][n])
+ {
+   #pragma omp parallel shared(a) default(none)
+   #pragma omp master
+     a[23][0] = 42;
+ }
+ #endif
+ 
+ void
+ bar (int n, void *p)
+ {
+   int (*a)[n] = (int (*)[n]) p;
+   #pragma omp parallel shared(a) default(none)
+   #pragma omp master
+     a[23][0] = 42;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/c-c++-common/gomp/pr86025.c gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr86025.c
*** gcc-7.3.0/gcc/testsuite/c-c++-common/gomp/pr86025.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/c-c++-common/gomp/pr86025.c	Fri Jun 22 21:28:36 2018
***************
*** 0 ****
--- 1,20 ----
+ /* PR c++/86025 */
+ /* { dg-do compile } */
+ /* { dg-additional-options "-Wduplicated-branches" } */
+ 
+ int i;
+ 
+ void
+ foo (int x)
+ {
+   if (x)
+     {
+       #pragma omp critical (foo)
+       i++;
+     }
+   else
+     {
+       #pragma omp critical
+       i++;
+     }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/c-c++-common/pr43690.c gcc-7.4.0/gcc/testsuite/c-c++-common/pr43690.c
*** gcc-7.3.0/gcc/testsuite/c-c++-common/pr43690.c	Fri Nov  5 11:11:50 2010
--- gcc-7.4.0/gcc/testsuite/c-c++-common/pr43690.c	Fri Jun 22 20:54:44 2018
*************** void
*** 6,13 ****
  foo (char *x)
  {
    asm ("" : : "m" (x++));	/* { dg-error "is not directly addressable" } */
!   asm ("" : : "m" (++x));	/* { dg-error "is not directly addressable" } */
    asm ("" : : "m" (x--));	/* { dg-error "is not directly addressable" } */
!   asm ("" : : "m" (--x));	/* { dg-error "is not directly addressable" } */
    asm ("" : : "m" (x + 1));	/* { dg-error "is not directly addressable" } */
  }
--- 6,13 ----
  foo (char *x)
  {
    asm ("" : : "m" (x++));	/* { dg-error "is not directly addressable" } */
!   asm ("" : : "m" (++x));	/* { dg-error "is not directly addressable" "" { target c } } */
    asm ("" : : "m" (x--));	/* { dg-error "is not directly addressable" } */
!   asm ("" : : "m" (--x));	/* { dg-error "is not directly addressable" "" { target c } } */
    asm ("" : : "m" (x + 1));	/* { dg-error "is not directly addressable" } */
  }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/c-c++-common/pr84873.c gcc-7.4.0/gcc/testsuite/c-c++-common/pr84873.c
*** gcc-7.3.0/gcc/testsuite/c-c++-common/pr84873.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/c-c++-common/pr84873.c	Thu Apr 26 10:00:24 2018
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-frounding-math" } */
+ 
+ int
+ i1 (int w3, int n9)
+ {
+   return w3 >> ((long int)(1 + 0.1) + -!n9);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/c-c++-common/pr84999.c gcc-7.4.0/gcc/testsuite/c-c++-common/pr84999.c
*** gcc-7.3.0/gcc/testsuite/c-c++-common/pr84999.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/c-c++-common/pr84999.c	Fri Jun 22 20:55:40 2018
***************
*** 0 ****
--- 1,12 ----
+ /* PR c/84999 */
+ /* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */
+ /* { dg-options "" } */
+ 
+ typedef __float128 V __attribute__ ((__vector_size__ (2 * sizeof (__float128))));
+ V a;
+ typeof (a != 0) b;	/* { dg-error "could not find an integer type of the same size as" "" { target ia32 } } */
+ typeof (a == 0) c;	/* { dg-error "could not find an integer type of the same size as" "" { target ia32 } } */
+ typeof (a < 0) d;	/* { dg-error "could not find an integer type of the same size as" "" { target ia32 } } */
+ typeof (a <= 0) e;	/* { dg-error "could not find an integer type of the same size as" "" { target ia32 } } */
+ typeof (a > 0) f;	/* { dg-error "could not find an integer type of the same size as" "" { target ia32 } } */
+ typeof (a >= 0) g;	/* { dg-error "could not find an integer type of the same size as" "" { target ia32 } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/c-c++-common/torture/pr85022.c gcc-7.4.0/gcc/testsuite/c-c++-common/torture/pr85022.c
*** gcc-7.3.0/gcc/testsuite/c-c++-common/torture/pr85022.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/c-c++-common/torture/pr85022.c	Fri Jun 22 20:57:15 2018
***************
*** 0 ****
--- 1,9 ----
+ /* PR inline-asm/85022 */
+ 
+ extern struct B b;
+ 
+ void
+ foo ()
+ {
+   __asm ("" : "+m" (b));
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/c-c++-common/torture/pr87248.c gcc-7.4.0/gcc/testsuite/c-c++-common/torture/pr87248.c
*** gcc-7.3.0/gcc/testsuite/c-c++-common/torture/pr87248.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/c-c++-common/torture/pr87248.c	Fri Oct 12 14:54:34 2018
***************
*** 0 ****
--- 1,36 ----
+ /* PR middle-end/87248 */
+ /* { dg-do run } */
+ 
+ void
+ foo (signed char *p, int q)
+ {
+   *p = q & (-__SCHAR_MAX__ - 1) ? (-__SCHAR_MAX__ - 1) : 0;
+ }
+ 
+ int
+ bar (long long x)
+ {
+   return x & (-__INT_MAX__ - 1) ? (-__INT_MAX__ - 1) : 0;
+ }
+ 
+ int
+ main ()
+ {
+ #if __INT_MAX__ > 4 * __SCHAR_MAX__
+   signed char a[4];
+   foo (a, __SCHAR_MAX__ + 1U);
+   foo (a + 1, 2 * (__SCHAR_MAX__ + 1U));
+   foo (a + 2, -__INT_MAX__ - 1);
+   foo (a + 3, (__SCHAR_MAX__ + 1U) / 2);
+   if (a[0] != (-__SCHAR_MAX__ - 1) || a[1] != a[0] || a[2] != a[0] || a[3] != 0)
+     __builtin_abort ();
+ #endif
+ #if __LONG_LONG_MAX__ > 4 * __INT_MAX__
+   if (bar (__INT_MAX__ + 1LL) != (-__INT_MAX__ - 1)
+       || bar (2 * (__INT_MAX__ + 1LL)) != (-__INT_MAX__ - 1)
+       || bar (-__LONG_LONG_MAX__ - 1) != (-__INT_MAX__ - 1)
+       || bar ((__INT_MAX__ + 1LL) / 2) != 0)
+     __builtin_abort ();
+ #endif
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/c-c++-common/tsan/race_on_mutex.c gcc-7.4.0/gcc/testsuite/c-c++-common/tsan/race_on_mutex.c
*** gcc-7.3.0/gcc/testsuite/c-c++-common/tsan/race_on_mutex.c	Thu Jan  8 22:17:49 2015
--- gcc-7.4.0/gcc/testsuite/c-c++-common/tsan/race_on_mutex.c	Tue Mar  6 20:07:49 2018
*************** int main() {
*** 37,45 ****
  }
  
  /* { dg-output "WARNING: ThreadSanitizer: data race.*(\n|\r\n|\r)" } */
! /* { dg-output "  Atomic read of size 1 at .* by thread T2:(\n|\r\n|\r)" } */
  /* { dg-output "    #0 pthread_mutex_lock.*" } */
  /* { dg-output "    #1 Thread2.* .*(race_on_mutex.c:22|\\?{2}:0) (.*)" } */
! /* { dg-output "  Previous write of size 1 at .* by thread T1:(\n|\r\n|\r)" } */
! /* { dg-output "    #0 pthread_mutex_init .* (.)*" } */
! /* { dg-output "    #1 Thread1.* .*(race_on_mutex.c:12|\\?{2}:0) .*" } */
--- 37,46 ----
  }
  
  /* { dg-output "WARNING: ThreadSanitizer: data race.*(\n|\r\n|\r)" } */
! /* { dg-output "  Atomic read of size \[0-9]\+ at .* by thread T2:(\n|\r\n|\r)" } */
  /* { dg-output "    #0 pthread_mutex_lock.*" } */
  /* { dg-output "    #1 Thread2.* .*(race_on_mutex.c:22|\\?{2}:0) (.*)" } */
! /* { dg-output "  Previous write of size \[0-9]\+ at .* by thread T1:(\n|\r\n|\r)" } */
! /* { dg-output "(    #0 \[^\n\r\]*(\n|\r\n|\r))?" } */
! /* { dg-output "    #\[01\] ((__GI_)?__)?pthread_mutex_init \[^\n\r\]* (.)*" } */
! /* { dg-output "    #\[12\] Thread1.* .*(race_on_mutex.c:12|\\?{2}:0) .*" } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/asan/pr78651.C gcc-7.4.0/gcc/testsuite/g++.dg/asan/pr78651.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/asan/pr78651.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/asan/pr78651.C	Fri Jun 22 20:51:42 2018
***************
*** 0 ****
--- 1,26 ----
+ // PR sanitizer/78651
+ // { dg-do run }
+ // { dg-additional-options "-fpic" { target fpic } }
+ 
+ struct A { };
+ 
+ namespace {
+ 
+ void thisThrows () {
+   throw A();
+ }
+ 
+ struct SomeRandomType {};
+ }
+ 
+ int main() {
+   try {
+     thisThrows();
+   }
+   catch (SomeRandomType) {
+     throw;
+   }
+   catch (A) {
+   }
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/asan/pr85081.C gcc-7.4.0/gcc/testsuite/g++.dg/asan/pr85081.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/asan/pr85081.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/asan/pr85081.C	Tue Apr 24 15:17:48 2018
***************
*** 0 ****
--- 1,20 ----
+ /* PR sanitizer/85081 */
+ /* { dg-do run } */
+ /* { dg-options "-fopenmp-simd" } */
+ /* { dg-require-effective-target fopenmp } */
+ 
+ inline const int& max(const int& a, const int& b)
+ {
+   return a < b ? b : a;
+ }
+ 
+ int main()
+ {
+   #pragma omp simd
+   for ( int i = 0; i < 20; ++i )
+   {
+     const int j = max(i, 1);
+   }
+ 
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/concepts/auto4.C gcc-7.4.0/gcc/testsuite/g++.dg/concepts/auto4.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/concepts/auto4.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/concepts/auto4.C	Thu Apr  5 18:27:37 2018
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/85006
+ // { dg-additional-options "-std=c++17 -fconcepts" }
+ 
+ template<typename... Ts> struct A {};
+ 
+ template<typename... Us> A<auto...> foo() { return A{}; }
+ 
+ void bar()
+ {
+   foo();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/auto-60626.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/auto-60626.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/auto-60626.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/auto-60626.C	Fri Mar 23 14:39:30 2018
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/60626
+ // { dg-do compile { target c++14 } }
+ 
+ struct A {};
+ 
+ void (*A::p)(auto) = 0;  // { dg-error "auto|static data member|template" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/auto51.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/auto51.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/auto51.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/auto51.C	Fri Mar 23 14:39:30 2018
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/84798
+ // { dg-do compile { target c++11 } }
+ 
+ template<typename T>
+ struct S {
+     static constexpr T value = 0;
+ };
+ 
+ constexpr auto x = S<void(*)(auto)>::value; // { dg-error "auto" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C	Sat Mar  3 13:37:05 2018
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/84449
+ // { dg-do compile { target c++11 } }
+ 
+ struct A
+ {
+   constexpr A (int) {}
+   ~A () = delete;
+ };
+ 
+ struct B
+ {
+   A a;
+   constexpr B () : a (0) {}	// { dg-error "use of deleted function" }
+ };
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-84463.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-84463.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-84463.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-84463.C	Fri Jun 22 21:12:32 2018
***************
*** 0 ****
--- 1,22 ----
+ // PR c++/84463
+ // { dg-do compile { target c++11 } }
+ 
+ struct S { int r; const unsigned char s[5]; };
+ static constexpr S a[] = { { 0, "abcd" } };
+ struct T { const unsigned char s[5]; };
+ static constexpr T b[] = { { "abcd" } };
+ 
+ constexpr int
+ foo (const unsigned char *x)
+ {
+   return x[0];
+ }
+ 
+ constexpr static const S *j = &a[0];
+ constexpr static const int k = j->s[0];
+ constexpr static int l = foo (a[0].s);
+ constexpr static int m = foo (j->s);
+ constexpr static const T *n = &b[0];
+ constexpr static const int o = n->s[0];
+ constexpr static int p = foo (b[0].s);
+ constexpr static int q = foo (n->s);
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C	Fri Feb 16 21:06:39 2018
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/83835
+ // { dg-do compile { target c++11 } }
+ 
+ struct Z
+ {
+   void const * p_;
+   constexpr Z( void const * p ): p_( p ) {}
+   ~Z();
+ };
+ 
+ struct Y
+ {
+   Z z_;
+   constexpr Y() noexcept: z_( this ) {}
+ };
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-list2.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-list2.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-list2.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-list2.C	Mon Jan 29 20:58:36 2018
***************
*** 0 ****
--- 1,20 ----
+ // PR c++/82461
+ // { dg-do compile { target c++11 } }
+ 
+ class A {
+ private:
+ public:
+   constexpr A() {}
+   ~A() {}
+ };
+ 
+ class B {
+ private:
+   A  a;
+ public:
+   constexpr B() : a{} {}
+ // works
+ // constexpr B() : a() {}
+ 
+   ~B() {}
+ };
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C	Fri Sep 30 02:15:51 2016
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C	Fri Jun 22 21:12:32 2018
***************
*** 6,12 ****
  // c++/67376 on gcc-patches for additional background.
  
  // { dg-do compile { target c++11 } }
! // { dg-options "-fdelete-null-pointer-checks -fdump-tree-optimized" }
  
  // Runtime assert.  Used for potentially invalid expressions.
  #define RA(e)  ((e) ? (void)0 : __builtin_abort ())
--- 6,12 ----
  // c++/67376 on gcc-patches for additional background.
  
  // { dg-do compile { target c++11 } }
! // { dg-options "-O1 -fdelete-null-pointer-checks -fdump-tree-optimized" }
  
  // Runtime assert.  Used for potentially invalid expressions.
  #define RA(e)  ((e) ? (void)0 : __builtin_abort ())
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C	Sat Jul 30 22:36:56 2016
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C	Fri Jun 22 21:12:32 2018
*************** constexpr bool b11 = ps >= (S*)0;
*** 192,203 ****
  constexpr S* ps1 = ps;
  constexpr S* ps2 = ps1;
  
! // The following aren't diagnosed due to a bug.
! // constexpr int* pi0 = &((S*)0)->i;
! // constexpr int* pi1 = &((S*)nullptr)->i;
  
! constexpr int* pj0 = &((S*)0)->j;	// { dg-error "not a constant expression" }
! constexpr int* pj1 = &((S*)nullptr)->j;  // { dg-error "not a constant expression" }
  
  constexpr int* psi = &ps->i;	    // { dg-error "null pointer|not a constant" }
  constexpr int* psj = &ps->j;	    // { dg-error "null pointer|not a constant" }
--- 192,202 ----
  constexpr S* ps1 = ps;
  constexpr S* ps2 = ps1;
  
! constexpr int* pi0 = &((S*)0)->i;	// { dg-error "null pointer|not a constant" }
! constexpr int* pi1 = &((S*)nullptr)->i;	// { dg-error "null pointer|not a constant" }
  
! constexpr int* pj0 = &((S*)0)->j;	// { dg-error "null pointer|not a constant" }
! constexpr int* pj1 = &((S*)nullptr)->j;	// { dg-error "null pointer|not a constant" }
  
  constexpr int* psi = &ps->i;	    // { dg-error "null pointer|not a constant" }
  constexpr int* psj = &ps->j;	    // { dg-error "null pointer|not a constant" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/decltype-33837.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/decltype-33837.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/decltype-33837.C	Fri Mar  7 20:01:12 2014
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/decltype-33837.C	Thu Mar  1 19:47:18 2018
***************
*** 2,7 ****
  // PR c++/33837
  void foo()
  {
!   __decltype (A::foo()); // { dg-error "was not declared|expected" }
!   __decltype (B); // { dg-error "was not declared" }
  }
--- 2,7 ----
  // PR c++/33837
  void foo()
  {
!   __decltype (A::foo()); // { dg-error "A" }
!   __decltype (B); // { dg-error "B" }
  }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/decltype43.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/decltype43.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/decltype43.C	Tue Oct  9 16:09:32 2012
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/decltype43.C	Thu Mar  1 19:47:18 2018
*************** struct B
*** 22,27 ****
  int main()
  {
    int x = B<decltype(A<int>::a(1))>::b(A<int>::a(1));
!   int y = B<decltype(A     ::a(2))>::b(A<int>::a(2)); // { dg-error "template argument" }
    return x + y;
  }
--- 22,27 ----
  int main()
  {
    int x = B<decltype(A<int>::a(1))>::b(A<int>::a(1));
!   int y = B<decltype(A     ::a(2))>::b(A<int>::a(2)); // { dg-error "template" }
    return x + y;
  }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/decltype67.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/decltype67.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/decltype67.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/decltype67.C	Tue Apr 10 14:29:52 2018
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/85279
+ // { dg-do compile { target c++11 } }
+ 
+ template<typename T> struct A
+ {
+   void foo(decltype(T())::Y);	// { dg-error {decltype\(T\(\)\)::Y} }
+ };
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/elision3.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/elision3.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/elision3.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/elision3.C	Tue Feb 27 02:47:31 2018
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/84441
+ // { dg-do compile { target c++11 } }
+ 
+ struct B {
+   int *b;
+ };
+ struct A {
+   B b;
+   A (A &&);
+ };
+ struct C {
+   A c;
+   int d;
+ };
+ C bar ();
+ struct D : C {
+   D ()
+     : C (0 ? bar () : bar ())
+   {}
+ };
+ D d;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/extern_template-4.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/extern_template-4.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/extern_template-4.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/extern_template-4.C	Mon Apr 23 19:58:57 2018
***************
*** 0 ****
--- 1,23 ----
+ // PR c++/85470
+ // { dg-do compile { target c++11 } }
+ 
+ template <class T>
+ struct StaticObject
+ {
+     static T& create()
+     {
+       static T t;
+       return t;
+     }
+ 
+     static T & instance;
+ };
+ 
+ template <class T> T & StaticObject<T>::instance = StaticObject<T>::create();
+ 
+ extern template class StaticObject<int>;
+ 
+ void test()
+ {
+     StaticObject<int>::instance;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg8.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg8.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg8.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/fntmpdefarg8.C	Fri Mar 23 14:39:47 2018
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/80227
+ // { dg-do compile { target c++11 } }
+ 
+ template <class T>
+ int foo (T);
+ 
+ template <class T, class U = T [sizeof (T) - 5]>
+ int foo (T, U* = 0);
+ 
+ int i = foo (123);
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/gen-attrs-64.C	Fri Jun 22 21:03:38 2018
***************
*** 0 ****
--- 1,4 ----
+ // PR c++/85140
+ // { dg-do compile { target c++11 } }
+ 
+ namespace N alignas() {}	// { dg-error "expected" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/inh-ctor30.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/inh-ctor30.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/inh-ctor30.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/inh-ctor30.C	Mon Feb 19 14:53:36 2018
***************
*** 0 ****
--- 1,27 ----
+ // PR c++/81860
+ // { dg-do compile { target c++11 } }
+ // { dg-final { scan-assembler "_ZN1AIjEC\[12\]Ev" } }
+ 
+ template <typename T>
+ struct A
+ {
+   A() {}
+ };
+ 
+ struct B
+ {
+   template <typename D>
+   B(D, const A<unsigned>& a = A<unsigned>()) : a(a) {}
+ 
+   A<unsigned> a;
+ };
+ 
+ struct C : B
+ {
+   using B::B;
+ };
+ 
+ int main()
+ {
+   C c(0);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/initlist-defarg2.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/initlist-defarg2.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/initlist-defarg2.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/initlist-defarg2.C	Fri Mar 23 14:39:19 2018
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/82336
+ // { dg-do link { target c++11 } }
+ 
+ struct foo { int x = 5; };
+ struct bar : foo { bar() = default; };
+ struct baz { bar x; };
+ void qux(baz = {}){}
+ int main() { qux(); }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/initlist98.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/initlist98.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/initlist98.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/initlist98.C	Fri Feb 16 14:12:48 2018
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/83227
+ // { dg-do compile { target c++11 } }
+ 
+ #include <initializer_list>
+ 
+ template <typename d> struct f {
+   f(std::initializer_list<d>) {}
+ };
+ 
+ struct h {};
+ struct i : h {
+   i();
+ };
+ void foo(f<h>);
+ int main() {
+   foo({i{}});
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-dependent1.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-dependent1.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-dependent1.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-dependent1.C	Tue Jun 12 19:53:10 2018
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/85815
+ // { dg-do compile { target c++11 } }
+ 
+ template<class T>
+ class A {
+     static A* INSTANCE;
+     void foobar();
+     void moo() {}
+ };
+ 
+ template<class T>
+ A<T>* A<T>::INSTANCE = nullptr;
+ 
+ template<class T>
+ void A<T>::foobar() {
+     auto x = []() {
+         INSTANCE->moo();
+     };
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle5.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle5.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle5.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle5.C	Mon Feb 19 14:53:36 2018
***************
*** 0 ****
--- 1,15 ----
+ // { dg-do compile { target c++11 } }
+ // { dg-final { scan-assembler "_ZZN1AIiEC4IiEET_S2_Ed_NKUlvE_clEv" } }
+ 
+ template <class T> struct A
+ {
+   template <class U>
+   A(U, U = []{ return 42; }());
+ };
+ 
+ struct B: A<int>
+ {
+   using A::A;
+ };
+ 
+ B b(24);
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/noexcept32.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/noexcept32.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/noexcept32.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/noexcept32.C	Fri Feb 16 14:12:42 2018
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/84045
+ // { dg-do compile { target c++11 } }
+ 
+ template <typename T> struct K {
+   static const bool d = true;
+ };
+ template <typename T, typename> struct B {
+   typedef K<T> D;
+   void foo () noexcept (D::d);
+ };
+ template <typename T> struct P {
+   P () noexcept (K<T>::d);
+ };
+ P<int> p;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/noexcept33.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/noexcept33.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/noexcept33.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/noexcept33.C	Tue Jul  3 16:27:04 2018
***************
*** 0 ****
--- 1,28 ----
+ // PR c++/86378
+ // { dg-do compile { target c++11 } }
+ 
+ struct Pepper {};
+ struct Apple { Apple(int) {} };
+ 
+ struct Combination : Apple, Pepper
+ {
+   Combination(Pepper p, Apple a)
+     : Apple(a), Pepper(p)
+   {}
+ };
+ 
+ struct MyCombination
+ {
+   using Spice = Pepper;
+   using Fruit = Apple;
+ 
+   Combination combination;
+ 
+   template<typename T>
+   constexpr MyCombination(T&& t)
+   noexcept(noexcept(Combination(Spice(), Fruit(t))))
+     : combination(Spice(), Fruit(t))
+   {}
+ };
+ 
+ MyCombination obj(Apple(4));
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C	Fri Feb 16 16:45:49 2018
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/82764
+ // { dg-do compile { target c++11 } }
+ 
+ struct Empty {};
+ struct Empty2 : Empty {};
+ 
+ struct A : Empty2
+ {
+   int x {1};
+   int y {2};
+ };
+ 
+ struct B
+ {
+   A a {};
+ };
+ 
+ B b;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/nsdmi14.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/nsdmi14.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/nsdmi14.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/nsdmi14.C	Thu Mar 22 14:18:17 2018
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/71638
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-Wall" }
+ 
+ struct A {
+   struct {
+     int i;
+     int &j = i;
+   } b;
+   int a = b.j;
+ };
+ 
+ void bar (A);
+ 
+ void
+ foo ()
+ {
+   bar (A{});
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/pr82878.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/pr82878.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/pr82878.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/pr82878.C	Fri Jan 26 13:48:37 2018
***************
*** 0 ****
--- 1,20 ----
+ // { dg-do compile { target c++11 } }
+ // { dg-additional-options "-O" }
+ // pr 82878 erroneously unwrapped a reference parm in the lambda::_FUN
+ // thunk.
+ 
+ struct A {
+   ~A();
+   operator int ();
+ };
+ 
+ void baz ();
+ 
+ void
+ bar (A b)
+ {
+   void (*lam) (A) = [](A) { baz (); };
+ 
+   if (auto c = b)
+     lam (c);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/pr83824.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/pr83824.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/pr83824.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/pr83824.C	Sat Mar  3 13:14:11 2018
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/83824
+ // { dg-do compile { target c++11 } }
+ 
+ void
+ foo ()
+ {
+   if (alignas(1 alignas(1)))	// { dg-error "expected" }
+     ;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/pr85147.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/pr85147.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/pr85147.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/pr85147.C	Fri Jun 22 21:04:25 2018
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/85147
+ // { dg-do compile { target c++11 } }
+ 
+ template<typename T> struct A
+ {
+   template<template<...T> class...> struct B {};	// { dg-error "expected|mismatch" }
+ };
+ 
+ A<int>::B<> b;						// { dg-error "does not name a template type" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/range-for13.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/range-for13.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/range-for13.C	Wed Apr 15 17:18:27 2015
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/range-for13.C	Thu Mar 29 14:07:42 2018
***************
*** 3,18 ****
  
  // { dg-do compile { target c++11 } }
  
- //These should not be used
- template<typename T> int *begin(T &t)
- {
-     T::fail;
- }
- template<typename T> int *end(T &t)
- {
-     T::fail;
- }
- 
  struct container1
  {
      int *begin();
--- 3,8 ----
*************** struct container10
*** 87,96 ****
      static function end;
  };
  
  void test1()
  {
!   for (int x : container1()); // { dg-error "member but not" }
!   for (int x : container2()); // { dg-error "member but not" }
    for (int x : container3()); // { dg-error "within this context" }
    for (int x : container4()); // { dg-error "cannot be used as a function" }
    for (int x : container5()); // { dg-error "invalid use of" }
--- 77,113 ----
      static function end;
  };
  
+ namespace N
+ {
+ template<typename T> int *begin(T &t)
+ {
+     return 0;
+ }
+ template<typename T> int *end(T &t)
+ {
+     return 0;
+ }
+ struct container11
+ {
+     int *begin();
+     //no end
+ };
+ 
+ struct container12
+ {
+     int *end();
+     //no begin
+ };
+ 
+ struct container13
+ {
+ };
+ }
+ 
  void test1()
  {
!   for (int x : container1()); // { dg-error "'begin' was not declared|'end' was not declared" }
!   for (int x : container2()); // { dg-error "'begin' was not declared|'end' was not declared" }
    for (int x : container3()); // { dg-error "within this context" }
    for (int x : container4()); // { dg-error "cannot be used as a function" }
    for (int x : container5()); // { dg-error "invalid use of" }
*************** void test1()
*** 99,102 ****
--- 116,122 ----
    for (int x : container8());
    for (int x : container9()); // { dg-error "within this context" }
    for (int x : container10());
+   for (int x : N::container11());
+   for (int x : N::container12());
+   for (int x : N::container13());
  }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/range-for35.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/range-for35.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/range-for35.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/range-for35.C	Tue Jun 12 19:53:02 2018
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/86060
+ // { dg-options -Wpedantic }
+ 
+ template <typename T> void foo(T (&a)[8]) {
+   for (int i : a)		// { dg-warning "range-based" "" { target c++98_only } }
+     i;
+ }
+ void fn1() { foo<int>; }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/range-for9.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/range-for9.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/range-for9.C	Thu Jun 26 18:15:42 2014
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/range-for9.C	Tue Jun 12 19:53:02 2018
***************
*** 5,10 ****
  void test()
  {
      int a[] = {0,1,2};
!     for (int x : a)  // { dg-error "range-based 'for'" }
          ;
  }
--- 5,10 ----
  void test()
  {
      int a[] = {0,1,2};
!     for (int x : a)  // { dg-error "range-based 'for'|forming reference" }
          ;
  }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/ref-qual18.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/ref-qual18.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/ref-qual18.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/ref-qual18.C	Wed Feb 28 21:34:31 2018
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/71784
+ // { dg-do compile { target c++11 } }
+ 
+ template<typename T> struct A {
+   template<typename U> void f(U const&) & { }
+   template<typename U> void f(U const&) && { }
+ };
+ 
+ template void A<int>::f<int>(int const&) &;
+ template void A<float>::f<int>(int const&) &&;
+ 
+ template<typename T> struct B {
+   void f(int const&) & { }
+   void f(int const&) && { }
+ };
+ 
+ template void B<int>::f(int const&) &;
+ template void B<float>::f(int const&) &&;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/sfinae60.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/sfinae60.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/sfinae60.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/sfinae60.C	Fri Mar 23 14:40:06 2018
***************
*** 0 ****
--- 1,25 ----
+ // PR c++/78489
+ // { dg-do compile { target c++11 } }
+ 
+ template <bool P, class T = void> struct enable_if { using type = T; };
+ template <class T> struct enable_if<false, T> {};
+ 
+ template <class Dummy> struct use_type { using type = int; };
+ 
+ template <bool Pred>
+ struct get_type {
+     static_assert(Pred, "");
+     using type = int;
+ };
+ 
+ template <bool Val,
+               class      = typename enable_if<Val>::type, // Evaluation/Substitution should end here
+               class ValT = typename get_type<Val>::type,  // This should not be instantiated
+               typename use_type<ValT>::type = 0           // This NTTP causes ValT to be required
+             >
+ constexpr bool test(int) { return false; }
+ 
+ template <bool>
+ constexpr bool test(long) { return true; }
+ 
+ static_assert(test<false>(0), ""); // should call test(long)
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/variadic-nested2.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/variadic-nested2.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/variadic-nested2.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/variadic-nested2.C	Fri Mar 23 14:39:36 2018
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/84839
+ // { dg-do compile { target c++11 } }
+ 
+ template<typename... T>
+ struct S {
+     using fptr = void(*)(T... x, decltype(x)... y);
+ };
+ 
+ using F = S<int>::fptr;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/variadic-nested3.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/variadic-nested3.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp0x/variadic-nested3.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp0x/variadic-nested3.C	Fri Mar 23 14:40:00 2018
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/71834
+ // { dg-do compile { target c++11 } }
+ 
+ template < typename ... Ts > struct A 
+ {
+   template < Ts ..., typename U > struct B {};
+ };
+ 
+ // should be, e.g.: A < int >::B < 0, int > e; 
+ A < int >::B < 0 > e;	   // { dg-error "wrong number of template arguments" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/constexpr-84192.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/constexpr-84192.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/constexpr-84192.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/constexpr-84192.C	Sat Mar  3 13:32:26 2018
***************
*** 0 ****
--- 1,41 ----
+ // PR c++/84192
+ // { dg-do compile { target c++14 } }
+ // { dg-options "" }
+ 
+ bool
+ f1 ()
+ { 
+   return ({ return true; }) && false;	// { dg-error "could not convert" }
+ }
+ 
+ void
+ f2 ()
+ { 
+   for (;;)
+     constexpr bool b = ({ break; false; }) && false;	// { dg-error "statement is not a constant expression" }
+ }
+ 
+ constexpr bool
+ f3 (int n)
+ {
+   bool b = false;
+   for (int i = 0; i < n; i++)
+     b = ({ break; });	// { dg-error "void value not ignored as it ought to be" }
+   return b;
+ }
+ 
+ constexpr bool b = f3 (4);
+ 
+ bool
+ f4 ()
+ {
+   constexpr bool b = ({ return true; }) && false;	// { dg-error "could not convert" }
+   return false;
+ }
+ 
+ constexpr bool
+ f5 (int x)
+ {
+   constexpr bool b = ({ switch (x) case 0: true; }) && false;	// { dg-error "could not convert" }
+   return false;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/constexpr-array6.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/constexpr-array6.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/constexpr-array6.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/constexpr-array6.C	Mon Nov 26 15:53:43 2018
***************
*** 0 ****
--- 1,26 ----
+ // PR c++/87075
+ // { dg-do compile { target c++14 } }
+ 
+ template <typename T>
+ struct vec
+ {
+   struct { T y; } n;
+   vec() = default;
+ };
+ 
+ template <typename T>
+ struct S
+ {
+   vec<T> value[2];
+   template<typename U>
+   constexpr S(const U&);
+ };
+ 
+ template<typename T>
+ template<typename X>
+ constexpr S<T>::S(const X&)
+ {
+   value[0] = vec<T>();
+ }
+ 
+ S<float>m(0);
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-nsdmi1.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-nsdmi1.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-nsdmi1.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-nsdmi1.C	Tue Feb 27 02:47:25 2018
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/84520
+ // { dg-do compile { target c++14 } }
+ 
+ struct A
+ {
+   static void foo(int);
+   void (*f)(int) = [](auto i) { foo(i); };
+ };
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic16.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic16.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic16.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic16.C	Tue Apr  3 17:46:35 2018
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/64095
+ // { dg-do compile { target c++14 } }
+ 
+ void f()
+ {
+   [](auto...){}();
+   [](auto&&...){}();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic17.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic17.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic17.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic17.C	Wed Apr  4 16:46:00 2018
***************
*** 0 ****
--- 1,125 ----
+ // PR c++/85118
+ // { dg-do compile { target c++14 } }
+ 
+ namespace std
+ {
+   template<typename _Tp>
+     struct remove_const
+     { typedef _Tp type; };
+ 
+   template<typename _Tp>
+     struct remove_const<_Tp const>
+     { typedef _Tp type; };
+ 
+ 
+   template<typename _Tp>
+     struct remove_volatile
+     { typedef _Tp type; };
+ 
+   template<typename _Tp>
+     struct remove_volatile<_Tp volatile>
+     { typedef _Tp type; };
+ 
+ 
+   template<typename _Tp>
+     struct remove_cv
+     {
+       typedef typename
+       remove_const<typename remove_volatile<_Tp>::type>::type type;
+     };
+ 
+   template<typename _Tp>
+     struct remove_reference
+     { typedef _Tp type; };
+ 
+   template<typename _Tp>
+     struct remove_reference<_Tp&>
+     { typedef _Tp type; };
+ 
+   template<typename _Tp>
+     struct remove_reference<_Tp&&>
+     { typedef _Tp type; };
+ 
+   template<typename _Tp>
+     struct decay
+     {
+       using type = typename remove_reference<typename remove_const<_Tp>::type>::type;
+     };
+ 
+   template<typename _Tp>
+     _Tp&&
+     declval() noexcept;
+ 
+   template<typename _Tp>
+     constexpr _Tp&&
+     forward(typename std::remove_reference<_Tp>::type& __t) noexcept
+     { return static_cast<_Tp&&>(__t); }
+ 
+ 
+   template<typename _Arg>
+     struct _Mu
+     {
+       template<typename _CVArg, typename _Tuple>
+          _CVArg&&
+          operator()(_CVArg&& __arg, _Tuple&) const volatile
+          { return std::forward<_CVArg>(__arg); }
+     };
+ 
+    template<typename _Functor, typename _Bound_args>
+     struct _Bind
+     {
+       _Functor _M_f;
+       _Bound_args _M_bound_args;
+ 
+       template<typename _Args, typename _Result
+          = decltype( std::declval<_Functor&>()(
+                _Mu<_Bound_args>()( std::declval<_Bound_args&>(),
+               std::declval<_Args&>() ) ) )>
+          _Result
+       operator()(_Args&& __args) { return {}; }
+ 
+       template<typename _Args, typename _Result
+          = decltype( std::declval<volatile _Functor&>()(
+                _Mu<_Bound_args>()( std::declval<volatile _Bound_args&>(),
+               std::declval<_Args&>() ) ) )>
+          _Result
+          operator()(_Args&& __args) volatile;
+ 
+     };
+ 
+   template<typename _Func, typename _BoundArgs>
+     _Bind<typename decay<_Func>::type, typename decay<_BoundArgs>::type>
+     bind(_Func&& __f, _BoundArgs&& __args)
+     {
+       return {
+         std::forward<_Func>(__f),
+           std::forward<_BoundArgs>(__args)
+       };
+     }
+ 
+ } // namespace std
+ 
+ 
+ template <typename T>
+ bool isOneOf(const T& )
+ {
+     return false;
+ }
+ 
+ template <typename T, typename FirstType, typename... Tail>
+ bool isOneOf(const T& t, const FirstType& firstValue, const Tail&... tail)
+ {
+     return t == firstValue || isOneOf(t, tail...);
+ }
+ 
+ int main()
+ {
+     const auto isOneOfHelper = [](auto&&... params)
+     {
+       return isOneOf(std::forward<decltype(params)>(params)...);
+     };
+ 
+     auto isO = std::bind(isOneOfHelper, 'o');
+ 
+     isO('o');
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C	Sat Aug 11 11:02:22 2018
***************
*** 0 ****
--- 1,4 ----
+ // PR c++/86728
+ // { dg-do compile { target c++14 } }
+ 
+ auto c = [](auto x ...) { };
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1.C	Mon Dec 12 17:00:37 2016
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1.C	Tue Apr  3 17:46:35 2018
*************** void Baz ()
*** 85,88 ****
  // { dg-final { scan-assembler "_Z3eatIZ3FoovEUlPT_PT0_E4_Z3FoovEUlS1_S3_E5_EvRS0_RS2_:" } }
  // { dg-final { scan-assembler "_Z3eatIPiZ3BarIsEvvEUlPsPfS3_E_EvRT_RT0_:" } }
  // { dg-final { scan-assembler "_Z3eatIPiZ3BarIsEvvEUlPsPT_PT0_E0_EvRS3_RS5_:" } }
! // { dg-final { scan-assembler "_Z3eatIPiZ3BarIsEvvEUlPsPT_zE1_EvRS3_RT0_:" } }
--- 85,88 ----
  // { dg-final { scan-assembler "_Z3eatIZ3FoovEUlPT_PT0_E4_Z3FoovEUlS1_S3_E5_EvRS0_RS2_:" } }
  // { dg-final { scan-assembler "_Z3eatIPiZ3BarIsEvvEUlPsPfS3_E_EvRT_RT0_:" } }
  // { dg-final { scan-assembler "_Z3eatIPiZ3BarIsEvvEUlPsPT_PT0_E0_EvRS3_RS5_:" } }
! // { dg-final { scan-assembler "_Z3eatIPiZ3BarIsEvvEUlPsDpPT_E1_EvRT_RT0_:" } }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr10.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr10.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr10.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr10.C	Thu Mar 22 14:18:17 2018
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/71638
+ // { dg-do compile { target c++14 } }
+ 
+ struct {
+   int &&a;
+   int b{a};
+ } c[] { { 2 } };
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr11.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr11.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr11.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr11.C	Wed Apr  4 16:45:53 2018
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/85148
+ // { dg-do compile { target c++14 } }
+ 
+ template<typename T> struct A
+ {
+   T x[1]{(__PTRDIFF_TYPE__)this};
+ };
+ 
+ void foo()
+ {
+   A<A<__PTRDIFF_TYPE__>> a{};
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr9.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr9.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr9.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr9.C	Thu Mar 22 14:17:03 2018
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/84927 - ICE with NSDMI and reference
+ // { dg-do compile { target c++14 } }
+ 
+ struct A
+ {
+   int& r;
+   int i = r;
+ };
+ 
+ void foo()
+ {
+   int j;
+   A a = A{j};
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/pr60393.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr60393.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/pr60393.C	Sat Aug 23 16:50:22 2014
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr60393.C	Fri Mar 23 14:39:30 2018
***************
*** 1,8 ****
  // PR c++/60393
  // { dg-do compile { target c++14 } }
- // { dg-options "" }
  
! void (*f)(auto) + 0; // { dg-error "expected" }
  
  struct A
  {
--- 1,7 ----
  // PR c++/60393
  // { dg-do compile { target c++14 } }
  
! void (*f)(auto) + 0; // { dg-error "auto|expected" }
  
  struct A
  {
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/pr60626.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr60626.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/pr60626.C	Mon Aug 25 12:48:22 2014
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr60626.C	Thu Jan  1 00:00:00 1970
***************
*** 1,7 ****
- // PR c++/60626
- // { dg-do compile { target c++14 } }
- // { dg-options "" }
- 
- struct A {};
- 
- void (*A::p)(auto) = 0;  // { dg-error "static data member|template" }
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/pr83817.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr83817.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/pr83817.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr83817.C	Sat Mar  3 13:13:28 2018
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/83817
+ // { dg-do compile { target c++14 } }
+ 
+ struct A;
+ struct B { template <typename> using C = A; };
+ struct D : B { struct F { typedef C<char> E; }; };
+ struct G {
+   struct I { I (D, A &); } h;
+   D::F::E &k ();
+   D j;
+   G (G &&) : h (j, k ()) {}
+ };
+ struct N { G l; };
+ typedef N (*M)(N &);
+ struct H { const char *o; M s; };
+ N foo (N &);
+ H r { "", [](auto &x) { return foo (x); }};
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/pr84496.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr84496.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/pr84496.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr84496.C	Tue Feb 27 15:31:29 2018
***************
*** 0 ****
--- 1,44 ----
+ // PR c++/84496
+ // { dg-do compile { target c++14 } }
+ 
+ template <typename T, T n> struct C { static constexpr T D = n; };
+ struct E : C<bool, false> {};
+ template <typename> struct F : C<bool, false> {};
+ template <typename T> T foo ();
+ template <typename> struct H { typedef int G; };
+ template <typename> class I;
+ struct L;
+ template <typename, typename> struct J;
+ template <bool, bool, typename...> struct K;
+ struct R {
+   template <typename M, typename... N>
+   static J<decltype (foo<M> () (foo<N>...)), L> o;
+ };
+ template <typename P, typename... Q> struct K<false, false, P, Q...> : R {
+   typedef decltype (o<P, Q...>) G;
+ };
+ template <typename P, typename... Q>
+ struct D : K<E::D, F<typename H<P>::G>::D, P, Q...> {};
+ template <typename P, typename... Q> struct I<P (Q...)> : D<P, Q...> {};
+ template <typename> class function;
+ template <typename S, typename... Q> struct function<S (Q...)> {
+   template <typename T, typename = typename I<T (Q...)>::G> struct C;
+   template <typename, typename> using U = int;
+   template <typename P, typename = U<int, void>, typename = U<C<P>, void>>
+   function (P);
+ };
+ template <typename S, typename... Q>
+ template <typename P, typename, typename>
+ function<S (Q...)>::function (P)
+ {
+ }
+ void bar (function<void (int)>);
+ 
+ void
+ baz ()
+ {
+   auto a = [] {
+     static int counter;
+     bar ([] (auto) { counter++; });
+   };
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/pr84558.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr84558.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/pr84558.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr84558.C	Sat Mar  3 13:41:20 2018
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/84558
+ // { dg-do compile { target c++14 } }
+ 
+ struct A { static int i; constexpr A () { i = 0; } };
+ struct B { A a[2][3][4]; };
+ B b;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/pr84662.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr84662.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/pr84662.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr84662.C	Fri Jun 22 20:28:04 2018
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/84662
+ // { dg-do compile { target c++14 } }
+ // { dg-options "" }
+ 
+ double b;
+ a (__attribute__((c (0 && int() - ([] {} && b) || auto))));	// { dg-error "expected constructor, destructor, or type conversion before" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/pr85076.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr85076.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/pr85076.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/pr85076.C	Fri Jun 22 21:01:00 2018
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/85076
+ // { dg-do compile { target c++14 } }
+ 
+ template<typename> struct A*;	// { dg-error "expected unqualified-id before" }
+ 
+ auto a = [](A<auto>) {};	// { dg-error "is not a template|has incomplete type" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/var-templ58.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/var-templ58.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/var-templ58.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/var-templ58.C	Thu Mar  1 16:12:26 2018
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/71569
+ // { dg-do compile { target c++14 } }
+ 
+ template <class T>
+ struct A {
+   template <class U>
+   static const U u;
+ };
+ 
+ template <class T>
+ template <class U>
+ const U A<T>::u<U> = 0;	// { dg-error "does not specialize" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/var-templ58a.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/var-templ58a.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/var-templ58a.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/var-templ58a.C	Thu Mar  1 16:12:26 2018
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/71569
+ // { dg-do compile { target c++14 } }
+ 
+ template <class T>
+ struct A {
+   template <class U>
+   static const U u;
+ };
+ 
+ template <class T>
+ template <class U>
+ const U* A<T>::u<U*> = 0;
+ 
+ const int *p = A<char>::u<int*>;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/var-templ59.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/var-templ59.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1y/var-templ59.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1y/var-templ59.C	Thu Mar  1 19:47:18 2018
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/71569
+ // { dg-do compile { target c++14 } }
+ 
+ template <class T>
+ struct A {
+   template <class U>
+   static U u;
+ };
+ 
+ int main()
+ {
+   decltype(A<int>::u) a;	// { dg-error "missing template arguments" }
+   return a;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction49.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction49.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction49.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction49.C	Mon Feb 26 06:09:01 2018
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/84015
+ // { dg-additional-options -std=c++17 }
+ 
+ template <int I>
+ struct A { };
+ 
+ template <int I>
+ struct B
+ {
+   template<template<auto>class T>
+   B(T<I>);
+ };
+ 
+ A<42> a;
+ B b (a);
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction50.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction50.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction50.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction50.C	Fri Mar 23 14:39:25 2018
***************
*** 0 ****
--- 1,22 ----
+ // PR c++/84355
+ // { dg-additional-options -std=c++17 }
+ 
+ template <class, class> struct same;
+ template <class T> struct same<T,T> {};
+ 
+ template<typename T> struct A
+ {
+   template<class U> struct B
+   {
+     B(U);
+   };
+ 
+   A() {
+     B b(0);
+     same<decltype(b),B<int>>{};
+   }
+ };
+ 
+ struct C {};
+ 
+ A<C> a;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction51.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction51.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction51.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction51.C	Fri Mar 23 14:39:54 2018
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/84937
+ // { dg-additional-options -std=c++17 }
+ 
+ template<int, int> struct A {};
+ 
+ template<int I> struct B
+ {
+   template<auto J> B(A<I,J>);
+ };
+ 
+ B b(A<0,0>{});
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction54.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction54.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction54.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction54.C	Thu Apr  5 18:27:49 2018
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/82152
+ // { dg-additional-options -std=c++17 }
+ 
+ struct Base {};
+ 
+ template<typename T>
+ struct Derived : public Base {
+   using Base::Base;
+ };
+ 
+ Derived() -> Derived< void >;
+ 
+ int main() {
+   Derived x;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C	Wed Mar  7 07:50:57 2018
***************
*** 0 ****
--- 1,163 ----
+ // PR c++/84684
+ // { dg-options -std=c++17 }
+ 
+ typedef decltype (sizeof (0)) size_t;
+ 
+ namespace std {
+   template<class _E>
+   struct initializer_list
+   {
+     typedef _E value_type;
+     typedef const _E& reference;
+     typedef const _E& const_reference;
+     typedef size_t size_type;
+     typedef const _E* iterator;
+     typedef const _E* const_iterator;
+     iterator _M_array;
+     size_type _M_len;
+     constexpr initializer_list(const_iterator __a, size_type __l) : _M_array(__a), _M_len(__l) { }
+     constexpr initializer_list() noexcept : _M_array(0), _M_len(0) { }
+     constexpr size_type size() const noexcept { return _M_len; }
+     constexpr const_iterator begin() const noexcept { return _M_array; }
+     constexpr const_iterator end() const noexcept { return begin() + size(); }
+   };
+ }
+ 
+ template <typename E, size_t N>
+ struct array
+ {
+   constexpr E &operator[](size_t n) noexcept { return elems[n]; }
+   constexpr const E &operator[](size_t n) const noexcept { return elems[n]; }
+   constexpr size_t size() const { return N; }
+   E elems[N];
+ };
+ 
+ template<typename T>
+ constexpr
+ inline T
+ max (std::initializer_list<T> i)
+ {
+   const T *b = i.begin ();
+   const T *e = i.end ();
+   if (b == e) return *b;
+   const T *r = b;
+   while (++b != e)
+   if (*r < *b)
+     r = b;
+   return *r;
+ }
+ 
+ template <typename alphabet_type>
+ constexpr char to_char(alphabet_type const alph)
+ {
+   return alph.to_char();
+ }
+ 
+ template <typename ...alphabet_types>
+ struct union_composition
+ {
+   static constexpr size_t value_size = (alphabet_types::value_size + ... );
+   unsigned char _value;
+   template <size_t fixed_size, typename alphabet_t>
+   static constexpr auto value_to_char_helper(alphabet_t alphabet)
+   {
+     array<char, fixed_size> value_to_char{};
+     for (size_t i = 0u; i < alphabet_t::value_size; ++i)
+       value_to_char[i] = to_char(alphabet.assign_rank(i));
+     return value_to_char;
+   }
+ 
+   static constexpr auto make_value_to_char()
+   {
+     constexpr auto N = sizeof...(alphabet_types);
+     constexpr array<size_t, N> alphabet_sizes { alphabet_types::value_size... };
+     constexpr size_t fixed_size = max({alphabet_types::value_size...});
+     array value_to_char_tables = array<array<char, fixed_size>, N> {
+       value_to_char_helper<fixed_size>(alphabet_types{})...
+     };
+     array<char, value_size> value_to_char{};
+     for (size_t i = 0u, value = 0u; i < N; ++i)
+       for (size_t k = 0u; k < alphabet_sizes[i]; ++k, ++value)
+         value_to_char[value] = value_to_char_tables[i][k];
+     return value_to_char;
+   }
+ };
+ 
+ struct gap
+ {
+   constexpr char to_char() const noexcept { return '-'; }
+   constexpr gap & assign_rank([[maybe_unused]] bool const i) noexcept { return *this; }
+   static constexpr size_t value_size{1};
+ };
+ 
+ struct dna4
+ {
+   constexpr char to_char() const noexcept { return value_to_char[_value]; }
+   constexpr dna4 & assign_rank(unsigned char const c) { _value = c; return *this; }
+   static constexpr size_t value_size{4};
+   static constexpr char value_to_char[value_size] { 'A', 'C', 'G', 'T' };
+   unsigned char _value;
+ };
+ 
+ struct dna5
+ {
+   constexpr char to_char() const noexcept { return value_to_char[_value]; }
+   constexpr dna5 & assign_rank(unsigned char const c) { _value = c; return *this; }
+   static constexpr size_t value_size{5};
+   static constexpr char value_to_char[value_size] { 'A', 'C', 'G', 'T', 'N' };
+   unsigned char _value;
+ };
+ 
+ constexpr array value_to_char1 = union_composition<dna4>::make_value_to_char();
+ static_assert(value_to_char1.size() == 4u);
+ static_assert(value_to_char1[0] == 'A');
+ static_assert(value_to_char1[1] == 'C');
+ static_assert(value_to_char1[2] == 'G');
+ static_assert(value_to_char1[3] == 'T');
+ 
+ constexpr array value_to_char2 = union_composition<dna4, gap>::make_value_to_char();
+ static_assert(value_to_char2.size() == 5u);
+ static_assert(value_to_char2[0] == 'A');
+ static_assert(value_to_char2[1] == 'C');
+ static_assert(value_to_char2[2] == 'G');
+ static_assert(value_to_char2[3] == 'T');
+ static_assert(value_to_char2[4] == '-');
+ 
+ constexpr array value_to_char3 = union_composition<dna4, gap, dna5>::make_value_to_char();
+ static_assert(value_to_char3.size() == 10u);
+ static_assert(value_to_char3[0] == 'A');
+ static_assert(value_to_char3[1] == 'C');
+ static_assert(value_to_char3[2] == 'G');
+ static_assert(value_to_char3[3] == 'T');
+ static_assert(value_to_char3[4] == '-');
+ static_assert(value_to_char3[5] == 'A');
+ static_assert(value_to_char3[6] == 'C');
+ static_assert(value_to_char3[7] == 'G');
+ static_assert(value_to_char3[8] == 'T');
+ static_assert(value_to_char3[9] == 'N');
+ 
+ constexpr array value_to_char4 = union_composition<dna5, gap, dna4>::make_value_to_char();
+ static_assert(value_to_char4.size() == 10u);
+ static_assert(value_to_char4[0] == 'A');
+ static_assert(value_to_char4[1] == 'C');
+ static_assert(value_to_char4[2] == 'G');
+ static_assert(value_to_char4[3] == 'T');
+ static_assert(value_to_char4[4] == 'N');
+ static_assert(value_to_char4[5] == '-');
+ static_assert(value_to_char4[6] == 'A');
+ static_assert(value_to_char4[7] == 'C');
+ static_assert(value_to_char4[8] == 'G');
+ static_assert(value_to_char4[9] == 'T');
+ 
+ constexpr array value_to_char5 = union_composition<gap, dna4, dna5>::make_value_to_char();
+ static_assert(value_to_char5.size() == 10u);
+ static_assert(value_to_char5[0] == '-');
+ static_assert(value_to_char5[1] == 'A');
+ static_assert(value_to_char5[2] == 'C');
+ static_assert(value_to_char5[3] == 'G');
+ static_assert(value_to_char5[4] == 'T');
+ static_assert(value_to_char5[5] == 'A');
+ static_assert(value_to_char5[6] == 'C');
+ static_assert(value_to_char5[7] == 'G');
+ static_assert(value_to_char5[8] == 'T');
+ static_assert(value_to_char5[9] == 'N');
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/constexpr-if13.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/constexpr-if13.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/constexpr-if13.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/constexpr-if13.C	Thu Mar 22 14:14:06 2018
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/84854
+ // { dg-options -std=c++17 }
+ 
+ constexpr int foo () { return 1; }
+ constexpr int foo (int) { return 2; }
+ 
+ template <typename>
+ void a()
+ {
+   if constexpr(foo) { };
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C	Fri Feb 16 21:06:45 2018
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/84420
+ // { dg-additional-options -std=c++17 }
+ 
+ int main(){
+     int a[1]{};
+     [&a]{
+         auto [v] = a;
+         (void)v;
+     }();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp10.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp10.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp10.C	Sat Dec 16 00:41:10 2017
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp10.C	Mon Apr 23 14:22:58 2018
*************** void f3() { auto [ x ] = a3; }	// { dg-e
*** 20,26 ****
  
  struct A3a { int i,j; int get(); } a3a;
  template<> struct std::tuple_size<A3a> { enum { value = 1 }; };
! void f3a() { auto [ x ] = a3a; }	// { dg-error "get<0>" }
  
  struct A3b { int i,j; } a3b;
  int get(A3b&&);
--- 20,26 ----
  
  struct A3a { int i,j; int get(); } a3a;
  template<> struct std::tuple_size<A3a> { enum { value = 1 }; };
! void f3a() { auto [ x ] = a3a; }	// { dg-error "get" }
  
  struct A3b { int i,j; } a3b;
  int get(A3b&&);
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp35.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp35.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp35.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp35.C	Sat Mar  3 13:16:27 2018
***************
*** 0 ****
--- 1,35 ----
+ // PR c++/83958
+ // { dg-do compile { target c++11 } }
+ // { dg-options "" }
+ 
+ template <typename = void> struct A;
+ class B;
+ template <typename, typename, typename = A<>> class C;
+ template <typename, typename> struct D;
+ template <typename T, typename U, typename V, typename, typename, typename W>
+ struct E {
+   using X = W;
+   X operator* ();
+   T operator++ ();
+   template <typename P, typename R, typename S, typename Q>
+   bool operator!= (E<P, U, V, R, S, Q>);
+ };
+ template <typename T, typename U, typename>
+ struct F {
+   class G;
+   using H = D<T, U>;
+   using I = E<G, T, U, G, H, H &>;
+   class G : public I {};
+   G begin ();
+   G end ();
+ };
+ template <typename T, typename U, typename V> struct C : F<T, U, V> {
+   using J = F<T, U, V>;
+   using J::begin;
+   using J::end;
+ };
+ using K = class L;
+ struct M {
+   void foo () { for (auto & [ a ] : m) {} }	// { dg-error "incomplete type" }
+   C<K, B> m;					// { dg-warning "only available with" "" { target c++14_down } .-1 }
+ };
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp36.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp36.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp36.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp36.C	Sat Mar  3 13:19:00 2018
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/84031
+ // { dg-do compile { target c++11 } }
+ // { dg-options "" }
+ 
+ struct A { unsigned char : 1, a1 : 1, a2 : 2, : 1, a3 : 3; };
+ struct B { unsigned char : 1, : 7; };
+ struct C : B { constexpr C () : c1 (1), c2 (2), c3 (3) {} unsigned char : 1, c1 : 1, c2 : 2, : 1, c3 : 3; };
+ struct D : C { constexpr D () {} unsigned char : 1, : 7; };
+ 
+ int
+ main ()
+ {
+   static constexpr A a { 1, 2, 3 };
+   const auto &[a1, a2, a3] = a;		// { dg-warning "only available with" "" { target c++14_down } }
+   static_assert (a1 == 1 && a2 == 2 && a3 == 3, "");
+   static constexpr D d;
+   const auto &[d1, d2, d3] = d;		// { dg-warning "only available with" "" { target c++14_down } }
+   static_assert (d1 == 1 && d2 == 2 && d3 == 3, "");
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp37.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp37.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp37.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp37.C	Mon Apr 23 14:22:58 2018
***************
*** 0 ****
--- 1,62 ----
+ // { dg-additional-options -std=c++17 }
+ // { dg-do compile }
+ 
+ #include <memory>
+ #include <tuple>
+ #include <string>
+ 
+ struct X : private std::shared_ptr<int>
+ {
+   std::string fun_payload;
+ };
+ 
+ template<int N> std::string& get(X& x)
+ {
+   if constexpr(N==0) return x.fun_payload;
+ }
+ 
+ namespace std {
+   template<> class tuple_size<X> : public std::integral_constant<int, 1> {};
+   template<> class tuple_element<0, X> {public: using type = std::string;};
+ }
+ 
+ struct X2 : private std::shared_ptr<int>
+ {
+   int fun_payload;
+   template <class T> void get();
+ };
+ 
+ template<int N> int& get(X2& x)
+ {
+   if constexpr(N==0) return x.fun_payload;
+ }
+ 
+ namespace std {
+   template<> class tuple_size<X2> : public std::integral_constant<int, 1> {};
+   template<> class tuple_element<0, X2> {public: using type = int;};
+ }
+ 
+ class X3
+ {
+   double fun_payload;
+ public:
+   template <int N> double& get()
+   {
+     if constexpr(N==0) return fun_payload;
+   }
+ };
+ 
+ namespace std {
+   template<> class tuple_size<X3> : public std::integral_constant<int, 1> {};
+   template<> class tuple_element<0, X3> {public: using type = double;};
+ }
+ 
+ int main()
+ {
+   X x;
+   auto& [b1] = x;
+   X2 x2;
+   auto& [b2] = x2;
+   X3 x3;
+   auto& [b3] = x3;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp38.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp38.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp38.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp38.C	Mon Apr 23 20:52:47 2018
***************
*** 0 ****
--- 1,48 ----
+ // { dg-additional-options -std=c++17 }
+ // { dg-do compile }
+ 
+ class X
+ {
+    int a, b;
+    void f()
+    {
+      auto[x,y] = *this;
+    }
+ };
+ 
+ class X2
+ {
+    int a, b;
+    void f(X2& other)
+    {
+      auto[x,y] = other;
+    }
+ };
+ 
+ struct X3
+ {
+   friend void foo();
+ private:
+   int a;
+ };
+ 
+ void foo()
+ {
+   X3 x;
+   auto [a] = x;
+ }
+ 
+ struct X4
+ {
+   int a;
+ };
+ 
+ struct X5 : private X4
+ {
+   friend void foo2();
+ };
+ 
+ void foo2() {
+   X5 x;
+   auto [a] = x;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp4.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp4.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp4.C	Wed Jan 11 11:47:30 2017
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp4.C	Mon Apr 23 20:52:47 2018
*************** test (A &a, B &b, C &c, D &d, E &e, F &f
*** 18,27 ****
  					// { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
    auto [ k ] { b };			// { dg-error "cannot decompose class type 'B' because it has an anonymous union member" }
  					// { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
!   auto [ l, l2 ] = c;			// { dg-error "cannot decompose non-public member 'C::b' of 'C'" }
  					// { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
    auto [ m ] = d;			// { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } }
!   auto [ n ] { e };			// { dg-error "cannot decompose non-public member 'E::a' of 'E'" }
  					// { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
    auto [ o ] { f };			// { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } }
    auto & [ p ] { g };			// { dg-error "cannot decompose class type 'G': both it and its base class 'F' have non-static data members" }
--- 18,27 ----
  					// { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
    auto [ k ] { b };			// { dg-error "cannot decompose class type 'B' because it has an anonymous union member" }
  					// { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
!   auto [ l, l2 ] = c;			// { dg-error "cannot decompose inaccessible member 'C::b' of 'C'" }
  					// { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
    auto [ m ] = d;			// { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } }
!   auto [ n ] { e };			// { dg-error "cannot decompose inaccessible member 'E::a' of 'E'" }
  					// { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } .-1 }
    auto [ o ] { f };			// { dg-warning "decomposition declaration only available with -std=c..1z or -std=gnu..1z" "" { target c++14_down } }
    auto & [ p ] { g };			// { dg-error "cannot decompose class type 'G': both it and its base class 'F' have non-static data members" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp41.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp41.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp41.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp41.C	Fri Jun 22 21:06:41 2018
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/85208
+ // { dg-do compile { target c++11 } }
+ // { dg-require-weak "" }
+ // { dg-options "" }
+ 
+ #pragma weak _ZDC1d1e1fE
+ struct A { int i, j, k; };
+ auto [a, b, c] = A ();	// { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
+ auto [d, e, f] = A ();	// { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp42.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp42.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/decomp42.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/decomp42.C	Fri Jun 22 21:07:16 2018
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/85210
+ // { dg-do compile { target c++11 } }
+ // { dg-options "" }
+ 
+ struct A { int i; };
+ 
+ template <int>
+ void
+ foo (int j)
+ {
+   auto [j] = A{j};	// { dg-error "shadows a parameter" }
+ }			// { dg-warning "decomposition declaration only available with" "" { target c++14_down } .-1 }
+ 
+ void
+ bar ()
+ {
+   foo<0> (0);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/desig7.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/desig7.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/desig7.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/desig7.C	Fri Jun 22 20:44:39 2018
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/84874
+ // { dg-do compile { target c++11 } }
+ // { dg-options "" }
+ 
+ struct A { int a, b; };
+ struct B { A d; };
+ 
+ void
+ foo (B *x)
+ {
+   *x = { .d = { .b = 5 } };	// { dg-message "non-trivial designated initializers not supported" }
+ }
+ 
+ void
+ bar (A *x)
+ {
+   *x = { .b = 6 };		// { dg-message "non-trivial designated initializers not supported" }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/desig8.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/desig8.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/desig8.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/desig8.C	Fri Jun 22 20:47:57 2018
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/84874
+ // { dg-do compile { target c++1z } }
+ // { dg-options "" }
+ 
+ struct A { int a; struct { int b; }; };
+ struct B { A d; };
+ 
+ void
+ foo (B *x)
+ {
+   *x = { .d = { .b = 5 } };	// { dg-message "non-trivial designated initializers not supported" }
+ }
+ 
+ void
+ bar (A *x)
+ {
+   *x = { .b = 6 };		// { dg-message "non-trivial designated initializers not supported" }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/inh-ctor38.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/inh-ctor38.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/inh-ctor38.C	Fri Jan 20 17:53:44 2017
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/inh-ctor38.C	Fri Jan 26 13:48:37 2018
***************
*** 1,17 ****
  // { dg-do run { target c++11 } }
  // PR78495 failed to propagate pass-by-value struct to base ctor.
  
  struct Ptr {
    void *ptr = 0;
  
    Ptr() {}
    Ptr(Ptr const&) = delete;
!   Ptr(Ptr&& other) : ptr (other.ptr) {}
  };
  
  struct Base {
    Ptr val;
!   Base(Ptr val_) : val(static_cast<Ptr&&>(val_)) {}
  };
  
  struct Derived: Base {
--- 1,19 ----
  // { dg-do run { target c++11 } }
  // PR78495 failed to propagate pass-by-value struct to base ctor.
  
+ static int moves = 0;
+ 
  struct Ptr {
    void *ptr = 0;
  
    Ptr() {}
    Ptr(Ptr const&) = delete;
!   Ptr(Ptr&& other) : ptr (other.ptr) {moves++;}
  };
  
  struct Base {
    Ptr val;
!   Base(Ptr val_);
  };
  
  struct Derived: Base {
*************** void *Foo () {
*** 27,31 ****
  }
  
  int main () {
!   return Foo () != 0;
  }
--- 29,41 ----
  }
  
  int main () {
!   if (Foo ())
!     return 1;
! 
!   if (moves != 2)
!     return 2;
! 
!   return 0;
  }
+ 
+ Base::Base(Ptr val_) : val(static_cast<Ptr&&>(val_)) {}
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/launder7.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/launder7.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/launder7.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/launder7.C	Sat Mar  3 13:37:47 2018
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/84445
+ // { dg-do compile }
+ 
+ struct A { virtual void foo (); };
+ 
+ void
+ bar (A *p)
+ {
+   __builtin_launder (p)->foo ();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/launder8.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/launder8.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/launder8.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/launder8.C	Sat Mar  3 13:36:20 2018
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/84444
+ // { dg-do compile }
+ // { dg-options "-O2" }
+ 
+ struct A {};
+ 
+ __UINTPTR_TYPE__
+ foo (A *p)
+ {
+   return (__UINTPTR_TYPE__) __builtin_launder (p);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type19.C gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type19.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type19.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type19.C	Tue Apr  3 17:46:41 2018
***************
*** 0 ****
--- 1,12 ----
+ // { dg-do compile { target c++11 } }
+ 
+ #include "noexcept-type19.h"
+ 
+ extern "C" void *malloc (size_t);
+ 
+ template<class T> void f(T*);
+ 
+ int main()
+ {
+   f<decltype(malloc)>(operator new);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type19.h gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type19.h
*** gcc-7.3.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type19.h	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type19.h	Tue Apr  3 17:46:41 2018
***************
*** 0 ****
--- 1,4 ----
+ #pragma GCC system_header
+ 
+ typedef decltype(sizeof(0)) size_t;
+ extern "C" void *malloc (size_t) throw();
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/debug/dwarf2/pr87462.C gcc-7.4.0/gcc/testsuite/g++.dg/debug/dwarf2/pr87462.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/debug/dwarf2/pr87462.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/debug/dwarf2/pr87462.C	Thu Nov 15 14:31:35 2018
***************
*** 0 ****
--- 1,20 ----
+ // { dg-additional-options "-dA -std=gnu++17 -gdwarf-4 -O1 -fdebug-types-section" }
+ // reject .pseudo label, but "label" is ok.
+ // { dg-final { scan-assembler-not "\[^L\"\]_ZN5Test18testFuncEv" } }
+ // undefined ref to _ZN5Test18testFuncEv
+ 
+ class Test1 {
+ public:
+   static int testFunc() { return 1; }
+ };
+ 
+ template <typename T,
+           T (*funcImpl)()>
+ class TestWrapper {
+ public:
+   static T func() __attribute((noinline)) { return (*funcImpl)(); } 
+ };
+ 
+ int main() {
+   return TestWrapper<int, &Test1::testFunc>::func();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/debug/dwarf2/pr88006.C gcc-7.4.0/gcc/testsuite/g++.dg/debug/dwarf2/pr88006.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/debug/dwarf2/pr88006.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/debug/dwarf2/pr88006.C	Thu Nov 15 14:31:35 2018
***************
*** 0 ****
--- 1,39 ----
+ // { dg-additional-options "-dA -std=gnu++17 -gdwarf-4 -O1 -fdebug-types-section" }
+ // reject .pseudo label, but "label" is ok.
+ // { dg-final { scan-assembler-not "\[^\"\]_ZN3Foo4mfunEv" } }
+ // undefined ref to _ZN3Foo4mfunEv
+ 
+ struct Foo {
+   void mfun () {}
+ };
+ 
+ struct A { static constexpr bool Value = false; };
+ 
+ template <bool> struct B { typedef int Type; };
+ 
+ class Arg
+ {
+   template <typename Unused> struct Local : A {};
+ 
+ public:
+   template <typename Init, typename = typename B<Local<Init>::Value>::Type>
+   Arg (Init) {}
+ };
+ 
+ class Lambda {
+   static constexpr int Unused = 0;
+     
+ public:
+   Lambda (Arg);
+ };
+ 
+ // Generated ref to Foo::mfun in the type die of an instantiation of this
+ template <void (Foo::*unused)()> struct Callable {};
+ 
+ class I {
+   I() : lamb ([this] {}) {}
+ 
+   Lambda lamb;
+ 
+   Callable<&Foo::mfun> bm;
+ };
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/diagnostic/pr85464.C gcc-7.4.0/gcc/testsuite/g++.dg/diagnostic/pr85464.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/diagnostic/pr85464.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/diagnostic/pr85464.C	Thu Apr 19 15:29:03 2018
***************
*** 0 ****
--- 1,5 ----
+ // { dg-options "-Wignored-qualifiers" }
+ struct Test {
+    operator int const(); // { dg-warning "type qualifiers ignored" }
+    operator int const() const; // { dg-warning "type qualifiers ignored" }
+ };
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ext/asm14.C gcc-7.4.0/gcc/testsuite/g++.dg/ext/asm14.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ext/asm14.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ext/asm14.C	Fri Jun 22 21:20:53 2018
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/85659
+ // { dg-do compile }
+ 
+ struct S { S (); ~S (); int s; };
+ 
+ void
+ foo (S &s)
+ {
+   __asm volatile ("" : "+m,r" (s) : : "memory");
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ext/asm15.C gcc-7.4.0/gcc/testsuite/g++.dg/ext/asm15.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ext/asm15.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ext/asm15.C	Fri Jun 22 21:20:53 2018
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/85659
+ // { dg-do compile }
+ 
+ struct S { S (); ~S (); int s; };
+ 
+ void
+ foo (S &s)
+ {
+   __asm volatile ("" : "+r" (s) : : "memory");	// { dg-error "" }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ext/asm16.C gcc-7.4.0/gcc/testsuite/g++.dg/ext/asm16.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ext/asm16.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ext/asm16.C	Fri Jun 22 21:20:53 2018
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/85659
+ // { dg-do compile }
+ 
+ struct S { S (); ~S (); int s[64]; } s;
+ 
+ void
+ foo ()
+ {
+   __asm volatile ("" : "=r" (s) : : "memory");	// { dg-error "" }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ext/atomic-4.C gcc-7.4.0/gcc/testsuite/g++.dg/ext/atomic-4.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ext/atomic-4.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ext/atomic-4.C	Fri Jun 22 21:05:52 2018
***************
*** 0 ****
--- 1,9 ----
+ // PR inline-asm/85172
+ // { dg-do compile }
+ // { dg-options "" }
+ 
+ int
+ foo (int *p)
+ {
+   return !__atomic_always_lock_free (4, ({ __asm (""); p; }));
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ext/attr-noinline-4.C gcc-7.4.0/gcc/testsuite/g++.dg/ext/attr-noinline-4.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ext/attr-noinline-4.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ext/attr-noinline-4.C	Thu Apr  5 18:27:43 2018
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/84665
+ 
+ struct S {} a[1];
+ 
+ template <int N>
+ void
+ foo ()
+ {
+   __attribute__ ((noinline (a[0]))) int c = 0; // { dg-error "wrong number of arguments" }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ext/builtin12.C gcc-7.4.0/gcc/testsuite/g++.dg/ext/builtin12.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ext/builtin12.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ext/builtin12.C	Tue Apr  3 19:14:03 2018
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/85113
+ // { dg-do compile { target c++14 } }
+ 
+ template<bool> struct A {};
+ 
+ constexpr int foo()
+ {
+   A<__builtin_constant_p(0)> a{};
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ext/builtin13.C gcc-7.4.0/gcc/testsuite/g++.dg/ext/builtin13.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ext/builtin13.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ext/builtin13.C	Fri Jun 22 21:05:52 2018
***************
*** 0 ****
--- 1,9 ----
+ // PR inline-asm/85172
+ // { dg-do compile }
+ // { dg-options "" }
+ 
+ int
+ foo ()
+ {
+   return !__builtin_constant_p (({ __asm (""); 0; }));
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C gcc-7.4.0/gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ext/is_trivially_constructible6.C	Mon Feb 26 06:09:07 2018
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/81589
+ 
+ template <typename k>
+ struct z {
+   z() {
+     k::error;
+   }
+ };
+ 
+ int x = __is_trivially_constructible(z<int>);
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ext/offsetof2.C gcc-7.4.0/gcc/testsuite/g++.dg/ext/offsetof2.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ext/offsetof2.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ext/offsetof2.C	Fri Jun 22 21:23:03 2018
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/85662
+ // { dg-do compile { target c++11 } }
+ 
+ struct S { unsigned long x[31]; };
+ struct T { bool b; S f; };
+ static_assert (__builtin_offsetof (T, f.x[31 - 1]) == __builtin_offsetof (T, f.x[30]), "");
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ext/offsetof3.C gcc-7.4.0/gcc/testsuite/g++.dg/ext/offsetof3.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ext/offsetof3.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ext/offsetof3.C	Fri Jun 22 21:23:03 2018
***************
*** 0 ****
--- 1,5 ----
+ // PR c++/85662
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-O2" }
+ 
+ #include "offsetof2.C"
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ext/stmtexpr22.C gcc-7.4.0/gcc/testsuite/g++.dg/ext/stmtexpr22.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ext/stmtexpr22.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ext/stmtexpr22.C	Fri Feb 16 21:06:50 2018
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/81853
+ // { dg-do compile { target c++11 } }
+ // { dg-options "" }
+ 
+ namespace N {
+   enum { i };
+ }
+ 
+ int g ()
+ {
+   constexpr int j = ({ using namespace N; i; });
+   return j;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ext/visibility/lambda1.C gcc-7.4.0/gcc/testsuite/g++.dg/ext/visibility/lambda1.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ext/visibility/lambda1.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ext/visibility/lambda1.C	Wed May  9 02:34:03 2018
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/85646
+ // { dg-do compile { target c++11 } }
+ // { dg-additional-options -fvisibility=hidden }
+ 
+ template<typename T>
+ void foo() {
+     struct inner {
+         inner() {
+             (void)([this] { });
+         }
+     };
+ }
+ 
+ int main() { foo<int>(); }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ext/vla18.C gcc-7.4.0/gcc/testsuite/g++.dg/ext/vla18.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ext/vla18.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ext/vla18.C	Fri Jun 22 20:33:38 2018
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/84767
+ // { dg-do compile }
+ // { dg-options "" }
+ 
+ int v[1][10];
+ 
+ struct A
+ {
+   A (int);
+ };
+ 
+ A::A (int i)
+ {
+   typedef int T[1][i];
+   T *x = (T *) v;
+   (*x)[0][0] = 0;
+ }
+ 
+ A a = 10;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/gomp/pr84430.C gcc-7.4.0/gcc/testsuite/g++.dg/gomp/pr84430.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/gomp/pr84430.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/gomp/pr84430.C	Sat Mar  3 13:34:48 2018
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/84430
+ // { dg-do compile { target c++11 } }
+ 
+ void
+ foo ()
+ {
+   auto a = [] {
+     #pragma omp simd
+     for (int i = 0; i < 10; ++i)
+       ;
+   };
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/gomp/pr84448.C gcc-7.4.0/gcc/testsuite/g++.dg/gomp/pr84448.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/gomp/pr84448.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/gomp/pr84448.C	Sat Mar  3 13:35:37 2018
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/84448
+ // { dg-do compile }
+ 
+ struct A
+ {
+   operator int () const;
+   A& operator += (int);
+   A& operator ++ ();
+ };
+ 
+ void
+ foo (A a, A b)
+ {
+   #pragma omp for
+   for (A i = a; i <=; ++i)	// { dg-error "expected primary-expression before" }
+     ;				// { dg-error "invalid controlling predicate" "" { target *-*-* } .-1 }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/gomp/pr84556.C gcc-7.4.0/gcc/testsuite/g++.dg/gomp/pr84556.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/gomp/pr84556.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/gomp/pr84556.C	Sat Mar  3 13:39:52 2018
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/84556
+ // { dg-do compile }
+ // { dg-options "-std=c++17 -fopenmp-simd" }
+ 
+ void
+ foo ()
+ {
+   auto x = [] ()
+   {
+     #pragma omp simd
+     for (int i = 0; i < 8; ++i)
+       ;
+   };
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/gomp/pr84557.C gcc-7.4.0/gcc/testsuite/g++.dg/gomp/pr84557.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/gomp/pr84557.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/gomp/pr84557.C	Sat Mar  3 13:40:39 2018
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/84557
+ // { dg-do compile }
+ 
+ template<int> struct A {};
+ template<int> struct B {};
+ 
+ void
+ foo ()
+ {
+   #pragma omp parallel firstprivate (A)		// { dg-error "is not a variable in clause" }
+   ;
+   #pragma omp parallel firstprivate (B<0>)	// { dg-error "is not a variable in clause" }
+   ;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/gomp/pr84791.C gcc-7.4.0/gcc/testsuite/g++.dg/gomp/pr84791.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/gomp/pr84791.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/gomp/pr84791.C	Fri Jun 22 21:02:52 2018
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/84791
+ // { dg-do compile }
+ 
+ typedef int I;
+ 
+ template <int>
+ void
+ foo ()
+ {
+   I i;
+   #pragma omp parallel reduction (I::I: i)	// { dg-error "'I' is not a class, namespace, or enumeration" "" { target c++11 } }
+     ;						// { dg-error "'I' is not a class or namespace" "" { target c++98_only } .-1 }
+ }
+ 
+ template void foo<0> ();
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/guality/pr86687.C gcc-7.4.0/gcc/testsuite/g++.dg/guality/pr86687.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/guality/pr86687.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/guality/pr86687.C	Tue Oct 23 15:06:17 2018
***************
*** 0 ****
--- 1,28 ----
+ // PR debug/86687
+ // { dg-do run }
+ // { dg-options "-g" }
+ 
+ class string {
+ public:
+   string (int p) { this->p = p ; }
+   string (const string &s) { this->p = s.p; }
+ 
+   int p;
+ };
+ 
+ class foo {
+ public:
+   foo (string dir_hint) {
+     p = dir_hint.p; // { dg-final { gdb-test 16 "dir_hint.p" 3 } }
+   }
+ 
+   int p;
+ };
+ 
+ int
+ main (void)
+ {
+   string s = 3;
+   foo bar(s);
+   return !(bar.p == 3);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/inherit/covariant22.C gcc-7.4.0/gcc/testsuite/g++.dg/inherit/covariant22.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/inherit/covariant22.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/inherit/covariant22.C	Fri Jun 22 20:59:31 2018
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/85068
+ // { dg-do compile }
+ 
+ struct A;
+ 
+ struct B
+ {
+   virtual A *foo ();	// { dg-error "overriding" }
+ };
+ 
+ struct C : virtual B
+ {
+   virtual C *foo ();	// { dg-error "invalid covariant return type for" }
+ };
+ 
+ struct D : C
+ {
+   virtual C *foo ();
+ };
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/init/new44.C gcc-7.4.0/gcc/testsuite/g++.dg/init/new44.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/init/new44.C	Wed Nov 11 14:47:03 2015
--- gcc-7.4.0/gcc/testsuite/g++.dg/init/new44.C	Fri Mar 23 14:39:47 2018
*************** test_one_dim_short_array ()
*** 87,96 ****
  static void __attribute__ ((used))
  test_two_dim_char_array ()
  {
!     p = new char [1][MAX];              // { dg-error "size of unnamed array" }
!     p = new char [1][MAX - 1];          // { dg-error "size of unnamed array" }
!     p = new char [1][MAX - 2];          // { dg-error "size of unnamed array" }
!     p = new char [1][MAX - 99];         // { dg-error "size of unnamed array" }
      p = new char [1][MAX / 2];          // { dg-error "size of array" }
      p = new char [1][MAX / 2 - 1];      // { dg-error "size of array" }
      p = new char [1][MAX / 2 - 2];      // { dg-error "size of array" }
--- 87,96 ----
  static void __attribute__ ((used))
  test_two_dim_char_array ()
  {
!     p = new char [1][MAX];              // { dg-error "size of (unnamed )?array" }
!     p = new char [1][MAX - 1];          // { dg-error "size of (unnamed )?array" }
!     p = new char [1][MAX - 2];          // { dg-error "size of (unnamed )?array" }
!     p = new char [1][MAX - 99];         // { dg-error "size of (unnamed )?array" }
      p = new char [1][MAX / 2];          // { dg-error "size of array" }
      p = new char [1][MAX / 2 - 1];      // { dg-error "size of array" }
      p = new char [1][MAX / 2 - 2];      // { dg-error "size of array" }
*************** test_two_dim_char_array ()
*** 104,121 ****
      p = new char [1][MAX / 2 - 7];      // okay
      p = new char [1][MAX / 2 - 8];      // okay
  
!     p = new char [2][MAX];              // { dg-error "size of unnamed array" }
!     p = new char [2][MAX - 1];          // { dg-error "size of unnamed array" }
!     p = new char [2][MAX - 2];          // { dg-error "size of unnamed array" }
      p = new char [2][MAX / 2];          // { dg-error "size of array" }
      p = new char [2][MAX / 2 - 1];      // { dg-error "size of array" }
      p = new char [2][MAX / 2 - 2];      // { dg-error "size of array" }
      p = new char [2][MAX / 2 - 7];      // { dg-error "size of array" }
      p = new char [2][MAX / 2 - 8];      // { dg-error "size of array" }
  
!     p = new char [MAX][MAX];            // { dg-error "size of unnamed array" }
!     p = new char [MAX][MAX - 1];        // { dg-error "size of unnamed array" }
!     p = new char [MAX][MAX - 2];        // { dg-error "size of unnamed array" }
      p = new char [MAX][MAX / 2];        // { dg-error "size of array" }
      p = new char [MAX][MAX / 2 - 1];    // { dg-error "size of array" }
      p = new char [MAX][MAX / 2 - 2];    // { dg-error "size of array" }
--- 104,121 ----
      p = new char [1][MAX / 2 - 7];      // okay
      p = new char [1][MAX / 2 - 8];      // okay
  
!     p = new char [2][MAX];              // { dg-error "size of (unnamed )?array" }
!     p = new char [2][MAX - 1];          // { dg-error "size of (unnamed )?array" }
!     p = new char [2][MAX - 2];          // { dg-error "size of (unnamed )?array" }
      p = new char [2][MAX / 2];          // { dg-error "size of array" }
      p = new char [2][MAX / 2 - 1];      // { dg-error "size of array" }
      p = new char [2][MAX / 2 - 2];      // { dg-error "size of array" }
      p = new char [2][MAX / 2 - 7];      // { dg-error "size of array" }
      p = new char [2][MAX / 2 - 8];      // { dg-error "size of array" }
  
!     p = new char [MAX][MAX];            // { dg-error "size of (unnamed )?array" }
!     p = new char [MAX][MAX - 1];        // { dg-error "size of (unnamed )?array" }
!     p = new char [MAX][MAX - 2];        // { dg-error "size of (unnamed )?array" }
      p = new char [MAX][MAX / 2];        // { dg-error "size of array" }
      p = new char [MAX][MAX / 2 - 1];    // { dg-error "size of array" }
      p = new char [MAX][MAX / 2 - 2];    // { dg-error "size of array" }
*************** test_two_dim_char_array ()
*** 142,151 ****
  static __attribute__ ((used)) void
  test_three_dim_char_array ()
  {
!     p = new char [1][1][MAX];           // { dg-error "size of unnamed array" }
!     p = new char [1][1][MAX - 1];       // { dg-error "size of unnamed array" }
!     p = new char [1][1][MAX - 2];       // { dg-error "size of unnamed array" }
!     p = new char [1][1][MAX - 99];      // { dg-error "size of unnamed array" }
      p = new char [1][1][MAX / 2];       // { dg-error "size of array" }
      p = new char [1][1][MAX / 2 - 1];   // { dg-error "size of array" }
      p = new char [1][1][MAX / 2 - 2];   // { dg-error "size of array" }
--- 142,151 ----
  static __attribute__ ((used)) void
  test_three_dim_char_array ()
  {
!     p = new char [1][1][MAX];           // { dg-error "size of (unnamed )?array" }
!     p = new char [1][1][MAX - 1];       // { dg-error "size of (unnamed )?array" }
!     p = new char [1][1][MAX - 2];       // { dg-error "size of (unnamed )?array" }
!     p = new char [1][1][MAX - 99];      // { dg-error "size of (unnamed )?array" }
      p = new char [1][1][MAX / 2];       // { dg-error "size of array" }
      p = new char [1][1][MAX / 2 - 1];   // { dg-error "size of array" }
      p = new char [1][1][MAX / 2 - 2];   // { dg-error "size of array" }
*************** test_three_dim_char_array ()
*** 159,177 ****
      p = new char [1][1][MAX / 2 - 7];   // okay
      p = new char [1][1][MAX / 2 - 8];   // okay
  
!     p = new char [1][2][MAX];           // { dg-error "size of unnamed array" }
!     p = new char [1][2][MAX - 1];       // { dg-error "size of unnamed array" }
!     p = new char [1][2][MAX - 2];       // { dg-error "size of unnamed array" }
!     p = new char [1][2][MAX - 99];      // { dg-error "size of unnamed array" }
!     p = new char [1][2][MAX / 2];       // { dg-error "size of unnamed array" }
!     p = new char [1][2][MAX / 2 - 1];   // { dg-error "size of unnamed array" }
!     p = new char [1][2][MAX / 2 - 2];   // { dg-error "size of unnamed array" }
!     p = new char [1][2][MAX / 2 - 3];   // { dg-error "size of unnamed array" }
!     p = new char [1][2][MAX / 2 - 4];   // { dg-error "size of unnamed array" }
!     p = new char [1][2][MAX / 2 - 5];   // { dg-error "size of unnamed array" }
!     p = new char [1][2][MAX / 2 - 6];   // { dg-error "size of unnamed array" }
!     p = new char [1][2][MAX / 2 - 7];   // { dg-error "size of unnamed array" }
!     p = new char [1][2][MAX / 2 - 8];   // { dg-error "size of unnamed array" }
      p = new char [1][2][MAX / 4];       // { dg-error "size of array" }
  
      // Avoid exercising data model-dependent expressions.
--- 159,177 ----
      p = new char [1][1][MAX / 2 - 7];   // okay
      p = new char [1][1][MAX / 2 - 8];   // okay
  
!     p = new char [1][2][MAX];           // { dg-error "size of (unnamed )?array" }
!     p = new char [1][2][MAX - 1];       // { dg-error "size of (unnamed )?array" }
!     p = new char [1][2][MAX - 2];       // { dg-error "size of (unnamed )?array" }
!     p = new char [1][2][MAX - 99];      // { dg-error "size of (unnamed )?array" }
!     p = new char [1][2][MAX / 2];       // { dg-error "size of (unnamed )?array" }
!     p = new char [1][2][MAX / 2 - 1];   // { dg-error "size of (unnamed )?array" }
!     p = new char [1][2][MAX / 2 - 2];   // { dg-error "size of (unnamed )?array" }
!     p = new char [1][2][MAX / 2 - 3];   // { dg-error "size of (unnamed )?array" }
!     p = new char [1][2][MAX / 2 - 4];   // { dg-error "size of (unnamed )?array" }
!     p = new char [1][2][MAX / 2 - 5];   // { dg-error "size of (unnamed )?array" }
!     p = new char [1][2][MAX / 2 - 6];   // { dg-error "size of (unnamed )?array" }
!     p = new char [1][2][MAX / 2 - 7];   // { dg-error "size of (unnamed )?array" }
!     p = new char [1][2][MAX / 2 - 8];   // { dg-error "size of (unnamed )?array" }
      p = new char [1][2][MAX / 4];       // { dg-error "size of array" }
  
      // Avoid exercising data model-dependent expressions.
*************** test_three_dim_char_array ()
*** 181,190 ****
      p = new char [1][2][MAX / 4 - 3];   // okay
      p = new char [1][2][MAX / 4 - 4];   // okay
  
!     p = new char [2][1][MAX];           // { dg-error "size of unnamed array" }
!     p = new char [2][1][MAX - 1];       // { dg-error "size of unnamed array" }
!     p = new char [2][1][MAX - 2];       // { dg-error "size of unnamed array" }
!     p = new char [2][1][MAX - 99];      // { dg-error "size of unnamed array" }
      p = new char [2][1][MAX / 2];       // { dg-error "size of array" }
      p = new char [2][1][MAX / 2 - 1];   // { dg-error "size of array" }
      p = new char [2][1][MAX / 2 - 2];   // { dg-error "size of array" }
--- 181,190 ----
      p = new char [1][2][MAX / 4 - 3];   // okay
      p = new char [1][2][MAX / 4 - 4];   // okay
  
!     p = new char [2][1][MAX];           // { dg-error "size of (unnamed )?array" }
!     p = new char [2][1][MAX - 1];       // { dg-error "size of (unnamed )?array" }
!     p = new char [2][1][MAX - 2];       // { dg-error "size of (unnamed )?array" }
!     p = new char [2][1][MAX - 99];      // { dg-error "size of (unnamed )?array" }
      p = new char [2][1][MAX / 2];       // { dg-error "size of array" }
      p = new char [2][1][MAX / 2 - 1];   // { dg-error "size of array" }
      p = new char [2][1][MAX / 2 - 2];   // { dg-error "size of array" }
*************** test_three_dim_char_array ()
*** 203,221 ****
      p = new char [2][1][MAX / 4 - 3];   // okay
      p = new char [2][1][MAX / 4 - 4];   // okay
  
!     p = new char [2][2][MAX];           // { dg-error "size of unnamed array" }
!     p = new char [2][2][MAX - 1];       // { dg-error "size of unnamed array" }
!     p = new char [2][2][MAX - 2];       // { dg-error "size of unnamed array" }
!     p = new char [2][2][MAX - 99];      // { dg-error "size of unnamed array" }
!     p = new char [2][2][MAX / 2];       // { dg-error "size of unnamed array" }
!     p = new char [2][2][MAX / 2 - 1];   // { dg-error "size of unnamed array" }
!     p = new char [2][2][MAX / 2 - 2];   // { dg-error "size of unnamed array" }
!     p = new char [2][2][MAX / 2 - 3];   // { dg-error "size of unnamed array" }
!     p = new char [2][2][MAX / 2 - 4];   // { dg-error "size of unnamed array" }
!     p = new char [2][2][MAX / 2 - 5];   // { dg-error "size of unnamed array" }
!     p = new char [2][2][MAX / 2 - 6];   // { dg-error "size of unnamed array" }
!     p = new char [2][2][MAX / 2 - 7];   // { dg-error "size of unnamed array" }
!     p = new char [2][2][MAX / 2 - 8];   // { dg-error "size of unnamed array" }
      p = new char [2][2][MAX / 4];       // { dg-error "size of array" }
      p = new char [2][2][MAX / 4 - 1];   // { dg-error "size of array" }
      p = new char [2][2][MAX / 4 - 2];   // { dg-error "size of array" }
--- 203,221 ----
      p = new char [2][1][MAX / 4 - 3];   // okay
      p = new char [2][1][MAX / 4 - 4];   // okay
  
!     p = new char [2][2][MAX];           // { dg-error "size of (unnamed )?array" }
!     p = new char [2][2][MAX - 1];       // { dg-error "size of (unnamed )?array" }
!     p = new char [2][2][MAX - 2];       // { dg-error "size of (unnamed )?array" }
!     p = new char [2][2][MAX - 99];      // { dg-error "size of (unnamed )?array" }
!     p = new char [2][2][MAX / 2];       // { dg-error "size of (unnamed )?array" }
!     p = new char [2][2][MAX / 2 - 1];   // { dg-error "size of (unnamed )?array" }
!     p = new char [2][2][MAX / 2 - 2];   // { dg-error "size of (unnamed )?array" }
!     p = new char [2][2][MAX / 2 - 3];   // { dg-error "size of (unnamed )?array" }
!     p = new char [2][2][MAX / 2 - 4];   // { dg-error "size of (unnamed )?array" }
!     p = new char [2][2][MAX / 2 - 5];   // { dg-error "size of (unnamed )?array" }
!     p = new char [2][2][MAX / 2 - 6];   // { dg-error "size of (unnamed )?array" }
!     p = new char [2][2][MAX / 2 - 7];   // { dg-error "size of (unnamed )?array" }
!     p = new char [2][2][MAX / 2 - 8];   // { dg-error "size of (unnamed )?array" }
      p = new char [2][2][MAX / 4];       // { dg-error "size of array" }
      p = new char [2][2][MAX / 4 - 1];   // { dg-error "size of array" }
      p = new char [2][2][MAX / 4 - 2];   // { dg-error "size of array" }
*************** test_three_dim_char_array ()
*** 227,245 ****
      p = new char [2][2][MAX / 8 - 2];
      p = new char [2][2][MAX / 8 - 3];
  
!     p = new char [2][MAX][2];           // { dg-error "size of unnamed array" }
!     p = new char [2][MAX - 1][2];       // { dg-error "size of unnamed array" }
!     p = new char [2][MAX - 2][2];       // { dg-error "size of unnamed array" }
!     p = new char [2][MAX - 99][2];      // { dg-error "size of unnamed array" }
!     p = new char [2][MAX / 2][2];       // { dg-error "size of unnamed array" }
!     p = new char [2][MAX / 2 - 1][2];   // { dg-error "size of unnamed array" }
!     p = new char [2][MAX / 2 - 2][2];   // { dg-error "size of unnamed array" }
!     p = new char [2][MAX / 2 - 3][2];   // { dg-error "size of unnamed array" }
!     p = new char [2][MAX / 2 - 4][2];   // { dg-error "size of unnamed array" }
!     p = new char [2][MAX / 2 - 5][2];   // { dg-error "size of unnamed array" }
!     p = new char [2][MAX / 2 - 6][2];   // { dg-error "size of unnamed array" }
!     p = new char [2][MAX / 2 - 7][2];   // { dg-error "size of unnamed array" }
!     p = new char [2][MAX / 2 - 8][2];   // { dg-error "size of unnamed array" }
      p = new char [2][MAX / 4][2];       // { dg-error "size of array" }
      p = new char [2][MAX / 4 - 1][2];   // { dg-error "size of array" }
      p = new char [2][MAX / 4 - 2][2];   // { dg-error "size of array" }
--- 227,245 ----
      p = new char [2][2][MAX / 8 - 2];
      p = new char [2][2][MAX / 8 - 3];
  
!     p = new char [2][MAX][2];           // { dg-error "size of (unnamed )?array" }
!     p = new char [2][MAX - 1][2];       // { dg-error "size of (unnamed )?array" }
!     p = new char [2][MAX - 2][2];       // { dg-error "size of (unnamed )?array" }
!     p = new char [2][MAX - 99][2];      // { dg-error "size of (unnamed )?array" }
!     p = new char [2][MAX / 2][2];       // { dg-error "size of (unnamed )?array" }
!     p = new char [2][MAX / 2 - 1][2];   // { dg-error "size of (unnamed )?array" }
!     p = new char [2][MAX / 2 - 2][2];   // { dg-error "size of (unnamed )?array" }
!     p = new char [2][MAX / 2 - 3][2];   // { dg-error "size of (unnamed )?array" }
!     p = new char [2][MAX / 2 - 4][2];   // { dg-error "size of (unnamed )?array" }
!     p = new char [2][MAX / 2 - 5][2];   // { dg-error "size of (unnamed )?array" }
!     p = new char [2][MAX / 2 - 6][2];   // { dg-error "size of (unnamed )?array" }
!     p = new char [2][MAX / 2 - 7][2];   // { dg-error "size of (unnamed )?array" }
!     p = new char [2][MAX / 2 - 8][2];   // { dg-error "size of (unnamed )?array" }
      p = new char [2][MAX / 4][2];       // { dg-error "size of array" }
      p = new char [2][MAX / 4 - 1][2];   // { dg-error "size of array" }
      p = new char [2][MAX / 4 - 2][2];   // { dg-error "size of array" }
*************** test_three_dim_char_array ()
*** 275,285 ****
      p = new char [MAX / 8 - 2][2][2];
      p = new char [MAX / 8 - 3][2][2];
  
!     p = new char [MAX][MAX][MAX];         // { dg-error "size of unnamed array" }
!     p = new char [MAX][MAX][MAX / 2];     // { dg-error "size of unnamed array" }
!     p = new char [MAX][MAX / 2][MAX];     // { dg-error "size of unnamed array" }
!     p = new char [MAX][MAX / 2][MAX / 2]; // { dg-error "size of unnamed array" }
!     p = new char [MAX / 2][MAX / 2][MAX / 2]; // { dg-error "size of unnamed array" }
  }
  
  // Exercise new expression with N-dimensional arrays where N is
--- 275,285 ----
      p = new char [MAX / 8 - 2][2][2];
      p = new char [MAX / 8 - 3][2][2];
  
!     p = new char [MAX][MAX][MAX];         // { dg-error "size of (unnamed )?array" }
!     p = new char [MAX][MAX][MAX / 2];     // { dg-error "size of (unnamed )?array" }
!     p = new char [MAX][MAX / 2][MAX];     // { dg-error "size of (unnamed )?array" }
!     p = new char [MAX][MAX / 2][MAX / 2]; // { dg-error "size of (unnamed )?array" }
!     p = new char [MAX / 2][MAX / 2][MAX / 2]; // { dg-error "size of (unnamed )?array" }
  }
  
  // Exercise new expression with N-dimensional arrays where N is
*************** test_one_dim_byte_array (void *p)
*** 342,351 ****
  static void __attribute__ ((used))
  test_placement_two_dim_byte_struct_array (void *p)
  {
!     p = new (p) B [1][MAX];             // { dg-error "size of unnamed array" }
!     p = new (p) B [1][MAX - 1];         // { dg-error "size of unnamed array" }
!     p = new (p) B [1][MAX - 2];         // { dg-error "size of unnamed array" }
!     p = new (p) B [1][MAX - 99];        // { dg-error "size of unnamed array" }
      p = new (p) B [1][MAX / 2];         // { dg-error "size of array" }
      p = new (p) B [1][MAX / 2 - 1];     // { dg-error "size of array" }
      p = new (p) B [1][MAX / 2 - 2];     // { dg-error "size of array" }
--- 342,351 ----
  static void __attribute__ ((used))
  test_placement_two_dim_byte_struct_array (void *p)
  {
!     p = new (p) B [1][MAX];             // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][MAX - 1];         // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][MAX - 2];         // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][MAX - 99];        // { dg-error "size of (unnamed )?array" }
      p = new (p) B [1][MAX / 2];         // { dg-error "size of array" }
      p = new (p) B [1][MAX / 2 - 1];     // { dg-error "size of array" }
      p = new (p) B [1][MAX / 2 - 2];     // { dg-error "size of array" }
*************** test_placement_two_dim_byte_struct_array
*** 359,376 ****
      p = new (p) B [1][MAX / 2 - 7];      // okay
      p = new (p) B [1][MAX / 2 - 8];      // okay
  
!     p = new (p) B [2][MAX];             // { dg-error "size of unnamed array" }
!     p = new (p) B [2][MAX - 1];         // { dg-error "size of unnamed array" }
!     p = new (p) B [2][MAX - 2];         // { dg-error "size of unnamed array" }
      p = new (p) B [2][MAX / 2];         // { dg-error "size of array" }
      p = new (p) B [2][MAX / 2 - 1];     // { dg-error "size of array" }
      p = new (p) B [2][MAX / 2 - 2];     // { dg-error "size of array" }
      p = new (p) B [2][MAX / 2 - 7];     // { dg-error "size of array" }
      p = new (p) B [2][MAX / 2 - 8];     // { dg-error "size of array" }
  
!     p = new (p) B [MAX][MAX];           // { dg-error "size of unnamed array" }
!     p = new (p) B [MAX][MAX - 1];       // { dg-error "size of unnamed array" }
!     p = new (p) B [MAX][MAX - 2];       // { dg-error "size of unnamed array" }
      p = new (p) B [MAX][MAX / 2];       // { dg-error "size of array" }
      p = new (p) B [MAX][MAX / 2 - 1];   // { dg-error "size of array" }
      p = new (p) B [MAX][MAX / 2 - 2];   // { dg-error "size of array" }
--- 359,376 ----
      p = new (p) B [1][MAX / 2 - 7];      // okay
      p = new (p) B [1][MAX / 2 - 8];      // okay
  
!     p = new (p) B [2][MAX];             // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][MAX - 1];         // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][MAX - 2];         // { dg-error "size of (unnamed )?array" }
      p = new (p) B [2][MAX / 2];         // { dg-error "size of array" }
      p = new (p) B [2][MAX / 2 - 1];     // { dg-error "size of array" }
      p = new (p) B [2][MAX / 2 - 2];     // { dg-error "size of array" }
      p = new (p) B [2][MAX / 2 - 7];     // { dg-error "size of array" }
      p = new (p) B [2][MAX / 2 - 8];     // { dg-error "size of array" }
  
!     p = new (p) B [MAX][MAX];           // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [MAX][MAX - 1];       // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [MAX][MAX - 2];       // { dg-error "size of (unnamed )?array" }
      p = new (p) B [MAX][MAX / 2];       // { dg-error "size of array" }
      p = new (p) B [MAX][MAX / 2 - 1];   // { dg-error "size of array" }
      p = new (p) B [MAX][MAX / 2 - 2];   // { dg-error "size of array" }
*************** test_placement_two_dim_byte_struct_array
*** 397,406 ****
  static __attribute__ ((used)) void
  test_placement_three_dim_byte_struct_array (void *p)
  {
!     p = new (p) B [1][1][MAX];          // { dg-error "size of unnamed array" }
!     p = new (p) B [1][1][MAX - 1];      // { dg-error "size of unnamed array" }
!     p = new (p) B [1][1][MAX - 2];      // { dg-error "size of unnamed array" }
!     p = new (p) B [1][1][MAX - 99];     // { dg-error "size of unnamed array" }
      p = new (p) B [1][1][MAX / 2];      // { dg-error "size of array" }
      p = new (p) B [1][1][MAX / 2 - 1];  // { dg-error "size of array" }
      p = new (p) B [1][1][MAX / 2 - 2];  // { dg-error "size of array" }
--- 397,406 ----
  static __attribute__ ((used)) void
  test_placement_three_dim_byte_struct_array (void *p)
  {
!     p = new (p) B [1][1][MAX];          // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][1][MAX - 1];      // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][1][MAX - 2];      // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][1][MAX - 99];     // { dg-error "size of (unnamed )?array" }
      p = new (p) B [1][1][MAX / 2];      // { dg-error "size of array" }
      p = new (p) B [1][1][MAX / 2 - 1];  // { dg-error "size of array" }
      p = new (p) B [1][1][MAX / 2 - 2];  // { dg-error "size of array" }
*************** test_placement_three_dim_byte_struct_arr
*** 414,432 ****
      p = new (p) B [1][1][MAX / 2 - 7];   // okay
      p = new (p) B [1][1][MAX / 2 - 8];   // okay
  
!     p = new (p) B [1][2][MAX];          // { dg-error "size of unnamed array" }
!     p = new (p) B [1][2][MAX - 1];      // { dg-error "size of unnamed array" }
!     p = new (p) B [1][2][MAX - 2];      // { dg-error "size of unnamed array" }
!     p = new (p) B [1][2][MAX - 99];     // { dg-error "size of unnamed array" }
!     p = new (p) B [1][2][MAX / 2];      // { dg-error "size of unnamed array" }
!     p = new (p) B [1][2][MAX / 2 - 1];  // { dg-error "size of unnamed array" }
!     p = new (p) B [1][2][MAX / 2 - 2];  // { dg-error "size of unnamed array" }
!     p = new (p) B [1][2][MAX / 2 - 3];  // { dg-error "size of unnamed array" }
!     p = new (p) B [1][2][MAX / 2 - 4];  // { dg-error "size of unnamed array" }
!     p = new (p) B [1][2][MAX / 2 - 5];  // { dg-error "size of unnamed array" }
!     p = new (p) B [1][2][MAX / 2 - 6];  // { dg-error "size of unnamed array" }
!     p = new (p) B [1][2][MAX / 2 - 7];  // { dg-error "size of unnamed array" }
!     p = new (p) B [1][2][MAX / 2 - 8];  // { dg-error "size of unnamed array" }
      p = new (p) B [1][2][MAX / 4];      // { dg-error "size of array" }
  
      // Avoid exercising data model-dependent expressions.
--- 414,432 ----
      p = new (p) B [1][1][MAX / 2 - 7];   // okay
      p = new (p) B [1][1][MAX / 2 - 8];   // okay
  
!     p = new (p) B [1][2][MAX];          // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][2][MAX - 1];      // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][2][MAX - 2];      // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][2][MAX - 99];     // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][2][MAX / 2];      // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][2][MAX / 2 - 1];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][2][MAX / 2 - 2];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][2][MAX / 2 - 3];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][2][MAX / 2 - 4];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][2][MAX / 2 - 5];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][2][MAX / 2 - 6];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][2][MAX / 2 - 7];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [1][2][MAX / 2 - 8];  // { dg-error "size of (unnamed )?array" }
      p = new (p) B [1][2][MAX / 4];      // { dg-error "size of array" }
  
      // Avoid exercising data model-dependent expressions.
*************** test_placement_three_dim_byte_struct_arr
*** 436,445 ****
      p = new (p) B [1][2][MAX / 4 - 3];   // okay
      p = new (p) B [1][2][MAX / 4 - 4];   // okay
  
!     p = new (p) B [2][1][MAX];          // { dg-error "size of unnamed array" }
!     p = new (p) B [2][1][MAX - 1];      // { dg-error "size of unnamed array" }
!     p = new (p) B [2][1][MAX - 2];      // { dg-error "size of unnamed array" }
!     p = new (p) B [2][1][MAX - 99];     // { dg-error "size of unnamed array" }
      p = new (p) B [2][1][MAX / 2];      // { dg-error "size of array" }
      p = new (p) B [2][1][MAX / 2 - 1];  // { dg-error "size of array" }
      p = new (p) B [2][1][MAX / 2 - 2];  // { dg-error "size of array" }
--- 436,445 ----
      p = new (p) B [1][2][MAX / 4 - 3];   // okay
      p = new (p) B [1][2][MAX / 4 - 4];   // okay
  
!     p = new (p) B [2][1][MAX];          // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][1][MAX - 1];      // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][1][MAX - 2];      // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][1][MAX - 99];     // { dg-error "size of (unnamed )?array" }
      p = new (p) B [2][1][MAX / 2];      // { dg-error "size of array" }
      p = new (p) B [2][1][MAX / 2 - 1];  // { dg-error "size of array" }
      p = new (p) B [2][1][MAX / 2 - 2];  // { dg-error "size of array" }
*************** test_placement_three_dim_byte_struct_arr
*** 458,476 ****
      p = new (p) B [2][1][MAX / 4 - 3];   // okay
      p = new (p) B [2][1][MAX / 4 - 4];   // okay
  
!     p = new (p) B [2][2][MAX];          // { dg-error "size of unnamed array" }
!     p = new (p) B [2][2][MAX - 1];      // { dg-error "size of unnamed array" }
!     p = new (p) B [2][2][MAX - 2];      // { dg-error "size of unnamed array" }
!     p = new (p) B [2][2][MAX - 99];     // { dg-error "size of unnamed array" }
!     p = new (p) B [2][2][MAX / 2];      // { dg-error "size of unnamed array" }
!     p = new (p) B [2][2][MAX / 2 - 1];  // { dg-error "size of unnamed array" }
!     p = new (p) B [2][2][MAX / 2 - 2];  // { dg-error "size of unnamed array" }
!     p = new (p) B [2][2][MAX / 2 - 3];  // { dg-error "size of unnamed array" }
!     p = new (p) B [2][2][MAX / 2 - 4];  // { dg-error "size of unnamed array" }
!     p = new (p) B [2][2][MAX / 2 - 5];  // { dg-error "size of unnamed array" }
!     p = new (p) B [2][2][MAX / 2 - 6];  // { dg-error "size of unnamed array" }
!     p = new (p) B [2][2][MAX / 2 - 7];  // { dg-error "size of unnamed array" }
!     p = new (p) B [2][2][MAX / 2 - 8];  // { dg-error "size of unnamed array" }
      p = new (p) B [2][2][MAX / 4];      // { dg-error "size of array" }
      p = new (p) B [2][2][MAX / 4 - 1];  // { dg-error "size of array" }
      p = new (p) B [2][2][MAX / 4 - 2];  // { dg-error "size of array" }
--- 458,476 ----
      p = new (p) B [2][1][MAX / 4 - 3];   // okay
      p = new (p) B [2][1][MAX / 4 - 4];   // okay
  
!     p = new (p) B [2][2][MAX];          // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][2][MAX - 1];      // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][2][MAX - 2];      // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][2][MAX - 99];     // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][2][MAX / 2];      // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][2][MAX / 2 - 1];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][2][MAX / 2 - 2];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][2][MAX / 2 - 3];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][2][MAX / 2 - 4];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][2][MAX / 2 - 5];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][2][MAX / 2 - 6];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][2][MAX / 2 - 7];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][2][MAX / 2 - 8];  // { dg-error "size of (unnamed )?array" }
      p = new (p) B [2][2][MAX / 4];      // { dg-error "size of array" }
      p = new (p) B [2][2][MAX / 4 - 1];  // { dg-error "size of array" }
      p = new (p) B [2][2][MAX / 4 - 2];  // { dg-error "size of array" }
*************** test_placement_three_dim_byte_struct_arr
*** 482,500 ****
      p = new (p) B [2][2][MAX / 8 - 2];
      p = new (p) B [2][2][MAX / 8 - 3];
  
!     p = new (p) B [2][MAX][2];          // { dg-error "size of unnamed array" }
!     p = new (p) B [2][MAX - 1][2];      // { dg-error "size of unnamed array" }
!     p = new (p) B [2][MAX - 2][2];      // { dg-error "size of unnamed array" }
!     p = new (p) B [2][MAX - 99][2];     // { dg-error "size of unnamed array" }
!     p = new (p) B [2][MAX / 2][2];      // { dg-error "size of unnamed array" }
!     p = new (p) B [2][MAX / 2 - 1][2];  // { dg-error "size of unnamed array" }
!     p = new (p) B [2][MAX / 2 - 2][2];  // { dg-error "size of unnamed array" }
!     p = new (p) B [2][MAX / 2 - 3][2];  // { dg-error "size of unnamed array" }
!     p = new (p) B [2][MAX / 2 - 4][2];  // { dg-error "size of unnamed array" }
!     p = new (p) B [2][MAX / 2 - 5][2];  // { dg-error "size of unnamed array" }
!     p = new (p) B [2][MAX / 2 - 6][2];  // { dg-error "size of unnamed array" }
!     p = new (p) B [2][MAX / 2 - 7][2];  // { dg-error "size of unnamed array" }
!     p = new (p) B [2][MAX / 2 - 8][2];  // { dg-error "size of unnamed array" }
      p = new (p) B [2][MAX / 4][2];      // { dg-error "size of array" }
      p = new (p) B [2][MAX / 4 - 1][2];  // { dg-error "size of array" }
      p = new (p) B [2][MAX / 4 - 2][2];  // { dg-error "size of array" }
--- 482,500 ----
      p = new (p) B [2][2][MAX / 8 - 2];
      p = new (p) B [2][2][MAX / 8 - 3];
  
!     p = new (p) B [2][MAX][2];          // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][MAX - 1][2];      // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][MAX - 2][2];      // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][MAX - 99][2];     // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][MAX / 2][2];      // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][MAX / 2 - 1][2];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][MAX / 2 - 2][2];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][MAX / 2 - 3][2];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][MAX / 2 - 4][2];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][MAX / 2 - 5][2];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][MAX / 2 - 6][2];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][MAX / 2 - 7][2];  // { dg-error "size of (unnamed )?array" }
!     p = new (p) B [2][MAX / 2 - 8][2];  // { dg-error "size of (unnamed )?array" }
      p = new (p) B [2][MAX / 4][2];      // { dg-error "size of array" }
      p = new (p) B [2][MAX / 4 - 1][2];  // { dg-error "size of array" }
      p = new (p) B [2][MAX / 4 - 2][2];  // { dg-error "size of array" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/init/pr83993-2.C gcc-7.4.0/gcc/testsuite/g++.dg/init/pr83993-2.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/init/pr83993-2.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/init/pr83993-2.C	Sat Mar  3 13:23:43 2018
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/83993
+ // { dg-do compile }
+ // { dg-options "-w" }
+ 
+ int a[5];
+ extern int b[];
+ int *const c = &a[6];
+ int *const d = &b[1];
+ 
+ int
+ foo ()
+ {
+   return c[-4] + d[-1];
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/init/struct2.C gcc-7.4.0/gcc/testsuite/g++.dg/init/struct2.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/init/struct2.C	Wed Oct  1 07:38:53 2008
--- gcc-7.4.0/gcc/testsuite/g++.dg/init/struct2.C	Fri Jun 22 21:12:32 2018
*************** void saveOrLoad() {
*** 15,21 ****
      };    
  
      SaveLoadEntry trackEntries = {
! 	((long) (__SIZE_TYPE__) (&((Track *) 42)->soundName[0])) - 42,
          0, 1
      };
      saveLoadEntries(&trackEntries);
--- 15,21 ----
      };    
  
      SaveLoadEntry trackEntries = {
! 	((int) (__SIZE_TYPE__) (&((Track *) 42)->soundName[0])) - 42,
          0, 1
      };
      saveLoadEntries(&trackEntries);
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ipa/pr84658.C gcc-7.4.0/gcc/testsuite/g++.dg/ipa/pr84658.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ipa/pr84658.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ipa/pr84658.C	Tue Apr 24 15:17:00 2018
***************
*** 0 ****
--- 1,30 ----
+ /* PR ipa/84658 */
+ /* { dg-do run } */
+ /* { dg-options "-O2 -fmerge-all-constants -std=c++11" } */
+ 
+ const int kTestCasesFoo[] = { 0, 1, 2, 3, 4, 5, 8, 15, 16, 17, 512, 1020, 1021, 1022, 1023, 1024 };
+ const int kTestCasesBar[] = { 0, 1, 2, 3, 4, 5, 8, 15, 16, 17, 512, 1020, 1021, 1022, 1023, 1024 };
+ 
+ void Foo() {
+     __builtin_printf("foo:");
+     for (int count : kTestCasesFoo) {
+         __builtin_printf("%d,", count);
+     }
+     __builtin_printf(";\n");
+ }
+ 
+ void Bar() {
+     __builtin_printf("bar:");
+     for (int count : kTestCasesBar) {
+         __builtin_printf("%d,", count);
+     }
+     __builtin_printf(";\n");
+ }
+ 
+ int main() {
+     Foo();
+     Bar();
+ }
+ 
+ /* { dg-output "foo:0,1,2,3,4,5,8,15,16,17,512,1020,1021,1022,1023,1024,;(\n|\n\r|\r)*" } */
+ /* { dg-output "bar:0,1,2,3,4,5,8,15,16,17,512,1020,1021,1022,1023,1024,;(\n|\n\r|\r)*" } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/opt/pr3698.C gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr3698.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/opt/pr3698.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr3698.C	Fri Oct 12 14:43:18 2018
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/3698
+ // { dg-do link }
+ // { dg-options "-O0" }
+ 
+ struct X {
+   int i;
+ };
+ 
+ inline const int&
+ OHashKey (const X& x)
+ {
+   return x.i;
+ }
+ 
+ int
+ main ()
+ {
+  extern const int& OHashKey (const X& x);
+  X x;
+  return OHashKey (x);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/opt/pr79085.C gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr79085.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/opt/pr79085.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr79085.C	Fri Jun 22 20:43:53 2018
***************
*** 0 ****
--- 1,24 ----
+ // PR c++/79085
+ // { dg-do compile }
+ // { dg-options "-Os" }
+ // { dg-additional-options "-mstrict-align" { target { aarch64*-*-* powerpc*-*-linux* powerpc*-*-elf* } } }
+ 
+ void *operator new (__SIZE_TYPE__, void *p) { return p; }
+ 
+ struct S
+ {
+   S ();
+   S (const S &);
+   ~S (void);
+   int i;
+ };
+ 
+ S foo ();
+ 
+ static char buf [sizeof (S) + 1];
+ 
+ S *
+ bar ()
+ {
+   return new (buf + 1) S (foo ());
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/opt/pr85196.C gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr85196.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/opt/pr85196.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/opt/pr85196.C	Fri Apr  6 22:32:39 2018
***************
*** 0 ****
--- 1,89 ----
+ // PR target/85196
+ // Testcase by Rainer Orth <ro@gcc.gnu.org>
+ 
+ // { dg-do compile }
+ // { dg-options "-O -fpermissive -w" }
+ // { dg-additional-options "-fPIC" { target fpic } }
+ 
+ class a;
+ template <typename> class b;
+ template <typename k> class d : public b<k> {};
+ class e {};
+ void f(int);
+ template <class> class g {
+ public:
+   h();
+   a i();
+ };
+ template <> class b<e> : public g<e> {};
+ typedef (*j)(d<e>);
+ template <class k> class l {
+ public:
+   k operator->() { return 0; }
+ };
+ enum m { n, aa, o, ab, q, p };
+ inline s(m ac) {
+   switch (ac) {
+   case n:
+   case aa:
+   case p:
+     return 1;
+   case o:
+   case ab:
+     return 2;
+   }
+ }
+ class D {
+   int ad;
+ 
+ public:
+   *ae() { return &ad; }
+ };
+ class a {
+   l<D *> af;
+ 
+ public:
+   *r() { return af->ae(); }
+   t(int *c) {
+     int *w = af->ae();
+     return w == c;
+   }
+ };
+ class F : a {
+ public:
+   static int ah[];
+   static e v(F *);
+   unsigned long ai() const;
+ };
+ inline unsigned long F::ai() const {
+   m aj = r() - &ah[0];
+   return s(aj);
+ }
+ inline e F::v(F *ak) {
+   long al = ak->ai();
+   f(al);
+ }
+ template <typename> am() { return q; }
+ class an : F {
+ public:
+   static ao(d<e> u) {
+     int *ap;
+     m aq = am<unsigned>();
+     ap = &ah[aq];
+     return u.h() && u.i().t(ap);
+   }
+   template <e ar(F *)> static as() {
+     F at;
+     ar(&at);
+   }
+   template <e ar(F *)> static au(int *, unsigned, e *) {
+     j av = ao;
+     d<e> aw;
+     if (av(aw))
+       as<ar>();
+   }
+ };
+ int *ax;
+ int ay;
+ e az;
+ ba() { an::au<an::v>(ax, ay, &az); }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/other/anon5.C gcc-7.4.0/gcc/testsuite/g++.dg/other/anon5.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/other/anon5.C	Mon Feb  1 22:20:47 2016
--- gcc-7.4.0/gcc/testsuite/g++.dg/other/anon5.C	Wed Feb 28 08:05:46 2018
***************
*** 4,10 ****
  // Ignore additional message on powerpc-ibm-aix
  // { dg-prune-output "obtain more information" } */
  // Ignore additional messages on Linux/x86 with PIE
! // { dg-prune-output "Bad value" } */
  
  namespace {
    struct c
--- 4,10 ----
  // Ignore additional message on powerpc-ibm-aix
  // { dg-prune-output "obtain more information" } */
  // Ignore additional messages on Linux/x86 with PIE
! // { dg-prune-output "\[Bb\]ad value" } */
  
  namespace {
    struct c
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/other/thunk1.C gcc-7.4.0/gcc/testsuite/g++.dg/other/thunk1.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/other/thunk1.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/other/thunk1.C	Wed Nov 21 16:50:37 2018
***************
*** 0 ****
--- 1,26 ----
+ // PR c++/12007 Multiple inheritance float pass by value fails
+ // { dg-do run }
+ 
+ extern "C" void abort (void);
+ 
+ class gvImpl
+ {
+ public:
+   virtual void PutVal(float value){}
+ };
+ 
+ class foo { public: virtual void Bar(){} };
+ 
+ class myGv: public foo, public gvImpl
+ {
+   void PutVal(float value){ if (value != 3.14159f) abort (); }
+ };
+ 
+ myGv x;
+ gvImpl* object = &x;
+ 
+ int main()
+ {
+   object->PutVal(3.14159f);
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/other/thunk2a.C gcc-7.4.0/gcc/testsuite/g++.dg/other/thunk2a.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/other/thunk2a.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/other/thunk2a.C	Wed Nov 21 16:50:37 2018
***************
*** 0 ****
--- 1,15 ----
+ // { dg-do compile { target arm*-*-* } }
+ // { dg-options "-mlong-calls -ffunction-sections" }
+ 
+ class a {
+ public:
+   virtual ~a();
+ };
+ 
+ class b : virtual a {};
+ 
+ class c : b {
+   ~c();
+ };
+ 
+ c::~c() {}
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/other/thunk2b.C gcc-7.4.0/gcc/testsuite/g++.dg/other/thunk2b.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/other/thunk2b.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/other/thunk2b.C	Wed Nov 21 16:50:37 2018
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do compile { target arm*-*-* } }
+ // { dg-options "-mlong-calls -ffunction-sections" }
+ // { dg-additional-options "-fPIC" { target fpic } }
+ 
+ class a {
+ public:
+   virtual ~a();
+ };
+ 
+ class b : virtual a {};
+ 
+ class c : b {
+   ~c();
+ };
+ 
+ c::~c() {}
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/other/vthunk1.C gcc-7.4.0/gcc/testsuite/g++.dg/other/vthunk1.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/other/vthunk1.C	Fri Feb 20 23:10:33 2004
--- gcc-7.4.0/gcc/testsuite/g++.dg/other/vthunk1.C	Thu Jan  1 00:00:00 1970
***************
*** 1,26 ****
- // PR c++/12007 Multiple inheritance float pass by value fails
- // { dg-do run }
- 
- extern "C" void abort (void);
- 
- class gvImpl
- {
- public:
-   virtual void PutVal(float value){}
- };
- 
- class foo { public: virtual void Bar(){} };
- 
- class myGv: public foo, public gvImpl
- {
-   void PutVal(float value){ if (value != 3.14159f) abort (); }
- };
- 
- myGv x;
- gvImpl* object = &x;
- 
- int main()
- {
-   object->PutVal(3.14159f);
-   return 0;
- }
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/parse/array-size2.C gcc-7.4.0/gcc/testsuite/g++.dg/parse/array-size2.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/parse/array-size2.C	Sat Nov 14 00:08:05 2015
--- gcc-7.4.0/gcc/testsuite/g++.dg/parse/array-size2.C	Fri Jun 22 21:12:32 2018
*************** void
*** 15,20 ****
  foo (void)
  {
    char g[(char *) &((struct S *) 0)->b - (char *) 0]; // { dg-error "constant" }
!   char h[(__SIZE_TYPE__) &((struct S *) 8)->b];	      // { dg-error "constant" "" { xfail *-*-* } }
    bar (g, h);
  }
--- 15,20 ----
  foo (void)
  {
    char g[(char *) &((struct S *) 0)->b - (char *) 0]; // { dg-error "constant" }
!   char h[(__SIZE_TYPE__) &((struct S *) 8)->b];	      // { dg-error "constant" }
    bar (g, h);
  }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/parse/crash67.C gcc-7.4.0/gcc/testsuite/g++.dg/parse/crash67.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/parse/crash67.C	Mon Feb 27 11:55:19 2017
--- gcc-7.4.0/gcc/testsuite/g++.dg/parse/crash67.C	Sat Mar  3 13:26:52 2018
***************
*** 2,5 ****
  
  class x0;
  template <x1> x2() {  // { dg-error "declared|type" }
! x0 x3 = x3.  // { dg-error "expected" }
--- 2,5 ----
  
  class x0;
  template <x1> x2() {  // { dg-error "declared|type" }
! x0 x3 = x3.  // { dg-error "expected|incomplete type" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/pr58372.C gcc-7.4.0/gcc/testsuite/g++.dg/pr58372.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/pr58372.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/pr58372.C	Sun Nov 11 17:44:43 2018
***************
*** 0 ****
--- 1,10 ----
+ /* PR target/58372 */
+ /* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */
+ /* { dg-options "-O2" } */
+ /* { dg-require-effective-target c++14 } */
+ 
+ __attribute__ ((__target__ ("rdrnd")))
+ void f (unsigned int *b) noexcept
+ {
+   __builtin_ia32_rdrand32_step (b);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/pr84279.C gcc-7.4.0/gcc/testsuite/g++.dg/pr84279.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/pr84279.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/pr84279.C	Wed Feb 14 15:17:04 2018
***************
*** 0 ****
--- 1,35 ----
+ /* { dg-do compile { target { powerpc*-*-* } } } */
+ /* { dg-skip-if "" { powerpc*-*-darwin* } } */
+ /* { dg-require-effective-target powerpc_p8vector_ok } */
+ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
+ /* { dg-options "-O3 -mcpu=power8 -g -fPIC -fvisibility=hidden -fstack-protector-strong" } */
+ 
+ template <typename, typename T> struct E { T e; };
+ struct J {
+   unsigned k, l;
+   J (unsigned x, unsigned y) : k(x), l(y) {}
+ };
+ typedef struct A {
+   J n, p;
+   A ();
+   A (J x, J y) : n(x), p(y) {}
+ } *S;
+ S t;
+ struct B {
+   struct C {
+     S q, r;
+     int u, v;
+     bool m1 (S, A &);
+     J m2 () const;
+     J m3 () const;
+     A m4 () const;
+   };
+   typedef E<unsigned, S> D;
+   void m5 (D *);
+   void m6 (unsigned, A);
+ };
+ bool B::C::m1 (S, A &x) { bool o; x = m4 (); return o; }
+ J B::C::m2 () const { unsigned g (u == 0); unsigned h (v); return J (g, h); }
+ J B::C::m3 () const { unsigned g (q != t); unsigned h (r != t); return J (g, h); }
+ A B::C::m4 () const { return A (m2 (), m3 ()); }
+ void B::m5 (D *c) { unsigned x; C ar; A am; if (ar.m1 (c->e, am)) m6 (x, am); }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/pr85026.C gcc-7.4.0/gcc/testsuite/g++.dg/pr85026.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/pr85026.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/pr85026.C	Wed Mar 28 09:20:22 2018
***************
*** 0 ****
--- 1,61 ----
+ /* PR target/85026.  */
+ /* { dg-do assemble } */
+ /* { dg-options "-O2 -std=gnu++11" } */
+ 
+ template <class> class a;
+ class b;
+ struct c {
+   typedef a<b> &g;
+ };
+ template <typename d> struct e { typedef typename d::f iter; };
+ class h {
+ public:
+   void __attribute__((noreturn)) i();
+ } ab;
+ template <class> class a {
+ public:
+   typedef b *f;
+   b &operator[](unsigned m) {
+     if (ac)
+       ab.i();
+     return ad[m];
+   }
+   f n() { return ad; }
+   f m_fn3();
+   b *ad;
+   unsigned ac;
+ };
+ class b {
+ public:
+   short j;
+   short k;
+   signed l;
+ } __attribute__((__packed__));
+ void o(a<b> &m, b &p2, b &p) {
+   p2 = p = m[0];
+   if (bool at = false)
+     ;
+   else
+     for (c::g au(m);; at = true)
+       if (bool av = false)
+         ;
+       else
+         for (e<a<int>>::iter aw = au.n(), ax = au.m_fn3(); ax;
+              av ? (void)0 : (void)0)
+           if (bool ay = 0)
+             ;
+           else
+             for (b az = *aw; !ay; ay = true) {
+               if (p2.j)
+                 p2.j = az.j;
+               else if (p.j)
+                 p.j = az.j;
+               if (p2.k)
+                 p2.k = az.k;
+               else if (az.k > p.k)
+                 p.k = az.k;
+               if (az.l < p2.l)
+                 if (az.l > p.l)
+                   p.l = az.l;
+             }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/template/dependent-base3.C gcc-7.4.0/gcc/testsuite/g++.dg/template/dependent-base3.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/template/dependent-base3.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/template/dependent-base3.C	Tue Apr  3 17:46:30 2018
***************
*** 0 ****
--- 1,26 ----
+ // PR c++/85060
+ // { dg-do compile { target c++14 } }
+ 
+ struct CA {
+   constexpr int foo() const { return 42; }
+ };
+ 
+ template <class T>
+ struct CB : CA { };
+ 
+ template <class T>
+ struct CC : CB<T> {
+   constexpr int bar() const {
+     const int m = CA::foo();
+     return m;
+   }
+ 
+   constexpr int baz() const {
+     const T m = CA::foo();
+     return m;
+   }
+ };
+ 
+ constexpr CC<double> c;
+ 
+ static_assert( c.bar() == 42, "" );
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/template/incomplete11.C gcc-7.4.0/gcc/testsuite/g++.dg/template/incomplete11.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/template/incomplete11.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/template/incomplete11.C	Sat Mar  3 13:26:52 2018
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/84082
+ // { dg-do compile }
+ // { dg-options "" }
+ 
+ struct A;
+ 
+ template<typename> void foo()
+ {
+   static int a[A().operator=(A())];	// { dg-error "invalid use of incomplete type 'struct A'" }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/template/nontype-fn1.C gcc-7.4.0/gcc/testsuite/g++.dg/template/nontype-fn1.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/template/nontype-fn1.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/template/nontype-fn1.C	Fri Feb 16 19:06:59 2018
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/82664
+ 
+ template < typename > struct target_disambiguator;
+ template < typename R, typename A1 > struct target_disambiguator< R(A1) > {
+   typedef A1 type;
+   template < R (&)() > struct layout;
+ };
+ 
+ int main() {
+   typedef target_disambiguator< void (int) > ::type target_type ;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr77745-2.C gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr77745-2.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr77745-2.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr77745-2.C	Tue Nov 20 14:47:49 2018
***************
*** 0 ****
--- 1,4 ----
+ // { dg-do run }
+ 
+ #define NOINLINE __attribute__((noinline))
+ #include "pr77745.C"
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr77745.C gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr77745.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr77745.C	Tue Sep 27 12:56:38 2016
--- gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr77745.C	Tue Nov 20 14:47:49 2018
***************
*** 1,8 ****
  // { dg-do run }
  
  inline void* operator new(__SIZE_TYPE__, void* __p) noexcept { return __p; }
  
! long foo(char *c1, char *c2)
  {
    long *p1 = new (c1) long;
    *p1 = 100;
--- 1,12 ----
  // { dg-do run }
  
+ #ifndef NOINLINE
+ #define NOINLINE /* */
+ #endif
+ 
  inline void* operator new(__SIZE_TYPE__, void* __p) noexcept { return __p; }
  
! long NOINLINE foo(char *c1, char *c2)
  {
    long *p1 = new (c1) long;
    *p1 = 100;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr83659.C gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr83659.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr83659.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr83659.C	Sat Mar  3 13:27:47 2018
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/83659
+ // { dg-do compile }
+ 
+ typedef int V __attribute__ ((__vector_size__ (16)));
+ V a;
+ V b[2];
+ 
+ int
+ foo ()
+ {
+   return reinterpret_cast <int *> (&a)[-1] += 1;
+ }
+ 
+ int
+ bar ()
+ {
+   return reinterpret_cast <int *> (&a[1])[-1];
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr84190.C gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr84190.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr84190.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr84190.C	Fri Feb 16 07:57:56 2018
***************
*** 0 ****
--- 1,20 ----
+ // { dg-do compile }
+ // For slim LTO there's no optimized dump
+ // { dg-skip-if "" { *-*-* } { "-flto" } { "" } }
+ // { dg-additional-options "-fdump-tree-optimized" }
+ 
+ typedef double T;
+ static int equalfn (volatile T* x, volatile T* y);
+ T gx, gy;
+ int main ()
+ {
+   T x = gx, y = gy;
+   return equalfn (&x, &y);
+ }
+ static int equalfn (volatile T* x, volatile T* y)
+ {
+   return (*x == *y);
+ }
+ 
+ // There should be exactly two volatile accesses (ignoring clobbers).
+ // { dg-final { scan-tree-dump-times " ={v} \[^\{\]" 2 "optimized" } }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr84233.C gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr84233.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr84233.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr84233.C	Thu Feb  8 13:30:49 2018
***************
*** 0 ****
--- 1,25 ----
+ // { dg-do compile }
+ // { dg-additional-options "-w" }
+ 
+ void a(const char *, int, const char *, const char *);
+ template <typename b> void c(b);
+ struct d {
+     long e;
+     template <typename> union f;
+     template <typename h> union f<h *> {
+ 	f(h *i) : j(i) {}
+ 	h *j;
+ 	long bits;
+     };
+     static int k(volatile long &i) { return *(int *)f<volatile long *>(&i).bits; }
+     typedef long g;
+     operator g() volatile {
+ 	int l = k(e);
+ 	c(l);
+     }
+ };
+ struct : d {
+ 	 } m, n;
+ bool o;
+ void p() { (o ? m : n) ? (void)0 : a("", 5, "", ""); }
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr84961-1.C gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr84961-1.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr84961-1.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr84961-1.C	Fri Jun 22 20:54:44 2018
***************
*** 0 ****
--- 1,24 ----
+ // PR c++/84961
+ // { dg-do compile }
+ 
+ short a;
+ volatile int b;
+ int c, d;
+ 
+ void
+ foo ()
+ {
+   asm volatile ("" : "=r" (b = a));
+ }
+ 
+ void
+ bar ()
+ {
+   asm volatile ("" : "=r" (++c, ++d, b = a));
+ }
+ 
+ void
+ baz ()
+ {
+   asm volatile ("" : "=r" (--b));
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr84961-2.C gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr84961-2.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr84961-2.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr84961-2.C	Fri Jun 22 20:54:44 2018
***************
*** 0 ****
--- 1,24 ----
+ // PR c++/84961
+ // { dg-do compile }
+ 
+ short a;
+ volatile int b;
+ int c, d;
+ 
+ void
+ foo ()
+ {
+   asm volatile ("" : : "m" (b = a));
+ }
+ 
+ void
+ bar ()
+ {
+   asm volatile ("" : : "m" (++c, ++d, b = a));
+ }
+ 
+ void
+ baz ()
+ {
+   asm volatile ("" : : "m" (--b));
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr85496.C gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr85496.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr85496.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr85496.C	Mon Apr 23 20:29:22 2018
***************
*** 0 ****
--- 1,18 ----
+ // PR middle-end/85496
+ // Reported by Marek Polacek <mpolacek@gcc.gnu.org>
+ 
+ template <typename> class complex;
+ template <typename _Tp> complex<_Tp> operator*(complex<_Tp>, complex<_Tp>);
+ template <> struct complex<float> { _Complex float _M_value; };
+ class A {
+   complex<float> _f0, _f1;
+ 
+ public:
+   complex<float> &m_fn1() { return _f1; }
+ };
+ complex<float> a;
+ void cos() {
+   A b;
+   complex<float> c;
+   b.m_fn1() = c * a;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr86763.C gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr86763.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr86763.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr86763.C	Tue Aug 21 13:20:21 2018
***************
*** 0 ****
--- 1,37 ----
+ // { dg-do run { target { *-*-linux* } } }
+ // { dg-additional-options "-fschedule-insns2 -fstrict-aliasing" }
+ // { dg-additional-options "-lrt" }
+ 
+ #include <cstdint>
+ #include <cassert>
+ #include <time.h>
+ struct ID {
+   uint64_t value;
+ };
+ uint64_t value(ID id) { return id.value; }
+ uint64_t gen { 1000 };
+ struct Msg {
+   uint64_t time;
+   ID id;
+ };
+ struct V {
+   V() { }
+   V(Msg const & msg) : msg(msg) { }
+   Msg & get() { return msg; }
+   Msg msg;
+   char pad[237 - sizeof(Msg)];
+ };
+ struct T : V { using V::V; };
+ Msg init_msg() {
+   Msg msg;
+   timespec t;
+   clock_gettime(CLOCK_REALTIME, &t);
+   msg.time = t.tv_sec + t.tv_nsec;
+   msg.id.value = ++gen;
+   return msg;
+ }
+ int main() {
+   T t;
+   t = init_msg();
+   assert(value(t.get().id) == 1001);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr87014.C gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr87014.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/torture/pr87014.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/torture/pr87014.C	Tue Aug 21 16:27:22 2018
***************
*** 0 ****
--- 1,37 ----
+ // { dg-do run }
+ 
+ void
+ fillstack ()
+ {
+   long long foo[] =
+     {
+       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+     };
+ }
+ 
+ void
+ f (long long=-1,long long=-1,long long=-1,long long=-1,
+    long long=-1,long long=-1,long long arg7_on_stack=-1)
+ {
+   throw 0;
+ }
+ 
+ void
+ g()
+ {
+   try
+     {
+       f ();
+     }
+   catch (int)
+     {
+     }
+ }
+ 
+ int
+ main()
+ {
+   fillstack ();
+   g ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/tree-ssa/volatile1.C gcc-7.4.0/gcc/testsuite/g++.dg/tree-ssa/volatile1.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/tree-ssa/volatile1.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/tree-ssa/volatile1.C	Fri Feb 16 21:06:56 2018
***************
*** 0 ****
--- 1,28 ----
+ // PR c++/84151
+ // { dg-additional-options "-fdump-tree-gimple" }
+ // { dg-final { scan-tree-dump-not {\*this} "gimple" } }
+ 
+ struct A {
+   static int& bar(int& a) {
+     return a;
+   }
+   static int i;
+ 
+   int foo() volatile {
+     int v = c;
+     return i + bar(v);
+   }
+ 
+   int c;
+ };
+ 
+ int A::i = 0;
+ 
+ A a;
+ 
+ int main() {
+   a.c = 2;
+   a.foo();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/tree-ssa/volatile2.C gcc-7.4.0/gcc/testsuite/g++.dg/tree-ssa/volatile2.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/tree-ssa/volatile2.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/tree-ssa/volatile2.C	Mon Mar  5 14:28:07 2018
***************
*** 0 ****
--- 1,20 ----
+ // PR c++/84686
+ // { dg-additional-options -fdump-tree-gimple }
+ // { dg-final { scan-tree-dump-times "= i" 10 "gimple" } }
+ 
+ volatile int i;
+ 
+ int main()
+ {
+   i; //evaluated (a load is performed)
+   (i); //unevaluated => the load shall be performed
+ 
+   (void)i; //evaluated (a load is performed)
+   (void)(i); //unevaluated => the load shall be performed
+ 
+   (void)i; //evaluated (a load is performed)
+   (void)(i); //unevaluated => the load shall be performed
+ 
+   (i,i); // the two subexpression are evaluated
+   ((i),(i)); // no evaluation, => two loads shall happen
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ubsan/pr83987-2.C gcc-7.4.0/gcc/testsuite/g++.dg/ubsan/pr83987-2.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ubsan/pr83987-2.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ubsan/pr83987-2.C	Sat Mar  3 13:29:52 2018
***************
*** 0 ****
--- 1,24 ----
+ // PR sanitizer/83987
+ // { dg-do compile { target fopenmp } }
+ // { dg-options "-fopenmp -fsanitize=vptr" }
+ 
+ struct A
+ {
+   int i;
+ };
+ 
+ struct B : virtual A
+ {
+   void foo();
+ };
+ 
+ void B::foo()
+ {
+ #pragma omp parallel
+   {
+   #pragma omp sections lastprivate (i)
+     {
+       i = 0;
+     }
+   }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/ubsan/pr83987.C gcc-7.4.0/gcc/testsuite/g++.dg/ubsan/pr83987.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/ubsan/pr83987.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/ubsan/pr83987.C	Sat Mar  3 13:17:11 2018
***************
*** 0 ****
--- 1,15 ----
+ // PR sanitizer/83987
+ // { dg-do compile { target fopenmp } }
+ // { dg-options "-fopenmp -fsanitize=vptr -O0" }
+ 
+ struct A { int i; };
+ struct B : virtual A { void foo (); };
+ 
+ void
+ B::foo ()
+ {
+ #pragma omp sections lastprivate (i)
+   {
+     i = 0;
+   }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/vec-init-1.C gcc-7.4.0/gcc/testsuite/g++.dg/vec-init-1.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/vec-init-1.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/vec-init-1.C	Fri Oct 19 08:55:27 2018
***************
*** 0 ****
--- 1,26 ----
+ /* On S/390 this ends up calling the vec_init RTL expander with a
+    parallel of two symbol_refs.  */
+ 
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fPIC" } */
+ 
+ 
+ struct test
+ {
+     struct base
+     {
+        int key;
+     };
+     struct derived : public base
+     {
+        int key;
+     };
+ 
+     derived core;
+     derived &dRef;
+     base &bRef;
+ 
+     test() : dRef (core), bRef (core) {}
+ };
+ 
+ test test;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/vect/pr84556.cc gcc-7.4.0/gcc/testsuite/g++.dg/vect/pr84556.cc
*** gcc-7.3.0/gcc/testsuite/g++.dg/vect/pr84556.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/vect/pr84556.cc	Sat Mar  3 13:39:52 2018
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/84556
+ // { dg-do run { target c++11 } }
+ // { dg-options "-O2 -fopenmp-simd" }
+ // { dg-additional-options "-mavx" { target avx_runtime } }
+ 
+ int
+ main ()
+ {
+   int y[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
+   auto x = [&y] ()
+   {
+     #pragma omp simd
+     for (int i = 0; i < 8; ++i)
+       y[i]++;
+   };
+   x ();
+   x ();
+   for (int i = 0; i < 8; ++i)
+     if (y[i] != i + 3)
+       __builtin_abort ();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/warn/Wformat-2.C gcc-7.4.0/gcc/testsuite/g++.dg/warn/Wformat-2.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/warn/Wformat-2.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/warn/Wformat-2.C	Fri Jun 22 20:34:33 2018
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/84076
+ // { dg-do compile }
+ // { dg-options "-Wformat" }
+ 
+ struct S { ~S (); };
+ struct T { T (); T (const T &); };
+ 
+ void
+ foo ()
+ {
+   S s;
+   T t;
+   __builtin_printf ("%s\n", s);	// { dg-warning "format '%s' expects argument of type 'char\\*', but argument 2 has type 'S'" }
+   __builtin_printf ("%s\n", t);	// { dg-warning "format '%s' expects argument of type 'char\\*', but argument 2 has type 'T'" }
+   __builtin_printf ("%s\n", &s);// { dg-warning "format '%s' expects argument of type 'char\\*', but argument 2 has type 'S\\*'" }
+   __builtin_printf ("%s\n", &t);// { dg-warning "format '%s' expects argument of type 'char\\*', but argument 2 has type 'T\\*'" }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/warn/Wnonnull4.C gcc-7.4.0/gcc/testsuite/g++.dg/warn/Wnonnull4.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/warn/Wnonnull4.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/warn/Wnonnull4.C	Fri Jun 22 21:33:58 2018
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/86210
+ // { dg-do compile }
+ // { dg-options "-Wnonnull" }
+ 
+ void *declared_not_defined (void *p) __attribute__((nonnull));
+ 
+ inline void *declared_and_defined (void *p) __attribute__((nonnull));
+ 
+ int
+ main ()
+ {
+   int *const p = 0;
+   declared_not_defined (p);	// { dg-warning "null argument where non-null required" }
+   declared_and_defined (p);	// { dg-warning "null argument where non-null required" }
+ }
+ 
+ void *
+ declared_and_defined (void *p)
+ {
+   return p;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/warn/Wunused-function4.C gcc-7.4.0/gcc/testsuite/g++.dg/warn/Wunused-function4.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/warn/Wunused-function4.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/warn/Wunused-function4.C	Fri Jun 22 20:32:15 2018
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/80598
+ // { dg-do compile }
+ // { dg-options "-Wunused-function" }
+ 
+ static void
+ foo ()		// { dg-bogus "defined but not used" }
+ {
+ }
+ 
+ static void
+ bar ()		// { dg-warning "defined but not used" }
+ {
+ }
+ 
+ template <class T>
+ int
+ baz (T x)
+ {
+   foo ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/warn/Wunused-var-33.C gcc-7.4.0/gcc/testsuite/g++.dg/warn/Wunused-var-33.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/warn/Wunused-var-33.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/warn/Wunused-var-33.C	Fri Jun 22 21:27:41 2018
***************
*** 0 ****
--- 1,37 ----
+ // PR c++/85952
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-Wunused-but-set-variable" }
+ 
+ int
+ foo ()
+ {
+   int a[2] = {1, 2};	// { dg-bogus "set but not used" } */
+   auto [x, y] = a;	// { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
+   return x + y;
+ }
+ 
+ struct S { int d, e; };
+ 
+ int
+ bar ()
+ {
+   S a = {1, 2};
+   auto [x, y] = a;	// { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
+   return x + y;
+ }
+ 
+ int
+ baz ()
+ {
+   S a = {1, 2};
+   auto & [x, y] = a;	// { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
+   return x + y;
+ }
+ 
+ int
+ qux ()
+ {
+   int a[2] = {1, 2};
+   auto & [x, y] = a;	// { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
+   return x + y;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/warn/deprecated-13.C gcc-7.4.0/gcc/testsuite/g++.dg/warn/deprecated-13.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/warn/deprecated-13.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/g++.dg/warn/deprecated-13.C	Fri Jun 22 20:43:09 2018
***************
*** 0 ****
--- 1,44 ----
+ // PR c++/84222
+ // { dg-do compile }
+ 
+ struct __attribute__((deprecated)) C {		// { dg-message "declared here" }
+   C () {}
+   C (const C &);				// { dg-bogus "'C' is deprecated" }
+   C (const C &x, const C &y) { C z = x; }	// { dg-bogus "'C' is deprecated" }
+   void foo (const C &x, const C &y);		// { dg-bogus "'C' is deprecated" }
+ };
+ 
+ void
+ C::foo (const C &x, const C &y)			// { dg-bogus "'C' is deprecated" }
+ {
+   C z = x;					// { dg-bogus "'C' is deprecated" }
+ }
+ 
+ void
+ bar (const C &x, const C &y)			// { dg-warning "'C' is deprecated" }
+ {
+   C z = x;					// { dg-warning "'C' is deprecated" }
+ }
+ 
+ template <int N>
+ struct __attribute__((deprecated)) D {		// { dg-message "declared here" }
+   D () {}
+   D (const D &);				// { dg-bogus "is deprecated" }
+   D (const D &x, const D &y) { D z = x; }	// { dg-bogus "is deprecated" }
+   void foo (const D &x, const D &y);		// { dg-bogus "is deprecated" }
+ };
+ 
+ template <int N>
+ void
+ D<N>::foo					// { dg-bogus "is deprecated" "" { xfail *-*-* } }
+ (const D &x, const D &y)			// { dg-bogus "is deprecated" }
+ {
+   D z = x;					// { dg-bogus "is deprecated" }
+ }
+ 
+ template <int N>
+ void
+ bar (const D<N> &x, const D<N> &y)		// { dg-warning "is deprecated" }
+ {
+   D<N> z = x;					// { dg-warning "is deprecated" }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/warn/deprecated-6.C gcc-7.4.0/gcc/testsuite/g++.dg/warn/deprecated-6.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/warn/deprecated-6.C	Wed Apr 19 06:55:33 2017
--- gcc-7.4.0/gcc/testsuite/g++.dg/warn/deprecated-6.C	Fri Jun 22 20:43:09 2018
*************** T *p3;				// { dg-warning "'T' is deprec
*** 98,104 ****
  
  inline void T::member1(int) {}
  
! int T::member3(T *p)		// { dg-warning "'T' is deprecated: Please avoid T" }
  {
    p->member1(1);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated: Please avoid member1" "" } */
    (*p).member1(2);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated: Please avoid member1" "" } */
--- 98,104 ----
  
  inline void T::member1(int) {}
  
! int T::member3(T *p)		// { dg-bogus "'T' is deprecated: Please avoid T" }
  {
    p->member1(1);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated: Please avoid member1" "" } */
    (*p).member1(2);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated: Please avoid member1" "" } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/g++.dg/warn/deprecated.C gcc-7.4.0/gcc/testsuite/g++.dg/warn/deprecated.C
*** gcc-7.3.0/gcc/testsuite/g++.dg/warn/deprecated.C	Wed Apr 19 06:55:33 2017
--- gcc-7.4.0/gcc/testsuite/g++.dg/warn/deprecated.C	Fri Jun 22 20:43:09 2018
*************** T *p3;				// { dg-warning "'T' is deprec
*** 102,108 ****
  
  inline void T::member1(int) {}
  
! int T::member3(T *p)		// { dg-warning "'T' is deprecated" }
  {
    p->member1(1);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated" "" } */
    (*p).member1(2);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated" "" } */
--- 102,108 ----
  
  inline void T::member1(int) {}
  
! int T::member3(T *p)		// { dg-bogus "'T' is deprecated" }
  {
    p->member1(1);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated" "" } */
    (*p).member1(2);			/* { dg-warning "'void T::member1\\(int\\)' is deprecated" "" } */
*************** int T::member3(T *p)		// { dg-warning "'
*** 113,117 ****
    return f1(); 				/* { dg-warning "'INT1 f1\\(\\)' is deprecated" "" } */
  }
  #endif
- 
- 
--- 113,115 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/compile/pr82096.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr82096.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/compile/pr82096.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr82096.c	Fri Feb 16 15:37:35 2018
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-require-effective-target arm_arch_v5t_ok { target arm*-*-* } } */
+ /* { dg-skip-if "Do not combine float-abi values" { arm*-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=soft" } } */
+ /* { dg-additional-options "-march=armv5t -mthumb -mfloat-abi=soft" { target arm*-*-* } } */
+ 
+ static long long AL[24];
+ 
+ int
+ check_ok (void)
+ {
+   return (__sync_bool_compare_and_swap (AL+1, 0x200000003ll, 0x1234567890ll));
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/compile/pr84425.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr84425.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/compile/pr84425.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr84425.c	Sat Mar  3 13:34:07 2018
***************
*** 0 ****
--- 1,17 ----
+ /* PR ipa/84425 */
+ 
+ void bar (int);
+ 
+ void
+ foo (int x)
+ {
+   if (x < 5)
+     bar (x);
+ }
+ 
+ __attribute__((optimize(0))) void
+ bar (int x)
+ {
+   if (x > 10)
+     foo (x);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/compile/pr84860.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr84860.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/compile/pr84860.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr84860.c	Fri Jun 22 20:41:55 2018
***************
*** 0 ****
--- 1,11 ----
+ /* PR target/84860 */
+ 
+ void
+ foo (int x, int y)
+ {
+   while (x < 1)
+     {
+       x = y;
+       y = ((float)1 / 0) ? 2 : 0;
+     }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/compile/pr85945.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr85945.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/compile/pr85945.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr85945.c	Fri Jun 22 21:29:24 2018
***************
*** 0 ****
--- 1,16 ----
+ /* PR target/85945 */
+ 
+ typedef float V __attribute__((vector_size(16)));
+ union U { V v; float f[4]; };
+ int f;
+ float g[4];
+ 
+ void
+ foo (void)
+ {
+   V d;
+   union U i;
+   i.v = d;
+   for (f = 0; f < 4; f++)
+     g[f] = i.f[f];
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/compile/pr87473.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr87473.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/compile/pr87473.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/compile/pr87473.c	Fri Oct 26 19:38:45 2018
***************
*** 0 ****
--- 1,19 ----
+ /* PR87473: SLSR ICE on hidden basis with |increment| > 1.  */
+ /* { dg-additional-options "-fno-tree-ch" } */
+ 
+ void
+ t6 (int qz, int wh)
+ {
+   int jl = wh;
+ 
+   while (1.0 / 0 < 1)
+     {
+       qz = wh * (wh + 2);
+ 
+       while (wh < 1)
+         jl = 0;
+     }
+ 
+   while (qz < 1)
+     qz = jl * wh;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/20180131-1.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/20180131-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/20180131-1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/20180131-1.c	Wed Jan 31 10:08:08 2018
***************
*** 0 ****
--- 1,28 ----
+ /* PR rtl-optimization/84071 */
+ /* Reported by Wilco <wilco@gcc.gnu.org> */
+ 
+ extern void abort (void);
+ 
+ typedef union 
+ {
+   signed short ss;
+   unsigned short us;
+   int x;
+ } U;
+ 
+ int f(int x, int y, int z, int a, U u) __attribute__((noclone, noinline));
+ 
+ int f(int x, int y, int z, int a, U u)
+ {
+   return (u.ss <= 0) + u.us;
+ }
+ 
+ int main (void)
+ {
+   U u = { .ss = -1 };
+ 
+   if (f (0, 0, 0, 0, u) != (1 << sizeof (short) * 8))
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/20180226-1.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/20180226-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/20180226-1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/20180226-1.c	Mon Feb 26 16:39:41 2018
***************
*** 0 ****
--- 1,31 ----
+ /* PR rtl-optimization/83496 */
+ /* Reported by Hauke Mehrtens <gcc@hauke-m.de> */
+ 
+ extern void abort (void);
+ 
+ typedef unsigned long mp_digit;
+ 
+ typedef struct { int used, alloc, sign; mp_digit *dp; } mp_int;
+ 
+ int mytest(mp_int *a, mp_digit b) __attribute__((noclone, noinline));
+ 
+ int mytest(mp_int *a, mp_digit b)
+ {
+   if (a->sign == 1)
+     return -1;
+   if (a->used > 1)
+     return 1;
+   if (a->dp[0] > b)
+     return 1;
+   if (a->dp[0] < b)
+     return -1;
+   return 0;
+ }
+ 
+ int main (void)
+ {
+   mp_int i = { 2, 0, -1 };
+   if (mytest (&i, 0) != 1)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/20181120-1.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/20181120-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/20181120-1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/20181120-1.c	Thu Nov 22 16:29:50 2018
***************
*** 0 ****
--- 1,28 ----
+ /* PR rtl-optimization/85925 */
+ /* { dg-require-effective-target int32plus } */
+ /* Testcase by <sudi@gcc.gnu.org> */
+ 
+ int a, c, d;
+ volatile int b;
+ int *e = &d;
+ 
+ union U1 {
+   unsigned f0;
+   unsigned f1 : 15;
+ };
+ volatile union U1 u = { 0x4030201 };
+ 
+ int main (void)
+ {
+   for (c = 0; c <= 1; c++) {
+     union U1 f = {0x4030201};
+     if (c == 1)
+       b;
+     *e = f.f1;
+   }
+ 
+   if (d != u.f1)
+     __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr82210.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr82210.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr82210.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr82210.c	Sat Mar  3 13:31:38 2018
***************
*** 0 ****
--- 1,26 ----
+ /* PR c/82210 */
+ 
+ void
+ foo (int size)
+ {
+   int i;
+   struct S {
+     __attribute__((aligned (16))) struct T { short c; } a[size];
+     int b[size];
+   } s;
+ 
+   for (i = 0; i < size; i++)
+     s.a[i].c = 0x1234;
+   for (i = 0; i < size; i++)
+     s.b[i] = 0;
+   for (i = 0; i < size; i++)
+     if (s.a[i].c != 0x1234 || s.b[i] != 0)
+       __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+   foo (15);
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr84524.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr84524.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr84524.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr84524.c	Mon Mar  5 16:09:49 2018
***************
*** 0 ****
--- 1,41 ----
+ /* PR target/84524 */
+ 
+ __attribute__((noinline,noclone)) void
+ foo (unsigned short *x)
+ {
+   unsigned short i, v;
+   unsigned char j;
+   for (i = 0; i < 256; i++)
+     {
+       v = i << 8;
+       for (j = 0; j < 8; j++)
+ 	if (v & 0x8000)
+ 	  v = (v << 1) ^ 0x1021;
+ 	else
+ 	  v = v << 1;
+       x[i] = v;
+     }
+ }
+ 
+ int
+ main ()
+ {
+   unsigned short a[256];
+ 
+   foo (a);
+   for (int i = 0; i < 256; i++)
+     {
+       unsigned short v = i << 8;
+       for (int j = 0; j < 8; j++)
+ 	{
+ 	  asm volatile ("" : "+r" (v));
+ 	  if (v & 0x8000)
+ 	    v = (v << 1) ^ 0x1021;
+ 	  else
+ 	    v = v << 1;
+ 	}
+       if (a[i] != v)
+ 	__builtin_abort ();
+     }
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr84748.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr84748.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr84748.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr84748.c	Tue Apr 10 12:59:08 2018
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-require-effective-target int128 } */
+ 
+ typedef unsigned __int128 u128;
+ 
+ int a, c, d;
+ u128 b;
+ 
+ unsigned long long g0, g1;
+ 
+ void
+ store (unsigned long long a0, unsigned long long a1)
+ {
+   g0 = a0;
+   g1 = a1;
+ }
+ 
+ void
+ foo (void)
+ {
+   b += a;
+   c = d != 84347;
+   b /= c;
+   u128 x = b;
+   store (x >> 0, x >> 64);
+ }
+ 
+ int
+ main (void)
+ {
+   foo ();
+   if (g0 != 0 || g1 != 0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr85095.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr85095.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr85095.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr85095.c	Fri Jun 22 21:02:07 2018
***************
*** 0 ****
--- 1,52 ----
+ /* PR target/85095 */
+ 
+ __attribute__((noinline, noclone)) unsigned long
+ f1 (unsigned long a, unsigned long b)
+ {
+   unsigned long i = __builtin_add_overflow (a, b, &a);
+   return a + i;
+ }
+ 
+ __attribute__((noinline, noclone)) unsigned long
+ f2 (unsigned long a, unsigned long b)
+ {
+   unsigned long i = __builtin_add_overflow (a, b, &a);
+   return a - i;
+ }
+ 
+ __attribute__((noinline, noclone)) unsigned long
+ f3 (unsigned int a, unsigned int b)
+ {
+   unsigned int i = __builtin_add_overflow (a, b, &a);
+   return a + i;
+ }
+ 
+ __attribute__((noinline, noclone)) unsigned long
+ f4 (unsigned int a, unsigned int b)
+ {
+   unsigned int i = __builtin_add_overflow (a, b, &a);
+   return a - i;
+ }
+ 
+ int
+ main ()
+ {
+   if (f1 (16UL, -18UL) != -2UL
+       || f1 (16UL, -17UL) != -1UL
+       || f1 (16UL, -16UL) != 1UL
+       || f1 (16UL, -15UL) != 2UL
+       || f2 (24UL, -26UL) != -2UL
+       || f2 (24UL, -25UL) != -1UL
+       || f2 (24UL, -24UL) != -1UL
+       || f2 (24UL, -23UL) != 0UL
+       || f3 (32U, -34U) != -2U
+       || f3 (32U, -33U) != -1U
+       || f3 (32U, -32U) != 1U
+       || f3 (32U, -31U) != 2U
+       || f4 (35U, -37U) != -2U
+       || f4 (35U, -36U) != -1U
+       || f4 (35U, -35U) != -1U
+       || f4 (35U, -34U) != 0U)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr85529-1.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr85529-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr85529-1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr85529-1.c	Fri Jun 22 21:19:32 2018
***************
*** 0 ****
--- 1,28 ----
+ /* PR tree-optimization/85529 */
+ 
+ struct S { int a; };
+ 
+ int b, c = 1, d, e, f;
+ static int g;
+ volatile struct S s;
+ 
+ signed char
+ foo (signed char i, int j)
+ {
+   return i < 0 ? i : i << j;
+ }
+ 
+ int
+ main ()
+ {
+   signed char k = -83;
+   if (!d)
+     goto L;
+   k = e || f;
+ L:
+   for (; b < 1; b++)
+     s.a != (k < foo (k, 2) && (c = k = g));
+   if (c != 1)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr85529-2.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr85529-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr85529-2.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr85529-2.c	Fri Jun 22 21:19:32 2018
***************
*** 0 ****
--- 1,25 ----
+ /* PR tree-optimization/85529 */
+ 
+ __attribute__((noinline, noclone)) int
+ foo (int x)
+ {
+   x &= 63;
+   x -= 50;
+   x |= 1;
+   if (x < 0)
+     return 1;
+   int y = x >> 2;
+   if (x >= y)
+     return 1;
+   return 0;
+ }
+ 
+ int
+ main ()
+ {
+   int i;
+   for (i = 0; i < 63; i++)
+     if (foo (i) != 1)
+       __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr86231.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr86231.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr86231.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr86231.c	Fri Jun 22 21:33:07 2018
***************
*** 0 ****
--- 1,30 ----
+ /* PR tree-optimization/86231 */
+ 
+ #define ONE ((void *) 1)
+ #define TWO ((void *) 2)
+ 
+ __attribute__((noinline, noclone)) int
+ foo (void *p, int x)
+ {
+   if (p == ONE) return 0;
+   if (!p)
+     p = x ? TWO : ONE;
+   return p == ONE ? 0 : 1;
+ }
+ 
+ int v[8];
+ 
+ int
+ main ()
+ {
+   if (foo ((void *) 0, 0) != 0
+       || foo ((void *) 0, 1) != 1
+       || foo (ONE, 0) != 0
+       || foo (ONE, 1) != 0
+       || foo (TWO, 0) != 1
+       || foo (TWO, 1) != 1
+       || foo (&v[7], 0) != 1
+       || foo (&v[7], 1) != 1)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr87623.c gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr87623.c
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/execute/pr87623.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/execute/pr87623.c	Wed Oct 17 17:53:02 2018
***************
*** 0 ****
--- 1,34 ----
+ /* PR middle-end/87623 */
+ /* Testcase by George Thopas <george.thopas@gmail.com> */
+ 
+ struct be {
+     unsigned short pad[1];
+     unsigned char  a;
+     unsigned char  b;
+ } __attribute__((scalar_storage_order("big-endian")));
+ 
+ typedef struct be t_be;
+ 
+ struct le {
+     unsigned short pad[3];
+     unsigned char  a;
+     unsigned char  b;
+ };
+ 
+ typedef struct le t_le;
+ 
+ int a_or_b_different(t_be *x,t_le *y)
+ {
+    return (x->a != y->a) || (x->b != y->b);
+ }
+ 
+ int main (void)
+ {
+    t_be x = { .a=1, .b=2  };
+    t_le y = { .a=1, .b=2  };
+   
+    if (a_or_b_different(&x,&y))
+        __builtin_abort ();
+ 
+    return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x gcc-7.4.0/gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x
*** gcc-7.3.0/gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x	Wed Sep 21 15:16:41 2016
--- gcc-7.4.0/gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x	Thu Mar  1 16:41:11 2018
*************** proc dump_compare { src options } {
*** 9,22 ****
  
      # loop through all the options
      foreach option $option_list {
! 	file delete -force dump1
! 	file mkdir dump1
  	c-torture-compile $src "$option $options -dumpbase dump1/$dumpbase -DMASK=1 -x c --param ggc-min-heapsize=1 -fdump-ipa-all -fdump-rtl-all -fdump-tree-all -fdump-noaddr"
! 	file delete -force dump2
! 	file mkdir dump2
  	c-torture-compile $src "$option $options -dumpbase dump2/$dumpbase -DMASK=2 -x c -fdump-ipa-all -fdump-rtl-all -fdump-tree-all -fdump-noaddr"
! 	foreach dump1 [lsort [glob -nocomplain dump1/*]] {
! 	    regsub dump1/ $dump1 dump2/ dump2
  	    set dumptail "gcc.c-torture/unsorted/[file tail $dump1]"
  	    regsub {\.\d+((t|r|i)\.[^.]+)$} $dumptail {.*\1} dumptail
  	    set tmp [ diff "$dump1" "$dump2" ]
--- 9,22 ----
  
      # loop through all the options
      foreach option $option_list {
! 	file delete -force $tmpdir/dump1
! 	file mkdir $tmpdir/dump1
  	c-torture-compile $src "$option $options -dumpbase dump1/$dumpbase -DMASK=1 -x c --param ggc-min-heapsize=1 -fdump-ipa-all -fdump-rtl-all -fdump-tree-all -fdump-noaddr"
! 	file delete -force $tmpdir/dump2
! 	file mkdir $tmpdir/dump2
  	c-torture-compile $src "$option $options -dumpbase dump2/$dumpbase -DMASK=2 -x c -fdump-ipa-all -fdump-rtl-all -fdump-tree-all -fdump-noaddr"
! 	foreach dump1 [lsort [glob -nocomplain $tmpdir/dump1/*]] {
! 	    set dump2 "$tmpdir/dump2/[file tail $dump1]"
  	    set dumptail "gcc.c-torture/unsorted/[file tail $dump1]"
  	    regsub {\.\d+((t|r|i)\.[^.]+)$} $dumptail {.*\1} dumptail
  	    set tmp [ diff "$dump1" "$dump2" ]
*************** proc dump_compare { src options } {
*** 29,36 ****
  	    }
  	}
      }
!     file delete -force dump1
!     file delete -force dump2
  }
  
  dump_compare $src $options
--- 29,36 ----
  	    }
  	}
      }
!     file delete -force $tmpdir/dump1
!     file delete -force $tmpdir/dump2
  }
  
  dump_compare $src $options
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-1.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-1.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,19 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile }
+    { dg-options "-O -Walloc-size-larger-than=1KB -ftrack-macro-expansion=0" } */
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ void f (void)
+ {
+   unsigned n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = 1024;   /* 1 kibibyte (KB or KiB) */
+   T (__builtin_malloc (n));
+ 
+   n = 1025;
+   T (__builtin_malloc (n));   /* { dg-warning "argument 1 value .1025. exceeds maximum object size 1024" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-10.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-10.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-10.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-10.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,27 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile { target lp64 } }
+    { dg-options "-O -Walloc-size-larger-than=1PiB -ftrack-macro-expansion=0" } */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ void f (void)
+ {
+   size_t n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = (size_t)1024 * 1024 * 1024 * 1024 * 1024;   /* 1 pebibyte (PiB) */
+   T (__builtin_malloc (n));
+ 
+   n += 1;
+   T (__builtin_malloc (n));   /* { dg-warning "argument 1 value .1125899906842625. exceeds maximum object size 1125899906842624" } */
+ 
+   n = __PTRDIFF_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ 
+   n = __SIZE_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-11.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-11.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-11.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-11.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,27 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile { target lp64 } }
+    { dg-options "-O -Walloc-size-larger-than=1PB -ftrack-macro-expansion=0" } */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ void f (void)
+ {
+   size_t n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = (size_t)1000 * 1000 * 1000 * 1000 * 1000;   /* 1 petabyte (PB) */
+   T (__builtin_malloc (n));
+ 
+   n += 1;
+   T (__builtin_malloc (n));   /* { dg-warning "argument 1 value .1000000000000001. exceeds maximum object size 1000000000000000" } */
+ 
+   n = __PTRDIFF_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ 
+   n = __SIZE_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-12.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-12.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-12.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-12.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,27 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile { target lp64 } }
+    { dg-options "-O -Walloc-size-larger-than=1EiB -ftrack-macro-expansion=0" } */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ void f (void)
+ {
+   size_t n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = (size_t)1024 * 1024 * 1024 * 1024 * 1024 * 1024;   /* 1 exbibyte (EiB) */
+   T (__builtin_malloc (n));
+ 
+   n += 1;
+   T (__builtin_malloc (n));   /* { dg-warning "argument 1 value .1152921504606846977. exceeds maximum object size 1152921504606846976" } */
+ 
+   n = __PTRDIFF_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ 
+   n = __SIZE_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-13.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-13.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-13.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-13.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,27 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile { target lp64 } }
+    { dg-options "-O -Walloc-size-larger-than=1EB -ftrack-macro-expansion=0" } */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ void f (void)
+ {
+   size_t n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = (size_t)1000 * 1000 * 1000 * 1000 * 1000 * 1000;   /* 1 exabyte (EB) */
+   T (__builtin_malloc (n));
+ 
+   n += 1;
+   T (__builtin_malloc (n));   /* { dg-warning "argument 1 value .1000000000000000001. exceeds maximum object size 1000000000000000000" } */
+ 
+   n = __PTRDIFF_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ 
+   n = __SIZE_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-14.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-14.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-14.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-14.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,30 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile }
+    { dg-options "-O -Walloc-size-larger-than=123456789123456789123456789123456789 -ftrack-macro-expansion=0" } */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ /* Verify that an exceedingly large -Walloc-size-larger-than argument
+    with no suffix is accepted and treated as infinite.  */
+ 
+ void f (void)
+ {
+   size_t n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = __PTRDIFF_MAX__;
+   T (__builtin_malloc (n));
+ 
+   n += 1;
+   T (__builtin_malloc (n));
+ 
+   n = __SIZE_MAX__ - 1;
+   T (__builtin_malloc (n));
+ 
+   n = __SIZE_MAX__;
+   T (__builtin_malloc (n));
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-15.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-15.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-15.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-15.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,30 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile }
+    { dg-options "-O -Walloc-size-larger-than=123456789123456789123456789123456789gb -ftrack-macro-expansion=0" } */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ /* Verify that an exceeingly large -Walloc-size-larger-than argument
+    with a valid suffic is accepted and treated as infinite.  */
+ 
+ void f (void)
+ {
+   size_t n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = __PTRDIFF_MAX__;
+   T (__builtin_malloc (n));
+ 
+   n += 1;
+   T (__builtin_malloc (n));
+ 
+   n = __SIZE_MAX__ - 1;
+   T (__builtin_malloc (n));
+ 
+   n = __SIZE_MAX__;
+   T (__builtin_malloc (n));
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-16.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-16.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-16.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-16.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,32 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile }
+    { dg-options "-O -Walloc-size-larger-than=1zb -ftrack-macro-expansion=0" } */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ /* Verify that an invalid -Walloc-size-larger-than argument is diagnosed
+    and rejected without changing the default setting of PTRDIFF_MAX.  */
+ 
+ void f (void)
+ {
+   size_t n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = __PTRDIFF_MAX__;
+   T (__builtin_malloc (n));
+ 
+   n += 1;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ 
+   n = __SIZE_MAX__ - 1;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ 
+   n = __SIZE_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ }
+ 
+ /* { dg-warning "invalid argument .1zb. to .-Walloc-size-larger-than=." "" { target *-*-* } 0 } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-2.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-2.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-2.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,20 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile }
+    { dg-options "-O -Walloc-size-larger-than=1KiB -ftrack-macro-expansion=0" }
+ */
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ void f (void)
+ {
+   unsigned n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = 1024;   /* 1 kibibyte (KB or KiB) */
+   T (__builtin_malloc (n));
+ 
+   n = 1025;
+   T (__builtin_malloc (n));   /* { dg-warning "argument 1 value .1025. exceeds maximum object size 1024" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-3.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-3.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-3.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-3.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,19 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile }
+    { dg-options "-O -Walloc-size-larger-than=1kB -ftrack-macro-expansion=0" } */
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ void f (void)
+ {
+   unsigned n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = 1000;   /* 1 kilobyte (kB, not to be confused with KB or KiB) */
+   T (__builtin_malloc (n));
+ 
+   n = 1001;
+   T (__builtin_malloc (n));   /* { dg-warning "argument 1 value .1001. exceeds maximum object size 1000" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-4.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-4.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-4.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-4.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,19 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile }
+    { dg-options "-O -Walloc-size-larger-than=1MiB -ftrack-macro-expansion=0" } */
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ void f (void)
+ {
+   unsigned n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = 1024 * 1024;   /* 1 mebibyte (MiB) */
+   T (__builtin_malloc (n));
+ 
+   n += 1;
+   T (__builtin_malloc (n));   /* { dg-warning "argument 1 value .1048577. exceeds maximum object size 1048576" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-5.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-5.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-5.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-5.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,25 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile }
+    { dg-options "-O -Walloc-size-larger-than=1MB -ftrack-macro-expansion=0" } */
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ void f (void)
+ {
+   __SIZE_TYPE__ n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = 1000 * 1000;   /* 1 megabyte (MB) */
+   T (__builtin_malloc (n));
+ 
+   n += 1;
+   T (__builtin_malloc (n));   /* { dg-warning "argument 1 value .1000001. exceeds maximum object size 1000000" } */
+ 
+   n = __PTRDIFF_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size 1000000" } */
+ 
+   n = __SIZE_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size 1000000" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-6.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-6.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-6.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-6.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,25 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile }
+    { dg-options "-O -Walloc-size-larger-than=1GiB -ftrack-macro-expansion=0" } */
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ void f (void)
+ {
+   __SIZE_TYPE__ n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = 1024 * 1024 * 1024;   /* 1 gigibyte (GiB) */
+   T (__builtin_malloc (n));
+ 
+   n += 1;
+   T (__builtin_malloc (n));   /* { dg-warning "argument 1 value .1073741825. exceeds maximum object size 1073741824" } */
+ 
+   n = __PTRDIFF_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ 
+   n = __SIZE_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-7.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-7.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-7.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-7.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,25 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile }
+    { dg-options "-O -Walloc-size-larger-than=1GB -ftrack-macro-expansion=0" } */
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ void f (void)
+ {
+   __SIZE_TYPE__ n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = 1000 * 1000 * 1000;   /* 1 gigabyte (GB) */
+   T (__builtin_malloc (n));
+ 
+   n += 1;
+   T (__builtin_malloc (n));   /* { dg-warning "argument 1 value .1000000001. exceeds maximum object size 1000000000" } */
+ 
+   n = __PTRDIFF_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ 
+   n = __SIZE_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-8.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-8.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-8.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-8.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,27 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile { target lp64 } }
+    { dg-options "-O -Walloc-size-larger-than=1TiB -ftrack-macro-expansion=0" } */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ void f (void)
+ {
+   size_t n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = (size_t)1024 * 1024 * 1024 * 1024;   /* 1 tebibyte (TiB) */
+   T (__builtin_malloc (n));
+ 
+   n += 1;
+   T (__builtin_malloc (n));   /* { dg-warning "argument 1 value .1099511627777. exceeds maximum object size 1099511627776" } */
+ 
+   n = __PTRDIFF_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ 
+   n = __SIZE_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-9.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-9.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-9.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than-9.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,27 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile { target lp64 } }
+    { dg-options "-O -Walloc-size-larger-than=1TB -ftrack-macro-expansion=0" } */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ void f (void)
+ {
+   size_t n = 0;
+   T (__builtin_malloc (n));
+ 
+   n = (size_t)1000 * 1000 * 1000 * 1000;   /* 1 terabyte (TB) */
+   T (__builtin_malloc (n));
+ 
+   n += 1;
+   T (__builtin_malloc (n));   /* { dg-warning "argument 1 value .1000000000001. exceeds maximum object size 1000000000000" } */
+ 
+   n = __PTRDIFF_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ 
+   n = __SIZE_MAX__;
+   T (__builtin_malloc (n));   /* { dg-warning "exceeds maximum object size" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than.c gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/Walloc-size-larger-than.c	Tue Jun 19 00:02:30 2018
***************
*** 0 ****
--- 1,13 ----
+ /* PR middle-end/82063 - issues with arguments enabled by -Wall
+    { dg-do compile }
+    { dg-options "-Walloc-size-larger-than=0 -ftrack-macro-expansion=0" } */
+ 
+ void sink (void*);
+ 
+ #define T(x) sink (x)
+ 
+ void f (void)
+ {
+   T (__builtin_malloc (0));
+   T (__builtin_malloc (1));   /* { dg-warning "argument 1 value .1. exceeds maximum object size 0" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/cpp/trad/pr69869.c gcc-7.4.0/gcc/testsuite/gcc.dg/cpp/trad/pr69869.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/cpp/trad/pr69869.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/cpp/trad/pr69869.c	Sat Mar  3 13:22:45 2018
***************
*** 0 ****
--- 1,8 ----
+ /* PR preprocessor/69869 */
+ /* { dg-do preprocess } */
+ /* { dg-options "-traditional-cpp" } */
+ 
+ #define C(a,b)a/**/b
+ C (foo/,**/)
+ C (foo/,*)
+ /* { dg-error "unterminated comment" "" {target "*-*-*"} .-1 } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c gcc-7.4.0/gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c	Wed Nov  2 12:42:19 2016
--- gcc-7.4.0/gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c	Mon Feb  5 22:35:08 2018
***************
*** 3,11 ****
     the build not reproducible.  Other skipped options could be tested here
     as well.  */
  /* { dg-do compile } */
! /* { dg-options "-O2 -gdwarf -dA -fdebug-prefix-map=a=b" } */
! /* { dg-final { scan-assembler "DW_AT_producer: \"GNU C" { target { { { ! *-*-solaris2* } || gas } && { { ! hppa*64*-*-* } && { ! powerpc-ibm-aix* } } } } } } */
! /* { dg-final { scan-assembler "\"GNU C\[^\\n\\r\]+ DW_AT_producer" { target { { *-*-solaris2* && { ! gas } } || { hppa*64*-*-* } } } } } */
  /* { dg-final { scan-assembler-not "debug-prefix-map" } } */
  
  void func (void)
--- 3,10 ----
     the build not reproducible.  Other skipped options could be tested here
     as well.  */
  /* { dg-do compile } */
! /* { dg-options "-O2 -gdwarf -dA -fno-merge-debug-strings -fdebug-prefix-map=a=b" } */
! /* { dg-final { scan-assembler "\"GNU C\[^\\n\\r\]+ DW_AT_producer" } } */
  /* { dg-final { scan-assembler-not "debug-prefix-map" } } */
  
  void func (void)
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/debug/pr85252.c gcc-7.4.0/gcc/testsuite/gcc.dg/debug/pr85252.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/debug/pr85252.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/debug/pr85252.c	Fri Jun 22 21:08:00 2018
***************
*** 0 ****
--- 1,11 ----
+ /* PR debug/85252 */
+ /* { dg-do compile } */
+ 
+ void
+ foo (void)
+ {
+   static char a[0] = "";
+   static char b[0] = "b";	/* { dg-warning "initializer-string for array of chars is too long" } */
+   static char c[1] = "c";
+   static char d[1] = "de";	/* { dg-warning "initializer-string for array of chars is too long" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr81440.h gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr81440.h
*** gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr81440.h	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr81440.h	Tue Mar  6 20:06:29 2018
***************
*** 0 ****
--- 1,4 ----
+ typedef struct {
+   int i;
+   int ints[];
+ } struct_t;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr81440_0.c gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr81440_0.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr81440_0.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr81440_0.c	Tue Mar  6 20:06:29 2018
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-lto-do link } */
+ 
+ #include "pr81440.h"
+ 
+ extern struct_t my_struct;
+ 
+ int main() {
+  return my_struct.ints[0];
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr81440_1.c gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr81440_1.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr81440_1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr81440_1.c	Tue Mar  6 20:06:29 2018
***************
*** 0 ****
--- 1,6 ----
+ #include "pr81440.h"
+ 
+ struct_t my_struct = {
+  20,
+  { 1, 2 }
+ };
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr83954.h gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr83954.h
*** gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr83954.h	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr83954.h	Tue Mar  6 20:01:44 2018
***************
*** 0 ****
--- 1,3 ----
+ struct foo;
+ extern struct foo *FOO_PTR_ARR[1];
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr83954_0.c gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr83954_0.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr83954_0.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr83954_0.c	Tue Mar  6 20:01:44 2018
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-lto-do link } */
+ #include "pr83954.h"
+ 
+ int main() {
+   // just to prevent symbol removal
+   FOO_PTR_ARR[1] = 0;
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr83954_1.c gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr83954_1.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr83954_1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr83954_1.c	Tue Mar  6 20:01:44 2018
***************
*** 0 ****
--- 1,7 ----
+ #include "pr83954.h"
+ 
+ struct foo {
+  int x;
+ };
+ struct foo *FOO_PTR_ARR[1] = { 0 };
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr85248_0.c gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr85248_0.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr85248_0.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr85248_0.c	Tue Apr 24 15:18:25 2018
***************
*** 0 ****
--- 1,45 ----
+ /* PR lto/85248 */
+ /* { dg-lto-do run } */
+ /* { dg-lto-options { { -flto -O2 } } } */
+ 
+ extern void test_alias (int s, int e) __asm__ (__USER_LABEL_PREFIX__ "test");
+ extern void test_noreturn (int s, int e) __asm__ (__USER_LABEL_PREFIX__ "test")
+   __attribute__ ((__noreturn__));
+ 
+ extern inline __attribute__ ((__always_inline__, __gnu_inline__)) void
+ test (int s, int e)
+ {
+   if (__builtin_constant_p (s) && s != 0)
+     test_noreturn (s, e);
+   else
+     test_alias (s, e);
+ }
+ 
+ int
+ foo (void)
+ {
+   static volatile int a;
+   return a;
+ }
+ 
+ static void
+ bar (void)
+ {
+   test (0, 1);
+   __builtin_exit (0);
+ }
+ 
+ static void
+ baz ()
+ {
+   test (1, 0);
+ }
+ 
+ int
+ main ()
+ {
+   if (foo ())
+     baz ();
+   bar ();
+   __builtin_abort ();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr85248_1.c gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr85248_1.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/lto/pr85248_1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/lto/pr85248_1.c	Tue Apr 24 15:18:25 2018
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-options "-fno-lto" } */
+ 
+ void
+ test (int s, int e)
+ {
+   asm volatile ("" : "+g" (s), "+g" (e) : : "memory");
+   if (s)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/nested-func-11.c gcc-7.4.0/gcc/testsuite/gcc.dg/nested-func-11.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/nested-func-11.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/nested-func-11.c	Mon Sep 24 08:15:53 2018
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -fno-omit-frame-pointer" } */
+ 
+ int __attribute__((noclone,noinline)) foo (int i)
+ {
+   int a;
+ 
+   void __attribute__((noclone,noinline)) nested2 (int i)
+   {
+     a = i;
+   }
+ 
+   void  __attribute__((noclone,noinline)) nested1 (int i)
+   {
+     int b[32];
+ 
+     for (int j = 0; j < 32; j++)
+       b[j] = i + j;
+ 
+     nested2 (b[i]);
+   }
+ 
+   nested1 (i);
+ 
+   return a;
+ }
+ 
+ int main (void)
+ {
+   if (foo (4) != 8)
+     __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr81228.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr81228.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr81228.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr81228.c	Thu Feb 22 15:01:05 2018
***************
*** 0 ****
--- 1,21 ----
+ /* PR target/81228.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fdump-tree-ssa" } */
+ 
+ void *a;
+ 
+ void b ()
+ {
+   char c;
+   long d;
+   char *e = a;
+   for (; d; d++)
+   {
+     double f, g;
+     c = g < f || g > f;
+     e[d] = c;
+   }
+ }
+ 
+ /* Let's make sure we do have a LTGT.  */
+ /* { dg-final { scan-tree-dump "<>" "ssa" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr81661.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr81661.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr81661.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr81661.c	Sat Mar  3 13:25:27 2018
***************
*** 0 ****
--- 1,12 ----
+ /* PR tree-optimization/81661 */
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -ftrapv" } */
+ 
+ int a, b, c;
+ 
+ void
+ foo (void)
+ {
+   while (a + c > b)
+     a--;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr82916.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr82916.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr82916.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr82916.c	Sat Mar  3 13:38:48 2018
***************
*** 0 ****
--- 1,47 ----
+ /* PR bootstrap/82916 */
+ /* { dg-do run } */
+ /* { dg-options "-O2 -fno-tree-dse" } */
+ 
+ struct A { struct A *next; };
+ struct C
+ {
+   int *of;
+   struct C *parent, *prev, *next;
+   int depth;
+   int min;
+   struct C *min_occ;
+ };
+ 
+ __attribute__((noinline, noclone)) struct C *
+ foo (int *node)
+ {
+   struct A *p = __builtin_malloc (sizeof (struct C));
+   if (!p)
+     return 0;
+   p->next = 0;
+   /* Originally placement new.  */
+   struct C *nw = (struct C *)(void *)p;
+   nw->of = node;
+   nw->parent = 0;
+   nw->prev = 0;
+   nw->next = 0;
+   nw->depth = 0;
+   nw->min_occ = nw;
+   nw->min = 0;
+   return nw;
+ }
+ 
+ int
+ main ()
+ {
+   int o;
+   struct C *p = foo (&o);
+   if (p)
+     {
+       if (p->of != &o || p->parent || p->prev || p->next || p->depth
+ 	  || p->min || p->min_occ != p)
+ 	__builtin_abort ();
+     }
+   __builtin_free (p);
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr83605.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr83605.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr83605.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr83605.c	Sat Mar  3 13:12:10 2018
***************
*** 0 ****
--- 1,20 ----
+ /* PR tree-optimization/83605 */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -ftrapv -fexceptions -fnon-call-exceptions" } */
+ 
+ int a;
+ 
+ int
+ foo (int x)
+ {
+   int b = a;
+   {
+     int c;
+     int *d = (x == 0) ? &c : &b;
+ 
+     for (a = 0; a < 2; ++a)
+       c = (x + b) < a;
+ 
+     return *d;
+   }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr83930.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr83930.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr83930.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr83930.c	Sat Mar  3 13:14:58 2018
***************
*** 0 ****
--- 1,17 ----
+ /* PR target/83930 */
+ /* { dg-do compile } */
+ /* { dg-options "-Og -fno-tree-ccp -w" } */
+ 
+ unsigned __attribute__ ((__vector_size__ (16))) v;
+ 
+ static inline void
+ bar (unsigned char d)
+ {
+   v /= d;
+ }
+ 
+ __attribute__ ((always_inline)) void
+ foo (void)
+ {
+   bar (4);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr83985.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr83985.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr83985.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr83985.c	Fri Jan 26 12:24:53 2018
***************
*** 0 ****
--- 1,25 ----
+ /* PR rtl-optimization/83985 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-additional-options "-mcpu=e300c3 -mtune=e300c3" { target { powerpc*-*-* && ilp32 } } } */
+ 
+ long long int v;
+ 
+ void
+ foo (int x)
+ {
+   if (x == 0)
+     return;
+ 
+   while (v < 2)
+     {
+       signed char *a;
+       v /= x;
+       a = v == 0 ? (signed char *) &x : (signed char *) &v;
+       ++*a;
+       ++v;
+     }
+ 
+   while (1)
+     ;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr83986.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr83986.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr83986.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr83986.c	Sat Mar  3 13:21:58 2018
***************
*** 0 ****
--- 1,14 ----
+ /* PR rtl-optimization/83986 */
+ /* { dg-do compile } */
+ /* { dg-options "-g -O2 -fsched2-use-superblocks -funwind-tables --param max-pending-list-length=1" } */
+ 
+ int v;
+ 
+ int
+ foo (int x)
+ {
+   v &= !!v && !!x;
+   if (v != 0)
+     foo (0);
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr84503-1.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr84503-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr84503-1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr84503-1.c	Sat Mar  3 13:38:48 2018
***************
*** 0 ****
--- 1,68 ----
+ /* PR tree-optimization/84503 */
+ /* { dg-do run } */
+ /* { dg-options "-O3" } */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ typedef __UINTPTR_TYPE__ uintptr_t;
+ 
+ struct S { int a; unsigned short b; int c, d, e; long f, g, h; int i, j; };
+ static struct S *k;
+ static size_t l = 0;
+ int m;
+ 
+ static int
+ bar (void)
+ {
+   unsigned i;
+   int j;
+   if (k[0].c == 0)
+     {
+       ++m;
+       size_t n = l * 2;
+       struct S *o;
+       o = (struct S *) __builtin_realloc (k, sizeof (struct S) * n);
+       if (!o)
+ 	__builtin_exit (0);
+       k = o;
+       for (i = l; i < n; i++)
+ 	{
+ 	  void *p = (void *) &k[i];
+ 	  int q = 0;
+ 	  size_t r = sizeof (struct S);
+ 	  if ((((uintptr_t) p) % __alignof__ (long)) == 0
+ 	      && r % sizeof (long) == 0)
+ 	    {
+ 	      long __attribute__ ((may_alias)) *s = (long *) p;
+ 	      long *t = (long *) ((char *) s + r);
+ 	      while (s < t)
+ 		*s++ = 0;
+ 	    }
+ 	  else
+ 	    __builtin_memset (p, q, r);
+ 	  k[i].c = i + 1;
+ 	  k[i].a = -1;
+ 	}
+       k[n - 1].c = 0;
+       k[0].c = l;
+       l = n;
+     }
+   j = k[0].c;
+   k[0].c = k[j].c;
+   return j;
+ }
+ 
+ int
+ main ()
+ {
+   k = (struct S *) __builtin_malloc (sizeof (struct S));
+   if (!k)
+     __builtin_exit (0);
+   __builtin_memset (k, '\0', sizeof (struct S));
+   k->a = -1;
+   l = 1;
+   for (int i = 0; i < 15; ++i)
+     bar ();
+   if (m != 4)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr84503-2.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr84503-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr84503-2.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr84503-2.c	Sat Mar  3 13:38:48 2018
***************
*** 0 ****
--- 1,5 ----
+ /* PR tree-optimization/84503 */
+ /* { dg-do run } */
+ /* { dg-options "-O3 -fno-tree-vectorize -fno-ivopts" } */
+ 
+ #include "pr84503-1.c"
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr84607.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr84607.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr84607.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr84607.c	Tue Mar  6 10:01:52 2018
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run } */
+ 
+ extern void exit(int);
+ extern void abort(void);
+ int a[10];
+ int foo()
+ {
+   exit (0);
+   return 0;
+ }
+ int main()
+ {
+   if (&a[foo()])
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr84628.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr84628.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr84628.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr84628.c	Sat Mar  3 13:43:30 2018
***************
*** 0 ****
--- 1,8 ----
+ /* PR ipa/84628 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ int f0 (void);
+ __attribute__((error ("err"))) void f1 (void) { f0 (); f0 (); }
+ __attribute__((error ("err"))) void f2 (void) { f0 (); f0 (); }
+ /* { dg-bogus "declared with attribute error" "" { target *-*-* } 0 } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr84739.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr84739.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr84739.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr84739.c	Fri Jun 22 20:31:10 2018
***************
*** 0 ****
--- 1,26 ----
+ /* PR tree-optimization/84739 */
+ /* { dg-do compile } */
+ /* { dg-require-weak "" } */
+ /* { dg-options "-O2 -w" } */
+ 
+ static void baz (void) __attribute__((weakref("bar")));
+ 
+ int
+ foo (int x, int y)
+ {
+   if (x)
+     y = 0;
+   if (y)
+     goto lab;
+   y = 0;
+ lab:
+   return y;
+ }
+ 
+ void
+ bar (int x, int y)
+ {
+   y = foo (x, y);
+   if (y != 0)
+     baz ();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr84772.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr84772.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr84772.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr84772.c	Fri Jun 22 20:35:29 2018
***************
*** 0 ****
--- 1,13 ----
+ /* PR target/84772 */
+ /* { dg-do compile } */
+ /* { dg-options "-O -Wuninitialized" } */
+ 
+ #include <stdarg.h>
+ 
+ void
+ foo (int *x, int y, va_list ap)
+ {
+   __builtin_memset (x, 0, sizeof (int));
+   for (int i = 0; i < y; i++)
+     va_arg (ap, long double);			/* { dg-bogus "uninitialized" } */  
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr84834.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr84834.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr84834.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr84834.c	Fri Jun 22 20:38:25 2018
***************
*** 0 ****
--- 1,15 ----
+ /* PR middle-end/84834 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ _Complex int
+ foo (int a)
+ {
+   return a < 0;
+ }
+ 
+ _Complex int
+ bar (int a)
+ {
+   return (a & 8) ? (_Complex int) 16 : (_Complex int) 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr84841.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr84841.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr84841.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr84841.c	Fri Jun 22 20:46:37 2018
***************
*** 0 ****
--- 1,9 ----
+ /* PR tree-optimization/84841 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fassociative-math -frounding-math -fno-signed-zeros -fno-trapping-math -fno-tree-forwprop" } */
+ 
+ double
+ foo (double x)
+ {
+   return -x * 0.1 * 0.1;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr84853.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr84853.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr84853.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr84853.c	Fri Jun 22 20:40:45 2018
***************
*** 0 ****
--- 1,19 ----
+ /* PR c/84853 */
+ /* { dg-do compile } */
+ 
+ typedef float V __attribute__((__vector_size__ (16)));
+ typedef int W __attribute__((__vector_size__ (16)));
+ 
+ void
+ foo (int x, V *y, V *z, W *w)
+ {
+   *y = *y << x;		/* { dg-error "invalid operands to binary <<" } */
+   *z = *z << *w;	/* { dg-error "invalid operands to binary <<" } */
+ }
+ 
+ void
+ bar (int x, V *y, V *z, W *w)
+ {
+   *y = *y >> x;		/* { dg-error "invalid operands to binary >>" } */
+   *z = *z >> *w;	/* { dg-error "invalid operands to binary >>" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr84875.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr84875.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr84875.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr84875.c	Fri Jun 22 20:53:41 2018
***************
*** 0 ****
--- 1,28 ----
+ /* PR debug/84875 */
+ /* { dg-do compile } */
+ /* { dg-options "-Os" } */
+ /* { dg-additional-options "-fpie" { target pie } } */
+ /* { dg-additional-options "-march=z196" { target s390*-*-* } } */
+ 
+ static long *a[100];
+ static int b[100];
+ long *c;
+ int d;
+ void foo (long *);
+ 
+ void
+ bar ()
+ {
+   long *g = c;
+   g--;
+   d = *g;
+   if (d)
+     if (b[d] < 8)
+       {
+ 	*(void **)g = a[d];
+ 	a[d] = g;
+ 	b[d]++;
+ 	return;
+       }
+   foo (g);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr84899.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr84899.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr84899.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr84899.c	Fri Jun 22 20:48:57 2018
***************
*** 0 ****
--- 1,12 ----
+ /* PR target/84899 */
+ /* { dg-do compile } */
+ /* { dg-options "-O -funroll-all-loops -fno-move-loop-invariants" } */
+ 
+ void
+ foo (int x)
+ {
+   int a = 1 / x, b = 0;
+ 
+   while ((a + b + 1) < x)
+     b = __INT_MAX__;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr84941.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr84941.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr84941.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr84941.c	Fri Jun 22 20:56:25 2018
***************
*** 0 ****
--- 1,10 ----
+ /* PR inline-asm/84941 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ void
+ foo (void)
+ {
+   short *b[1] = { 0 };
+   asm volatile ("" : "=m,m" (b), "=r,r" (b) : "1,p" (b));
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr84953.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr84953.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr84953.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr84953.c	Fri Jun 22 20:52:44 2018
***************
*** 0 ****
--- 1,11 ----
+ /* PR c/84953 */
+ /* { dg-do compile } */
+ 
+ char *strpbrk (const char *, const char *);
+ 
+ char *
+ test (char *p)
+ {
+   p = strpbrk (p, "");	/* { dg-bogus "assignment discards 'const' qualifier from pointer target type" } */
+   return p;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr84956.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr84956.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr84956.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr84956.c	Thu Mar 22 10:39:43 2018
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-options "-O2 -ftree-tail-merge" } */
+ 
+ char a;
+ int c;
+ unsigned b ();
+ 
+ unsigned
+ setjmp ()
+ {
+ }
+ 
+ static void
+ d ()
+ {
+   if (b ())
+     c = 3;
+ }
+ 
+ void
+ e ()
+ {
+   d ();
+   a && ({ setjmp (); });
+   a && ({ setjmp (); });
+   a && ({ setjmp (); });
+ }
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr85167.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr85167.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr85167.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr85167.c	Fri Jun 22 21:05:08 2018
***************
*** 0 ****
--- 1,16 ----
+ /* PR rtl-optimization/85167 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -w" } */
+ 
+ struct A { long b; };
+ int c, d, e;
+ int bar (void);
+ 
+ int
+ foo (void)
+ {
+   long g;
+   for (; g == c ? 0 : (e = 1); g = ((struct A *)g)->b)
+     if (bar ())
+       return d;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr85257.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr85257.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr85257.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr85257.c	Fri Jun 22 21:08:47 2018
***************
*** 0 ****
--- 1,20 ----
+ /* PR tree-optimization/85257 */
+ /* { dg-do run { target int128 } } */
+ /* { dg-options "-O2 -fno-tree-ccp" } */
+ 
+ typedef __int128 V __attribute__ ((__vector_size__ (16 * sizeof (__int128))));
+ 
+ __int128 __attribute__ ((noinline, noclone))
+ foo (void)
+ {
+   V v = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
+   return v[5];
+ }
+ 
+ int
+ main ()
+ {
+   if (foo () != 6)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr85300.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr85300.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr85300.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr85300.c	Fri Jun 22 21:10:17 2018
***************
*** 0 ****
--- 1,16 ----
+ /* PR rtl-optimization/85300 */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -g -funroll-all-loops -fno-tree-ter -fno-web" } */
+ 
+ void
+ foo (double x, unsigned char y)
+ {
+   while ((int) x < 1)
+     {
+       float a;
+ 
+       a = y | 0x100;
+       y = 0;
+       x = a;
+     }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr85430.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr85430.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr85430.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr85430.c	Fri Jun 22 21:10:59 2018
***************
*** 0 ****
--- 1,12 ----
+ /* PR target/85430 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fno-tree-ccp -fno-tree-fre" } */
+ 
+ typedef char V __attribute__((vector_size (4)));
+ 
+ V
+ foo (V v)
+ {
+   v[(V){}[0]] <<= 1;
+   return v;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr85529.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr85529.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr85529.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr85529.c	Fri Jun 22 21:19:32 2018
***************
*** 0 ****
--- 1,27 ----
+ /* PR tree-optimization/85529 */
+ /* { dg-do run } */
+ /* { dg-options "-O2 -fno-ssa-phiopt" } */
+ 
+ __attribute__((noinline, noclone)) int
+ foo (int x)
+ {
+   x &= 31;
+   x -= 25;
+   x *= 2;
+   if (x < 0)
+     return 1;
+   int y = x >> 2;
+   if (x >= y)
+     return 1;
+   return 0;
+ }
+ 
+ int
+ main ()
+ {
+   int i;
+   for (i = 0; i < 63; i++)
+     if (foo (i) != 1)
+       __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr85859.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr85859.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr85859.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr85859.c	Mon Sep  3 10:04:08 2018
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run } */
+ /* { dg-options "-ftree-tail-merge -Wno-div-by-zero -O2 -fno-dce -fno-isolate-erroneous-paths-dereference -fno-tree-dce -fno-tree-vrp" } */
+ 
+ int b, c, d, e;
+ 
+ __attribute__ ((noinline, noclone))
+ int foo (short f)
+ {
+   f %= 0;
+   return f;
+ }
+ 
+ int
+ main (void)
+ {
+   b = (unsigned char) __builtin_parity (d);
+   e ? foo (0) : (long) &c;
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr86076.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr86076.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr86076.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr86076.c	Mon Nov 26 11:59:05 2018
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile { target pthread } }  */
+ /* { dg-options "-O2 -ftree-parallelize-loops=2 -fno-tree-dce -fno-tree-pre -fno-tree-vrp --param max-loop-header-insns=1" } */
+ 
+ int __attribute__ ((noinline))
+ lv (int tm)
+ {
+   (void) tm;
+ 
+   return 0;
+ }
+ 
+ void
+ o7 (int uu)
+ {
+   while (uu < 1)
+     while (uu != 0)
+       {
+ 	short int ca;
+ 
+ 	ca = lv (0);
+ 	(void) ca;
+ 	++uu;
+       }
+ 
+   lv (lv (0));
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr86314.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr86314.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr86314.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr86314.c	Tue Jun 26 11:54:29 2018
***************
*** 0 ****
--- 1,20 ----
+ // PR target/86314
+ // { dg-do run { target sync_int_long } }
+ // { dg-options "-O2" }
+ 
+ __attribute__((noinline, noclone)) unsigned long
+ foo (unsigned long *p)
+ {
+   unsigned long m = 1UL << ((*p & 1) ? 1 : 0);
+   unsigned long n = __atomic_fetch_or (p, m, __ATOMIC_SEQ_CST);
+   return (n & m) == 0;
+ }
+ 
+ int
+ main ()
+ {
+   unsigned long v = 1;
+   if (foo (&v) != 1)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/pr87024.c gcc-7.4.0/gcc/testsuite/gcc.dg/pr87024.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/pr87024.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/pr87024.c	Fri Oct 12 13:41:56 2018
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -fno-tree-dce" } */
+ 
+ static inline void __attribute__((always_inline))
+ mp ()
+ {
+   (void) __builtin_va_arg_pack_len ();
+ }
+ 
+ void
+ ui (void)
+ {
+   mp ();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/rtl/x86_64/final.c gcc-7.4.0/gcc/testsuite/gcc.dg/rtl/x86_64/final.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/rtl/x86_64/final.c	Thu Mar  2 19:32:32 2017
--- gcc-7.4.0/gcc/testsuite/gcc.dg/rtl/x86_64/final.c	Tue Feb  6 10:30:49 2018
***************
*** 1,5 ****
  /* { dg-do compile { target { { i?86-*-* x86_64-*-* } && lp64 } } } */
! /* { dg-options "-fdump-rtl-final" } */
  
  /* Lightly-modified dump of test.c.304r.dwarf2 for x86_64 target,
     with various NOTE_INSN_CFI deleted by hand for now.  */
--- 1,5 ----
  /* { dg-do compile { target { { i?86-*-* x86_64-*-* } && lp64 } } } */
! /* { dg-options "-fdwarf2-cfi-asm -fdump-rtl-final" } */
  
  /* Lightly-modified dump of test.c.304r.dwarf2 for x86_64 target,
     with various NOTE_INSN_CFI deleted by hand for now.  */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/tls/pr83945.c gcc-7.4.0/gcc/testsuite/gcc.dg/tls/pr83945.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/tls/pr83945.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/tls/pr83945.c	Sat Mar  3 13:15:49 2018
***************
*** 0 ****
--- 1,21 ----
+ /* PR middle-end/83945 */
+ /* { dg-do compile { target tls } } */
+ /* { dg-options "-O2" } */
+ 
+ struct S { int a[1]; };
+ __thread struct T { int c; } e;
+ int f;
+ void bar (int);
+ 
+ void
+ foo (int f, int x)
+ {
+   struct S *h = (struct S *) &e.c;
+   for (;;)
+     {
+       int *a = h->a, i;
+       for (i = x; i; i--)
+ 	bar (a[f]);
+       bar (a[f]);
+     }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr57656.c gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr57656.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr57656.c	Tue Sep  3 10:00:06 2013
--- gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr57656.c	Thu Jun  7 10:10:00 2018
***************
*** 1,5 ****
  /* { dg-do run } */
! /* { dg-options "-fstrict-overflow" } */
  
  int main (void)
  {
--- 1,5 ----
  /* { dg-do run } */
! /* { dg-additional-options "-fstrict-overflow" } */
  
  int main (void)
  {
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr79351.c gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr79351.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr79351.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr79351.c	Wed Nov 28 12:57:58 2018
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do run } */
+ 
+ static struct state {
+     int k;
+     int dummy;
+ } states[256];
+ 
+ __attribute((noinline))
+ static void
+ ismatch(int n)
+ {
+   for (int j=0; j<n; j++) {
+       states[j] = (struct state){0};
+       for (int i = 0; i <= j; i++) {
+ 	  states[i].k++;
+       }
+   }
+ }
+ 
+ int
+ main()
+ {
+   ismatch(2);
+   if (states[0].k != 2)
+     __builtin_abort();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr85168.c gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr85168.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr85168.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr85168.c	Thu Apr 26 10:00:24 2018
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target indirect_jumps } */
+ 
+ typedef struct {
+     struct {
+ 	char a;
+     } b;
+ } c;
+ 
+ int d, f;
+ c *e;
+ 
+ extern void i(void);
+ extern void sejtmp () __attribute__((returns_twice));
+ 
+ void g(void)
+ {
+   c *h = e;
+   if (f)
+     {
+       i();
+       h--;
+       if (d)
+ 	if (h->b.a)
+ 	  i();
+     }
+   if (h->b.a)
+     sejtmp();
+   e = h;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr85244-1.c gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr85244-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr85244-1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr85244-1.c	Thu Apr 26 10:00:24 2018
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run } */
+ /* { dg-additional-sources "pr85244-2.c" } */
+ 
+ struct s {
+  long a;
+  int b;
+  int tab[];
+ };
+ 
+ extern const struct s val;
+ extern int idx;
+ extern void abort (void);
+ 
+ int main()
+ {
+   if (val.tab[0] != 42 || val.tab[1] != 1337 || val.tab[idx] != 1337)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr85244-2.c gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr85244-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr85244-2.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr85244-2.c	Thu Apr 26 10:00:24 2018
***************
*** 0 ****
--- 1,8 ----
+ struct s {
+     long a;
+     int b;
+     int tab[];
+ };
+ 
+ int idx = 1;
+ const struct s val = { 0, 0, { 42, 1337 } };
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr85284.c gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr85284.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr85284.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr85284.c	Thu Apr 26 10:00:24 2018
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do run } */
+ 
+ static int p[48], v;
+ 
+ int
+ main ()
+ {
+   p[32] = 1;
+   for (int i = 48; i--;)
+     {
+       if (!p[i])
+ 	continue;
+       if ((i & 7) > 2)
+ 	break;
+       v = i & 1;
+     }
+   if (v != 0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr85567.c gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr85567.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr85567.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr85567.c	Thu Jun  7 10:10:00 2018
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ 
+ extern void sincos(double x, double *sinx, double *cosx);
+ 
+ void apply(void (*f)(double, double *, double *),
+ 	   double x, double *sinx, double *cosx)
+ {
+   f(x, sinx, cosx);
+   return;
+ }
+ 
+ void apply_sincos(double x, double *sinx, double *cosx)
+ {
+   apply(sincos, x, sinx, cosx);
+   return;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr85588.c gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr85588.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr85588.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr85588.c	Thu Jun  7 10:10:00 2018
***************
*** 0 ****
--- 1,4 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-fwrapv" } */
+ 
+ #include "pr57656.c"
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr85989.c gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr85989.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr85989.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr85989.c	Sat Jun 23 12:21:18 2018
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do run } */
+ 
+ #define N 9
+ 
+ void __attribute__((noinline, noclone))
+ f (double x, double y, double *res)
+ {
+   y = -y;
+   for (int i = 0; i < N; ++i)
+     {
+       double tmp = y;
+       y = x;
+       x = tmp;
+       res[i] = i;
+     }
+   res[N] = y * y;
+   res[N + 1] = x;
+ }
+ 
+ int
+ main (void)
+ {
+   double res[N + 2];
+   f (10, 20, res);
+   for (int i = 0; i < N; ++i)
+     if (res[i] != i)
+       __builtin_abort ();
+   if (res[N] != 100 || res[N + 1] != -20)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr86505.c gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr86505.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr86505.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr86505.c	Fri Oct 12 13:41:56 2018
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do run } */
+ 
+ static inline __attribute__(( __always_inline__)) int 
+ funA(unsigned int param, ...) 
+ { 
+   return __builtin_va_arg_pack_len(); 
+ }
+ 
+ static inline __attribute__(( __always_inline__)) int
+ funB(unsigned int param, ...)
+ { 
+   return funA(param,  2, 4, __builtin_va_arg_pack()); 
+ }
+ 
+ int 
+ testBuiltin(void) 
+ { 
+   int rc = funB(0,1,2); 
+   if (rc != 4)
+     return 1;
+   return 0;
+ }
+ 
+ int
+ main()
+ {
+   int rc = testBuiltin();
+   if (rc == 1)
+     __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr87645.c gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr87645.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr87645.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr87645.c	Mon Nov 26 14:16:01 2018
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ 
+ typedef unsigned a[8];
+ a b, g;
+ int c, d, e, f;
+ int h() {
+     unsigned i = 2;
+     for (; i < 8; i++)
+       b[i] = 0;
+     for (; f;) {
+ 	d = 1;
+ 	for (; d < 14; d += 3) {
+ 	    e = 0;
+ 	    for (; e < 8; e++) {
+ 		i = 2;
+ 		for (; i < 8; i++)
+ 		  b[i] = 5 - (c - g[e] + b[i]);
+ 	    }
+ 	}
+     }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr87665.c gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr87665.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/torture/pr87665.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/torture/pr87665.c	Mon Nov 26 13:31:21 2018
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do run } */
+ 
+ struct X { long x; long y; };
+ 
+ struct X a[1024], b[1024];
+ 
+ void foo ()
+ {
+   for (int i = 0; i < 1024; ++i)
+     {
+       long tem = a[i].x;
+       a[i].x = 0;
+       b[i].x = tem;
+       b[i].y = a[i].y;
+     }
+ }
+ 
+ int main()
+ {
+   for (int i = 0; i < 1024; ++i)
+     a[i].x = i;
+   foo ();
+   for (int i = 0; i < 1024; ++i)
+     if (b[i].x != i)
+       __builtin_abort();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/torture/restrict-6.c gcc-7.4.0/gcc/testsuite/gcc.dg/torture/restrict-6.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/torture/restrict-6.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/torture/restrict-6.c	Mon Nov 26 13:31:21 2018
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do run } */
+ 
+ extern void abort (void);
+ 
+ void __attribute__((noinline)) g(int **a, int *b)
+ {
+   *a = b;
+ }
+ 
+ int foo(int * restrict p, int *q)
+ {
+   g(&q, p);
+   *p = 1;
+   *q = 2;
+   return *p + *q;
+ }
+ 
+ int main()
+ {
+   int x, y;
+   if (foo(&x, &y) != 4)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/tree-ssa/vrp119.c gcc-7.4.0/gcc/testsuite/gcc.dg/tree-ssa/vrp119.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/tree-ssa/vrp119.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/tree-ssa/vrp119.c	Fri Jun 22 21:33:07 2018
***************
*** 0 ****
--- 1,20 ----
+ /* PR tree-optimization/86231 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-vrp1" } */
+ /* { dg-final { scan-tree-dump-not "link_error" "vrp1" } } */
+ 
+ int bar (int);
+ void link_error (void);
+ 
+ int
+ foo (int x, int y, int z)
+ {
+   if (x < 4 || x > 8) __builtin_unreachable ();
+   if (y >= 2 && y <= 6) __builtin_unreachable ();
+   /* x is [4, 8], y is ~[2, 6], resulting range of e should be ~[2, 3].  */
+   int e = (z ? x : y);
+   bar (bar (bar (bar (bar (bar (bar (bar (bar (bar (bar (bar (e))))))))))));
+   if (e == 2 || e == 3)
+     link_error ();
+   return e;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/ubsan/bounds-3.c gcc-7.4.0/gcc/testsuite/gcc.dg/ubsan/bounds-3.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/ubsan/bounds-3.c	Fri May  6 09:47:25 2016
--- gcc-7.4.0/gcc/testsuite/gcc.dg/ubsan/bounds-3.c	Sat Mar  3 13:41:52 2018
***************
*** 1,6 ****
  /* PR sanitizer/70875 */
  /* { dg-do run } */
! /* { dg-options "-fsanitize=bounds" } */
  
  int
  foo (int n, int k)
--- 1,7 ----
  /* PR sanitizer/70875 */
  /* { dg-do run } */
! /* { dg-options "-fsanitize=bounds -fno-sanitize-recover=bounds" } */
! /* { dg-shouldfail "ubsan" } */
  
  int
  foo (int n, int k)
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/vect/pr84485.c gcc-7.4.0/gcc/testsuite/gcc.dg/vect/pr84485.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/vect/pr84485.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/vect/pr84485.c	Mon Mar 12 13:50:52 2018
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do run } */
+ 
+ #include "tree-vect.h"
+ 
+ #define N 256
+ 
+ void __attribute__ ((noinline, noclone))
+ f (unsigned long incx, unsigned long incy,
+    float *restrict dx, float *restrict dy)
+ {
+   unsigned long ix = 0, iy = 0;
+   for (unsigned long i = 0; i < N; ++i)
+     {
+       dy[iy] += dx[ix];
+       ix += incx;
+       iy += incy;
+     }
+ }
+ 
+ float a = 0.0;
+ float b[N];
+ 
+ int
+ main (void)
+ {
+   check_vect ();
+ 
+   for (int i = 0; i < N; ++i)
+     b[i] = i;
+   f (1, 0, b, &a);
+   if (a != N * (N - 1) / 2)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.dg/vect/pr85597.c gcc-7.4.0/gcc/testsuite/gcc.dg/vect/pr85597.c
*** gcc-7.3.0/gcc/testsuite/gcc.dg/vect/pr85597.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.dg/vect/pr85597.c	Thu Jun  7 10:10:00 2018
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3" } */
+ /* { dg-additional-options "-mfma" { target { x86_64-*-* i?86-*-* } } } */
+ 
+ extern double fma (double, double, double);
+ 
+ static inline void
+ bar (int i, double *D, double *S)
+ {
+   while (i-- > 0)
+     {
+       D[0] = fma (1, S[0], D[0]);
+       D[1] = fma (1, S[1], D[1]);
+       D[2] = fma (1, S[2], D[2]);
+       D[3] = fma (1, S[3], D[3]);
+       D += 4;
+       S += 4;
+     }
+ }
+ 
+ void
+ foo (double *d, double *s)
+ {
+   bar (10, d, s);
+ }
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/aarch64/pr63304_1.c gcc-7.4.0/gcc/testsuite/gcc.target/aarch64/pr63304_1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/aarch64/pr63304_1.c	Fri Mar 18 13:58:32 2016
--- gcc-7.4.0/gcc/testsuite/gcc.target/aarch64/pr63304_1.c	Fri Mar  9 01:55:44 2018
***************
*** 1,5 ****
  /* { dg-do assemble } */
! /* { dg-options "-O1 --save-temps -mno-fix-cortex-a53-843419" } */
  #pragma GCC push_options
  #pragma GCC target ("+nothing+simd, cmodel=small")
  
--- 1,5 ----
  /* { dg-do assemble } */
! /* { dg-options "-O1 --save-temps" } */
  #pragma GCC push_options
  #pragma GCC target ("+nothing+simd, cmodel=small")
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/aarch64/pr81647.c gcc-7.4.0/gcc/testsuite/gcc.target/aarch64/pr81647.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/aarch64/pr81647.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/aarch64/pr81647.c	Wed Mar 28 10:15:47 2018
***************
*** 0 ****
--- 1,45 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -fdump-tree-ssa" } */
+ /* { dg-require-effective-target fenv_exceptions } */
+ 
+ #include <fenv.h>
+ 
+ double x[28], y[28];
+ int res[28];
+ 
+ int
+ main (void)
+ {
+   int i;
+   for (i = 0; i < 28; ++i)
+     {
+       x[i] = __builtin_nan ("");
+       y[i] = i;
+     }
+   __asm__ volatile ("" ::: "memory");
+   feclearexcept (FE_ALL_EXCEPT);
+   for (i = 0; i < 4; ++i)
+     res[i] = __builtin_isgreater (x[i], y[i]);
+   for (i = 4; i < 8; ++i)
+     res[i] = __builtin_isgreaterequal (x[i], y[i]);
+   for (i = 8; i < 12; ++i)
+     res[i] = __builtin_isless (x[i], y[i]);
+   for (i = 12; i < 16; ++i)
+     res[i] = __builtin_islessequal (x[i], y[i]);
+   for (i = 16; i < 20; ++i)
+     res[i] = __builtin_islessgreater (x[i], y[i]);
+   for (i = 20; i < 24; ++i)
+     res[i] = __builtin_isunordered (x[i], y[i]);
+   for (i = 24; i < 28; ++i)
+     res[i] = !(__builtin_isunordered (x[i], y[i]));
+   __asm__ volatile ("" ::: "memory");
+   return fetestexcept (FE_ALL_EXCEPT) != 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump " u> " "ssa" } } */
+ /* { dg-final { scan-tree-dump " u>= " "ssa" } } */
+ /* { dg-final { scan-tree-dump " u< " "ssa" } } */
+ /* { dg-final { scan-tree-dump " u<= " "ssa" } } */
+ /* { dg-final { scan-tree-dump " u== " "ssa" } } */
+ /* { dg-final { scan-tree-dump " unord " "ssa" } } */
+ /* { dg-final { scan-tree-dump " ord " "ssa" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/aarch64/pr83370.c gcc-7.4.0/gcc/testsuite/gcc.target/aarch64/pr83370.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/aarch64/pr83370.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/aarch64/pr83370.c	Thu Feb  1 21:09:06 2018
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2" } */
+ 
+ typedef void (*fun) (void);
+ 
+ void
+ f (fun x1)
+ {
+   register fun x2 asm ("x16");
+   int arr[5000];
+   int *volatile ptr = arr;
+   asm ("mov %0, %1" : "=r" (x2) : "r" (x1));
+   x2 ();
+ }
+ 
+ void g (void) {}
+ 
+ int
+ main (void)
+ {
+   f (g);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/aarch64/pr87511.c gcc-7.4.0/gcc/testsuite/gcc.target/aarch64/pr87511.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/aarch64/pr87511.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/aarch64/pr87511.c	Tue Oct 16 13:40:57 2018
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do assemble } */
+ /* { dg-options "-Os" } */
+ 
+ int a, d;
+ struct {
+   signed f5 : 26;
+   signed f6 : 12;
+ } b;
+ signed char c;
+ void fn1() {
+   signed char *e = &c;
+   d = a * 10;
+   *e = d;
+   b.f6 = c;
+   b.f5 = 8 <= 3;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/arm/arm-soft-strd-even.c gcc-7.4.0/gcc/testsuite/gcc.target/arm/arm-soft-strd-even.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/arm/arm-soft-strd-even.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/arm/arm-soft-strd-even.c	Mon Oct  1 12:39:43 2018
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do assemble } */
+ /* { dg-require-effective-target arm_arm_ok } */
+ /* { dg-skip-if "do not override -mfloat-abi" { *-*-* } { "-mfloat-abi=*" } {"-mfloat-abi=soft" } } */
+ /* { dg-options "-O2 -marm -mfloat-abi=soft" } */
+ 
+ /* Check that we don't try to emit STRD in ARM state with
+    odd starting register.  */
+ 
+ struct S {
+   double M0;
+ } __attribute((aligned)) __attribute((packed));
+ 
+ void bar(void *);
+ 
+ void foo(int x, struct S y) {
+   asm("" : : : "r1", "r8", "r7", "r4");
+   y.M0 ?: bar(0);
+   bar(__builtin_alloca(8));
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/arm/cmse/cmse-1.c gcc-7.4.0/gcc/testsuite/gcc.target/arm/cmse/cmse-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/arm/cmse/cmse-1.c	Fri Dec  2 15:34:36 2016
--- gcc-7.4.0/gcc/testsuite/gcc.target/arm/cmse/cmse-1.c	Wed Apr 11 09:47:21 2018
*************** baz (void)
*** 71,76 ****
--- 71,90 ----
  {
    return cmse_nonsecure_caller ();
  }
+ /* { dg-final { scan-assembler "baz:" } } */
+ /* { dg-final { scan-assembler "__acle_se_baz:" } } */
+ /* { dg-final { scan-assembler-not "\tcmse_nonsecure_caller" } } */
+ /* Look for an andsi of 1 with a register in function baz, ie.
+ 
+ ;; Function baz<anything>
+ <any line without '('>
+ (insn <anything but '('> (set (reg<any register modifier>:SI <anything but ')'>)
+      (and:SI (reg<any register modifier>:SI <anything but ')'>)
+ 	     (const_int 1 <anything but ')'>)<anything but '('>
+    <optional: (nil)<anything but '('>>
+ (insn
+ */
+ /* { dg-final { scan-rtl-dump "\n;; Function baz\[^\n\]*\[^(\]+\[^;\]*\n\\(insn \[^(\]+ \\(set \\(reg\[^:\]*:SI \[^)\]+\\)\[^(\]*\\(and:SI \\(reg\[^:\]*:SI \[^)\]+\\)\[^(\]*\\((const_int 1|reg\[^:\]*:SI) \[^)\]+\\)\[^(\]+(\\(nil\\)\[^(\]+)?\\(insn" expand } } */
  
  typedef int __attribute__ ((cmse_nonsecure_call)) (int_nsfunc_t) (void);
  
*************** qux (int_nsfunc_t * callback)
*** 86,91 ****
--- 100,110 ----
  {
    fp = cmse_nsfptr_create (callback);
  }
+ /* { dg-final { scan-assembler "qux:" } } */
+ /* { dg-final { scan-assembler "__acle_se_qux:" } } */
+ /* { dg-final { scan-assembler "bic" } } */
+ /* { dg-final { scan-assembler "push\t\{r4, r5, r6" } } */
+ /* { dg-final { scan-assembler "msr\tAPSR_nzcvq" } } */
  
  int call_callback (void)
  {
*************** int call_callback (void)
*** 94,106 ****
    else
      return default_callback ();
  }
- /* { dg-final { scan-assembler "baz:" } } */
- /* { dg-final { scan-assembler "__acle_se_baz:" } } */
- /* { dg-final { scan-assembler "qux:" } } */
- /* { dg-final { scan-assembler "__acle_se_qux:" } } */
- /* { dg-final { scan-assembler-not "\tcmse_nonsecure_caller" } } */
- /* { dg-final { scan-rtl-dump "and.*reg.*const_int 1" expand } } */
- /* { dg-final { scan-assembler "bic" } } */
- /* { dg-final { scan-assembler "push\t\{r4, r5, r6" } } */
- /* { dg-final { scan-assembler "msr\tAPSR_nzcvq" } } */
  /* { dg-final { scan-assembler-times "bl\\s+__gnu_cmse_nonsecure_call" 1 } } */
--- 113,116 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/arm/cmse/cmse-16.c gcc-7.4.0/gcc/testsuite/gcc.target/arm/cmse/cmse-16.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/arm/cmse/cmse-16.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/arm/cmse/cmse-16.c	Wed Apr 11 09:47:21 2018
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do run } */
+ /* { dg-options "-Os -mcmse" }  */
+ 
+ #include <arm_cmse.h>
+ 
+ int
+ foo (void)
+ {
+   return cmse_nonsecure_caller ();
+ }
+ 
+ int
+ main (void)
+ {
+   /* Return success (0) if main is secure, ie if cmse_nonsecure_caller/foo
+      returns false (0).  */
+   return foo ();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/arm/cmse/cmse-1c99.c gcc-7.4.0/gcc/testsuite/gcc.target/arm/cmse/cmse-1c99.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/arm/cmse/cmse-1c99.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/arm/cmse/cmse-1c99.c	Fri Jun 22 14:38:34 2018
***************
*** 0 ****
--- 1,4 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -mcmse -std=c99" }  */
+ /* This is a copy of cmse-1.c to test arm_mve.h ISO C compatibility.  */
+ #include "cmse-1.c"
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/arm/fpscr.c gcc-7.4.0/gcc/testsuite/gcc.target/arm/fpscr.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/arm/fpscr.c	Fri Jun 23 16:08:40 2017
--- gcc-7.4.0/gcc/testsuite/gcc.target/arm/fpscr.c	Wed Apr 18 11:42:10 2018
***************
*** 6,16 ****
  /* { dg-add-options arm_fp } */
  
  void
! test_fpscr ()
  {
!   volatile unsigned int status = __builtin_arm_get_fpscr ();
    __builtin_arm_set_fpscr (status);
  }
  
  /* { dg-final { scan-assembler "mrc\tp10, 7, r\[0-9\]+, cr1, cr0, 0" } } */
! /* { dg-final { scan-assembler "mcr\tp10, 7, r\[0-9\]+, cr1, cr0, 0" } } */
--- 6,19 ----
  /* { dg-add-options arm_fp } */
  
  void
! test_fpscr (void)
  {
!   unsigned status;
! 
!   __builtin_arm_set_fpscr (0);
!   status = __builtin_arm_get_fpscr ();
    __builtin_arm_set_fpscr (status);
  }
  
  /* { dg-final { scan-assembler "mrc\tp10, 7, r\[0-9\]+, cr1, cr0, 0" } } */
! /* { dg-final { scan-assembler-times "mcr\tp10, 7, r\[0-9\]+, cr1, cr0, 0" 2 } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/arm/pr82518.c gcc-7.4.0/gcc/testsuite/gcc.target/arm/pr82518.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/arm/pr82518.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/arm/pr82518.c	Tue Mar 27 11:19:55 2018
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target arm_neon_hw } */
+ /* { dg-additional-options "-O3 -fno-inline -std=gnu99" } */
+ /* { dg-add-options arm_neon } */
+ 
+ typedef struct { int x, y; } X;
+ 
+ void f4(X *p, int n)
+ {
+   for (int i = 0; i < n; i++)
+   { p[i].x = i;
+     p[i].y = i + 1;
+   }
+ }
+ 
+ __attribute ((aligned (16))) X arr[100];
+ 
+ int main(void)
+ {
+   volatile int fail = 0;
+   f4 (arr, 100);
+   for (int i = 0; i < 100; i++)
+     if (arr[i].y != i+1 || arr[i].x != i)
+       fail = 1;
+   if (fail)
+      __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/arm/pr82989.c gcc-7.4.0/gcc/testsuite/gcc.target/arm/pr82989.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/arm/pr82989.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/arm/pr82989.c	Tue Mar 27 13:26:56 2018
***************
*** 0 ****
--- 1,33 ----
+ /* PR target/82989.  */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-skip-if "avoid conflicts with multilib options" { *-*-* } { "-mcpu=*" } { "-mcpu=cortex-a8" } } */
+ /* { dg-skip-if "avoid conflicts with multilib options" { *-*-* } { "-mfpu=*" } { "-mfpu=neon" } } */
+ /* { dg-skip-if "avoid conflicts with multilib options" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=hard" } } */
+ /* { dg-options "-O2 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=hard" } */
+ /* { dg-add-options arm_neon } */
+ 
+ typedef unsigned long long uint64_t;
+ 
+ void f_shr_imm (uint64_t *a)
+ {
+   *a += *a >> 32;
+ }
+ 
+ void f_shr_reg (uint64_t *a, uint64_t b)
+ {
+   *a += *a >> b;
+ }
+ 
+ void f_shl_imm (uint64_t *a)
+ {
+   *a += *a << 32;
+ }
+ 
+ void f_shl_reg (uint64_t *a, uint64_t b)
+ {
+   *a += *a << b;
+ }
+ /* { dg-final { scan-assembler-not "vshl*" } } */
+ /* { dg-final { scan-assembler-not "vshr*" } } */
+ /* { dg-final { scan-assembler-not "vmov*" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/arm/pr84826.c gcc-7.4.0/gcc/testsuite/gcc.target/arm/pr84826.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/arm/pr84826.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/arm/pr84826.c	Thu Mar 29 09:19:45 2018
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target arm_thumb2_ok } */
+ /* { dg-options "-Ofast -fstack-check" } */
+ 
+ void d (void *);
+ 
+ void a ()
+ {
+   int b;
+   void bar (int c)
+   {
+     if (__builtin_expect (c, 0))
+       ++b;
+   }
+   d (bar);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512bw-pr84524.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512bw-pr84524.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512bw-pr84524.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512bw-pr84524.c	Mon Mar  5 16:09:49 2018
***************
*** 0 ****
--- 1,14 ----
+ /* PR target/84524 */
+ /* { dg-do run { target avx512bw } } */
+ /* { dg-options "-O3 -mavx512bw" } */
+ 
+ #include "avx512bw-check.h"
+ 
+ #define main() do_main()
+ #include "../../gcc.c-torture/execute/pr84524.c"
+ 
+ static void
+ avx512bw_test (void)
+ {
+   do_main ();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-abspd-1.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-abspd-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-abspd-1.c	Fri Apr  7 19:22:00 2017
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-abspd-1.c	Sat Sep 29 16:28:53 2018
***************
*** 6,16 ****
  
  #include "avx512f-helper.h"
  
! #define SIZE (AVX512F_LEN / 32)
  #include "avx512f-mask-type.h"
  
  static void
! CALC (float *i1, float *r)
  {
    int i;
  
--- 6,16 ----
  
  #include "avx512f-helper.h"
  
! #define SIZE (AVX512F_LEN / 64)
  #include "avx512f-mask-type.h"
  
  static void
! CALC (double *i1, double *r)
  {
    int i;
  
*************** CALC (float *i1, float *r)
*** 24,50 ****
  void
  TEST (void)
  {
!   float ck[SIZE];
    int i;
!   UNION_TYPE (AVX512F_LEN, ) s, d, dm;
    MASK_TYPE mask = MASK_VALUE;
  
    for (i = 0; i < SIZE; i++)
      {
!       s.a[i] = i * ((i & 1) ? 3.5f : -7.5f);
        d.a[i] = DEFAULT_VALUE;
        dm.a[i] = DEFAULT_VALUE;
      }
  
    CALC (s.a, ck);
  
!   d.x = INTRINSIC (_abs_ps) (s.x);
!   dm.x = INTRINSIC (_mask_abs_ps) (dm.x, mask, s.x);
  
!   if (UNION_CHECK (AVX512F_LEN, ) (d, ck))
      abort ();
  
!   MASK_MERGE () (ck, mask, SIZE);
!   if (UNION_CHECK (AVX512F_LEN, ) (dm, ck))
      abort ();
  }
--- 24,50 ----
  void
  TEST (void)
  {
!   double ck[SIZE];
    int i;
!   UNION_TYPE (AVX512F_LEN, d) s, d, dm;
    MASK_TYPE mask = MASK_VALUE;
  
    for (i = 0; i < SIZE; i++)
      {
!       s.a[i] = i * ((i & 1) ? 3.5 : -7.5);
        d.a[i] = DEFAULT_VALUE;
        dm.a[i] = DEFAULT_VALUE;
      }
  
    CALC (s.a, ck);
  
!   d.x = INTRINSIC (_abs_pd) (s.x);
!   dm.x = INTRINSIC (_mask_abs_pd) (dm.x, mask, s.x);
  
!   if (UNION_CHECK (AVX512F_LEN, d) (d, ck))
      abort ();
  
!   MASK_MERGE (d) (ck, mask, SIZE);
!   if (UNION_CHECK (AVX512F_LEN, d) (dm, ck))
      abort ();
  }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-pr84786-1.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-pr84786-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-pr84786-1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-pr84786-1.c	Fri Jun 22 20:36:31 2018
***************
*** 0 ****
--- 1,25 ----
+ /* PR target/84786 */
+ /* { dg-do run { target { ! ia32 } } } */
+ /* { dg-options "-mavx512f -mno-avx512vl -O2" } */
+ /* { dg-require-effective-target avx512f } */
+ 
+ #include "avx512f-check.h"
+ 
+ typedef double V __attribute__((vector_size (16)));
+ 
+ __attribute__((noinline, noclone)) V
+ foo (V x, double y)
+ {
+   register double z __asm ("xmm18");
+   asm volatile ("" : "=v" (z) : "0" (y));
+   x[1] = z;
+   return x;
+ }
+ 
+ static void
+ avx512f_test (void)
+ {
+   V a = foo ((V) { 1.0, 2.0 }, 3.0);
+   if (a[0] != 1.0 || a[1] != 3.0)
+     abort ();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-pr84786-2.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-pr84786-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-pr84786-2.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-pr84786-2.c	Fri Jun 22 20:36:31 2018
***************
*** 0 ****
--- 1,16 ----
+ /* PR target/84786 */
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mavx512f -mno-avx512vl -O2" } */
+ 
+ typedef double V __attribute__((vector_size (16)));
+ 
+ __attribute__((noinline, noclone)) V
+ foo (V x, double y)
+ {
+   register double z __asm ("xmm18");
+   asm volatile ("" : "=v" (z) : "0" (y));
+   x[1] = z;
+   return x;
+ }
+ 
+ /* { dg-final { scan-assembler-not "vunpcklpd\[\^\n\r]*xmm(1\[6-9]|\[23]\[0-9])" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-pr84786-3.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-pr84786-3.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-pr84786-3.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-pr84786-3.c	Mon Jun 25 12:48:29 2018
***************
*** 0 ****
--- 1,50 ----
+ /* PR target/84786 */
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mavx512f -mno-avx512vl -O2" } */
+ 
+ #include <x86intrin.h>
+ 
+ __m512i v;
+ __m128i w;
+ 
+ __m128i
+ foo (__m128i x, int y)
+ {
+   __m128i z;
+ #define A(n) register __m512i zmm##n __asm ("zmm" #n);
+ #define B A(1) A(2) A(3) A(4) A(5) A(6) A(7) \
+ 	  A(8) A(9) A(10) A(11) A(12) A(13) A(14)
+   B
+ #undef A
+ #define A(n) asm volatile ("" : "=v" (zmm##n) : "0" (v));
+   B
+   asm volatile ("" : "=x" (z) : "0" (w));
+   x = _mm_srli_epi16 (x, y);
+   asm volatile ("" : : "x" (z));
+ #undef A
+ #define A(n) asm volatile ("" : : "v" (zmm##n));
+   B
+   return x;
+ }
+ 
+ __m256i
+ bar (__m256i x, int y)
+ {
+   __m128i z;
+ #undef A
+ #define A(n) register __m512i zmm##n __asm ("zmm" #n);
+   B
+ #undef A
+ #define A(n) asm volatile ("" : "=v" (zmm##n) : "0" (v));
+   B
+   asm volatile ("" : "=x" (z) : "0" (w));
+   x = _mm256_slli_epi16 (x, y);
+   asm volatile ("" : : "x" (z));
+ #undef A
+ #define A(n) asm volatile ("" : : "v" (zmm##n));
+   B
+   return x;
+ }
+ 
+ /* { dg-final { scan-assembler-not "vpsrlw\[\^\n\r]*xmm(1\[6-9]|\[23]\[0-9])" } } */
+ /* { dg-final { scan-assembler-not "vpsllw\[\^\n\r]*xmm(1\[6-9]|\[23]\[0-9])" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c	Tue Dec 29 10:32:21 2015
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c	Fri May 25 13:38:13 2018
***************
*** 1,7 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-options "-mavx512f -O2" } */
! /* { dg-final { scan-assembler-times "vcvtusi2sd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
! /* { dg-final { scan-assembler-times "vcvtusi2sd\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{ru-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  
  #include <immintrin.h>
  
--- 1,7 ----
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-options "-mavx512f -O2" } */
! /* { dg-final { scan-assembler-times "vcvtusi2sdq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
! /* { dg-final { scan-assembler-times "vcvtusi2sdq\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{ru-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  
  #include <immintrin.h>
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c	Tue Dec 29 10:32:21 2015
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c	Fri May 25 13:38:13 2018
***************
*** 1,7 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-options "-mavx512f -O2" } */
! /* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
! /* { dg-final { scan-assembler-times "vcvtusi2ss\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{rz-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  
  #include <immintrin.h>
  
--- 1,7 ----
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-options "-mavx512f -O2" } */
! /* { dg-final { scan-assembler-times "vcvtusi2ssq\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
! /* { dg-final { scan-assembler-times "vcvtusi2ssq\[ \\t\]+\[^%\n\]*%r\[^\{\n\]*\{rz-sae\}\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
  
  #include <immintrin.h>
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c	Wed Oct 29 07:09:46 2014
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-vpermd-2.c	Thu Mar 29 14:51:03 2018
*************** TEST (void)
*** 41,58 ****
        res3.a[i] = DEFAULT_VALUE;
      }
  
- #if AVX512F_LEN == 512
    res1.x = INTRINSIC (_permutexvar_epi32) (src1.x, src2.x);
- #endif
    res2.x = INTRINSIC (_maskz_permutexvar_epi32) (mask, src1.x, src2.x);
    res3.x = INTRINSIC (_mask_permutexvar_epi32) (res3.x, mask, src1.x, src2.x);
  
    CALC (src1.a, src2.a, res_ref);
  
- #if AVX512F_LEN == 512
    if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref))
      abort ();
- #endif
  
    MASK_ZERO (i_d) (res_ref, mask, SIZE);
    if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref))
--- 41,54 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c	Wed Oct 29 07:09:46 2014
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-vpermq-imm-2.c	Thu Mar 29 14:51:03 2018
*************** TEST (void)
*** 40,57 ****
        res3.a[i] = DEFAULT_VALUE;
      }
  
- #if AVX512F_LEN == 512
    res1.x = INTRINSIC (_permutex_epi64) (src1.x, IMM_MASK);
- #endif
    res2.x = INTRINSIC (_maskz_permutex_epi64) (mask, src1.x, IMM_MASK);
    res3.x = INTRINSIC (_mask_permutex_epi64) (res3.x, mask, src1.x, IMM_MASK);
  
    CALC (src1.a, IMM_MASK, res_ref);
  
- #if AVX512F_LEN == 512
    if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref))
      abort ();
- #endif
  
    MASK_ZERO (i_q) (res_ref, mask, SIZE);
    if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref))
--- 40,53 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c	Wed Oct 29 07:09:46 2014
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512f-vpermq-var-2.c	Thu Mar 29 14:51:03 2018
*************** TEST (void)
*** 41,58 ****
        res3.a[i] = DEFAULT_VALUE;
      }
  
- #if AVX512F_LEN == 512
    res1.x = INTRINSIC (_permutexvar_epi64) (src1.x, src2.x);
- #endif
    res2.x = INTRINSIC (_maskz_permutexvar_epi64) (mask, src1.x, src2.x);
    res3.x = INTRINSIC (_mask_permutexvar_epi64) (res3.x, mask, src1.x, src2.x);
  
    CALC (src1.a, src2.a, res_ref);
  
- #if AVX512F_LEN == 512
    if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref))
      abort ();
- #endif
  
    MASK_ZERO (i_q) (res_ref, mask, SIZE);
    if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref))
--- 41,54 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512vl-vpermd-1.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512vl-vpermd-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512vl-vpermd-1.c	Wed Dec  3 13:39:51 2014
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512vl-vpermd-1.c	Thu Mar 29 14:51:03 2018
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-mavx512vl -O2" } */
+ /* { dg-final { scan-assembler-times "vpermd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpermd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpermd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
*************** volatile __mmask8 m;
*** 11,16 ****
--- 12,18 ----
  void extern
  avx512vl_test (void)
  {
+   x = _mm256_permutexvar_epi32 (x, x);
    x = _mm256_maskz_permutexvar_epi32 (m, x, x);
    x = _mm256_mask_permutexvar_epi32 (x, m, x, x);
  }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-1.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-1.c	Wed Dec  3 13:39:51 2014
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512vl-vpermq-imm-1.c	Thu Mar 29 14:51:03 2018
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-mavx512vl -O2" } */
+ /* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  
*************** volatile __mmask8 m;
*** 11,16 ****
--- 12,18 ----
  void extern
  avx512vl_test (void)
  {
+   x = _mm256_permutex_epi64 (x, 13);
    x = _mm256_mask_permutex_epi64 (x, m, x, 13);
    x = _mm256_maskz_permutex_epi64 (m, x, 13);
  }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-1.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-1.c	Wed Dec  3 13:39:51 2014
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/avx512vl-vpermq-var-1.c	Thu Mar 29 14:51:03 2018
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-mavx512vl -O2" } */
+ /* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\](?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
  /* { dg-final { scan-assembler-times "vpermq\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
  
*************** volatile __mmask8 m;
*** 11,16 ****
--- 12,18 ----
  void extern
  avx512vl_test (void)
  {
+   x = _mm256_permutexvar_epi64 (x, x);
    x = _mm256_maskz_permutexvar_epi64 (m, x, x);
    x = _mm256_mask_permutexvar_epi64 (x, m, x, x);
  }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/i386.exp gcc-7.4.0/gcc/testsuite/gcc.target/i386/i386.exp
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/i386.exp	Fri Mar  3 16:55:31 2017
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/i386.exp	Thu Feb  1 08:07:12 2018
*************** proc check_effective_target_rtm { } {
*** 241,258 ****
      } "-mrtm" ]
  }
  
- # Return 1 if avx512f instructions can be compiled.
- proc check_effective_target_avx512f { } {
-     return [check_no_compiler_messages avx512f object {
- 	typedef long long __v8di __attribute__ ((__vector_size__ (64)));
- 	__v8di
- 	mm512_and_epi64  (__v8di __X, __v8di __Y)
- 	{
-             return __builtin_ia32_pandq512_mask (__X, __Y, __X, -1);
- 	}
-     } "-mavx512f" ]
- }
- 
  # Return 1 if avx512vl instructions can be compiled.
  proc check_effective_target_avx512vl { } {
      return [check_no_compiler_messages avx512vl object {
--- 241,246 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 11,19 ****
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 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 "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 11,19 ****
    dispatch[offset](offset);
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 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 "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 12,20 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 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 "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 12,20 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 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 "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-5.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 9,16 ****
    bar ();
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 9,18 ----
    bar ();
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-6.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 10,18 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */
! /* { 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} } } */
--- 10,22 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */
! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 { target x32 } } } */
! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 { target x32 } } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c	Fri Mar  2 13:09:55 2018
*************** bar (int i)
*** 35,43 ****
      }
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 35,42 ----
      }
  }
  
! /* { 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} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 14,22 ****
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 14,21 ----
    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} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 12,20 ****
    dispatch[offset](offset);
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 12,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} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 14,23 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-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" } } */
- /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
--- 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" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 13,22 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-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" } } */
- /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
--- 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" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 14,22 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
--- 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" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 13,21 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
  /* { 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 "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-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c	Fri Mar  2 13:09:55 2018
*************** bar (int i)
*** 36,44 ****
      }
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__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" } } */
--- 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-not {\t(lfence|pause)} } } */
  /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 10,18 ****
    dispatch (buf);
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "pushq\[ \t\]%rax" { target x32 } } } */
! /* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "bnd ret" } } */
--- 10,18 ----
    dispatch (buf);
  }
  
! /* { 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-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 11,20 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "pushq\[ \t\]%rax" { target x32 } } } */
! /* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */
! /* { dg-final { scan-assembler "bnd jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "bnd ret" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 11,18 ----
    return 0;
  }
  
! /* { 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} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 10,17 ****
    bar (buf);
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
! /* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd" } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "bnd ret" } } */
--- 10,18 ----
    bar (buf);
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" } } */
! /* { 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-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 11,20 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
! /* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk" } } */
! /* { dg-final { scan-assembler "bnd jmp\[ \t\]*\.LIND" } } */
! /* { dg-final { scan-assembler-times "bnd call\[ \t\]*\.LIND" 2 } } */
  /* { dg-final { scan-assembler "bnd ret" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
--- 11,19 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" } } */
! /* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_(r|e)ax" } } */
! /* { dg-final { scan-assembler-times "bnd call\[ \t\]*\.LIND" 1 } } */
  /* { dg-final { scan-assembler "bnd ret" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
  /* { dg-final { scan-assembler {\tlfence} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 11,19 ****
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
  /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 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" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 11,19 ****
    dispatch[offset](offset);
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
  /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 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" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 12,20 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
--- 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" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 12,20 ****
    return 0;
  }
  
- /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
- /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
- /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
- /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 { target { ! x32 } } } } */
  /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
--- 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)} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 9,16 ****
    bar ();
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__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" } } */
--- 9,18 ----
    bar ();
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */
  /* { 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-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 10,17 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
! /* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 1 } } */
! /* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 1 } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
--- 10,17 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target x32 } } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { ! x32 } } } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c	Fri Mar  2 13:09:55 2018
*************** bar (int i)
*** 35,43 ****
      }
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
  /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
  /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
--- 35,42 ----
      }
  }
  
! /* { 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-not {\t(lfence|pause)} } } */
  /* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 11,17 ****
    dispatch(offset);
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 11,17 ----
    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} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 11,17 ****
    dispatch[offset](offset);
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-linux* } } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 11,17 ----
    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} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 12,18 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-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 } } */
--- 12,18 ----
    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 } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c	Fri Mar  2 13:09:55 2018
*************** male_indirect_jump (long offset)
*** 12,18 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?dispatch" { target { { ! x32 } && *-*-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 } } */
--- 12,18 ----
    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 } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 9,15 ****
    bar ();
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 9,16 ----
    bar ();
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 10,16 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" } } */
  /* { 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 } } */
--- 10,17 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*bar@GOT" { target x32 } } } */
! /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar@GOT" { target { ! x32 } } } } */
  /* { 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 } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c	Fri Mar  2 13:09:55 2018
*************** bar (int i)
*** 35,42 ****
      }
  }
  
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
  /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */
  /* { dg-final { scan-assembler {\tpause} } } */
--- 35,42 ----
      }
  }
  
! /* { 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} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr82795.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr82795.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr82795.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr82795.c	Thu Feb  1 12:07:46 2018
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mavx2" } */
+ 
+ void
+ sj (int qh, int rn, int *by)
+ {
+   for (;;)
+     if (qh != 0)
+       {
+ 	int dc;
+ 
+ 	for (dc = 0; dc < 17; ++dc)
+ 	  {
+ 	    int nn;
+ 
+ 	    nn = (rn != 0) ? qh : dc;
+ 	    if (nn != 0)
+ 	      qh = nn;
+ 	    else
+ 	      qh = (qh != 0) ? *by : dc;
+ 	  }
+       }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr84310-2.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr84310-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr84310-2.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr84310-2.c	Tue Mar  6 20:07:38 2018
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -malign-loops=16" } */
+ /* { dg-warning "is obsolete" "" { target *-*-* } 0 } */
+ 
+ void
+ c (void)
+ {
+   for (;;)
+     ;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr84310.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr84310.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr84310.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr84310.c	Tue Mar  6 20:07:38 2018
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -falign-functions=100000" } */
+ /* { dg-error "is not between 0 and 65536" "" { target *-*-* } 0 } */
+ 
+ void
+ test_func (void)
+ {
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr84625.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr84625.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr84625.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr84625.c	Sat Mar  3 13:42:40 2018
***************
*** 0 ****
--- 1,12 ----
+ /* PR inline-asm/84625 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -msse2" } */
+ 
+ typedef int V __attribute__((vector_size (16)));
+ 
+ void
+ foo (void)
+ {
+   asm volatile ("# %0" : : "X" ((V) { 1, 2, 3, 4 }));	// { dg-error "invalid vector immediate" }
+   asm volatile ("# %0" : : "" ((V) { 2, 3, 4, 5 }));	// { dg-error "invalid vector immediate" }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr84827.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr84827.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr84827.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr84827.c	Fri Jun 22 20:37:40 2018
***************
*** 0 ****
--- 1,21 ----
+ /* PR target/84827 */
+ /* { dg-do compile } */
+ /* { dg-options "-Ofast -fno-fp-int-builtin-inexact -ftrapping-math -fno-associative-math -mfpmath=387" } */
+ 
+ double
+ f1 (double a)
+ {
+   return __builtin_round (a);
+ }
+ 
+ float
+ f2 (float a)
+ {
+   return __builtin_roundf (a);
+ }
+ 
+ long double
+ f3 (long double a)
+ {
+   return __builtin_roundl (a);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr84829.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr84829.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr84829.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr84829.c	Thu Jul 12 16:29:50 2018
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do link } */
+ /* { dg-options "-mieee-fp" } */
+ 
+ int main()
+ {
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr85034.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr85034.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr85034.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr85034.c	Fri Jun 22 20:58:02 2018
***************
*** 0 ****
--- 1,11 ----
+ /* PR inline-asm/85034 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ void
+ foo (void)
+ {
+   volatile float a;
+   struct S { char a; } b = { 0 };
+   asm volatile ("" : "=r" (a) : "0ir" (b));
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr85095-1.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr85095-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr85095-1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr85095-1.c	Fri Jun 22 21:02:07 2018
***************
*** 0 ****
--- 1,33 ----
+ /* PR target/85095 *
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -masm=att" } */
+ 
+ unsigned int
+ foo (unsigned int a, unsigned int b)
+ {
+   a += b;
+   if (a < b) a++;
+   return a;
+ }
+ 
+ #ifdef __x86_64__
+ unsigned long long
+ bar (unsigned long long a, unsigned long long b)
+ {
+   a += b;
+   if (a < b) a++;
+   return a;
+ }
+ 
+ unsigned long long
+ baz (unsigned int a, unsigned int b)
+ {
+   a += b;
+   if (a < b) a++;
+   return a;
+ }
+ #endif
+ 
+ /* { dg-final { scan-assembler-times "adcl\t\\\$0," 1 { target ia32 } } } */
+ /* { dg-final { scan-assembler-times "adcl\t\\\$0," 2 { target { ! ia32 } } } } */
+ /* { dg-final { scan-assembler-times "adcq\t\\\$0," 1 { target { ! ia32 } } } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr85095-2.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr85095-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr85095-2.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr85095-2.c	Fri Jun 22 21:02:07 2018
***************
*** 0 ****
--- 1,54 ----
+ /* PR target/85095 *
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -masm=att" } */
+ 
+ unsigned int
+ f1 (unsigned int a, unsigned int b)
+ {
+   unsigned int i = __builtin_add_overflow (a, b, &a);
+   return a + i;
+ }
+ 
+ unsigned int
+ f2 (unsigned int a, unsigned int b)
+ {
+   unsigned int i = __builtin_add_overflow (a, b, &a);
+   return a - i;
+ }
+ 
+ #ifdef __x86_64__
+ unsigned long long
+ f3 (unsigned long long a, unsigned long long b)
+ {
+   unsigned long long i = __builtin_add_overflow (a, b, &a);
+   return a + i;
+ }
+ 
+ unsigned long long
+ f4 (unsigned long long a, unsigned long long b)
+ {
+   unsigned long long i = __builtin_add_overflow (a, b, &a);
+   return a - i;
+ }
+ 
+ unsigned long long
+ f5 (unsigned int a, unsigned int b)
+ {
+   unsigned int i = __builtin_add_overflow (a, b, &a);
+   return a + i;
+ }
+ 
+ unsigned long long
+ f6 (unsigned int a, unsigned int b)
+ {
+   unsigned int i = __builtin_add_overflow (a, b, &a);
+   return a - i;
+ }
+ #endif
+ 
+ /* { dg-final { scan-assembler-times "adcl\t\\\$0," 1 { target ia32 } } } */
+ /* { dg-final { scan-assembler-times "sbbl\t\\\$0," 1 { target ia32 } } } */
+ /* { dg-final { scan-assembler-times "adcl\t\\\$0," 2 { target { ! ia32 } } } } */
+ /* { dg-final { scan-assembler-times "sbbl\t\\\$0," 2 { target { ! ia32 } } } } */
+ /* { dg-final { scan-assembler-times "adcq\t\\\$0," 1 { target { ! ia32 } } } } */
+ /* { dg-final { scan-assembler-times "sbbq\t\\\$0," 1 { target { ! ia32 } } } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr85193.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr85193.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr85193.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr85193.c	Thu Apr  5 18:43:26 2018
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Wno-psabi -O2 -fno-tree-ccp -fno-tree-fre -mno-sse" } */
+ 
+ typedef unsigned char U __attribute__((vector_size(16)));
+ typedef unsigned int V __attribute__((vector_size(16)));
+ typedef unsigned long long W __attribute__((vector_size(16)));
+ 
+ extern void bar(U, U);
+ 
+ V v;
+ 
+ void
+ foo(U f)
+ {
+   f[0] = f[0] << (unsigned char)~v[0] | f[~((W)(U){0, 0, 0, 0, 0, 0, 0, 0, 5})[1] & 5] >> (-(unsigned char)~v[0] & 7);
+   bar(f, (U){});
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr86627.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr86627.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr86627.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr86627.c	Fri Oct 12 14:53:11 2018
***************
*** 0 ****
--- 1,28 ----
+ /* PR middle-end/86627 */
+ /* { dg-do compile { target int128 } } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { scan-assembler-not "call\[^\n\r]*__divti3" } } */
+ 
+ __int128_t
+ f1 (__int128_t a)
+ {
+   return a / 2;
+ }
+ 
+ __int128_t
+ f2 (__int128_t a)
+ {
+   return a / -2;
+ }
+ 
+ __int128_t
+ f3 (__int128_t a)
+ {
+   return a / 0x4000000000000000LL;
+ }
+ 
+ __int128_t
+ f4 (__int128_t a)
+ {
+   return a / -0x4000000000000000LL;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr87065.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr87065.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr87065.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr87065.c	Fri Oct 12 14:53:54 2018
***************
*** 0 ****
--- 1,22 ----
+ /* PR rtl-optimization/87065 */
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mxop -mprefer-avx128" } */
+ 
+ int a, c, d, e;
+ short *b;
+ 
+ void
+ foo (void)
+ {
+   short *g = b;
+   int h = 1;
+   unsigned i;
+   for (; h <= 1; h++)
+     g = (short *) &c;
+   for (; c; c++)
+     {
+       for (; i <= 1; i++)
+ 	;
+       a ^= (a > 0 <= i) + ((e += d) == 0 ?: (*g = 8));
+     }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr87370.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr87370.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr87370.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr87370.c	Tue Oct  9 17:23:06 2018
***************
*** 0 ****
--- 1,39 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2" } */
+ 
+ struct A
+ {
+   int b[4];
+ };
+ struct B
+ {
+   char a[12];
+   int b;
+ };
+ struct C
+ {
+   char a[16];
+ };
+ 
+ struct A
+ f1 (void)
+ {
+   struct A x = {};
+   return x;
+ }
+ 
+ struct B
+ f2 (void)
+ {
+   struct B x = {};
+   return x;
+ }
+ 
+ struct C
+ f3 (void)
+ {
+   struct C x = {};
+   return x;
+ }
+ 
+ /* { dg-final { scan-assembler-not "xmm" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr87550.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr87550.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr87550.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr87550.c	Fri Oct 12 14:55:17 2018
***************
*** 0 ****
--- 1,21 ----
+ /* PR target/87550 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ #include <x86intrin.h>
+ 
+ int
+ foo (int x)
+ {
+   return __rdtsc () + __rdtsc ();
+ }
+ 
+ /* { dg-final { scan-assembler-times "\trdtsc\[\n\r]" 2 } } */
+ 
+ int
+ bar (int x)
+ {
+   return __rdpmc (0) + __rdpmc (0);
+ }
+ 
+ /* { dg-final { scan-assembler-times "\trdpmc\[\n\r]" 2 } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr87928.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr87928.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/pr87928.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/pr87928.c	Sun Nov 18 21:36:30 2018
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile { target lp64 } } */
+ /* { dg-options "-O1 -mstackrealign -mabi=ms" } */
+ 
+ struct foo
+ {
+   int a;
+   int b;
+   int c;
+   int d;
+ };
+ 
+ __attribute__ ((sysv_abi))
+ struct foo bar (void)
+ {
+   struct foo retval;
+ 
+   retval.a = 1;
+   retval.b = 2;
+   retval.c = 3;
+   retval.d = 4;
+ 
+   return retval;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-10.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-10.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-10.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-10.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 15,23 ****
  /* { 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 "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } }  } } */
! /* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } }  } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } }  } } */
! /* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } }  } } */
! /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
--- 15,20 ----
  /* { 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-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-11.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-11.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-11.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-11.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 15,23 ****
  /* { 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 "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } }  } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } }  } } */
! /* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } }  } } */
! /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
--- 15,20 ----
  /* { 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-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-12.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-12.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-12.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-12.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 15,22 ****
  /* { 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 "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "__x86_indirect_thunk:" { target { ! x32 } }  } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } }  } } */
! /* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" { target { x32 } }  } } */
! /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
--- 15,20 ----
  /* { 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-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-13.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-13.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-13.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-13.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 14,22 ****
  /* { 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 "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
  /* { 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" { target { x32 } }  } } */
! /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
--- 14,21 ----
  /* { 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-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-14.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-14.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-14.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-14.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 16,22 ****
  /* { 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 "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } }  } } */
! /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
--- 16,21 ----
  /* { 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" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-15.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-15.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-15.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-15.c	Fri Mar  2 13:09:55 2018
*************** foo (void)
*** 16,22 ****
  /* { 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 "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */
! /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
--- 16,21 ----
  /* { 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" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-22.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-22.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-22.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-22.c	Fri Mar  2 13:05:18 2018
***************
*** 0 ****
--- 1,15 ----
+ /* PR target/r84530 */
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -mfunction-return=thunk" } */
+ 
+ struct s { _Complex unsigned short x; };
+ 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} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-23.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-23.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-23.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-23.c	Fri Mar  2 13:05:18 2018
***************
*** 0 ****
--- 1,15 ----
+ /* PR target/r84530 */
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -mfunction-return=thunk-extern" } */
+ 
+ struct s { _Complex unsigned short x; };
+ 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} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-24.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-24.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-24.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-24.c	Fri Mar  2 13:05:18 2018
***************
*** 0 ****
--- 1,15 ----
+ /* PR target/r84530 */
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -mfunction-return=thunk-inline" } */
+ 
+ struct s { _Complex unsigned short x; };
+ 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} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-25.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-25.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-25.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-25.c	Fri Mar  2 13:05:18 2018
***************
*** 0 ****
--- 1,15 ----
+ /* PR target/r84530 */
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -mfunction-return=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */
+ 
+ struct s { _Complex unsigned short x; };
+ 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_bnd_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} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-26.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-26.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-26.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-26.c	Fri Mar  2 13:05:18 2018
***************
*** 0 ****
--- 1,40 ----
+ /* PR target/r84530 */
+ /* { dg-do run } */
+ /* { dg-options "-Os -mfunction-return=thunk" } */
+ 
+ struct S { int i; };
+ __attribute__((const, noinline, noclone))
+ struct S foo (int x)
+ {
+   struct S s;
+   s.i = x;
+   return s;
+ }
+ 
+ int a[2048], b[2048], c[2048], d[2048];
+ struct S e[2048];
+ 
+ __attribute__((noinline, noclone)) void
+ bar (void)
+ {
+   int i;
+   for (i = 0; i < 1024; i++)
+     {
+       e[i] = foo (i);
+       a[i+2] = a[i] + a[i+1];
+       b[10] = b[10] + i;
+       c[i] = c[2047 - i];
+       d[i] = d[i + 1];
+     }
+ }
+ 
+ int
+ main ()
+ {
+   int i;
+   bar ();
+   for (i = 0; i < 1024; i++)
+     if (e[i].i != i)
+       __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-9.c gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-9.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/i386/ret-thunk-9.c	Tue Jan 16 11:17:49 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/i386/ret-thunk-9.c	Mon Mar 19 16:52:13 2018
*************** foo (void)
*** 13,24 ****
  /* { 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_indirect_thunk:" } } */
! /* { dg-final { scan-assembler-times {\tpause} 1 { target { ! x32 } } } } */
! /* { dg-final { scan-assembler-times {\tlfence} 1 { target { ! x32 } } } } */
! /* { dg-final { scan-assembler "push(?:l|q)\[ \t\]*_?bar" { target { { ! x32 } && *-*-linux* } } } } */
! /* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk" { target { ! x32 } } } } */
! /* { dg-final { scan-assembler-times {\tpause} 2 { target { x32 } } } } */
! /* { dg-final { scan-assembler-times {\tlfence} 2 { target { x32 } } } } */
! /* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target { x32 } } } } */
! /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */
--- 13,21 ----
  /* { 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" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/msp430/pr79242.c gcc-7.4.0/gcc/testsuite/gcc.target/msp430/pr79242.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/msp430/pr79242.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/msp430/pr79242.c	Sat Feb 17 00:25:15 2018
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-skip-if "" { "*-*-*" } { "-mcpu=msp430" "-msmall" } { "" } } */
+ /* { dg-options "-mcpu=msp430x" } */
+ 
+ typedef _Complex __int20 C;
+ 
+ C
+ foo (C x, C y)
+ {
+   return x + y;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/msp430/pr86662.c gcc-7.4.0/gcc/testsuite/gcc.target/msp430/pr86662.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/msp430/pr86662.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/msp430/pr86662.c	Sat Aug 25 11:52:15 2018
***************
*** 0 ****
--- 1,13 ----
+ /* PR/86662 */
+ 
+ /* { dg-do link } */
+ /* -nostdlib prevents link errors due to mismatched code models for
+    libgloss objects.  */
+ /* { dg-options "-mlarge -flto -nostdlib" } */
+ /* { dg-skip-if "" { *-*-* } { "-mcpu=msp430" } } */
+ 
+ int main(void)
+ {
+   __int20 n = 5;
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/nvptx/indirect_call.c gcc-7.4.0/gcc/testsuite/gcc.target/nvptx/indirect_call.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/nvptx/indirect_call.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/nvptx/indirect_call.c	Fri Mar  2 08:39:31 2018
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-options "-O2 -msoft-stack" } */
+ /* { dg-do run } */
+ 
+ int
+ f1 (int a)
+ {
+   return a + 1;
+ }
+   
+ int (*f2)(int) = f1;
+ 
+ int
+ main ()
+ {
+   if (f2 (100) != 101)
+     __builtin_abort();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/nvptx/pr85056.c gcc-7.4.0/gcc/testsuite/gcc.target/nvptx/pr85056.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/nvptx/pr85056.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/nvptx/pr85056.c	Tue Apr 10 16:55:43 2018
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do run } */
+ /* { dg-additional-sources "pr85056a.c" } */
+ 
+ extern void abort ();
+ 
+ extern int a[];
+ 
+ int
+ main ()
+ {
+   int i, sum;
+ 
+   sum = 0;
+   for (i = 0; i < 10; i++)
+     sum += a[i];
+ 
+   if (sum != 55)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/nvptx/pr85056a.c gcc-7.4.0/gcc/testsuite/gcc.target/nvptx/pr85056a.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/nvptx/pr85056a.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/nvptx/pr85056a.c	Tue Apr  3 14:04:22 2018
***************
*** 0 ****
--- 1,3 ----
+ /* { dg-skip-if "" { *-*-* } } */
+ 
+ int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/builtins-1.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/builtins-1.c	Tue Nov  4 12:09:50 2014
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-1.c	Tue Jun 26 19:45:01 2018
*************** int main ()
*** 165,167 ****
--- 165,170 ----
  
    return 0;
  }
+ 
+ /* Translation of vec_packsu (unsigned long long, unsigned long long) */
+ /* { dg-final { scan-assembler-times {\mvpkudus\M} 1 } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c	Wed Jan 25 16:23:48 2017
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p8.c	Mon Mar  5 17:11:16 2018
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target powerpc_p8vector_ok } */
  /* { dg-options "-mcpu=power8" } */
+ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
  
  #include <altivec.h>
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c	Mon Jan 16 17:03:14 2017
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-3-p9.c	Mon Mar  5 17:11:16 2018
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target powerpc_p9vector_ok } */
  /* { dg-options "-mcpu=power9" } */
+ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
  
  #include <altivec.h>
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/builtins-3.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-3.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/builtins-3.c	Mon Jan 16 17:18:05 2017
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-3.c	Mon Mar  5 17:11:16 2018
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target powerpc_vsx_ok } */
! /* { dg-options "-maltivec -mvsx" } */
  
  #include <altivec.h>
  
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target powerpc_vsx_ok } */
! /* { dg-options "-O2 -mvsx -mcpu=power6" } */
! /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power6" } } */
  
  #include <altivec.h>
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/builtins-7-p9-runnable.c	Mon Feb 26 18:37:27 2018
***************
*** 0 ****
--- 1,169 ----
+ /* { dg-do run { target { powerpc*-*-* && p9vector_hw } } } */
+ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
+ /* { dg-require-effective-target powerpc_p9vector_ok } */
+ /* { dg-options "-mcpu=power9 -O2" } */
+ 
+ #include <altivec.h>
+ #define TRUE 1
+ #define FALSE 0
+ 
+ #ifdef DEBUG
+ #include <stdio.h>
+ #endif
+ 
+ #define EXTRACT 0
+ 
+ void abort (void);
+ 
+ int result_wrong_ull (vector unsigned long long vec_expected,
+ 		      vector unsigned long long vec_actual)
+ {
+   int i;
+ 
+   for (i = 0; i < 2; i++)
+     if (vec_expected[i] != vec_actual[i])
+       return TRUE;
+ 
+   return FALSE;
+ }
+ 
+ int result_wrong_uc (vector unsigned char vec_expected,
+ 		     vector unsigned char vec_actual)
+ {
+   int i;
+ 
+   for (i = 0; i < 16; i++)
+     if (vec_expected[i] != vec_actual[i])
+       return TRUE;
+ 
+   return FALSE;
+ }
+ 
+ #ifdef DEBUG
+ void print_ull (vector unsigned long long vec_expected,
+ 		vector unsigned long long vec_actual)
+ {
+   int i;
+ 
+   printf("expected unsigned long long data\n");
+   for (i = 0; i < 2; i++)
+     printf(" %lld,", vec_expected[i]);
+ 
+   printf("\nactual signed char data\n");
+   for (i = 0; i < 2; i++)
+     printf(" %lld,", vec_actual[i]);
+   printf("\n");
+ }
+ 
+ void print_uc (vector unsigned char vec_expected,
+ 	       vector unsigned char vec_actual)
+ {
+   int i;
+ 
+   printf("expected unsigned char data\n");
+   for (i = 0; i < 16; i++)
+     printf(" %d,", vec_expected[i]);
+ 
+   printf("\nactual unsigned char data\n");
+   for (i = 0; i < 16; i++)
+     printf(" %d,", vec_actual[i]);
+   printf("\n");
+ }
+ #endif
+ 
+ #if EXTRACT
+ vector unsigned long long
+ vext (vector unsigned char *vc)
+ {
+   return vextract_si_vchar (*vc, 5);
+ }
+ #endif
+ 
+ int main()
+ {
+    vector signed int vsi_arg;
+    vector unsigned char vec_uc_arg, vec_uc_result, vec_uc_expected;
+    vector unsigned long long vec_ull_result, vec_ull_expected;
+    unsigned long long ull_result, ull_expected;
+ 
+    vec_uc_arg = (vector unsigned char){1, 2, 3, 4,
+ 				       5, 6, 7, 8,
+ 				       9, 10, 11, 12,
+ 				       13, 14, 15, 16};
+ 
+    vsi_arg = (vector signed int){0xA, 0xB, 0xC, 0xD};
+ 
+    vec_uc_expected = (vector unsigned char){0xC, 0, 0, 0,
+ 					    5, 6, 7, 8,
+ 					    9, 10, 11, 12,
+ 					    13, 14, 15, 16};
+    /* Test vec_insert4b() */
+    /* Insert into char 0 location */
+    vec_uc_result = vec_insert4b (vsi_arg, vec_uc_arg, 0);
+ 
+    if (result_wrong_uc(vec_uc_expected, vec_uc_result))
+      {
+ #ifdef DEBUG
+         printf("Error: vec_insert4b pos 0, result does not match expected result\n");
+ 	print_uc (vec_uc_expected, vec_uc_result);
+ #else
+         abort();
+ #endif
+       }
+ 
+    /* insert into char 4 location */
+    vec_uc_expected = (vector unsigned char){1, 2, 3, 4,
+ 					    0xC, 0, 0, 0,
+ 					    9, 10, 11, 12,
+ 					    13, 14, 15, 16};
+    vec_uc_result = vec_insert4b (vsi_arg, vec_uc_arg, 4);
+ 
+    if (result_wrong_uc(vec_uc_expected, vec_uc_result))
+      {
+ #ifdef DEBUG
+         printf("Error: vec_insert4b pos 4, result does not match expected result\n");
+ 	print_uc (vec_uc_expected, vec_uc_result);
+ #else
+         abort();
+ #endif
+       }
+ 
+    /* Test vec_extract4b() */
+    /* Extract 4b, from char 0 location */
+    vec_uc_arg = (vector unsigned char){10, 0, 0, 0,
+ 				       20, 0, 0, 0,
+ 				       30, 0, 0, 0,
+ 				       40, 0, 0, 0};
+ 
+    vec_ull_expected = (vector unsigned long long){0, 10};
+    vec_ull_result = vec_extract4b(vec_uc_arg, 0);
+ 
+    if (result_wrong_ull(vec_ull_expected, vec_ull_result))
+      {
+ #ifdef DEBUG
+         printf("Error: vec_extract4b pos 0, result does not match expected result\n");
+ 	print_ull (vec_ull_expected, vec_ull_result);
+ #else
+         abort();
+ #endif
+       }
+ 
+    /* Extract 4b, from char 12 location */
+    vec_uc_arg = (vector unsigned char){10, 0, 0, 0,
+ 				       20, 0, 0, 0,
+ 				       30, 0, 0, 0,
+ 				       40, 0, 0, 0};
+ 
+    vec_ull_expected = (vector unsigned long long){0, 40};
+    vec_ull_result = vec_extract4b(vec_uc_arg, 12);
+ 
+    if (result_wrong_ull(vec_ull_expected, vec_ull_result))
+      {
+ #ifdef DEBUG
+         printf("Error: vec_extract4b pos 12, result does not match expected result\n");
+ 	print_ull (vec_ull_expected, vec_ull_result);
+ #else
+         abort();
+ #endif
+       }
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1-runnable.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1-runnable.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1-runnable.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1-runnable.c	Wed Mar 28 20:53:59 2018
***************
*** 0 ****
--- 1,109 ----
+ /* { dg-do run { target { powerpc*-*-* && p8vector_hw } } } */
+ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
+ /* { dg-options "-mcpu=power8 -O2 " } */
+ 
+ /* Make sure the test case compiled with -O2 generates the same expected
+    results.  The expected results were generated with -O0.  */
+ 
+ #include <altivec.h>
+ #define TRUE 1
+ #define FALSE 0
+ 
+ #define DEBUG 1
+ 
+ #ifdef DEBUG
+ #include <stdio.h>
+ #endif
+ 
+ void abort (void);
+ 
+ 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;
+ 
+ v16qi_t crypto6a (v16qi_t a, v16qi_t b, v16qi_t c)
+ {
+   return __builtin_crypto_vpermxor (a, b, c);
+ }
+ 
+ v8hi_t crypto6b (v8hi_t a, v8hi_t b, v8hi_t c)
+ {
+   return __builtin_crypto_vpermxor (a, b, c);
+ }
+ 
+ v4si_t crypto6c (v4si_t a, v4si_t b, v4si_t c)
+ {
+   return __builtin_crypto_vpermxor (a, b, c);
+ }
+ 
+ v2di_t crypto6d (v2di_t a, v2di_t b, v2di_t c)
+ {
+   return __builtin_crypto_vpermxor (a, b, c);
+ }
+ 
+ int main()
+ {
+   int i;
+   v16qi_t expected_v16qi, result_v16qi;
+   v8hi_t expected_v8hi, result_v8hi;
+   v4si_t expected_v4si, result_v4si;
+   v2di_t expected_v2di, result_v2di;
+   v16qi_t v16qi_arg_a, v16qi_arg_b, v16qi_arg_c;
+   v8hi_t v8hi_arg_a, v8hi_arg_b, v8hi_arg_c;
+   v4si_t v4si_arg_a, v4si_arg_b, v4si_arg_c;
+   v2di_t v2di_arg_a, v2di_arg_b, v2di_arg_c;
+ 
+   v16qi_arg_a = (vector unsigned char){ 7, 6, 5, 4, 3, 2, 1, 0,
+ 					1, 2, 3, 4, 5, 6, 7, 8 };
+   v16qi_arg_b = (vector unsigned char){ 1, 2, 3, 4, 5, 6, 7, 8,
+ 					7, 6, 5, 4, 3, 2, 1, 0 };
+   v16qi_arg_c = (vector unsigned char){ 7, 2, 5, 4, 3, 6, 1, 8,
+ 					1, 6, 3, 4, 5, 2, 7, 0 };
+   expected_v16qi = (vector unsigned char){ 15, 10, 13, 12, 11, 14, 9, 0,
+ 					   9, 14, 11, 12, 13, 10, 15, 8 };
+ 		
+   result_v16qi = crypto6a (v16qi_arg_a, v16qi_arg_b, v16qi_arg_c);
+ 				      
+   for (i = 0; i < 16; i++)
+     if (expected_v16qi[i] != result_v16qi[i])
+       printf("crypto6a: result_v16qi[%d] =  %d, expected = %d\n",
+ 	     i, result_v16qi[i], expected_v16qi[i]);
+ 
+   v8hi_arg_a = (vector unsigned short int){ 7, 6, 5, 4, 3, 2, 1, 0};
+   v8hi_arg_b = (vector unsigned short int){ 1, 2, 3, 4, 5, 6, 7, 8};
+   v8hi_arg_c = (vector unsigned short int){ 7, 2, 5, 4, 3, 6, 1, 8};
+   expected_v8hi = (vector unsigned short int){ 5, 0, 6, 0, 7, 0, 8};
+ 		
+   result_v8hi = crypto6b (v8hi_arg_a, v8hi_arg_b, v8hi_arg_c);
+ 				      
+   for (i = 0; i < 8; i++)
+     if (expected_v8hi[i] != result_v8hi[i])
+       printf("crypto6a: result_v8hi[%d] =  %d, expected = %d\n",
+ 	     i, result_v8hi[i], expected_v8hi[i]);
+ 
+   v4si_arg_a = (vector unsigned int){ 7, 6, 5, 4};
+   v4si_arg_b = (vector unsigned int){ 15, 6, 7, 8};
+   v4si_arg_c = (vector unsigned int){ 7, 14, 3, 6};
+   expected_v4si = (vector unsigned int){ 7, 0, 8, 0};
+ 		
+   result_v4si = crypto6c (v4si_arg_a, v4si_arg_b, v4si_arg_c);
+ 				      
+   for (i = 0; i < 4; i++)
+     if (expected_v4si[i] != result_v4si[i])
+       printf("crypto6a: result_v4si[%d] =  %d, expected = %d\n",
+ 	     i, result_v4si[i], expected_v4si[i]);
+ 
+   v2di_arg_a = (vector unsigned long long int){ 7, 6, };
+   v2di_arg_b = (vector unsigned long long int){ 15, 6, };
+   v2di_arg_c = (vector unsigned long long int){ 7, 14};
+   expected_v2di = (vector unsigned long long int){ 6, 0};
+ 		
+   result_v2di = crypto6d (v2di_arg_a, v2di_arg_b, v2di_arg_c);
+ 				      
+   for (i = 0; i < 2; i++)
+     if (expected_v2di[i] != result_v2di[i])
+       printf("crypto6a: result_v2di[%d] =  %d, expected = %d\n",
+ 	     i, result_v2di[i], expected_v2di[i]);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/extend-divide-1.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/extend-divide-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/extend-divide-1.c	Tue Nov  4 12:09:50 2014
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/extend-divide-1.c	Mon Apr  2 19:19:37 2018
***************
*** 5,13 ****
  /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */
  /* { dg-options "-mcpu=power7 -O2" } */
  /* { dg-final { scan-assembler-times "divwe "   1 } } */
- /* { dg-final { scan-assembler-times "divweo "  1 } } */
  /* { dg-final { scan-assembler-times "divweu "  1 } } */
- /* { dg-final { scan-assembler-times "divweuo " 1 } } */
  /* { dg-final { scan-assembler-not    "bl __builtin" } } */
  
  int
--- 5,11 ----
*************** div_we (int a, int b)
*** 16,35 ****
    return __builtin_divwe (a, b);
  }
  
- int
- div_weo (int a, int b)
- {
-   return __builtin_divweo (a, b);
- }
- 
  unsigned int
  div_weu (unsigned int a, unsigned int b)
  {
    return __builtin_divweu (a, b);
  }
- 
- unsigned int
- div_weuo (unsigned int a, unsigned int b)
- {
-   return __builtin_divweuo (a, b);
- }
--- 14,21 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/extend-divide-2.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/extend-divide-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/extend-divide-2.c	Tue Nov  4 12:09:50 2014
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/extend-divide-2.c	Mon Apr  2 19:19:37 2018
***************
*** 5,13 ****
  /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */
  /* { dg-options "-mcpu=power7 -O2" } */
  /* { dg-final { scan-assembler-times "divde "   1 } } */
- /* { dg-final { scan-assembler-times "divdeo "  1 } } */
  /* { dg-final { scan-assembler-times "divdeu "  1 } } */
- /* { dg-final { scan-assembler-times "divdeuo " 1 } } */
  /* { dg-final { scan-assembler-not    "bl __builtin" } } */
  
  long
--- 5,11 ----
*************** div_de (long a, long b)
*** 16,35 ****
    return __builtin_divde (a, b);
  }
  
- long
- div_deo (long a, long b)
- {
-   return __builtin_divdeo (a, b);
- }
- 
  unsigned long
  div_deu (unsigned long a, unsigned long b)
  {
    return __builtin_divdeu (a, b);
  }
- 
- unsigned long
- div_deuo (unsigned long a, unsigned long b)
- {
-   return __builtin_divdeuo (a, b);
- }
--- 14,21 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p8.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p8.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p8.c	Mon Dec 19 19:03:48 2016
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p8.c	Thu Feb 15 14:50:15 2018
***************
*** 4,10 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target powerpc_p8vector_ok } */
  /* { dg-require-effective-target int128 } */
! /* { dg-options "-maltivec -mvsx -mpower8-vector" } */
  /* { dg-additional-options "-maix64" { target powerpc-ibm-aix* } } */
  
  #include "altivec.h"
--- 4,12 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target powerpc_p8vector_ok } */
  /* { dg-require-effective-target int128 } */
! /* { dg-require-effective-target lp64 } */
! /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
! /* { dg-options "-mpower8-vector -mcpu=power8 -O2" } */
  /* { dg-additional-options "-maix64" { target powerpc-ibm-aix* } } */
  
  #include "altivec.h"
*************** test2 (vector unsigned __int128 x, vecto
*** 21,25 ****
    return vec_mul (x, y);
  }
  
! /* { dg-final { scan-assembler-times "\[ \t\]mulld " 6 } } */
! /* { dg-final { scan-assembler-times "\[ \t\]mulhdu" 2 } } */
--- 23,27 ----
    return vec_mul (x, y);
  }
  
! /* { dg-final { scan-assembler-times {\mmulld\M} 6 } } */
! /* { dg-final { scan-assembler-times {\mmulhdu\M} 2 } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c	Mon Dec 19 19:03:48 2016
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c	Thu Feb 15 14:50:15 2018
***************
*** 2,11 ****
     inputs produce the right results.  */
  
  /* { dg-do compile } */
! /* { dg-require-effective-target powerpc_float128_hw_ok } */
  /* { dg-require-effective-target int128 } */
  /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
! /* { dg-options "-maltivec -mvsx -mcpu=power9 -O2" } */
  /* { dg-additional-options "-maix64" { target powerpc-ibm-aix* } } */
  
  #include "altivec.h"
--- 2,11 ----
     inputs produce the right results.  */
  
  /* { dg-do compile } */
! /* { dg-require-effective-target powerpc_p9vector_ok } */
  /* { dg-require-effective-target int128 } */
  /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
! /* { dg-options "-mpower9-vector -mcpu=power9 -O2" } */
  /* { dg-additional-options "-maix64" { target powerpc-ibm-aix* } } */
  
  #include "altivec.h"
*************** test2 (vector unsigned __int128 x, vecto
*** 22,25 ****
    return vec_mul (x, y);
  }
  
! /* { dg-final { scan-assembler-times "\[ \t\]xsmulqp" 2 } } */
--- 22,26 ----
    return vec_mul (x, y);
  }
  
! /* { dg-final { scan-assembler-times {\mmulld\M} 4 } } */
! /* { dg-final { scan-assembler-times {\mmulhdu\M} 2 } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c	Fri Oct  3 22:38:39 2014
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/lvsl-lvsr.c	Wed Feb 14 18:48:53 2018
***************
*** 6,12 ****
  /* { dg-options "-O0 -Wno-deprecated" } */
  /* { dg-final { scan-assembler-times "lvsl" 2 } } */
  /* { dg-final { scan-assembler-times "lvsr" 2 } } */
! /* { dg-final { scan-assembler-times "lxvd2x" 2 } } */
  /* { dg-final { scan-assembler-times "vperm" 2 } } */
  
  
--- 6,12 ----
  /* { dg-options "-O0 -Wno-deprecated" } */
  /* { dg-final { scan-assembler-times "lvsl" 2 } } */
  /* { dg-final { scan-assembler-times "lvsr" 2 } } */
! /* { dg-final { scan-assembler-times {\mlxvd2x\M|\mlxv\M} 2 } } */
  /* { dg-final { scan-assembler-times "vperm" 2 } } */
  
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-1.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-1.c	Wed Dec 14 16:08:07 2016
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-1.c	Thu Jan  1 00:00:00 1970
***************
*** 1,39 ****
- /* { dg-do compile { target { powerpc64*-*-* && lp64 } } } */
- /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
- /* { dg-require-effective-target powerpc_p9vector_ok } */
- /* { dg-options "-mcpu=power9 -O2" } */
- 
- #include <altivec.h>
- 
- vector signed char
- vins_v4si (vector int *vi, vector signed char *vc)
- {
-   return vec_vinsert4b (*vi, *vc, 1);
- }
- 
- vector unsigned char
- vins_di (long di, vector unsigned char *vc)
- {
-   return vec_vinsert4b (di, *vc, 2);
- }
- 
- vector char
- vins_di2 (long *p_di, vector char *vc)
- {
-   return vec_vinsert4b (*p_di, *vc, 3);
- }
- 
- vector unsigned char
- vins_di0 (vector unsigned char *vc)
- {
-   return vec_vinsert4b (0, *vc, 4);
- }
- 
- long
- vext (vector signed char *vc)
- {
-   return vec_vextract4b (*vc, 5);
- }
- 
- /* { dg-final { scan-assembler "xxextractuw\|vextuw\[lr\]x" } } */
- /* { dg-final { scan-assembler "xxinsertw" } } */
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-2.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-2.c	Tue Dec 27 23:19:15 2016
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/p9-vinsert4b-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,30 ****
- /* { dg-do compile { target { powerpc64*-*-* && lp64 } } } */
- /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
- /* { dg-require-effective-target powerpc_p9vector_ok } */
- /* { dg-options "-mcpu=power9 -O2" } */
- 
- #include <altivec.h>
- 
- vector signed char
- ins_v4si (vector int vi, vector signed char vc)
- {
-   return vec_vinsert4b (vi, vc, 13);	/* { dg-error "vec_vinsert4b" } */
- }
- 
- vector unsigned char
- ins_di (long di, vector unsigned char vc, long n)
- {
-   return vec_vinsert4b (di, vc, n);	/* { dg-error "vec_vinsert4b" } */
- }
- 
- long
- vext1 (vector signed char vc)
- {
-   return vec_vextract4b (vc, 13);	/* { dg-error "vec_vextract4b" } */
- }
- 
- long
- vextn (vector unsigned char vc, long n)
- {
-   return vec_vextract4b (vc, n);	/* { dg-error "vec_vextract4b" } */
- }
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c	Mon Feb 11 23:11:12 2013
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c	Tue Mar 27 23:13:02 2018
***************
*** 5,10 ****
--- 5,11 ----
  /* { dg-final { scan-assembler-not "\\.section\[ \t\]\\.sdata2," } } */
  /* { dg-final { scan-assembler "sdat@sdarel\\(13\\)" } } */
  /* { dg-final { scan-assembler "sdat2@sdarel\\(13\\)" } } */
+ /* { dg-skip-if "" { *-*-* } { "-mno-readonly-in-sdata" } { "" } } */
  
  
  int sdat = 2;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr79799-2.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr79799-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr79799-2.c	Thu Jun 29 22:19:29 2017
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr79799-2.c	Mon Apr  2 15:24:01 2018
***************
*** 8,14 ****
  /* Optimize x = vec_insert (vec_extract (v2, N), v1, M) for SFmode if N is the default
     scalar position.  */
  
! #if __ORDER_LITTLE_ENDIAN__
  #define ELE 2
  #else
  #define ELE 1
--- 8,14 ----
  /* Optimize x = vec_insert (vec_extract (v2, N), v1, M) for SFmode if N is the default
     scalar position.  */
  
! #if __LITTLE_ENDIAN__
  #define ELE 2
  #else
  #define ELE 1
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr81572.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr81572.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr81572.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr81572.c	Tue Mar  6 15:54:30 2018
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile { target powerpc64*-*-* } } */
+ /* { dg-options "-O2 -mcpu=power7" } */
+ /* { dg-final { scan-assembler-not "xxlor" } } */
+ 
+ #include <altivec.h>
+ 
+ typedef __vector unsigned char nvec_t;
+ 
+ long testz_and(nvec_t a, nvec_t b)
+ {
+   nvec_t c = vec_andc(a, b);
+   return vec_all_eq(a, c);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr83399.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr83399.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr83399.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr83399.c	Thu Jan 25 16:50:08 2018
***************
*** 0 ****
--- 1,15 ----
+ /* PR target/83399 */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target powerpc_vsx_ok } */
+ /* { dg-options "-O1 -mabi=elfv2 -mlittle -mvsx" } */
+ 
+ typedef __attribute__((altivec(vector__))) int v4si_t;
+ int
+ foo (void)
+ {
+   v4si_t a, u, v, y;
+   u = __builtin_altivec_lvx (32, ((void *) &a) - 32);
+   v = __builtin_altivec_lvx (64, ((void *) &a) - 32);
+   y = u + v;
+   return y[0];
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr83660.C gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr83660.C
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr83660.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr83660.C	Tue Apr 24 00:19:43 2018
***************
*** 0 ****
--- 1,14 ----
+ /* PR target/83660 */
+ /* { dg-do compile } */
+ /* { dg-options "-mcpu=power7" } */
+ 
+ #include <altivec.h>
+ 
+ typedef __vector unsigned int  uvec32_t  __attribute__((__aligned__(16)));
+ 
+ unsigned get_word(uvec32_t v)
+ {
+     return ({const unsigned _B1 = 32;
+             vec_extract((uvec32_t)v, 2);});
+ }
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr83862.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr83862.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr83862.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr83862.c	Thu Jan 25 17:36:47 2018
***************
*** 0 ****
--- 1,34 ----
+ /* PR target/83862.c */
+ /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
+ /* { dg-require-effective-target ppc_float128_sw } */
+ /* { dg-require-effective-target powerpc_p9vector_ok } */
+ /* { dg-options "-mpower9-vector -O2 -mfloat128" } */
+ 
+ /* On little endian systems, optimizing signbit of IEEE 128-bit values from
+    memory could abort if the memory address was indexed (reg+reg).  The
+    optimization is only on 64-bit machines with direct move.
+ 
+    Compile with -g -O2 -mabi=ieeelongdouble -Wno-psabi.  */
+ 
+ #ifndef TYPE
+ #define TYPE __float128
+ #endif
+ 
+ int sbr (TYPE a) { return __builtin_signbit (a); }
+ int sbm (TYPE *a) { return __builtin_signbit (*a); }
+ int sbo (TYPE *a) { return __builtin_signbit (a[4]); }
+ int sbi (TYPE *a, unsigned long n) { return __builtin_signbit (a[n]); }
+ void sbs (int *p, TYPE a) { *p = __builtin_signbit (a); }
+ 
+ /* On big endian systems, this will generate 2 LDs and 1 LDX, while on
+    little endian systems, this will generate 3 LDs and an ADD.  */
+ 
+ /* { dg-final { scan-assembler-times {\mldx?\M}    3 } } */
+ /* { dg-final { scan-assembler-times {\mmfvsrd\M}  2 } } */
+ /* { dg-final { scan-assembler-times {\msrdi\M}    5 } } */
+ /* { dg-final { scan-assembler-not   {\mmfvsrld\M}   } } */
+ /* { dg-final { scan-assembler-not   {\mstxvx?\M}    } } */
+ /* { dg-final { scan-assembler-not   {\mstxvw4x\M}   } } */
+ /* { dg-final { scan-assembler-not   {\mstxvd2x\M}   } } */
+ /* { dg-final { scan-assembler-not   {\mstvx\M}      } } */
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr83969.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr83969.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr83969.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr83969.c	Fri Apr 20 12:19:10 2018
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile { target { powerpc*-*-* } } } */
+ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=G5" } } */
+ /* { dg-options "-O1 -mcpu=G5 -fno-split-wide-types -ftree-loop-vectorize" } */
+ 
+ long long int
+ n7 (int po, long long int r4)
+ {
+   while (po < 1)
+     {
+       r4 |= 1;
+       ++po;
+     }
+   return r4;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr84154-1.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr84154-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr84154-1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr84154-1.c	Thu Feb 15 17:54:41 2018
***************
*** 0 ****
--- 1,55 ----
+ /* { dg-do compile { target { powerpc*-*-* } } } */
+ /* { dg-skip-if "" { powerpc*-*-darwin* } } */
+ /* { dg-require-effective-target powerpc_p8vector_ok } */
+ /* { dg-options "-mpower8-vector -O2" } */
+ 
+ /* PR target/84154.  Make sure conversion to char/short does not generate a
+    store and a load on ISA 2.07 and newer systems.  */
+ 
+ unsigned char
+ double_to_uc (double x)
+ {
+   return x;
+ }
+ 
+ signed char
+ double_to_sc (double x)
+ {
+   return x;
+ }
+ 
+ unsigned short
+ double_to_us (double x)
+ {
+   return x;
+ }
+ 
+ short
+ double_to_ss (double x)
+ {
+   return x;
+ }
+ 
+ unsigned int
+ double_to_ui (double x)
+ {
+   return x;
+ }
+ 
+ int
+ double_to_si (double x)
+ {
+   return x;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\mextsb\M}                  1 } } */
+ /* { dg-final { scan-assembler-times {\mextsh\M}                  1 } } */
+ /* { dg-final { scan-assembler-times {\mfctiwuz\M|\mxscvdpuxws\M} 3 } } */
+ /* { dg-final { scan-assembler-times {\mfctiwz\M|\mxscvdpsxws\M}  3 } } */
+ /* { dg-final { scan-assembler-times {\mmfvsrwz\M}                6 } } */
+ /* { dg-final { scan-assembler-times {\mrlwinm\M}                 2 } } */
+ /* { dg-final { scan-assembler-not   {\mlbz\M}                      } } */
+ /* { dg-final { scan-assembler-not   {\mlhz\M}                      } } */
+ /* { dg-final { scan-assembler-not   {\mlha\M}                      } } */
+ /* { dg-final { scan-assembler-not   {\mmfvsrd\M}                   } } */
+ /* { dg-final { scan-assembler-not   {\mstw\M}                      } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr84154-2.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr84154-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr84154-2.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr84154-2.c	Thu Feb 15 17:54:41 2018
***************
*** 0 ****
--- 1,58 ----
+ /* { dg-do compile { target { powerpc*-*-* } } } */
+ /* { dg-skip-if "" { powerpc*-*-darwin* } } */
+ /* { dg-require-effective-target powerpc_p8vector_ok } */
+ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
+ /* { dg-options "-mcpu=power8 -O2" } */
+ 
+ /* PR target/84154.  Make sure on ISA 2.07 (power8) that we store the result of
+    a conversion to char/short using an offsettable address does not generate
+    direct moves for storing 32-bit integers, but does do a direct move for
+    8/16-bit integers.  */
+ 
+ void
+ double_to_uc (double x, unsigned char *p)
+ {
+   p[3] = x;
+ }
+ 
+ void
+ double_to_sc (double x, signed char *p)
+ {
+   p[3] = x;
+ }
+ 
+ void
+ double_to_us (double x, unsigned short *p)
+ {
+   p[3] = x;
+ }
+ 
+ void
+ double_to_ss (double x, short *p)
+ {
+   p[3] = x;
+ }
+ 
+ void
+ double_to_ui (double x, unsigned int *p)
+ {
+   p[3] = x;
+ }
+ 
+ void
+ double_to_si (double x, int *p)
+ {
+   p[3] = x;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\mfctiwuz\M|\mxscvdpuxws\M} 3 } } */
+ /* { dg-final { scan-assembler-times {\mfctiwz\M|\mxscvdpsxws\M}  3 } } */
+ /* { dg-final { scan-assembler-times {\mmfvsrwz\M}                4 } } */
+ /* { dg-final { scan-assembler-times {\mstfiwx\M|\mstxsiwx\M}     2 } } */
+ /* { dg-final { scan-assembler-times {\mstb\M}                    2 } } */
+ /* { dg-final { scan-assembler-times {\msth\M}                    2 } } */
+ /* { dg-final { scan-assembler-not   {\mlbz\M}                      } } */
+ /* { dg-final { scan-assembler-not   {\mlhz\M}                      } } */
+ /* { dg-final { scan-assembler-not   {\mlha\M}                      } } */
+ /* { dg-final { scan-assembler-not   {\mmfvsrd\M}                   } } */
+ /* { dg-final { scan-assembler-not   {\mstw\M}                      } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr84154-3.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr84154-3.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr84154-3.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr84154-3.c	Thu Feb 15 17:54:41 2018
***************
*** 0 ****
--- 1,60 ----
+ /* { dg-do compile { target { powerpc*-*-* } } } */
+ /* { dg-skip-if "" { powerpc*-*-darwin* } } */
+ /* { dg-require-effective-target powerpc_p9vector_ok } */
+ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
+ /* { dg-options "-mcpu=power9 -O2" } */
+ 
+ /* PR target/84154.  Make sure on ISA 3.0 we store the result of a conversion
+    to char/short using an offsettable address does not generate direct moves
+    for storing 8/16/32-bit integers.  */
+ 
+ void
+ double_to_uc (double x, unsigned char *p)
+ {
+   p[3] = x;
+ }
+ 
+ void
+ double_to_sc (double x, signed char *p)
+ {
+   p[3] = x;
+ }
+ 
+ void
+ double_to_us (double x, unsigned short *p)
+ {
+   p[3] = x;
+ }
+ 
+ void
+ double_to_ss (double x, short *p)
+ {
+   p[3] = x;
+ }
+ 
+ void
+ double_to_ui (double x, unsigned int *p)
+ {
+   p[3] = x;
+ }
+ 
+ void
+ double_to_si (double x, int *p)
+ {
+   p[3] = x;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\maddi\M}                   6 } } */
+ /* { dg-final { scan-assembler-times {\mfctiwuz\M|\mxscvdpuxws\M} 3 } } */
+ /* { dg-final { scan-assembler-times {\mfctiwz\M|\mxscvdpsxws\M}  3 } } */
+ /* { dg-final { scan-assembler-times {\mstfiwx\M|\mstxsiwx\M}     2 } } */
+ /* { dg-final { scan-assembler-times {\mstxsibx\M}                2 } } */
+ /* { dg-final { scan-assembler-times {\mstxsihx\M}                2 } } */
+ /* { dg-final { scan-assembler-not   {\mlbz\M}                      } } */
+ /* { dg-final { scan-assembler-not   {\mlhz\M}                      } } */
+ /* { dg-final { scan-assembler-not   {\mlha\M}                      } } */
+ /* { dg-final { scan-assembler-not   {\mmfvsrwz\M}                  } } */
+ /* { dg-final { scan-assembler-not   {\mmfvsrd\M}                   } } */
+ /* { dg-final { scan-assembler-not   {\mstw\M}                      } } */
+ /* { dg-final { scan-assembler-not   {\mstb\M}                      } } */
+ /* { dg-final { scan-assembler-not   {\msth\M}                      } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr84700.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr84700.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr84700.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr84700.c	Fri Jun 22 20:29:34 2018
***************
*** 0 ****
--- 1,12 ----
+ /* PR target/84700 */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -misel" } */
+ 
+ long long int
+ foo (long long int x)
+ {
+   long long int a = x < 2;
+   int b = a >= 0;
+ 
+   return a + ((x == 0) ? a : b);
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr84878.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr84878.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr84878.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr84878.c	Wed Apr  4 19:51:32 2018
***************
*** 0 ****
--- 1,18 ----
+ /* PR rtl-optimization/84878 */
+ /* { dg-do compile { target { powerpc*-*-* } } } */
+ /* { dg-require-effective-target powerpc_altivec_ok } */
+ /* { dg-options "-O2 -maltivec -mno-vsx -fmodulo-sched -ftree-vectorize -funroll-loops -fassociative-math -fno-signed-zeros -fno-trapping-math" } */
+ 
+ int ek;
+ float zu;
+ 
+ int
+ k5 (int ks)
+ {
+   while (ek < 1)
+     {
+       ks += (int)(0x1000000 + zu + !ek);
+       ++ek;
+     }
+   return ks;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr85698.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr85698.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr85698.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr85698.c	Mon May 21 16:34:44 2018
***************
*** 0 ****
--- 1,79 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */
+ /* { dg-options "-O3 -mcpu=power7" } */
+ 
+ /* PR85698: Incorrect code generated on LE due to use of stxvw4x. */
+ 
+ typedef unsigned char uint8_t;
+ typedef short int16_t;
+ extern void abort (void);
+ extern int memcmp(const void *, const void *, __SIZE_TYPE__);
+ 
+ uint8_t expected[128] =
+ {14, 0, 4, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+  22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 28, 35, 33, 35, 36, 37, 38, 39, 40,
+  41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+  60, 61, 62, 63, 66, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+  79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 96,
+  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 uint8_t x264_clip_uint8( int x )
+ {
+   return x&(~255) ? (-x)>>31 : x;
+ }
+ void add4x4_idct( uint8_t *p_dst, int16_t dct[16])
+ {
+   int16_t d[16];
+   int16_t tmp[16];
+   int i, y, x;
+   for( i = 0; i < 4; i++ )
+     {
+       int s02 =  dct[0*4+i]     +  dct[2*4+i];
+       int d02 =  dct[0*4+i]     -  dct[2*4+i];
+       int s13 =  dct[1*4+i]     + (dct[3*4+i]>>1);
+       int d13 = (dct[1*4+i]>>1) -  dct[3*4+i];
+       tmp[i*4+0] = s02 + s13;
+       tmp[i*4+1] = d02 + d13;
+       tmp[i*4+2] = d02 - d13;
+       tmp[i*4+3] = s02 - s13;
+     }
+   for( i = 0; i < 4; i++ )
+     {
+       int s02 =  tmp[0*4+i]     +  tmp[2*4+i];
+       int d02 =  tmp[0*4+i]     -  tmp[2*4+i];
+       int s13 =  tmp[1*4+i]     + (tmp[3*4+i]>>1);
+       int d13 = (tmp[1*4+i]>>1) -  tmp[3*4+i];
+       d[0*4+i] = ( s02 + s13 + 32 ) >> 6;
+       d[1*4+i] = ( d02 + d13 + 32 ) >> 6;
+       d[2*4+i] = ( d02 - d13 + 32 ) >> 6;
+       d[3*4+i] = ( s02 - s13 + 32 ) >> 6;
+     }
+   for( y = 0; y < 4; y++ )
+     {
+       for( x = 0; x < 4; x++ )
+         p_dst[x] = x264_clip_uint8( p_dst[x] + d[y*4+x] );
+       p_dst += 32;
+     }
+ }
+ 
+ int main()
+ {
+   uint8_t dst[128];
+   int16_t dct[16];
+   int i;
+ 
+   for (i = 0; i < 16; i++)
+     dct[i] = i*10 + i;
+   for (i = 0; i < 128; i++)
+     dst[i] = i;
+ 
+   add4x4_idct(dst, dct);
+ 
+   if (memcmp (dst, expected, 128))
+     abort();
+ 
+  return 0;
+ }
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr85755.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr85755.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr85755.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr85755.c	Mon Jun 11 18:25:37 2018
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile { target { powerpc*-*-* } } } */
+ /* { dg-options "-O1" } */
+ 
+ void
+ preinc (long *q, long n)
+ {
+   long i;
+   for (i = 0; i < n; i++)
+     q[i] = i;
+ }
+ 
+ void
+ predec (long *q, long n)
+ {
+   long i;
+   for (i = n; i >= 0; i--)
+     q[i] = i;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\mstwu\M} 2 { target ilp32 } } } */
+ /* { dg-final { scan-assembler-times {\mstdu\M} 2 { target lp64 } } } */
+ /* { dg-final { scan-assembler-not {\mstfdu\M} } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr87033.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr87033.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/pr87033.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/pr87033.c	Fri Sep 28 00:32:46 2018
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
+ /* { dg-options "-O2" } */
+ 
+ /* Insure that a LWAX is generated instead of ADD + LWA.  LP64 is needed
+    because the LWA and LWAX instructions are only available in 64-bit mode.  */
+ long func (int *p, unsigned long n)
+ {
+   return p[n];
+ }
+ 
+ /* { dg-final { scan-assembler     {\mlwax\M} } } */
+ /* { dg-final { scan-assembler-not {\mlwa\M}  } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c	Sun Jan 21 13:32:58 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c	Wed Feb  7 20:04:39 2018
***************
*** 1,5 ****
! /* { dg-do compile { target { lp64 } } } */
  /* { dg-additional-options "-mno-speculate-indirect-jumps" } */
  
  /* Test for deliberate misprediction of indirect calls.  */
  
--- 1,6 ----
! /* { dg-do compile } */
  /* { dg-additional-options "-mno-speculate-indirect-jumps" } */
+ /* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */
  
  /* Test for deliberate misprediction of indirect calls.  */
  
*************** int bar ()
*** 11,14 ****
  }
  
  /* { dg-final { scan-assembler "crset 2" } } */
! /* { dg-final { scan-assembler "beqctrl-" } } */
--- 12,21 ----
  }
  
  /* { dg-final { scan-assembler "crset 2" } } */
! 
! /* The AIX and ELFv2 ABIs don't allow a sibcall here.  */
! /* { dg-final { scan-assembler "beqctrl-" { target { lp64 || { powerpc*-*-aix* } } } } } */
! 
! /* The other ABIs do allow a sibcall.  */
! /* { dg-final { scan-assembler "beqctr-" { target { ilp32 && !powerpc*-*-aix* } } } } */
! /* { dg-final { scan-assembler {b \$} { target { ilp32 && !powerpc*-*-aix* } } } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c	Sun Jan 21 13:32:58 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-2.c	Wed Feb  7 20:04:39 2018
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-mno-speculate-indirect-jumps" } */
+ /* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */
  
  /* Test for deliberate misprediction of computed goto.  */
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c	Sun Jan 21 13:32:58 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-3.c	Wed Feb  7 20:04:39 2018
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-mno-speculate-indirect-jumps" } */
+ /* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */
  
  /* Test for deliberate misprediction of jump tables.  */
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-4.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-4.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-4.c	Thu Jan 18 01:34:10 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-4.c	Wed Feb  7 20:04:39 2018
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do run } */
  /* { dg-additional-options "-mno-speculate-indirect-jumps" } */
+ /* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */
  
  /* Test for deliberate misprediction of indirect calls for ELFv2.  */
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c	Thu Jan 18 01:34:10 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-5.c	Wed Feb  7 20:04:39 2018
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do run } */
  /* { dg-additional-options "-mno-speculate-indirect-jumps -Wno-pedantic" } */
+ /* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */
  
  /* Test for deliberate misprediction of computed goto.  */
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-6.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-6.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-6.c	Thu Jan 18 01:34:10 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-6.c	Wed Feb  7 20:04:39 2018
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do run } */
  /* { dg-additional-options "-mno-speculate-indirect-jumps" } */
+ /* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */
  
  /* Test for deliberate misprediction of jump tables.  */
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c	Sun Jan 21 13:32:58 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c	Wed Feb  7 20:04:39 2018
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-additional-options "-mno-speculate-indirect-jumps" } */
+ /* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */
  
  /* Test for deliberate misprediction of indirect calls.  */
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-8.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-8.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-8.c	Sun Jan 21 13:32:58 2018
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-8.c	Thu Jan  1 00:00:00 1970
***************
*** 1,15 ****
- /* { dg-do compile { target { ilp32 } } } */
- /* { dg-additional-options "-O2 -mno-speculate-indirect-jumps" } */
- 
- /* Test for deliberate misprediction of -m32 sibcalls.  */
- 
- extern int (*f)();
- 
- int bar ()
- {
-   return (*f) ();
- }
- 
- /* { dg-final { scan-assembler "crset 2" } } */
- /* { dg-final { scan-assembler "beqctr-" } } */
- /* { dg-final { scan-assembler {b \$} } } */
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/swaps-p8-46.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/swaps-p8-46.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/swaps-p8-46.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/swaps-p8-46.c	Mon Jan 29 04:23:00 2018
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do run { target { powerpc64le-*-* } } } */
+ /* { dg-require-effective-target powerpc_p8vector_ok } */
+ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
+ /* { dg-options "-mcpu=power8 -O2 " } */
+ 
+ typedef __attribute__ ((__aligned__ (8))) unsigned long long __m64;
+ typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));
+ 
+ /* PR84033.  Extracted from xmmintrin.h but with a pointer param to
+    allow swaps to happen when not inline.  */
+ int __attribute__ ((__noinline__))
+ _mm_movemask_ps (__m128 *__A)
+ {
+   __vector __m64 result;
+   static const __vector unsigned int perm_mask =
+     {
+       0x00204060, 0x80808080, 0x80808080, 0x80808080
+     };
+ 
+   result = (__vector __m64)
+     __builtin_vec_vbpermq ((__vector unsigned char) (*__A),
+ 			   (__vector unsigned char) perm_mask);
+   return result[1];
+ }
+ 
+ int
+ main (void)
+ {
+   union { unsigned int i[4]; __m128 m; } x
+     = { 0x80000000, 0x80000000, 0x7fffffff, 0x7fffffff };
+   if (_mm_movemask_ps (&x.m) != 3)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/vsxcopy.c gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsxcopy.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/powerpc/vsxcopy.c	Mon Jun  2 22:38:30 2014
--- gcc-7.4.0/gcc/testsuite/gcc.target/powerpc/vsxcopy.c	Wed Feb 14 19:56:25 2018
***************
*** 1,8 ****
  /* { dg-do compile { target { powerpc64*-*-* } } } */
  /* { dg-require-effective-target powerpc_vsx_ok } */
  /* { dg-options "-O1 -mvsx" } */
! /* { dg-final { scan-assembler "lxvd2x" } } */
! /* { dg-final { scan-assembler "stxvd2x" } } */
  /* { dg-final { scan-assembler-not "xxpermdi" } } */
  
  typedef float vecf __attribute__ ((vector_size (16)));
--- 1,8 ----
  /* { dg-do compile { target { powerpc64*-*-* } } } */
  /* { dg-require-effective-target powerpc_vsx_ok } */
  /* { dg-options "-O1 -mvsx" } */
! /* { dg-final { scan-assembler {\mlxvd2x\M|\mlxv\M} } } */
! /* { dg-final { scan-assembler {\mstxvd2x\M|\mstxv\M} } } */
  /* { dg-final { scan-assembler-not "xxpermdi" } } */
  
  typedef float vecf __attribute__ ((vector_size (16)));
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/dfp_to_bfp_rounding.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/dfp_to_bfp_rounding.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/dfp_to_bfp_rounding.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/dfp_to_bfp_rounding.c	Wed Sep 12 11:13:56 2018
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -mzarch -march=z10" } */
+ 
+ /* According to IEEE 754 2008 4.3 Conversion operations between
+    different radixes must use the rounding mode of the target radix.
+    On S/390 this means passing the right value in GPR0 to PFPO
+    instruction.  */
+ 
+ #include <fenv.h>
+ 
+ double __attribute__((noclone,noinline))
+ convert (_Decimal64 in)
+ {
+   return (double)in;
+ }
+ 
+ int
+ main ()
+ {
+   fesetround (FE_UPWARD);
+ 
+   if (convert (1e-325DD) != __DBL_DENORM_MIN__)
+     __builtin_abort ();
+ 
+   fesetround (FE_DOWNWARD);
+ 
+   if (convert (-1e-325DD) != -__DBL_DENORM_MIN__)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/flogr-1.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/flogr-1.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/flogr-1.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/flogr-1.c	Mon Nov 26 15:29:27 2018
***************
*** 0 ****
--- 1,47 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -funroll-loops -march=z9-109" } */
+ /* { dg-require-effective-target stdint_types } */
+ 
+ /* Folding of the FLOGR caused a wrong value to be returned by
+    __builtin_clz becuase of a problem in the RTX we emit for FLOGR.
+    The problematic folding can only be triggered with constants inputs
+    introduced on RTL level.  In this case it happens with loop
+    unrolling.  */
+ 
+ #include <stdint.h>
+ #include <assert.h>
+ 
+ static inline uint32_t pow2_ceil_u32(uint32_t x) {
+   if (x <= 1) {
+     return x;
+   }
+   int msb_on_index;
+   msb_on_index = (31 ^ __builtin_clz(x - 1));
+   assert(msb_on_index < 31);
+   return 1U << (msb_on_index + 1);
+ }
+ 
+ void __attribute__((noinline,noclone))
+ die (int a)
+ {
+   if (a)
+     __builtin_abort ();
+ }
+ 
+ void test_pow2_ceil_u32(void) {
+   unsigned i;
+ 
+   for (i = 0; i < 18; i++) {
+       uint32_t a_ = (pow2_ceil_u32(((uint32_t)1) << i));
+       if (!(a_ == (((uint32_t)1) << i))) {
+ 	die(1);
+       }
+   }
+ }
+ 
+ int
+ main(void) {
+   test_pow2_ceil_u32();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/htm-builtins-compile-4.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/htm-builtins-compile-4.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/htm-builtins-compile-4.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/htm-builtins-compile-4.c	Tue Jun  5 08:21:57 2018
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=zEC12 -mzarch" } */
+ 
+ /* A bug in the builtin definition made__builtin_tbeginc to have an
+    integer return argument.  */
+ void
+ must_not_compile1 (void)
+ {
+   int rc = __builtin_tbeginc (); /* { dg-error "void value not ignored as it ought to be" } */
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-attr.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-attr.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-attr.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-attr.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,56 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3  -march=z10 --save-temps -mindirect-branch-table" } */
+ 
+ int gl;
+ 
+ void __attribute__((noinline,noclone))
+ foo (int a)
+ {
+   gl = a + 40;
+ }
+ 
+ int __attribute__((noinline,noclone))
+ foo_value (int a)
+ {
+   return a + 40;
+ }
+ 
+ void* __attribute__((noinline,noclone))
+ get_fptr (int a)
+ {
+   switch (a)
+     {
+     case 0: return &foo; break;
+     case 1: return &foo_value; break;
+     default: __builtin_abort ();
+     }
+ }
+ 
+ void (*f) (int);
+ int (*g) (int);
+ 
+ int __attribute__((indirect_branch_call("thunk")))
+ main ()
+ {
+   int res;
+ 
+   f = get_fptr(0);
+   f (2);
+   if (gl != 42)
+     __builtin_abort ();
+ 
+   g = get_fptr(1);
+   if (g (2) != 42)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* 2 x main
+ /* { dg-final { scan-assembler-times "brasl\t%r\[0-9\]*,__s390_indirect_jump" 2 } } */
+ /* { dg-final { scan-assembler "exrl" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-nothunk.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-nothunk.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-nothunk.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-nothunk.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,59 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3  -march=z10 --save-temps -mindirect-branch-call=thunk-extern -mindirect-branch-table" } */
+ 
+ int gl;
+ 
+ void __attribute__((noinline,noclone))
+ foo (int a)
+ {
+   gl = a + 40;
+ }
+ 
+ int __attribute__((noinline,noclone))
+ foo_value (int a)
+ {
+   return a + 40;
+ }
+ 
+ void*  __attribute__((noinline,noclone))
+ get_fptr (int a)
+ {
+   switch (a)
+     {
+     case 0: return &foo; break;
+     case 1: return &foo_value; break;
+     default: __builtin_abort ();
+     }
+ }
+ 
+ void (*f) (int);
+ int (*g) (int);
+ 
+ int
+ main ()
+ {
+   int res;
+ 
+   f = get_fptr(0);
+   f (2);
+   if (gl != 42)
+     __builtin_abort ();
+ 
+   g = get_fptr(1);
+   if (g (2) != 42)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* 2 x main
+ /* { dg-final { scan-assembler-times "brasl\t%r\[0-9\]*,__s390_indirect_jump" 2 } } */
+ 
+ /* No thunks due to thunk-extern.  */
+ /* { dg-final { scan-assembler-not "exrl" } } */
+ /* { dg-final { scan-assembler-not ".globl __s390_indirect_jump" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-z10.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-z10.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-z10.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-z10.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,56 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3  -march=z10 --save-temps -mindirect-branch-call=thunk -mindirect-branch-table" } */
+ 
+ int gl;
+ 
+ void __attribute__((noinline,noclone))
+ foo (int a)
+ {
+   gl = a + 40;
+ }
+ 
+ int __attribute__((noinline,noclone))
+ foo_value (int a)
+ {
+   return a + 40;
+ }
+ 
+ void*  __attribute__((noinline,noclone))
+ get_fptr (int a)
+ {
+   switch (a)
+     {
+     case 0: return &foo; break;
+     case 1: return &foo_value; break;
+     default: __builtin_abort ();
+     }
+ }
+ 
+ void (*f) (int);
+ int (*g) (int);
+ 
+ int
+ main ()
+ {
+   int res;
+ 
+   f = get_fptr(0);
+   f (2);
+   if (gl != 42)
+     __builtin_abort ();
+ 
+   g = get_fptr(1);
+   if (g (2) != 42)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* 2 x main
+ /* { dg-final { scan-assembler-times "brasl\t%r\[0-9\]*,__s390_indirect_jump" 2 } } */
+ /* { dg-final { scan-assembler "exrl" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-z900.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-z900.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-z900.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-function-pointer-z900.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,56 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3  -march=z900 --save-temps -mindirect-branch-call=thunk -mindirect-branch-table" } */
+ 
+ int gl;
+ 
+ void __attribute__((noinline,noclone))
+ foo (int a)
+ {
+   gl = a + 40;
+ }
+ 
+ int __attribute__((noinline,noclone))
+ foo_value (int a)
+ {
+   return a + 40;
+ }
+ 
+ void*  __attribute__((noinline,noclone))
+ get_fptr (int a)
+ {
+   switch (a)
+     {
+     case 0: return &foo; break;
+     case 1: return &foo_value; break;
+     default: __builtin_abort ();
+     }
+ }
+ 
+ void (*f) (int);
+ int (*g) (int);
+ 
+ int
+ main ()
+ {
+   int res;
+ 
+   f = get_fptr(0);
+   f (2);
+   if (gl != 42)
+     __builtin_abort ();
+ 
+   g = get_fptr(1);
+   if (g (2) != 42)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* 2 x main
+ /* { dg-final { scan-assembler-times "brasl\t%r\[0-9\]*,__s390_indirect_jump" 2 } } */
+ /* { dg-final { scan-assembler "ex\t" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-attr.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-attr.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-attr.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-attr.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,42 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-table" } */
+ /* { dg-require-effective-target label_values } */
+ 
+ /* This is a copy of the gcc.c-torture/execute/20040302-1.c
+    testcase.  */
+ 
+ int code[]={0,0,0,0,1};
+ 
+ void
+ foo(int x) {
+   volatile int b;
+   b = 0xffffffff;
+ }
+ 
+ void __attribute__((indirect_branch_jump("thunk")))
+ bar(int *pc) {
+   static const void *l[] = {&&lab0, &&end};
+ 
+   foo(0);
+   goto *l[*pc];
+  lab0:
+   foo(0);
+   pc++;
+   goto *l[*pc];
+  end:
+   return;
+ }
+ 
+ int main() {
+   bar(code);
+   return 0;
+ }
+ 
+ /* 2x bar */
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */
+ /* { dg-final { scan-assembler "exrl" } } */
+ 
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-attr.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-attr.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-attr.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-attr.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,42 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-table" } */
+ /* { dg-require-effective-target label_values } */
+ 
+ /* This is a copy of the gcc.c-torture/execute/20040302-1.c
+    testcase.  */
+ 
+ int code[]={0,0,0,0,1};
+ 
+ void foo(int x) {
+   volatile int b;
+   b = 0xffffffff;
+ }
+ 
+ void __attribute__((indirect_branch_jump("thunk-inline")))
+ bar(int *pc) {
+   static const void *l[] = {&&lab0, &&end};
+ 
+   foo(0);
+   goto *l[*pc];
+  lab0:
+   foo(0);
+   pc++;
+   goto *l[*pc];
+  end:
+   return;
+ }
+ 
+ int
+ main() {
+   bar(code);
+   return 0;
+ }
+ 
+ /* The two gotos in bar get merged.  */
+ /* { dg-final { scan-assembler-times "exrl" 1 } } */
+ 
+ /* { dg-final { scan-assembler-not "jg\t__s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z10.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z10.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z10.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z10.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,43 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-jump=thunk-inline -mindirect-branch-table" } */
+ /* { dg-require-effective-target label_values } */
+ 
+ /* This is a copy of the gcc.c-torture/execute/20040302-1.c
+    testcase.  */
+ 
+ int code[]={0,0,0,0,1};
+ 
+ void
+ foo(int x) {
+   volatile int b;
+   b = 0xffffffff;
+ }
+ 
+ void
+ bar(int *pc) {
+   static const void *l[] = {&&lab0, &&end};
+ 
+   foo(0);
+   goto *l[*pc];
+  lab0:
+   foo(0);
+   pc++;
+   goto *l[*pc];
+  end:
+   return;
+ }
+ 
+ int
+ main() {
+   bar(code);
+   return 0;
+ }
+ 
+ /* The two gotos in bar get merged.  */
+ /* { dg-final { scan-assembler-times "exrl" 1 } } */
+ 
+ /* { dg-final { scan-assembler-not "jg\t__s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z900.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z900.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z900.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-inline-z900.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,43 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z900 --save-temps -mindirect-branch-jump=thunk-inline -mindirect-branch-table" } */
+ /* { dg-require-effective-target label_values } */
+ 
+ /* This is a copy of the gcc.c-torture/execute/20040302-1.c
+    testcase.  */
+ 
+ int code[]={0,0,0,0,1};
+ 
+ void
+ foo(int x) {
+   volatile int b;
+   b = 0xffffffff;
+ }
+ 
+ void
+ bar(int *pc) {
+   static const void *l[] = {&&lab0, &&end};
+ 
+   foo(0);
+   goto *l[*pc];
+  lab0:
+   foo(0);
+   pc++;
+   goto *l[*pc];
+  end:
+   return;
+ }
+ 
+ int
+ main() {
+   bar(code);
+   return 0;
+ }
+ 
+ /* The two gotos in bar get merged.  */
+ /* { dg-final { scan-assembler-times "\tex\t" 1 } } */
+ 
+ /* { dg-final { scan-assembler-not "jg\t__s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-nothunk.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-nothunk.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-nothunk.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-nothunk.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,46 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-jump=thunk-extern -mindirect-branch-table" } */
+ /* { dg-require-effective-target label_values } */
+ 
+ /* This is a copy of the gcc.c-torture/execute/20040302-1.c
+    testcase.  */
+ 
+ int code[]={0,0,0,0,1};
+ 
+ void
+ foo(int x) {
+   volatile int b;
+   b = 0xffffffff;
+ }
+ 
+ void
+ bar(int *pc) {
+   static const void *l[] = {&&lab0, &&end};
+ 
+   foo(0);
+   goto *l[*pc];
+  lab0:
+   foo(0);
+   pc++;
+   goto *l[*pc];
+  end:
+   return;
+ }
+ 
+ int
+ main() {
+   bar(code);
+   return 0;
+ }
+ 
+ /* 2 x bar
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */
+ 
+ /* No thunks due to thunk-extern.  */
+ /* { dg-final { scan-assembler-not "exrl" } } */
+ /* { dg-final { scan-assembler-not ".globl __s390_indirect_jump" } } */
+ 
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z10.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z10.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z10.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z10.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,43 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-jump=thunk -mindirect-branch-table" } */
+ /* { dg-require-effective-target label_values } */
+ 
+ /* This is a copy of the gcc.c-torture/execute/20040302-1.c
+    testcase.  */
+ 
+ int code[]={0,0,0,0,1};
+ 
+ void
+ foo(int x) {
+   volatile int b;
+   b = 0xffffffff;
+ }
+ 
+ void
+ bar(int *pc) {
+   static const void *l[] = {&&lab0, &&end};
+ 
+   foo(0);
+   goto *l[*pc];
+  lab0:
+   foo(0);
+   pc++;
+   goto *l[*pc];
+  end:
+   return;
+ }
+ 
+ int
+ main() {
+   bar(code);
+   return 0;
+ }
+ 
+ /* 2x bar */
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */
+ /* { dg-final { scan-assembler "exrl" } } */
+ 
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z900.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z900.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z900.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-indirect-jump-z900.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,43 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z900 --save-temps -mindirect-branch-jump=thunk -mindirect-branch-table" } */
+ /* { dg-require-effective-target label_values } */
+ 
+ /* This is a copy of the gcc.c-torture/execute/20040302-1.c
+    testcase.  */
+ 
+ int code[]={0,0,0,0,1};
+ 
+ void
+ foo(int x) {
+   volatile int b;
+   b = 0xffffffff;
+ }
+ 
+ void
+ bar(int *pc) {
+   static const void *l[] = {&&lab0, &&end};
+ 
+   foo(0);
+   goto *l[*pc];
+  lab0:
+   foo(0);
+   pc++;
+   goto *l[*pc];
+  end:
+   return;
+ }
+ 
+ int
+ main() {
+   bar(code);
+   return 0;
+ }
+ 
+ /* 2 x bar
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */
+ /* { dg-final { scan-assembler "ex\t" } } */
+ 
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c	Thu Apr 12 10:20:11 2018
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z900 --save-temps -mfunction-return-reg=thunk -mindirect-branch-table -fno-dwarf2-cfi-asm" } */
+ 
+ /* Make sure that we do not emit .cfi directives when -fno-dwarf2-cfi-asm is being used.  */
+ 
+ int
+ main ()
+ {
+   return 0;
+ }
+ 
+ /* 1 x main
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */
+ /* { dg-final { scan-assembler "ex\t" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-attr-all.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-attr-all.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-attr-all.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-attr-all.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,46 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z10 -mzarch --save-temps -mindirect-branch-table" } */
+ 
+ int gl = 0;
+ 
+ int __attribute__((noinline,noclone))
+ bar (int a)
+ {
+   return a + 2;
+ }
+ 
+ void __attribute__((function_return("thunk"),noinline,noclone))
+ foo (int a)
+ {
+   int i;
+ 
+   if (a == 42)
+     return;
+ 
+   for (i = 0; i < a; i++)
+     gl += bar (i);
+ }
+ 
+ int
+ main ()
+ {
+   foo (3);
+   if (gl != 9)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* With -march=z10 -mzarch the shrink wrapped returns use compare and
+    swap relative to jump to the exit block instead of making use of
+    the conditional return pattern.
+    FIXME: Use compare and branch register for that!!!! */
+ 
+ /* 2 x foo
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */
+ /* { dg-final { scan-assembler "exrl" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-attr-neg.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-attr-neg.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-attr-neg.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-attr-neg.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,40 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z10 -mzarch --save-temps -mfunction-return-mem=thunk -mindirect-branch-table" } */
+ 
+ int gl = 0;
+ 
+ int __attribute__((noinline,noclone))
+ bar (int a)
+ {
+   return a + 2;
+ }
+ 
+ void __attribute__((function_return("keep"),noinline,noclone))
+ foo (int a)
+ {
+   int i;
+ 
+   if (a == 42)
+     return;
+ 
+   for (i = 0; i < a; i++)
+     gl += bar (i);
+ }
+ 
+ int __attribute__((function_return("keep")))
+ main ()
+ {
+   foo (3);
+   if (gl != 9)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler-not "jg\t__s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "exrl" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-attr.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-attr.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-attr.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-attr.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,46 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z10 -mzarch --save-temps -mindirect-branch-table" } */
+ 
+ int gl = 0;
+ 
+ int __attribute__((noinline,noclone))
+ bar (int a)
+ {
+   return a + 2;
+ }
+ 
+ void __attribute__((function_return_mem("thunk"),noinline,noclone))
+ foo (int a)
+ {
+   int i;
+ 
+   if (a == 42)
+     return;
+ 
+   for (i = 0; i < a; i++)
+     gl += bar (i);
+ }
+ 
+ int
+ main ()
+ {
+   foo (3);
+   if (gl != 9)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* With -march=z10 -mzarch the shrink wrapped returns use compare and
+    swap relative to jump to the exit block instead of making use of
+    the conditional return pattern.
+    FIXME: Use compare and branch register for that!!!! */
+ 
+ /* 2 x foo
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */
+ /* { dg-final { scan-assembler "exrl" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-nothunk.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-nothunk.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-nothunk.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-nothunk.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,49 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=z10 -mzarch --save-temps -mfunction-return-mem=thunk-extern -mindirect-branch-table" } */
+ 
+ int gl = 0;
+ 
+ int __attribute__((noinline,noclone))
+ bar (int a)
+ {
+   return a + 2;
+ }
+ 
+ void __attribute__((noinline,noclone))
+ foo (int a)
+ {
+   int i;
+ 
+   if (a == 42)
+     return;
+ 
+   for (i = 0; i < a; i++)
+     gl += bar (i);
+ }
+ 
+ int
+ main ()
+ {
+   foo (3);
+   if (gl != 9)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* With -march=z10 -mzarch the shrink wrapped returns use compare and
+    swap relative to jump to the exit block instead of making use of
+    the conditional return pattern.
+    FIXME: Use compare and branch register for that!!!! */
+ 
+ /* 2 x foo, 1 x main
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 3 } } */
+ 
+ /* No thunks due to thunk-extern.  */
+ /* { dg-final { scan-assembler-not "exrl" } } */
+ /* { dg-final { scan-assembler-not ".globl __s390_indirect_jump" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-z10.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-z10.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-z10.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-z10.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,46 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z10 -mzarch --save-temps -mfunction-return-mem=thunk -mindirect-branch-table" } */
+ 
+ int gl = 0;
+ 
+ int __attribute__((noinline,noclone))
+ bar (int a)
+ {
+   return a + 2;
+ }
+ 
+ void __attribute__((noinline,noclone))
+ foo (int a)
+ {
+   int i;
+ 
+   if (a == 42)
+     return;
+ 
+   for (i = 0; i < a; i++)
+     gl += bar (i);
+ }
+ 
+ int
+ main ()
+ {
+   foo (3);
+   if (gl != 9)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* With -march=z10 -mzarch the shrink wrapped returns use compare and
+    swap relative to jump to the exit block instead of making use of
+    the conditional return pattern.
+    FIXME: Use compare and branch register for that!!!! */
+ 
+ /* 2 x foo, 1 x main
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 3 } } */
+ /* { dg-final { scan-assembler "exrl" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,48 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z900 --save-temps -mfunction-return-mem=thunk -mindirect-branch-table" } */
+ 
+ int gl = 0;
+ 
+ int __attribute__((noinline,noclone))
+ bar (int a)
+ {
+   return a + 2;
+ }
+ 
+ void __attribute__((noinline,noclone))
+ foo (int a)
+ {
+   int i;
+ 
+   if (a == 42)
+     return;
+ 
+   for (i = 0; i < a; i++)
+     gl += bar (i);
+ }
+ 
+ int
+ main ()
+ {
+   foo (3);
+   if (gl != 9)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* 1 x foo, 1 x main
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */
+ 
+ /* 1 x foo, conditional return, shrink wrapped
+ /* { dg-final { scan-assembler "jge\t__s390_indirect_jump" } } */
+ 
+ /* 1 x foo, conditional return, shrink wrapped
+ /* { dg-final { scan-assembler "jgle\t__s390_indirect_jump" } } */
+ 
+ /* { dg-final { scan-assembler "ex\t" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-attr.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-attr.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-attr.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-attr.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,41 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z10 --save-temps -mindirect-branch-table" } */
+ 
+ int gl = 0;
+ 
+ int __attribute__((function_return_reg("thunk"),noinline,noclone))
+ bar (int a)
+ {
+   return a + 2;
+ }
+ 
+ void __attribute__((noinline,noclone))
+ foo (int a)
+ {
+   int i;
+ 
+   if (a == 42)
+     return;
+ 
+   for (i = 0; i < a; i++)
+     gl += bar (i);
+ }
+ 
+ int
+ main ()
+ {
+   foo (3);
+   if (gl != 9)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* 1 x bar
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */
+ /* { dg-final { scan-assembler "exrl" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-mixed.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-mixed.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-mixed.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-mixed.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,44 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z900 --save-temps -mfunction-return-reg=thunk -mindirect-branch-table" } */
+ 
+ /* We have to generate different thunks for indirect branches
+    depending on whether the code is compiled for pre z10 machines or
+    later.  This testcase makes sure this works within the same compile
+    unit.  */
+ 
+ int __attribute__((noinline,noclone,target("arch=z10")))
+ bar (int a)
+ {
+   return a + 2;
+ }
+ 
+ int __attribute__((noinline,noclone,target("arch=z9-ec")))
+ foo (int a)
+ {
+   return a + 3;
+ }
+ 
+ int
+ main ()
+ {
+   if (bar (42) != 44)
+     __builtin_abort ();
+ 
+   if (foo (42) != 45)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* 1 x bar, 1 x foo */
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 2 } } */
+ /* 1 x foo */
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump_r1use" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "ex\t" 1 } } */
+ /* { dg-final { scan-assembler-times "exrl\t" 1 } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-nothunk.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-nothunk.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-nothunk.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-nothunk.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,44 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=z10 --save-temps -mfunction-return-reg=thunk-extern -mindirect-branch-table" } */
+ 
+ int gl = 0;
+ 
+ int __attribute__((noinline,noclone))
+ bar (int a)
+ {
+   return a + 2;
+ }
+ 
+ void __attribute__((noinline,noclone))
+ foo (int a)
+ {
+   int i;
+ 
+   if (a == 42)
+     return;
+ 
+   for (i = 0; i < a; i++)
+     gl += bar (i);
+ }
+ 
+ int
+ main ()
+ {
+   foo (3);
+   if (gl != 9)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* 1 x bar
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */
+ 
+ /* No thunks due to thunk-extern.  */
+ /* { dg-final { scan-assembler-not "exrl" } } */
+ /* { dg-final { scan-assembler-not ".globl __s390_indirect_jump" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-z10.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-z10.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-z10.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-z10.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,41 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z10 --save-temps -mfunction-return-reg=thunk -mindirect-branch-table" } */
+ 
+ int gl = 0;
+ 
+ int __attribute__((noinline,noclone))
+ bar (int a)
+ {
+   return a + 2;
+ }
+ 
+ void __attribute__((noinline,noclone))
+ foo (int a)
+ {
+   int i;
+ 
+   if (a == 42)
+     return;
+ 
+   for (i = 0; i < a; i++)
+     gl += bar (i);
+ }
+ 
+ int
+ main ()
+ {
+   foo (3);
+   if (gl != 9)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* 1 x bar
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */
+ /* { dg-final { scan-assembler "exrl" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-z900.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-z900.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-z900.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-return-reg-z900.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,41 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z900 --save-temps -mfunction-return-reg=thunk -mindirect-branch-table" } */
+ 
+ int gl = 0;
+ 
+ int __attribute__((noinline,noclone))
+ bar (int a)
+ {
+   return a + 2;
+ }
+ 
+ void __attribute__((noinline,noclone))
+ foo (int a)
+ {
+   int i;
+ 
+   if (a == 42)
+     return;
+ 
+   for (i = 0; i < a; i++)
+     gl += bar (i);
+ }
+ 
+ int
+ main ()
+ {
+   foo (3);
+   if (gl != 9)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* 1 x bar
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */
+ /* { dg-final { scan-assembler "ex\t" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z10.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z10.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z10.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z10.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,78 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z10 -mzarch --save-temps -mindirect-branch-jump=thunk-inline -mindirect-branch-table" } */
+ 
+ /* case-values-threshold will be set to 20 by the back-end when jump
+    thunk are requested.  */
+ 
+ int __attribute__((noinline,noclone)) foo1 (void) { return 1; }
+ int __attribute__((noinline,noclone)) foo2 (void) { return 2; }
+ int __attribute__((noinline,noclone)) foo3 (void) { return 3; }
+ int __attribute__((noinline,noclone)) foo4 (void) { return 4; }
+ int __attribute__((noinline,noclone)) foo5 (void) { return 5; }
+ int __attribute__((noinline,noclone)) foo6 (void) { return 6; }
+ int __attribute__((noinline,noclone)) foo7 (void) { return 7; }
+ int __attribute__((noinline,noclone)) foo8 (void) { return 8; }
+ int __attribute__((noinline,noclone)) foo9 (void) { return 9; }
+ int __attribute__((noinline,noclone)) foo10 (void) { return 10; }
+ int __attribute__((noinline,noclone)) foo11 (void) { return 11; }
+ int __attribute__((noinline,noclone)) foo12 (void) { return 12; }
+ int __attribute__((noinline,noclone)) foo13 (void) { return 13; }
+ int __attribute__((noinline,noclone)) foo14 (void) { return 14; }
+ int __attribute__((noinline,noclone)) foo15 (void) { return 15; }
+ int __attribute__((noinline,noclone)) foo16 (void) { return 16; }
+ int __attribute__((noinline,noclone)) foo17 (void) { return 17; }
+ int __attribute__((noinline,noclone)) foo18 (void) { return 18; }
+ int __attribute__((noinline,noclone)) foo19 (void) { return 19; }
+ int __attribute__((noinline,noclone)) foo20 (void) { return 20; }
+ 
+ 
+ int __attribute__((noinline,noclone))
+ bar (int a)
+ {
+   int ret = 0;
+ 
+   switch (a)
+     {
+     case 1: ret = foo1 (); break;
+     case 2: ret = foo2 (); break;
+     case 3: ret = foo3 (); break;
+     case 4: ret = foo4 (); break;
+     case 5: ret = foo5 (); break;
+     case 6: ret = foo6 (); break;
+     case 7: ret = foo7 (); break;
+     case 8: ret = foo8 (); break;
+     case 9: ret = foo9 (); break;
+     case 10: ret = foo10 (); break;
+     case 11: ret = foo11 (); break;
+     case 12: ret = foo12 (); break;
+     case 13: ret = foo13 (); break;
+     case 14: ret = foo14 (); break;
+     case 15: ret = foo15 (); break;
+     case 16: ret = foo16 (); break;
+     case 17: ret = foo17 (); break;
+     case 18: ret = foo18 (); break;
+     case 19: ret = foo19 (); break;
+     case 20: ret = foo20 (); break;
+     default:
+       __builtin_abort ();
+     }
+ 
+   return ret;
+ }
+ 
+ int
+ main ()
+ {
+   if (bar (3) != 3)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* 1 x bar
+ /* { dg-final { scan-assembler-times "exrl" 1 } } */
+ 
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_fromreg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_frommem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z900.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z900.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z900.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-inline-z900.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,78 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z900 -mzarch --save-temps -mindirect-branch-jump=thunk-inline -mindirect-branch-table" } */
+ 
+ /* case-values-threshold will be set to 20 by the back-end when jump
+    thunk are requested.  */
+ 
+ int __attribute__((noinline,noclone)) foo1 (void) { return 1; }
+ int __attribute__((noinline,noclone)) foo2 (void) { return 2; }
+ int __attribute__((noinline,noclone)) foo3 (void) { return 3; }
+ int __attribute__((noinline,noclone)) foo4 (void) { return 4; }
+ int __attribute__((noinline,noclone)) foo5 (void) { return 5; }
+ int __attribute__((noinline,noclone)) foo6 (void) { return 6; }
+ int __attribute__((noinline,noclone)) foo7 (void) { return 7; }
+ int __attribute__((noinline,noclone)) foo8 (void) { return 8; }
+ int __attribute__((noinline,noclone)) foo9 (void) { return 9; }
+ int __attribute__((noinline,noclone)) foo10 (void) { return 10; }
+ int __attribute__((noinline,noclone)) foo11 (void) { return 11; }
+ int __attribute__((noinline,noclone)) foo12 (void) { return 12; }
+ int __attribute__((noinline,noclone)) foo13 (void) { return 13; }
+ int __attribute__((noinline,noclone)) foo14 (void) { return 14; }
+ int __attribute__((noinline,noclone)) foo15 (void) { return 15; }
+ int __attribute__((noinline,noclone)) foo16 (void) { return 16; }
+ int __attribute__((noinline,noclone)) foo17 (void) { return 17; }
+ int __attribute__((noinline,noclone)) foo18 (void) { return 18; }
+ int __attribute__((noinline,noclone)) foo19 (void) { return 19; }
+ int __attribute__((noinline,noclone)) foo20 (void) { return 20; }
+ 
+ 
+ int __attribute__((noinline,noclone))
+ bar (int a)
+ {
+   int ret = 0;
+ 
+   switch (a)
+     {
+     case 1: ret = foo1 (); break;
+     case 2: ret = foo2 (); break;
+     case 3: ret = foo3 (); break;
+     case 4: ret = foo4 (); break;
+     case 5: ret = foo5 (); break;
+     case 6: ret = foo6 (); break;
+     case 7: ret = foo7 (); break;
+     case 8: ret = foo8 (); break;
+     case 9: ret = foo9 (); break;
+     case 10: ret = foo10 (); break;
+     case 11: ret = foo11 (); break;
+     case 12: ret = foo12 (); break;
+     case 13: ret = foo13 (); break;
+     case 14: ret = foo14 (); break;
+     case 15: ret = foo15 (); break;
+     case 16: ret = foo16 (); break;
+     case 17: ret = foo17 (); break;
+     case 18: ret = foo18 (); break;
+     case 19: ret = foo19 (); break;
+     case 20: ret = foo20 (); break;
+     default:
+       __builtin_abort ();
+     }
+ 
+   return ret;
+ }
+ 
+ int
+ main ()
+ {
+   if (bar (3) != 3)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* 1 x bar
+ /* { dg-final { scan-assembler-times "\tex\t" 1 } } */
+ 
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_fromreg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_frommem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-z10.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-z10.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-z10.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-z10.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,77 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z10 -mzarch --save-temps -mindirect-branch-jump=thunk -mindirect-branch-table" } */
+ /* case-values-threshold will be set to 20 by the back-end when jump
+    thunk are requested.  */
+ 
+ int __attribute__((noinline,noclone)) foo1 (void) { return 1; }
+ int __attribute__((noinline,noclone)) foo2 (void) { return 2; }
+ int __attribute__((noinline,noclone)) foo3 (void) { return 3; }
+ int __attribute__((noinline,noclone)) foo4 (void) { return 4; }
+ int __attribute__((noinline,noclone)) foo5 (void) { return 5; }
+ int __attribute__((noinline,noclone)) foo6 (void) { return 6; }
+ int __attribute__((noinline,noclone)) foo7 (void) { return 7; }
+ int __attribute__((noinline,noclone)) foo8 (void) { return 8; }
+ int __attribute__((noinline,noclone)) foo9 (void) { return 9; }
+ int __attribute__((noinline,noclone)) foo10 (void) { return 10; }
+ int __attribute__((noinline,noclone)) foo11 (void) { return 11; }
+ int __attribute__((noinline,noclone)) foo12 (void) { return 12; }
+ int __attribute__((noinline,noclone)) foo13 (void) { return 13; }
+ int __attribute__((noinline,noclone)) foo14 (void) { return 14; }
+ int __attribute__((noinline,noclone)) foo15 (void) { return 15; }
+ int __attribute__((noinline,noclone)) foo16 (void) { return 16; }
+ int __attribute__((noinline,noclone)) foo17 (void) { return 17; }
+ int __attribute__((noinline,noclone)) foo18 (void) { return 18; }
+ int __attribute__((noinline,noclone)) foo19 (void) { return 19; }
+ int __attribute__((noinline,noclone)) foo20 (void) { return 20; }
+ 
+ 
+ int __attribute__((noinline,noclone))
+ bar (int a)
+ {
+   int ret = 0;
+ 
+   switch (a)
+     {
+     case 1: ret = foo1 (); break;
+     case 2: ret = foo2 (); break;
+     case 3: ret = foo3 (); break;
+     case 4: ret = foo4 (); break;
+     case 5: ret = foo5 (); break;
+     case 6: ret = foo6 (); break;
+     case 7: ret = foo7 (); break;
+     case 8: ret = foo8 (); break;
+     case 9: ret = foo9 (); break;
+     case 10: ret = foo10 (); break;
+     case 11: ret = foo11 (); break;
+     case 12: ret = foo12 (); break;
+     case 13: ret = foo13 (); break;
+     case 14: ret = foo14 (); break;
+     case 15: ret = foo15 (); break;
+     case 16: ret = foo16 (); break;
+     case 17: ret = foo17 (); break;
+     case 18: ret = foo18 (); break;
+     case 19: ret = foo19 (); break;
+     case 20: ret = foo20 (); break;
+     default:
+       __builtin_abort ();
+     }
+ 
+   return ret;
+ }
+ 
+ int
+ main ()
+ {
+   if (bar (3) != 3)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* 1 x bar
+ /* { dg-final { scan-assembler-times "exrl" 1 } } */
+ 
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_fromreg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_frommem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-z900.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-z900.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-z900.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/nobp-table-jump-z900.c	Thu Feb  8 17:00:48 2018
***************
*** 0 ****
--- 1,78 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=z900 -mzarch --save-temps -mindirect-branch-jump=thunk -mindirect-branch-table" } */
+ 
+ /* case-values-threshold will be set to 20 by the back-end when jump
+    thunk are requested.  */
+ 
+ int __attribute__((noinline,noclone)) foo1 (void) { return 1; }
+ int __attribute__((noinline,noclone)) foo2 (void) { return 2; }
+ int __attribute__((noinline,noclone)) foo3 (void) { return 3; }
+ int __attribute__((noinline,noclone)) foo4 (void) { return 4; }
+ int __attribute__((noinline,noclone)) foo5 (void) { return 5; }
+ int __attribute__((noinline,noclone)) foo6 (void) { return 6; }
+ int __attribute__((noinline,noclone)) foo7 (void) { return 7; }
+ int __attribute__((noinline,noclone)) foo8 (void) { return 8; }
+ int __attribute__((noinline,noclone)) foo9 (void) { return 9; }
+ int __attribute__((noinline,noclone)) foo10 (void) { return 10; }
+ int __attribute__((noinline,noclone)) foo11 (void) { return 11; }
+ int __attribute__((noinline,noclone)) foo12 (void) { return 12; }
+ int __attribute__((noinline,noclone)) foo13 (void) { return 13; }
+ int __attribute__((noinline,noclone)) foo14 (void) { return 14; }
+ int __attribute__((noinline,noclone)) foo15 (void) { return 15; }
+ int __attribute__((noinline,noclone)) foo16 (void) { return 16; }
+ int __attribute__((noinline,noclone)) foo17 (void) { return 17; }
+ int __attribute__((noinline,noclone)) foo18 (void) { return 18; }
+ int __attribute__((noinline,noclone)) foo19 (void) { return 19; }
+ int __attribute__((noinline,noclone)) foo20 (void) { return 20; }
+ 
+ 
+ int __attribute__((noinline,noclone))
+ bar (int a)
+ {
+   int ret = 0;
+ 
+   switch (a)
+     {
+     case 1: ret = foo1 (); break;
+     case 2: ret = foo2 (); break;
+     case 3: ret = foo3 (); break;
+     case 4: ret = foo4 (); break;
+     case 5: ret = foo5 (); break;
+     case 6: ret = foo6 (); break;
+     case 7: ret = foo7 (); break;
+     case 8: ret = foo8 (); break;
+     case 9: ret = foo9 (); break;
+     case 10: ret = foo10 (); break;
+     case 11: ret = foo11 (); break;
+     case 12: ret = foo12 (); break;
+     case 13: ret = foo13 (); break;
+     case 14: ret = foo14 (); break;
+     case 15: ret = foo15 (); break;
+     case 16: ret = foo16 (); break;
+     case 17: ret = foo17 (); break;
+     case 18: ret = foo18 (); break;
+     case 19: ret = foo19 (); break;
+     case 20: ret = foo20 (); break;
+     default:
+       __builtin_abort ();
+     }
+ 
+   return ret;
+ }
+ 
+ int
+ main ()
+ {
+   if (bar (3) != 3)
+     __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* 1 x bar
+ /* { dg-final { scan-assembler-times "ex\t" 1 } } */
+ 
+ /* { dg-final { scan-assembler     "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_fromreg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_frommem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gcc.target/s390/pr84295.c gcc-7.4.0/gcc/testsuite/gcc.target/s390/pr84295.c
*** gcc-7.3.0/gcc/testsuite/gcc.target/s390/pr84295.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gcc.target/s390/pr84295.c	Fri Feb  9 11:45:49 2018
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=z900 -fgnu89-inline --save-temps -mfunction-return-reg=thunk -mindirect-branch-table" } */
+ 
+ extern void foo (void);
+ extern __inline  void foo (void) {}
+ void foo (void) {}
+ 
+ /* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */
+ /* { dg-final { scan-assembler "ex\t" } } */
+ 
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+ /* { dg-final { scan-assembler     "section\t.s390_return_reg" } } */
+ /* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/20181025-1.f gcc-7.4.0/gcc/testsuite/gfortran.dg/20181025-1.f
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/20181025-1.f	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/20181025-1.f	Mon Nov 26 13:31:21 2018
***************
*** 0 ****
--- 1,28 ----
+ ! { dg-do compile }
+ ! { dg-options "-Ofast" }
+ ! { dg-additional-options "-mavx2" { target { x86_64-*-* i?86-*-* } } }
+       SUBROUTINE FOO(EF3,CA,ZA,NATA,IC4,NFRGPT)
+       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+       PARAMETER (MXATM=500)
+       COMMON DE(3,MXATM)
+       DIMENSION CA(3,NATA)
+       DIMENSION ZA(NATA)
+       DIMENSION EF3(3,NFRGPT)
+       DO II = 1,NATA
+          XII = XJ - CA(1,II)
+          YII = YJ - CA(2,II)
+          ZII = ZJ - CA(3,II)
+          RJII = SQRT(XII*XII + YII*YII + ZII*ZII)
+          R3 = RJII*RJII*RJII
+          IF (IC4.EQ.0) THEN
+             DE(1,II) = DE(1,II) - S2*ZA(II)*XII/R3
+             DE(2,II) = DE(2,II) - S2*ZA(II)*YII/R3
+             DE(3,II) = DE(3,II) - S2*ZA(II)*ZII/R3
+          ELSE 
+             EF3(1,IC4+II) = EF3(1,IC4+II) - S2*ZA(II)*XII/R3
+             EF3(2,IC4+II) = EF3(2,IC4+II) - S2*ZA(II)*YII/R3
+             EF3(3,IC4+II) = EF3(3,IC4+II) - S2*ZA(II)*ZII/R3
+          END IF
+       END DO
+       RETURN
+       END           
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/allocate_alloc_opt_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/allocate_alloc_opt_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/allocate_alloc_opt_1.f90	Fri Jun  8 17:26:11 2012
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/allocate_alloc_opt_1.f90	Mon Jun  4 17:09:01 2018
*************** program a
*** 22,28 ****
    allocate(i(2))) ! { dg-error "Syntax error in ALLOCATE" }
    allocate(i(2), errmsg=err, errmsg=err) ! { dg-error "Redundant ERRMSG" }
    allocate(i(2), errmsg=err) ! { dg-warning "useless without a STAT" }
!   allocate(i(2), stat=j, errmsg=x) ! { dg-error "must be a scalar CHARACTER" }
  
    allocate(err) ! { dg-error "neither a data pointer nor an allocatable" }
  
--- 22,28 ----
    allocate(i(2))) ! { dg-error "Syntax error in ALLOCATE" }
    allocate(i(2), errmsg=err, errmsg=err) ! { dg-error "Redundant ERRMSG" }
    allocate(i(2), errmsg=err) ! { dg-warning "useless without a STAT" }
!   allocate(i(2), stat=j, errmsg=x) ! { dg-error "shall be a scalar default CHARACTER" }
  
    allocate(err) ! { dg-error "neither a data pointer nor an allocatable" }
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/allocate_alloc_opt_14.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/allocate_alloc_opt_14.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/allocate_alloc_opt_14.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/allocate_alloc_opt_14.f90	Mon Jun  4 17:09:01 2018
***************
*** 0 ****
--- 1,8 ----
+ ! { dg-do compile }
+ program p
+    integer, allocatable :: arr(:)
+    integer :: stat
+    character(len=128, kind=4) :: errmsg = ' '
+    allocate (arr(3), stat=stat, errmsg=errmsg)  ! { dg-error "shall be a scalar default CHARACTER" }
+    print *, allocated(arr), stat, trim(errmsg)
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/allocate_assumed_charlen_4.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/allocate_assumed_charlen_4.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/allocate_assumed_charlen_4.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/allocate_assumed_charlen_4.f90	Sat May 19 14:53:58 2018
***************
*** 0 ****
--- 1,39 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR82923, in which an ICE occurred because the
+ ! character length from 'getchars' scope was being used in the
+ ! automatic allocation of 'mine'.
+ !
+ ! Contributed by "Werner Blokbuster"  <werner.blokbuster@gmail.com>
+ !
+ module m
+     implicit none
+ contains
+     function getchars(my_len,my_size)
+         integer, intent(in) :: my_len, my_size
+         character(my_len) :: getchars(my_size)
+             getchars = 'A-'
+     end function getchars
+ 
+     function getchars2(my_len)
+         integer, intent(in) :: my_len
+         character(my_len) :: getchars2
+             getchars2 = 'B--'
+     end function getchars2
+ end module m
+ 
+ program testca
+     use m, only: getchars, getchars2
+     implicit none
+     character(:), allocatable :: mine(:)
+     character(:), allocatable :: mine2
+     integer :: i
+ 
+     ! ICE occured at this line:
+     mine = getchars(2,4)
+     if (any (mine .ne. [('A-', i = 1, 4)])) stop 1
+ 
+     ! The scalar version was fine and this will keep it so:
+     mine2 = getchars2(3)
+     if (mine2 .ne. 'B--') stop 2
+ end program testca
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/allocate_stat_2.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/allocate_stat_2.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/allocate_stat_2.f90	Mon Sep  7 15:23:15 2009
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/allocate_stat_2.f90	Mon Jun  4 17:09:01 2018
*************** program main
*** 5,10 ****
    character(len=30), dimension(2) :: er
    integer, dimension (:), allocatable :: a
    allocate (a (16), stat = ier) ! { dg-error "must be a scalar INTEGER" }
!   allocate (a (14), stat=ier(1),errmsg=er) ! { dg-error "must be a scalar CHARACTER" }
  end
  
--- 5,10 ----
    character(len=30), dimension(2) :: er
    integer, dimension (:), allocatable :: a
    allocate (a (16), stat = ier) ! { dg-error "must be a scalar INTEGER" }
!   allocate (a (14), stat=ier(1),errmsg=er) ! { dg-error "shall be a scalar default CHARACTER" }
  end
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/allocate_with_mold_2.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/allocate_with_mold_2.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/allocate_with_mold_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/allocate_with_mold_2.f90	Thu Sep 13 19:46:05 2018
***************
*** 0 ****
--- 1,62 ----
+ ! { dg-do compile }
+ ! { dg-options "-fdump-tree-original" }
+ !
+ ! Test the fix for PR87284 in which the indexing in allocate with mold
+ ! was incorrect for class array initialization and resulted in the valgrind
+ ! error:
+ ! "Conditional jump or move depends on uninitialised value(s)" at line 42.
+ !
+ ! Contributed by Andrew Baldwin on clf.
+ !
+       MODULE INTS_TYPE_MODULE
+         TYPE, ABSTRACT :: BASE_TYPE
+         END TYPE BASE_TYPE
+ 
+         TYPE, EXTENDS (BASE_TYPE) :: INTS_TYPE
+           INTEGER, ALLOCATABLE :: INTS(:)
+         END TYPE INTS_TYPE
+       CONTAINS
+         SUBROUTINE MOLD_ALLOCATE (IT_OBJS, MOLD_OBJ)
+           CLASS (BASE_TYPE), ALLOCATABLE, INTENT (OUT) :: IT_OBJS(:)
+           CLASS (BASE_TYPE), INTENT (IN) :: MOLD_OBJ
+ 
+           ALLOCATE (IT_OBJS(2), mold = MOLD_OBJ)
+ 
+           RETURN
+         END SUBROUTINE MOLD_ALLOCATE
+       END MODULE INTS_TYPE_MODULE
+ 
+       PROGRAM MFE
+         USE INTS_TYPE_MODULE
+         IMPLICIT NONE
+ 
+         CLASS (BASE_TYPE), ALLOCATABLE :: IT_OBJS(:)
+         INTEGER :: I
+         TYPE (INTS_TYPE) :: MOLD_OBJ
+ 
+         ALLOCATE (INTS_TYPE :: IT_OBJS(2))
+ 
+         SELECT TYPE (IT_OBJS)
+         TYPE IS (INTS_TYPE)
+           ALLOCATE (IT_OBJS(1)%INTS(10))
+ 
+           ALLOCATE (IT_OBJS(2)%INTS(10))
+         END SELECT
+ 
+ 
+         DEALLOCATE (IT_OBJS)
+ 
+         CALL MOLD_ALLOCATE (IT_OBJS, MOLD_OBJ)
+ 
+         IF (ALLOCATED(IT_OBJS)) THEN
+           IF (SIZE(IT_OBJS) .GE. 2) THEN
+             SELECT TYPE (IT_OBJS)
+             TYPE IS (INTS_TYPE)
+               ALLOCATE (IT_OBJS(1)%INTS(10))
+ 
+               ALLOCATE (IT_OBJS(2)%INTS(10))
+             END SELECT
+           END IF
+         END IF
+       END PROGRAM MFE
+ ! { dg-final { scan-tree-dump-times "it_objs->_vptr->_size" 1 "original" } }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/array_constructor_52.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/array_constructor_52.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/array_constructor_52.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/array_constructor_52.f90	Mon Mar 19 22:03:01 2018
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do  run }
+ ! PR 84931 - long array constructors with type conversion were not
+ ! handled correctly.
+ program test
+    implicit none
+    integer, parameter :: n = 2**16
+    real, dimension(n) :: y
+    integer :: i
+    y = (/ (1, i=1, n) /)
+    if (y(2) /= 1) stop 1
+ end program test
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/associate_30.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/associate_30.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/associate_30.f90	Mon Oct 16 19:44:04 2017
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/associate_30.f90	Sat Jun  9 18:54:56 2018
***************
*** 8,15 ****
        associate (x => null())   ! { dg-error "cannot be NULL()" }
        end associate
     end subroutine
- 
-    subroutine s2
-       associate (x => [null()]) ! { dg-error "has no type" }
-       end associate
-    end subroutine
--- 8,10 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/associate_33.f03 gcc-7.4.0/gcc/testsuite/gfortran.dg/associate_33.f03
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/associate_33.f03	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/associate_33.f03	Wed May 16 10:18:20 2018
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR83898.f90
+ !
+ ! Contributed by G Steinmetz  <gscfq@t-online.de>
+ !
+ program p
+    associate (x => ['1','2'])
+       if (any (x .ne. ['1','2'])) call abort
+    end associate
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/associate_46.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/associate_46.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/associate_46.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/associate_46.f90	Sat Nov 24 18:54:52 2018
***************
*** 0 ****
--- 1,37 ----
+ ! { dg-do run }
+ !
+ ! Check the fix for PR88143, in which the associate name caused
+ ! a segfault in resolve.c. Make sure that the associate construct
+ ! does its job correctly, as well as compiles.
+ !
+ ! Contributed by Andrew Wood  <andrew@fluidgravity.co.uk>
+ !
+ MODULE m
+    IMPLICIT NONE
+    TYPE t
+       INTEGER, DIMENSION(:), ALLOCATABLE :: i
+    END TYPE
+    CONTAINS
+       SUBROUTINE s(x, idx1, idx2, k)
+          CLASS(*), DIMENSION(:), INTENT(IN), OPTIONAL :: x
+          INTEGER :: idx1, idx2, k
+          SELECT TYPE ( x )
+          CLASS IS ( t )
+             ASSOCIATE ( j => x(idx1)%i )
+                k = j(idx2)
+             END ASSOCIATE
+          END SELECT
+       END
+ END
+ 
+   use m
+   class (t), allocatable :: c(:)
+   integer :: k
+   allocate (c(2))
+   allocate (c(1)%i, source = [3,2,1])
+   allocate (c(2)%i, source = [6,5,4])
+   call s(c, 1, 3, k)
+   if (k .ne. 1) stop 1
+   call s(c, 2, 1, k)
+   if (k .ne. 6) stop 2
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/assumed_charlen_parameter.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/assumed_charlen_parameter.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/assumed_charlen_parameter.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/assumed_charlen_parameter.f90	Wed Feb  7 20:45:40 2018
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! PR fortran/82049
+ ! Original code contributed by John Harper <john dot harper at vuw dot ac dot nz>
+ program ice ! f2003
+   implicit none
+   character(*), parameter:: a = 'ice', b = '*'
+   character(*), parameter:: c(2) = [character(len(a)) :: a, b]
+   print "(2A4)",adjustr(c)
+ end program ice
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/assumed_rank_14.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/assumed_rank_14.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/assumed_rank_14.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/assumed_rank_14.f90	Mon Jul 16 23:35:39 2018
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=legacy" }
+ !
+ ! PR fortran/83184
+ !
+ 
+ integer n1(..) /1/
+ ! { dg-error "Assumed-rank array.*must be a dummy argument" "" { target *-*-* } 7 }
+ ! { dg-error "Assumed-rank variable.*actual argument" "" { target *-*-* } 7 }
+ 
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/assumed_rank_15.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/assumed_rank_15.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/assumed_rank_15.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/assumed_rank_15.f90	Mon Jul 16 23:35:39 2018
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ ! { dg-options "-fdec-structure" }
+ !
+ ! PR fortran/83184
+ !
+ 
+ structure /s/
+   integer n(..) /1/ ! { dg-error "must have an explicit shape" }
+ end structure
+ 
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/automatic_module_variable.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/automatic_module_variable.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/automatic_module_variable.f90	Tue May 15 10:42:32 2012
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/automatic_module_variable.f90	Sun Feb 25 17:08:51 2018
***************
*** 1,10 ****
  ! { dg-do compile }
  ! Tests fix for PR15976
  !
  module sd
    integer, parameter :: n = 20
    integer :: i(n)
!   integer :: j(m) ! { dg-error "must have constant shape" }
    integer, pointer :: p(:)
    integer, allocatable :: q(:)
  contains
--- 1,12 ----
  ! { dg-do compile }
  ! Tests fix for PR15976
  !
+ ! Error message update with patch for PR fortran/83633
+ !
  module sd
    integer, parameter :: n = 20
    integer :: i(n)
!   integer :: j(m) ! { dg-error "array with nonconstant bounds" }
    integer, pointer :: p(:)
    integer, allocatable :: q(:)
  contains
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90	Tue May 15 10:42:32 2012
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90	Sun Feb 25 17:08:51 2018
***************
*** 5,20 ****
  !
  ! Contributed by Joost VandeVondele  <jv244@cam.ac.uk>
  !
  module foo
    integer    ::  i
  end module foo
  module bar
    use foo
!   integer, dimension (i) :: j ! { dg-error "must have constant shape" }
    character (len = i) :: c1   ! { dg-error "must have constant character length" }
  end module bar
  program foobar
    use foo
!   integer, dimension (i) :: k ! { dg-error "must have constant shape" }
    character (len = i) :: c2   ! { dg-error "must have constant character length" }
  end program foobar
--- 5,22 ----
  !
  ! Contributed by Joost VandeVondele  <jv244@cam.ac.uk>
  !
+ ! Error message update with patch for PR fortran/83633
+ !
  module foo
    integer    ::  i
  end module foo
  module bar
    use foo
!   integer, dimension (i) :: j ! { dg-error "array with nonconstant bounds" }
    character (len = i) :: c1   ! { dg-error "must have constant character length" }
  end module bar
  program foobar
    use foo
!   integer, dimension (i) :: k ! { dg-error "array with nonconstant bounds" }
    character (len = i) :: c2   ! { dg-error "must have constant character length" }
  end program foobar
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/char_result_18.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/char_result_18.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/char_result_18.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/char_result_18.f90	Sun May 20 18:08:04 2018
***************
*** 0 ****
--- 1,10 ----
+ ! { dg-do compile }
+ !
+ ! Tests the fix for PR80657.
+ !
+ ! Contributed by Vittorio Zecca  <zeccav@gmail.com>
+ !
+ function f(x)
+ implicit character(len(f)) (x) ! { dg-error "Self reference in character length" }
+ character(len(x)) f
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/class_67.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/class_67.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/class_67.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/class_67.f90	Sat Mar  3 16:26:49 2018
***************
*** 0 ****
--- 1,55 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR78990 in which the scalarization of the assignment
+ ! in the main program failed for two reasons: (i) The conversion of 'v1'
+ ! into a class actual was being done after the call to 'return_t1', giving
+ ! rise to the ICE reported in comment #1; and (ii) The 'info' descriptor,
+ ! required for scalarization was not set, which gave rise to the ICE noted
+ ! by the contributor.
+ !
+ ! Contributed by Chris Macmackin  <cmacmackin@gmail.com>
+ !
+ module test_type
+   implicit none
+ 
+   type t1
+      integer :: i
+    contains
+      procedure :: assign
+      generic :: assignment(=) => assign
+   end type t1
+ 
+ contains
+ 
+   elemental subroutine assign(this,rhs)
+     class(t1), intent(inout) :: this
+     class(t1), intent(in) :: rhs
+     this%i = rhs%i
+   end subroutine assign
+ 
+   function return_t1(arg)
+     class(t1), dimension(:), intent(in) :: arg
+     class(t1), dimension(:), allocatable :: return_t1
+     allocate(return_t1(size(arg)), source=arg)
+   end function return_t1
+ 
+   function return_t1_p(arg)
+     class(t1), dimension(:), intent(in), target :: arg
+     class(t1), dimension(:), pointer :: return_t1_p
+     return_t1_p => arg
+   end function return_t1_p
+ end module test_type
+ 
+ program test
+   use test_type
+   implicit none
+ 
+   type(t1), dimension(3) :: v1, v2
+   v1%i = [1,2,3]
+   v2 = return_t1(v1)
+   if (any (v2%i .ne. v1%i)) call abort
+ 
+   v1%i = [4,5,6]
+   v2 = return_t1_p(v1)
+   if (any (v2%i .ne. v1%i)) call abort
+ end program test
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray/get_to_indexed_array_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray/get_to_indexed_array_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray/get_to_indexed_array_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray/get_to_indexed_array_1.f90	Sat Apr 28 14:54:20 2018
***************
*** 0 ****
--- 1,32 ----
+ ! { dg-do run }
+ 
+ ! Test that index vector on lhs of caf-expression works correctly.
+ 
+ program pr81773
+ 
+   integer, parameter :: ndim = 5
+   integer :: i
+   integer :: vec(ndim) = -1
+   integer :: res(ndim)[*] = [ (i, i=1, ndim) ]
+   type T
+     integer :: padding
+     integer :: dest(ndim)
+     integer :: src(ndim)
+   end type
+ 
+   type(T) :: dest
+   type(T), allocatable :: caf[:]
+ 
+   vec([ndim, 3, 1]) = res(1:3)[1]
+   if (any (vec /= [ 3, -1, 2, -1, 1])) stop 1
+ 
+   dest = T(42, [ ( -1, i = 1, ndim ) ], [ ( i - 2, i = ndim, 1, -1) ] )
+   dest%dest([ 4,3,2 ]) = res(3:5)[1]
+   if (any (dest%dest /= [-1, 5, 4, 3, -1])) stop 2
+ 
+   vec(:) = -1
+   allocate(caf[*], source = T(42, [ ( -1, i = 1, ndim ) ], [ ( i - 2, i = ndim, 1, -1) ] ))
+   vec([ 5,3,2 ]) = caf[1]%src(2:4)
+   if (any (vec /= [ -1, 0, 1, -1, 2])) stop 3
+ end
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray/get_to_indirect_array.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray/get_to_indirect_array.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray/get_to_indirect_array.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray/get_to_indirect_array.f90	Sat Apr 28 14:54:20 2018
***************
*** 0 ****
--- 1,28 ----
+ ! { dg-do run }
+ !
+ ! Test that pr81773/fortran is fixed.
+ 
+ program get_to_indexed_array
+ 
+   integer, parameter :: ndim = 5
+   integer :: i
+   integer :: vec(1:ndim) = 0
+   integer :: indx(1:2) = [3, 2]
+   integer :: mat(1:ndim, 1:ndim) = 0
+   integer :: res(1:ndim)[*]=[ (i, i=1, ndim) ]
+ 
+   ! No sync needed, because this test always is running on single image
+   vec([ndim , 1]) = res(1:2)[1]
+   if (vec(1) /= res(2) .or. vec(ndim) /= res(1)) then
+     print *,"vec: ", vec, " on image: ", this_image()
+     stop 1
+   end if
+ 
+   mat(2:3,[indx(:)]) = reshape(res(1:4)[1], [2, 2])
+   if (any(mat(2:3, 3:2:-1) /= reshape(res(1:4), [2,2]))) then
+     print *, "mat: ", mat, " on image: ", this_image()
+     stop 2
+   end if
+ end
+ 
+ ! vim:ts=2:sts=2:sw=2:
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray_3.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_3.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray_3.f90	Wed Dec 31 17:16:06 2014
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_3.f90	Fri May 25 18:57:04 2018
*************** end critical fkl ! { dg-error "Expecting
*** 13,19 ****
  
  sync all (stat=1) ! { dg-error "Syntax error in SYNC ALL" }
  sync all ( stat = n,stat=k) ! { dg-error "Redundant STAT" }
! sync memory (errmsg=str)
  sync memory (errmsg=n) ! { dg-error "must be a scalar CHARACTER variable" }
  sync images (*, stat=1.0) ! { dg-error "Syntax error in SYNC IMAGES" }
  sync images (-1) ! { dg-error "must between 1 and num_images" }
--- 13,19 ----
  
  sync all (stat=1) ! { dg-error "Syntax error in SYNC ALL" }
  sync all ( stat = n,stat=k) ! { dg-error "Redundant STAT" }
! sync memory (errmsg=str) ! { dg-error "must be a scalar CHARACTER variable" }
  sync memory (errmsg=n) ! { dg-error "must be a scalar CHARACTER variable" }
  sync images (*, stat=1.0) ! { dg-error "Syntax error in SYNC IMAGES" }
  sync images (-1) ! { dg-error "must between 1 and num_images" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray_45.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_45.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray_45.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_45.f90	Sun Mar  4 13:56:09 2018
***************
*** 0 ****
--- 1,24 ----
+ ! { dg-do compile }
+ ! { dg-options "-fcoarray=lib -lcaf_single " }
+ !
+ ! Test the fix for PR83076
+ !
+ module m
+    type t
+       integer, pointer :: z
+    end type
+    type(t) :: ptr
+ contains
+    function g(x)
+       type(t) :: x[*]
+       if (associated (x%z, ptr%z)) deallocate (x%z) ! This used to ICE with -fcoarray=lib
+    end
+ end module
+ 
+   use m
+ contains
+    function f(x)
+       type(t) :: x[*]
+       if (associated (x%z, ptr%z)) deallocate (x%z)
+    end
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray_46.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_46.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray_46.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_46.f90	Sun Mar  4 13:56:09 2018
***************
*** 0 ****
--- 1,17 ----
+ ! { dg-do compile }
+ ! { dg-options "-fcoarray=lib -lcaf_single" }
+ !
+ ! Test the fix for PR83319
+ !
+ module foo_module
+   implicit none
+   type foo
+     integer, allocatable :: i(:)
+   end type
+ end module
+ 
+   use foo_module
+   implicit none
+   type(foo), save :: bar[*]
+   allocate(bar%i(1))     ! Used to ICE here.
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray_8.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_8.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray_8.f90	Sun Feb 28 19:07:42 2016
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_8.f90	Tue Mar  6 19:27:48 2018
*************** end module mmm4
*** 145,151 ****
  
  subroutine tfgh()
    integer :: i(2)
!   DATA i/(i, i=1,2)/ ! { dg-error "Expected PARAMETER symbol" }
    do i = 1, 5 ! { dg-error "cannot be an array" }
    end do ! { dg-error "Expecting END SUBROUTINE" }
  end subroutine tfgh
--- 145,151 ----
  
  subroutine tfgh()
    integer :: i(2)
!   DATA i/(i, i=1,2)/ ! { dg-error "Syntax error in DATA" }
    do i = 1, 5 ! { dg-error "cannot be an array" }
    end do ! { dg-error "Expecting END SUBROUTINE" }
  end subroutine tfgh
*************** end subroutine tfgh
*** 153,159 ****
  subroutine tfgh2()
    integer, save :: x[*]
    integer :: i(2)
!   DATA i/(x, x=1,2)/ ! { dg-error "Expected PARAMETER symbol" }
    do x = 1, 5 ! { dg-error "cannot be a coarray" }
    end do ! { dg-error "Expecting END SUBROUTINE" }
  end subroutine tfgh2
--- 153,159 ----
  subroutine tfgh2()
    integer, save :: x[*]
    integer :: i(2)
!   DATA i/(x, x=1,2)/ ! { dg-error "Syntax error in DATA" }
    do x = 1, 5 ! { dg-error "cannot be a coarray" }
    end do ! { dg-error "Expecting END SUBROUTINE" }
  end subroutine tfgh2
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray_dependency_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_dependency_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray_dependency_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_dependency_1.f90	Sun May  6 11:52:46 2018
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ ! { dg-options "-fcoarray=lib -lcaf_single" }
+ !
+ ! Check that reffing x on both sides of a coarray send does not ICE. 
+ ! PR 85507
+ 
+ program check_dependency
+   integer :: x[*]
+   x[42] = x
+ end program check_dependency
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90	Wed Nov 30 13:27:49 2016
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90	Sun May  6 11:52:46 2018
*************** B(1:5) = B(3:7)
*** 38,46 ****
  if (any (A-B /= 0)) call abort
  end
  
! ! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, &parm.\[0-9\]+, 4, 4, 0, 0B\\\);" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, &parm.\[0-9\]+, 4, 4, 1, 0B\\\);" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, &p, 4, 4, 1, 0B\\\);" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.1, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) b, 1, &parm.\[0-9\]+, 0B, &p, 4, 4, 0, 0B\\\);" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "_gfortran_caf_sendget \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, 4, 4, 0, 0B\\\);" 1 "original" } }
  
--- 38,45 ----
  if (any (A-B /= 0)) call abort
  end
  
! ! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, &parm.\[0-9\]+, 4, 4, 1, 0B\\\);" 2 "original" } }
  ! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, &p, 4, 4, 1, 0B\\\);" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.1, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) b, 1, &parm.\[0-9\]+, 0B, &p, 4, 4, 0, 0B\\\);" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "_gfortran_caf_sendget \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, 4, 4, 1, 0B\\\);" 1 "original" } }
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/constant_shape.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/constant_shape.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/constant_shape.f90	Mon Dec 12 18:54:54 2016
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/constant_shape.f90	Sun Feb 25 17:08:51 2018
***************
*** 3,9 ****
  ! PR 78392: ICE in gfc_trans_auto_array_allocation, at fortran/trans-array.c:5979
  !
  ! Contributed by Janus Weil <janus@gcc.gnu.org>
! 
  module mytypes
     implicit none
   contains
--- 3,10 ----
  ! PR 78392: ICE in gfc_trans_auto_array_allocation, at fortran/trans-array.c:5979
  !
  ! Contributed by Janus Weil <janus@gcc.gnu.org>
! ! Error message update with patch for PR fortran/83633
! !
  module mytypes
     implicit none
   contains
*************** end module
*** 15,20 ****
  program test
    use mytypes
    implicit none
!   integer, dimension(get_i()) :: x  ! { dg-error "must have constant shape" }
!   print *, size (x)
  end
--- 16,21 ----
  program test
    use mytypes
    implicit none
!   integer, dimension(get_i()) :: x  ! { dg-error "array with nonconstant bounds" }
!   print *, size (x)                 ! { dg-error "has no IMPLICIT type" }
  end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/data_bounds_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/data_bounds_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/data_bounds_1.f90	Tue Feb  5 11:16:33 2008
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/data_bounds_1.f90	Sat Jun  9 19:57:29 2018
***************
*** 1,4 ****
--- 1,5 ----
  ! { dg-do compile }
+ ! { dg-options "-std=gnu" }
  ! Checks the fix for PR32315, in which the bounds checks below were not being done.
  !
  ! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/data_char_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/data_char_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/data_char_1.f90	Wed May 19 12:55:26 2010
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/data_char_1.f90	Sat Jun  9 19:57:29 2018
***************
*** 1,4 ****
--- 1,5 ----
  ! { dg-do run }
+ ! { dg-options "-std=gnu" }
  ! Test character variables in data statements
  ! Also substrings of character variables.
  ! PR14976 PR16228 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/data_substring.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/data_substring.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/data_substring.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/data_substring.f90	Sat Feb 24 17:51:09 2018
***************
*** 0 ****
--- 1,6 ----
+ ! { dg-do compile }
+ ! PR fortran/30792
+ character string*1025
+ integer i
+ data (string(i:i),i=1,1025)/1025*'?'/  ! { dg-error "Invalid substring" }
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/deallocate_alloc_opt_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/deallocate_alloc_opt_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/deallocate_alloc_opt_1.f90	Wed Mar 28 20:45:16 2012
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/deallocate_alloc_opt_1.f90	Mon Jun  4 17:09:01 2018
*************** program a
*** 22,28 ****
    deallocate(i)) ! { dg-error "Syntax error in DEALLOCATE" }
    deallocate(i, errmsg=err, errmsg=err) ! { dg-error "Redundant ERRMSG" }
    deallocate(i, errmsg=err) ! { dg-warning "useless without a STAT" }
!   deallocate(i, stat=j, errmsg=x) ! { dg-error "must be a scalar CHARACTER" }
  
    deallocate(err) ! { dg-error "nonprocedure pointer nor an allocatable" }
  
--- 22,28 ----
    deallocate(i)) ! { dg-error "Syntax error in DEALLOCATE" }
    deallocate(i, errmsg=err, errmsg=err) ! { dg-error "Redundant ERRMSG" }
    deallocate(i, errmsg=err) ! { dg-warning "useless without a STAT" }
!   deallocate(i, stat=j, errmsg=x) ! { dg-error "shall be a scalar default CHARACTER" }
  
    deallocate(err) ! { dg-error "nonprocedure pointer nor an allocatable" }
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/deallocate_error_3.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/deallocate_error_3.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/deallocate_error_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/deallocate_error_3.f90	Wed Feb  7 22:36:24 2018
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! PR fortran/82994
+ ! Code contributed by Gerhard Steinmetz
+ program p
+    type t
+    end type
+    class(t) :: x  ! { dg-error "must be dummy, allocatable or pointer" }
+    deallocate (x) ! { dg-error "not a nonprocedure pointer nor an allocatable" }
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/deallocate_error_4.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/deallocate_error_4.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/deallocate_error_4.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/deallocate_error_4.f90	Wed Feb  7 22:36:24 2018
***************
*** 0 ****
--- 1,10 ----
+ ! { dg-do compile }
+ ! PR fortran/82994
+ ! Code contributed by Gerhard Steinmetz
+ program p
+    type t
+    end type
+    class(t) :: x  ! { dg-error "must be dummy, allocatable or pointer" }
+    allocate (x)   ! { dg-error "neither a data pointer nor an allocatable" }
+    deallocate (x) ! { dg-error "not a nonprocedure pointer nor an allocatable" }
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/dec_parameter_1.f gcc-7.4.0/gcc/testsuite/gfortran.dg/dec_parameter_1.f
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/dec_parameter_1.f	Thu Nov  3 16:00:58 2016
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/dec_parameter_1.f	Fri Feb  2 16:05:27 2018
***************
*** 22,28 ****
            two = 2.0d0
            x = two * pi_1 * f_1 * t
            y = two * pi_2 * f_2 * t
-           z = two * pi_3 * f_3 * t
            return
          end subroutine
  
--- 22,27 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/dec_parameter_2.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/dec_parameter_2.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/dec_parameter_2.f90	Thu Nov  3 16:00:58 2016
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/dec_parameter_2.f90	Fri Feb  2 16:05:27 2018
*************** subroutine sub1(t, x, y)
*** 21,27 ****
    two = 2.0d0
    x = two * pi_1 * f_1 * t
    y = two * pi_2 * f_2 * t
-   z = two * pi_3 * f_3 * t
    return
  end subroutine
  
--- 21,26 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/dec_structure_23.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/dec_structure_23.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/dec_structure_23.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/dec_structure_23.f90	Mon Jul 16 23:35:39 2018
***************
*** 0 ****
--- 1,20 ----
+ ! { dg-do compile }
+ ! { dg-options "-fdec-structure" }
+ !
+ ! PR fortran/78240
+ !
+ ! Test a regression where an ICE occurred attempting to create array variables
+ ! with non-constant array-specs in legacy clist initializers.
+ !
+ ! Error message update with patch for PR fortran/83633
+ !
+ program p
+   implicit none
+   integer :: nn
+   real :: rr
+   structure /s/
+     integer x(n)    /1/   ! { dg-error "array with nonconstant bounds" }
+     integer xx(nn)  /1/   ! { dg-error "array with nonconstant bounds" }
+     integer xxx(rr) /1.0/ ! { dg-error "array with nonconstant bounds" }
+   end structure
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/dec_structure_8.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/dec_structure_8.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/dec_structure_8.f90	Sat May  7 23:16:23 2016
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/dec_structure_8.f90	Mon Jul 16 23:35:39 2018
***************
*** 6,12 ****
  
  ! Old-style (clist) initialization
  integer,parameter :: as = 3
! structure /t1/
    integer*1 a /300_2/       ! { dg-error "Arithmetic overflow" }
    integer   b //            ! { dg-error "Empty old style initializer list" }
    integer   c /2*3/         ! { dg-error "Repeat spec invalid in scalar" }
--- 6,12 ----
  
  ! Old-style (clist) initialization
  integer,parameter :: as = 3
! structure /t1/              ! { dg-error "Type definition.*T1" }
    integer*1 a /300_2/       ! { dg-error "Arithmetic overflow" }
    integer   b //            ! { dg-error "Empty old style initializer list" }
    integer   c /2*3/         ! { dg-error "Repeat spec invalid in scalar" }
*************** record /t1/            ! { dg-error "Inv
*** 44,57 ****
  
  structure /t2/
    ENTRY here           ! { dg-error "ENTRY statement.*cannot appear" }
!   integer a
    integer a            ! { dg-error "Component.*already declared" }
    structure $z         ! { dg-error "Invalid character in name" }
    structure //         ! { dg-error "Invalid character in name" }
    structure // x       ! { dg-error "Invalid character in name" }
    structure /t3/       ! { dg-error "Invalid character in name" }
    structure /t3/ x,$y  ! { dg-error "Invalid character in name" }
!   structure /t4/ y
      integer i, j, k
    end structure
    structure /t4/ z     ! { dg-error "Type definition.*T4" }
--- 44,57 ----
  
  structure /t2/
    ENTRY here           ! { dg-error "ENTRY statement.*cannot appear" }
!   integer a            ! { dg-error "Component.*already declared" }
    integer a            ! { dg-error "Component.*already declared" }
    structure $z         ! { dg-error "Invalid character in name" }
    structure //         ! { dg-error "Invalid character in name" }
    structure // x       ! { dg-error "Invalid character in name" }
    structure /t3/       ! { dg-error "Invalid character in name" }
    structure /t3/ x,$y  ! { dg-error "Invalid character in name" }
!   structure /t4/ y     ! { dg-error "Type definition.*T4" }
      integer i, j, k
    end structure
    structure /t4/ z     ! { dg-error "Type definition.*T4" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/explicit_shape_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/explicit_shape_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/explicit_shape_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/explicit_shape_1.f90	Sun Feb 25 17:08:51 2018
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do compile }
+ ! PR fortran/83633
+ ! Original testcase by Nathan T. Weeks  <weeks at iastate dot edu>
+ !
+ integer :: A(command_argument_count()) = 1 ! { dg-error "nonconstant bounds" }
+ write (*,*) A
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/generic_34.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/generic_34.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/generic_34.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/generic_34.f90	Fri Sep  7 17:33:15 2018
***************
*** 0 ****
--- 1,27 ----
+ ! { dg-do compile }
+ !
+ ! PR 86116: [6/7/8/9 Regression] Ambiguous generic interface not recognised
+ !
+ ! Contributed by martin <mscfd@gmx.net>
+ 
+ module mod
+ 
+    type :: t
+    end type t
+ 
+    interface sub
+       module procedure s1
+       module procedure s2
+    end interface
+ 
+ contains
+ 
+    subroutine s1(x)  ! { dg-error "Ambiguous interfaces in generic interface" }
+       type(t) :: x
+    end subroutine
+ 
+    subroutine s2(x)  ! { dg-error "Ambiguous interfaces in generic interface" }
+       class(*), allocatable :: x
+    end subroutine
+ 
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/goacc/pr84963.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/goacc/pr84963.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/goacc/pr84963.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/goacc/pr84963.f90	Tue Apr 24 15:17:19 2018
***************
*** 0 ****
--- 1,7 ----
+ ! PR ipa/84963
+ ! { dg-options "-O2" }
+ 
+ program p
+    print *, sin([1.0, 2.0])
+    print *, cos([1.0, 2.0])
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/gomp/pr83977.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/pr83977.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/gomp/pr83977.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/pr83977.f90	Sat Mar  3 13:18:15 2018
***************
*** 0 ****
--- 1,15 ----
+ ! PR middle-end/83977
+ ! { dg-do compile }
+ 
+ integer function foo (a, b)
+    integer :: a, b
+ !$omp declare simd uniform(b) linear(ref(a):b)
+    a = a + 1
+ ! This function can't be called from simd loops,
+ ! because it violates declare simd restrictions.
+ ! We shouldn't ICE on it though, nor attempt to generate
+ ! simd clones for the *omp_fn* functions.
+ !$omp parallel
+    call sub
+ !$omp end parallel
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/gomp/pr84116.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/pr84116.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/gomp/pr84116.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/pr84116.f90	Sat Mar  3 13:24:36 2018
***************
*** 0 ****
--- 1,12 ----
+ ! PR fortran/84116
+ ! { dg-do compile }
+ 
+ program pr84116
+    integer :: i, j
+    !$omp simd linear ((i))	! { dg-error "Syntax error" }
+    do i = 1, 2
+    end do
+    !$omp simd linear ()		! { dg-error "Syntax error" }
+    do j = 1, 2
+    end do
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/gomp/pr85313.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/pr85313.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/gomp/pr85313.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/gomp/pr85313.f90	Fri Jun 22 21:09:32 2018
***************
*** 0 ****
--- 1,25 ----
+ ! PR fortran/85313
+ ! { dg-do compile }
+ 
+ !$omp do collapse(3)
+   do i = 1, 10
+     do j = i, 20	! { dg-error "form rectangular iteration space" }
+       do k = 1, 2
+       end do
+     end do
+   end do
+ !$omp do collapse(3)
+   do i = 1, 10
+     do j = 1, 5
+       do k = i, 20	! { dg-error "form rectangular iteration space" }
+       end do
+     end do
+   end do
+ !$omp do collapse(3)
+   do i = 1, 10
+     do j = 1, 5
+       do k = j, 20	! { dg-error "form rectangular iteration space" }
+       end do
+     end do
+   end do
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/implied_do_2.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/implied_do_2.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/implied_do_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/implied_do_2.f90	Tue Mar  6 19:27:48 2018
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do compile }
+ ! PR fortran/56667
+ program error_message
+    implicit none
+    integer :: ir
+    write(*,*) ( ir, ir = 1,10    ! { dg-error "Expected a right parenthesis" }
+ end program error_message 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/init_flag_17.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/init_flag_17.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/init_flag_17.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/init_flag_17.f90	Mon Jun 25 19:07:03 2018
***************
*** 0 ****
--- 1,28 ----
+ ! { dg-do compile }
+ ! { dg-options "-finit-derived -finit-local-zero -fdump-tree-original" }
+ !
+ ! PR fortran/82972
+ !
+ ! Make sure we do not ICE when generating initializers for c_ptr and c_funptr
+ ! components of derived types (and make sure they are properly initialized to
+ ! zero).
+ !
+ 
+ program init_flag_17
+   use iso_c_binding
+   implicit none
+ 
+   type :: ty
+     type(c_ptr)    :: ptr  ! = c_null_ptr
+     type(c_funptr) :: fptr ! = c_null_funptr
+   end type
+ 
+   type(ty) :: t
+ 
+   print *, t%ptr
+   print *, t%fptr
+ 
+ end program
+ 
+ ! { dg-final { scan-tree-dump "\.ptr=0" "original" } }
+ ! { dg-final { scan-tree-dump "\.fptr=0" "original" } }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/init_flag_18.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/init_flag_18.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/init_flag_18.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/init_flag_18.f90	Mon Jul 16 22:25:54 2018
***************
*** 0 ****
--- 1,19 ----
+ ! { dg-do compile }
+ ! { dg-options "-finit-derived" }
+ !
+ ! PR fortran/83183
+ !
+ ! Test a regression where -finit-derived recursed infinitely generating
+ ! initializers for allocatable components of the same derived type.
+ !
+ 
+ program pr83183
+   type :: linked_list
+      type(linked_list), allocatable :: link
+      integer :: value
+   end type
+   type(linked_list) :: test
+   allocate(test % link)
+   print *, test%value
+   print *, test%link%value
+ end program
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/init_flag_19.f03 gcc-7.4.0/gcc/testsuite/gfortran.dg/init_flag_19.f03
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/init_flag_19.f03	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/init_flag_19.f03	Mon Jul 16 22:25:54 2018
***************
*** 0 ****
--- 1,36 ----
+ ! { dg-do compile }
+ ! { dg-options "-finit-derived -finit-local-zero -fdump-tree-original" }
+ !
+ ! Test initializers for BT_CLASS components/variables with -finit-derived.
+ !
+ 
+ implicit none
+ 
+ type :: ty1
+   integer :: ival
+   real    :: rval
+ end type
+ 
+ type :: ty2
+   type(ty1)               :: bt
+   type(ty1), allocatable  :: bt_alloc
+   type(ty1), pointer      :: bt_ptr
+   class(ty1), allocatable :: class_alloc
+   class(ty1), pointer     :: class_ptr
+ end type
+ 
+ type(ty2) basic
+ class(ty1), allocatable :: calloc
+ 
+ print *, basic%bt%ival
+ print *, calloc%ival
+ 
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "\.ival *= *0" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "\.rval *= *0" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "\.bt_ptr *= *0" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "\.bt_alloc *= *0" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "\.class_alloc(?: *= *\{)?\._data *= *0" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "\.class_ptr(?: *= *\{)?\._data *= *0" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "calloc(?: *= *\{)?\._data *= *0" 1 "original" } }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/inline_matmul_22.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/inline_matmul_22.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/inline_matmul_22.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/inline_matmul_22.f90	Sat Feb 17 16:01:50 2018
***************
*** 0 ****
--- 1,44 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-ffrontend-optimize" }
+ ! PR 84270 - this used to be rejected.
+ ! Test case by Michael Weinert
+ 
+ module fp_precision
+ 
+    integer, parameter   :: fp = selected_real_kind(13)
+ 
+ end module fp_precision
+ 
+       subroutine lhcal(nrot,orth,ngpts,vgauss,vr_0)
+ 
+       use fp_precision  ! floating point precision
+ 
+       implicit none
+ 
+ !--->    rotation matrices and rotations (input)
+       integer,          intent(in)  :: nrot
+ !     real(kind=fp),    intent(in)  :: orth(3,3,nrot)  ! fine at all -O
+       real(kind=fp),    intent(in)  :: orth(3,3,*)
+ 
+ !--->    gaussian integration points
+       integer,          intent(in)  :: ngpts
+       real(kind=fp),    intent(in)  :: vgauss(3,*)
+ 
+ !--->    output results
+       real(kind=fp),    intent(out) :: vr_0(3)
+ 
+       real(kind=fp)     :: v(3),vr(3)
+       integer           :: n,nn
+ 
+       vr_0 = 0
+       do nn=1,ngpts
+          v(:) = vgauss(:,nn)
+ !--->    apply rotations
+          do n=2,nrot
+             vr = matmul( orth(:,:,n), v )
+             vr_0 = vr_0 + vr
+          enddo
+       enddo
+ 
+       return
+       end subroutine lhcal
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/inline_matmul_24.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/inline_matmul_24.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/inline_matmul_24.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/inline_matmul_24.f90	Sat Nov  3 14:49:33 2018
***************
*** 0 ****
--- 1,42 ----
+ ! { dg-do run }
+ ! { dg-options "-ffrontend-optimize -fdump-tree-original" }
+ !
+ ! PR fortran/87597
+ !
+ ! Contributed by gallmeister
+ !
+ ! Before, for the inlined matmul,
+ ! gamma5 was converted to an EXPR_ARRAY with lbound = 1
+ ! instead of the lbound = 0 as declared; leading to
+ ! an off-by-one problem.
+ !
+ program testMATMUL
+   implicit none
+     complex, dimension(0:3,0:3), parameter :: gamma5 = reshape((/ 0., 0., 1., 0., &
+                                                                   0., 0., 0., 1., &
+                                                                   1., 0., 0., 0., &
+                                                                   0., 1., 0., 0. /),(/4,4/))
+     complex, dimension(0:3,0:3) :: A, B, D
+     integer :: i
+ 
+     A = 0.0
+     do i=0,3
+        A(i,i) = i*1.0
+     end do
+ 
+     B = cmplx(7,-9)
+     B = matmul(A,gamma5)
+ 
+     D = reshape([0, 0, 2, 0, &
+                  0, 0, 0, 3, &
+                  0, 0, 0, 0, &
+                  0, 1, 0, 0], [4, 4])
+     write(*,*) B(0,:)
+     write(*,*) B(1,:)
+     write(*,*) B(2,:)
+     write(*,*) B(3,:)
+     if (any(B /= D)) then
+       call abort()
+     end if
+ end program testMATMUL
+ ! { dg-final { scan-tree-dump-times "gamma5\\\[__var_1_do \\* 4 \\+ __var_2_do\\\]|gamma5\\\[NON_LVALUE_EXPR <__var_1_do> \\* 4 \\+ NON_LVALUE_EXPR <__var_2_do>\\\]" 1 "original" } }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/inquire_18.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/inquire_18.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/inquire_18.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/inquire_18.f90	Sun Feb 18 16:30:42 2018
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do run }
+ ! PR84412 Wrong "Inquire statement identifies an internal file" error 
+ program bug
+   implicit none
+   integer          :: i
+   character(len=1) :: s
+   write (s,'(i1)') 0
+   open(newUnit=i,file='inquire_18.txt',status='unknown')
+   inquire(unit=i)
+   close(i, status="delete")
+ end program bug
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/inquire_19.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/inquire_19.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/inquire_19.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/inquire_19.f90	Fri Feb 23 19:16:00 2018
***************
*** 0 ****
--- 1,13 ----
+ ! { dg-do run }
+ ! PR84506  INQUIRE(pos=) always sets pos=0 with -fdefault-integer-8
+ program TestInquire
+    implicit none
+    integer(8) :: iUnit
+    integer(8) :: iPos
+    open(newunit=iunit, file='output.txt', access='stream', status='replace')
+    write(iUnit) 'TEXT'
+    inquire(iUnit, pos=iPos)
+    close(iUnit, status='delete')
+    !print *, iPos
+    if (iPos.ne.5) stop 1
+ end program TestInquire
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/interface_41.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/interface_41.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/interface_41.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/interface_41.f90	Wed Mar 21 01:26:25 2018
***************
*** 0 ****
--- 1,19 ----
+ ! { dg-do compile }
+ ! PR fortran/85001 
+ ! Contributed by Gerhard Steinmetz.
+ program p
+    type t
+    end type
+    call s
+ contains
+    real function f(x)
+       class(t) :: x
+       dimension :: x(:)
+       f = 1.0
+    end
+    subroutine s
+       type(t) :: x(2)
+       real :: z
+       z = f(x)     ! { dg-error "Rank mismatch in argument" }
+    end
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/internal_references_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/internal_references_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/internal_references_1.f90	Tue May 15 10:42:32 2012
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/internal_references_1.f90	Mon Mar 19 18:54:29 2018
*************** module m
*** 11,17 ****
    implicit none
  contains
  
!   subroutine p (i)   ! { dg-error "is already defined" }
      integer :: i
    end subroutine
  
--- 11,17 ----
    implicit none
  contains
  
!   subroutine p (i)   ! { dg-error "(1)" }
      integer :: i
    end subroutine
  
*************** end module
*** 22,35 ****
  !
  ! PR25124 - would happily ignore the declaration of foo in the main program.
  program test
! real :: foo, x      ! { dg-error "explicit interface and must not have attributes declared" }
  x = bar ()          ! This is OK because it is a regular reference.
  x = foo ()
  contains
!     function foo () ! { dg-error "explicit interface and must not have attributes declared" }
        foo = 1.0
      end function foo
      function bar ()
        bar = 1.0
      end function bar
  end program test
--- 22,36 ----
  !
  ! PR25124 - would happily ignore the declaration of foo in the main program.
  program test
! real :: foo, x
  x = bar ()          ! This is OK because it is a regular reference.
  x = foo ()
  contains
!     function foo () ! { dg-error "explicit interface from a previous" }
        foo = 1.0
      end function foo
      function bar ()
        bar = 1.0
      end function bar
  end program test
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/matmul_rank_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/matmul_rank_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/matmul_rank_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/matmul_rank_1.f90	Wed Mar 28 17:34:08 2018
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-ffrontend-optimize" }
+ ! PR 85044 - used to die on allocating a negative amount of memory.
+ ! Test case by Gerhard Steinmetz.
+ program p
+    real :: a(3,3) = 1.0
+    real :: b(33)
+    b = matmul(a, a) ! { dg-error "Incompatible ranks" }
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr38351.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr38351.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr38351.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr38351.f90	Sat Jun  9 21:54:45 2018
***************
*** 0 ****
--- 1,21 ----
+ ! { dg-do compile }
+ module m1
+    type t1
+       integer :: i
+    end type t1
+    interface operator(+)
+       module procedure add
+    end interface
+    contains
+       type(t1) function add(a,b)
+          type(t1), intent(in) :: a,b
+       end function
+ end module m1
+ 
+ program foo
+    use m1
+    type(t1), dimension(2,2) :: a = t1(1), b = t1(2)
+    type(t1) :: c=t1(1), d=t1(2)
+    c = c + d
+    a = a + b   ! { dg-error "Unexpected derived-type entities" }
+ end program foo
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr44491.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr44491.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr44491.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr44491.f90	Tue Jun 12 18:28:25 2018
***************
*** 0 ****
--- 1,5 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=gnu" }
+ ! PR fortran/44491
+       character*2 escape /z'1B'/  ! { dg-error "Incompatible types in DATA" }
+       end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr51434.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr51434.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr51434.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr51434.f90	Sat Mar  3 19:02:28 2018
***************
*** 0 ****
--- 1,19 ----
+ ! { dg-do run }
+ ! PR fortran/51434
+ module foo
+    implicit none
+    integer, parameter :: n = 5
+    character(len=1), parameter :: s(n) = 'a'
+    type :: a
+       integer :: m = n
+       character(len=1):: t(n) = transfer('abcde             ', s)
+    end type a
+ end module foo
+ 
+ program bar
+    use foo
+    implicit none
+    type(a) c
+    if (c%m /= n) stop 1
+    if (any(c%t /= ['a', 'b', 'c', 'd', 'e'])) stop 2
+ end program bar
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr63514.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr63514.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr63514.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr63514.f90	Sat Jun  9 20:10:34 2018
***************
*** 0 ****
--- 1,41 ----
+ ! { dg-do compile }
+ ! PR fortran/63514.f90
+ program foo
+ 
+    implicit none
+ 
+    integer, volatile :: n
+ 
+    n = 0
+ 
+    call bar
+    call bah
+ 
+    contains
+ 
+    subroutine bar
+       integer k
+       integer, volatile :: m
+       block
+          integer, save :: i
+          integer, volatile :: j
+          i = 42
+          j = 2 * i
+          k = i + j + n
+       end block
+    end subroutine bar
+ 
+    pure subroutine bah
+       integer k
+       integer, volatile :: m     ! { dg-error "cannot be specified in a PURE" }
+       block
+          integer, save :: i      ! { dg-error "cannot be specified in a PURE" }
+          integer, volatile :: j  ! { dg-error "cannot be specified in a PURE" }
+          i = 42                  ! { dg-error "has no IMPLICIT type" }
+          j = 2 * i               ! { dg-error "has no IMPLICIT type" }
+          k = i + j + n
+       end block
+       m = k * m                  ! { dg-error "has no IMPLICIT type" }
+    end subroutine bah
+ 
+ end program foo
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr64124.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr64124.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr64124.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr64124.f90	Thu Mar  8 19:01:23 2018
***************
*** 0 ****
--- 1,5 ----
+ ! { dg-do compile }
+ ! PR fortran/64124.f90
+   character(len=kind(1)) x
+   integer(len(x)) y
+   end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr65453.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr65453.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr65453.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr65453.f90	Mon Mar 19 18:36:29 2018
***************
*** 0 ****
--- 1,8 ----
+ ! { dg-do compile }
+ ! PR fortran/65453
+ ! Contributed by Tobias Burnus  <burnus at gcc.gnu.org>
+ procedure() :: foo   ! { dg-error "(1)" }
+   contains
+     subroutine foo() ! { dg-error "clashes with procedure" }
+     end
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr67803.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr67803.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr67803.f90	Sat Nov 14 17:31:16 2015
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr67803.f90	Sat Jun  9 18:54:56 2018
*************** program p
*** 10,14 ****
    x = '0' // [character :: 1d1]     ! { dg-error "Incompatible typespec for" }
    x = '0' // [character :: (0.,1.)] ! { dg-error "Incompatible typespec for" }
    x = '0' // [character :: .true.]  ! { dg-error "Incompatible typespec for" }
-   x = '0' // [character :: null()]  ! { dg-error "Incompatible typespec for" }
  end
--- 10,13 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr67805.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr67805.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr67805.f90	Sat Oct 24 16:20:26 2015
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr67805.f90	Sat Jun  9 18:54:56 2018
*************** subroutine p
*** 22,28 ****
     s = [character([1.]) :: 'x', 'y']      ! { dg-error "INTEGER expression expected" }
     s = [character([1d1]) :: 'x', 'y']     ! { dg-error "INTEGER expression expected" }
     s = [character([(0.,1.)]) :: 'x', 'y'] ! { dg-error "INTEGER expression expected" }
-    s = [character([null()]) :: 'x', 'y']  ! { dg-error "INTEGER expression expected" }
     s =  [character(null()) :: 'x', 'y']   ! { dg-error "INTEGER expression expected" }
     call foo(s)
  end subroutine p
--- 22,27 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr70409.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr70409.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr70409.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr70409.f90	Thu Mar  8 19:01:23 2018
***************
*** 0 ****
--- 1,23 ----
+ ! { dg-do run }
+ ! PR fortran/70409
+ ! Contriubted by Harald Anlauf  <anlauf at gmx dot de>
+ program foo
+   integer, parameter :: huge_1 = huge(0_1)
+   character(    huge_1      ), parameter :: x = 'abc'
+   character(    huge(0_1)   ), parameter :: y = 'abc'
+   character(    huge(0_1)+0 ), parameter :: z = 'abcdef'
+   character(    huge(0_1)   )            :: a = 'abc'
+   integer, parameter :: huge_2 = huge(0_2)
+   character(    huge_2      ), parameter :: u = 'abc'
+   character(    huge(0_2)   ), parameter :: v = 'abc'
+   character(int(huge(0_2),4)), parameter :: w = 'abcdef'
+   character(    huge(0_2)   )            :: b = 'abc'
+   if (len(x) /= huge_1) stop 1
+   if (len(y) /= huge_1) stop 2
+   if (len(z) /= huge_1) stop 3
+   if (len(a) /= huge_1) stop 4
+   if (len(u) /= huge_2) stop 5
+   if (len(v) /= huge_2) stop 6
+   if (len(w) /= huge_2) stop 7
+   if (len(b) /= huge_2) stop 8
+ end program foo
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr70870_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr70870_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr70870_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr70870_1.f90	Fri May 11 18:00:41 2018
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! PR fortran/70870
+ ! Contributed by Vittorio Zecca <zeccav at gmail dot com >
+       type t
+        integer :: g=0   ! default initialization
+       end type
+       type(t) :: v2
+       data v2/t(2)/     ! { dg-error "default initialization shall not" }
+       end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr71085.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr71085.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr71085.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr71085.f90	Sun Mar  4 01:52:24 2018
***************
*** 0 ****
--- 1,12 ----
+ ! { dg-do compile }
+ ! PR 71085
+ !
+ ! Testcase from PR by Vladimir Fuka <vladimir.fuka@gmail.com>
+ !
+ program pr71085
+   print *, f()
+ contains
+   function f()
+     integer :: f(iargc()*10)
+   end
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr77414.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr77414.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr77414.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr77414.f90	Mon Mar 19 18:54:29 2018
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! PR fortran/77414
+ subroutine a(x)               ! { dg-error "(1)" }
+    character(*) :: x
+    contains
+       subroutine a(x)         ! { dg-error " is already defined at" }
+          character(*) :: x
+       end subroutine a
+ end subroutine a
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr78278.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr78278.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr78278.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr78278.f90	Sat Jun  9 19:57:29 2018
***************
*** 0 ****
--- 1,14 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=f95" }
+ ! PR fortran/78278
+ program p
+    character, pointer :: x => null()
+    data x /null()/         ! { dg-error "GNU Extension: re-initialization" }
+    print *, associated(x)
+ end
+ 
+ subroutine foo
+    real :: x = 42
+    data x /0/              ! { dg-error "GNU Extension: re-initialization" }
+    print *, x
+ end subroutine foo
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr78741.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr78741.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr78741.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr78741.f90	Fri Mar 16 03:28:08 2018
***************
*** 0 ****
--- 1,16 ----
+ ! { dg-do compile }
+ ! PR fortran/78741
+ ! Contributed by Gerhard Steinmetz <gerhard.steinmetz.fortran at t-online.de>
+ subroutine s(n, x)
+    integer :: n
+    character(n) :: x
+    character, pointer :: z(:)
+    x = 'a'
+    return
+ entry g(n, x)           ! { dg-error "is already defined" }
+    x = 'b'
+ contains
+    subroutine g         ! { dg-error "(1)" }
+       z(1) = x(1:1)
+    end
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr83149.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr83149.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr83149.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr83149.f90	Wed May 16 11:17:10 2018
***************
*** 0 ****
--- 1,14 ----
+ ! Compiled with pr83149_1.f90
+ !
+ module mod1
+   integer :: ncells
+ end module
+ 
+ module mod2
+ contains
+   function get() result(array)
+     use mod1
+     real array(ncells)
+     array = 1.0
+   end function
+ end module
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr83149_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr83149_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr83149_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr83149_1.f90	Wed May 16 11:17:10 2018
***************
*** 0 ****
--- 1,24 ----
+ ! Compiled with pr83149.f90
+ ! { dg-do run }
+ ! { dg-options "-fno-whole-file" }
+ ! { dg-compile-aux-modules "pr83149.f90" }
+ ! { dg-additional-sources pr83149.f90 }
+ !
+ ! Contributed by Neil Carlson  <neil.n.carlson@gmail.com>
+ !
+ subroutine sub(s)
+   use mod2
+   real :: s
+   s = sum(get())
+ end
+ 
+   use mod1
+   real :: s
+   ncells = 2
+   call sub (s)
+   if (int (s) .ne. ncells) stop 1
+   ncells = 10
+   call sub (s)
+   if (int (s) .ne. ncells) stop 2
+ end
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr83149_a.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr83149_a.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr83149_a.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr83149_a.f90	Wed May 16 11:17:10 2018
***************
*** 0 ****
--- 1,11 ----
+ ! Compiled with pr83149_b.f90
+ !
+ module mod
+   character(8) string
+ contains
+   function get_string() result(s)
+     character(len_trim(string)) s
+     s = string
+   end function
+ end module
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr83149_b.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr83149_b.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr83149_b.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr83149_b.f90	Wed May 16 11:17:10 2018
***************
*** 0 ****
--- 1,16 ----
+ ! Compiled with pr83149_a.f90
+ ! { dg-do run }
+ ! { dg-options "-fno-whole-file" }
+ ! { dg-compile-aux-modules "pr83149_a.f90" }
+ ! { dg-additional-sources pr83149_a.f90 }
+ !
+ ! Contributed by Neil Carlson  <neil.n.carlson@gmail.com>
+ !
+   use mod
+   string = 'fubar'
+   select case (get_string())
+     case ('fubar')
+     case default
+       stop 1
+   end select
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr83939.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr83939.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr83939.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr83939.f90	Mon Mar 12 18:15:42 2018
***************
*** 0 ****
--- 1,12 ----
+ ! { dg-do compile }
+ elemental function f() result(s) ! { dg-error "shall not have an ALLOCATABLE or POINTER" }
+   allocatable s
+   allocate(s)
+   s = 3.5
+ end function
+ 
+ elemental function g() result(s) ! { dg-error "shall not have an ALLOCATABLE or POINTER" }
+   pointer s
+   allocate(s)
+   s = 3.5
+ end function
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr84117.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr84117.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr84117.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr84117.f90	Sat Mar  3 13:25:27 2018
***************
*** 0 ****
--- 1,7 ----
+ ! PR tree-optimization/84117
+ ! { dg-do compile }
+ ! { dg-options "-O3 -ftrapv" }
+   FUNCTION pw_integral_aa ( cc ) RESULT ( integral_value )
+     COMPLEX(KIND=8), DIMENSION(:), POINTER :: cc
+     integral_value = accurate_sum ( CONJG ( cc (:) ) * cc (:) )
+   END FUNCTION pw_integral_aa
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr84734.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr84734.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr84734.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr84734.f90	Sat Mar 10 18:44:25 2018
***************
*** 0 ****
--- 1,4 ----
+ ! { dg-do compile }
+ ! PR fortran/84734
+    integer :: b(huge(1_8)+1_8) = 0 ! { dg-error "Arithmetic overflow" }
+    end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85138_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85138_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85138_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85138_1.f90	Sat Jun  9 18:29:40 2018
***************
*** 0 ****
--- 1,29 ----
+ ! { dg-do compile }
+ module fox_m_fsys_format
+ 
+   interface len
+      module procedure str_real_sp_len, str_real_sp_fmt_len
+   end interface
+ 
+ contains
+ 
+   pure function str_real_sp_fmt_len(x, fmt) result(n)
+     real, intent(in) :: x
+     character(len=*), intent(in) :: fmt
+     if (.not.checkFmt(fmt)) then
+     endif
+   end function str_real_sp_fmt_len
+   pure function str_real_sp_len(x) result(n)
+     real, intent(in) :: x
+     n = len(x, "")
+   end function str_real_sp_len
+   pure function str_real_dp_matrix(xa) result(s)
+     real, intent(in) :: xa
+     character(len=len(xa)) :: s
+   end function str_real_dp_matrix
+ 
+   pure function checkfmt(s) result(a)
+    logical a
+    character(len=*), intent(in) :: s
+   end function checkfmt
+ end module fox_m_fsys_format
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85138_2.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85138_2.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85138_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85138_2.f90	Sat Jun  9 18:29:40 2018
***************
*** 0 ****
--- 1,32 ----
+ ! { dg-do compile }
+ module fox_m_fsys_format
+   interface len
+     module procedure str_real_dp_len, str_real_dp_fmt_len
+   end interface
+ contains
+   pure function str_real_dp_fmt_len(x, fmt) result(n)
+     real, intent(in) :: x
+     character(len=*), intent(in) :: fmt
+     if (.not.checkFmt(fmt)) then
+     endif
+   end function str_real_dp_fmt_len
+   pure function str_real_dp_len(x) result(n)
+     real, intent(in) :: x
+   end function str_real_dp_len
+   pure function str_real_dp_array_len(xa) result(n)
+     real, dimension(:), intent(in) :: xa
+   end function str_real_dp_array_len
+   pure function str_real_dp_array_fmt_len(xa, fmt) result(n)
+     real, dimension(:), intent(in) :: xa
+     character(len=*), intent(in) :: fmt
+   end function str_real_dp_array_fmt_len
+   pure function str_real_dp_fmt(x, fmt) result(s)
+     real, intent(in) :: x
+     character(len=*), intent(in) :: fmt
+     character(len=len(x, fmt)) :: s
+   end function str_real_dp_fmt
+   pure function checkFmt(fmt) result(good)
+     character(len=*), intent(in) :: fmt
+     logical :: good
+   end function checkFmt
+ end module fox_m_fsys_format
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85520.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85520.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85520.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85520.f90	Wed Apr 25 00:00:47 2018
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do run }
+ ! PR fortran/85520
+ ! Original code from Gerhard Steinmetz <gscfq at t-online dot de>
+ program p
+    character(-huge(1)) :: c = ' '
+     if (len(c) /= 0) stop 1
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85521_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85521_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85521_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85521_1.f90	Fri May 11 17:59:05 2018
***************
*** 0 ****
--- 1,8 ----
+ ! { dg-do compile }
+ ! PR fortran/85521
+ program p
+    character(3) :: c = 'abc'
+    character(3) :: z(1)
+    z = [ c(:-1) ]
+    print *, z
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85521_2.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85521_2.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85521_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85521_2.f90	Fri May 11 17:59:05 2018
***************
*** 0 ****
--- 1,8 ----
+ ! { dg-do compile }
+ ! PR fortran/85521
+ program p
+    character(3) :: c = 'abc'
+    character(3) :: z(1)
+    z = [ c(:-2) ]
+    print *, z
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85542.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85542.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85542.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85542.f90	Sat May 12 16:57:28 2018
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do compile }
+ ! PR fortran/85542
+ function f(x)
+    character(*), intent(in) :: x
+    character((len((x)))) :: f
+    f = x
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85543.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85543.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85543.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85543.f90	Fri May 25 19:24:06 2018
***************
*** 0 ****
--- 1,8 ----
+ ! { dg-do compile }
+ ! PR fortran/85543
+ program p
+    procedure(), pointer :: z
+ contains
+    real(z()) function f()  ! { dg-error "in initialization expression at" }
+    end
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85687.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85687.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85687.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85687.f90	Fri May 11 17:58:03 2018
***************
*** 0 ****
--- 1,8 ----
+ ! { dg-do compile }
+ ! PR fortran/85687
+ ! Code original contributed by Gerhard Steinmetz gscfq at t-oline dot de
+ program p
+    type t
+    end type
+    print *, rank(t)  ! { dg-error "must be a data object" }
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85779_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85779_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85779_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85779_1.f90	Fri May 25 19:13:50 2018
***************
*** 0 ****
--- 1,6 ----
+ ! { dg-do compile }
+ ! PR fortran/85779
+ type(t) function f() ! { dg-error "is not accessible" }
+    type f            ! { dg-error "already has a basic type" }
+    end type          ! { dg-error "END FUNCTION statement" }
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85779_2.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85779_2.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85779_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85779_2.f90	Fri May 25 19:13:50 2018
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do compile }
+ ! PR fortran/85779
+ type(t) function f() result(z)   ! { dg-error "is not accessible" }
+    type z                        ! { dg-error "already has a basic type" }
+    end type                      ! { dg-error "END FUNCTION statement" }
+ end
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85779_3.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85779_3.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85779_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85779_3.f90	Fri May 25 19:13:50 2018
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do compile }
+ ! PR fortran/85779
+ class(t) function f()   ! { dg-error "must be dummy, allocatable or pointer" }
+    type f               ! { dg-error "already has a basic type" }
+    end type             ! { dg-error "END FUNCTION statement" }
+ end
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85780.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85780.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85780.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85780.f90	Fri May 25 19:05:52 2018
***************
*** 0 ****
--- 1,5 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=legacy" }
+ ! PR fortran/85780
+ subroutine s(*) bind(c)
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85895.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85895.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85895.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85895.f90	Fri May 25 18:57:04 2018
***************
*** 0 ****
--- 1,17 ----
+ ! { dg-do compile }
+ ! { dg-options "-fcoarray=lib" }
+ ! PR fortran/85895
+ subroutine p
+    character(80) :: c(2)
+    sync memory (errmsg=c)        ! { dg-error "scalar CHARACTER variable" }
+ end subroutine p
+ 
+ subroutine q
+    character(80) :: c(2)
+    sync memory (errmsg=c(1:2))   ! { dg-error "scalar CHARACTER variable" }
+ end subroutine q
+ 
+ subroutine r
+    character(80) :: c(2)
+    sync memory (errmsg=c(1))
+ end subroutine r
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85996.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85996.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr85996.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr85996.f90	Sat Jun  9 18:29:40 2018
***************
*** 0 ****
--- 1,69 ----
+ ! { dg-do compile }
+ module strings
+ 
+    type string
+       integer :: len = 0, size = 0
+       character, pointer :: chars(:) => null()
+    end type string
+ 
+    interface length
+       module procedure len_s
+    end interface
+ 
+    interface char
+       module procedure s_to_c, s_to_slc  
+    end interface
+ 
+    interface uppercase
+       module procedure uppercase_c
+    end interface
+ 
+    interface replace
+       module procedure replace_ccs
+    end interface
+ 
+    contains
+ 
+       elemental function len_s(s)
+          type(string), intent(in) :: s
+          integer :: len_s
+       end function len_s
+ 
+       pure function s_to_c(s)
+          type(string),intent(in) :: s
+          character(length(s)) :: s_to_c
+       end function s_to_c
+ 
+       pure function s_to_slc(s,long)
+          type(string),intent(in) :: s
+          integer, intent(in) :: long
+          character(long) :: s_to_slc
+       end function s_to_slc
+ 
+       pure function lr_sc_s(s,start,ss) result(l)
+          type(string), intent(in) :: s
+          character(*), intent(in) :: ss
+          integer, intent(in)  :: start
+          integer :: l
+       end function lr_sc_s
+ 
+       pure function lr_ccc(s,tgt,ss,action) result(l)
+          character(*), intent(in) :: s,tgt,ss,action
+          integer :: l
+          select case(uppercase(action))
+          case default
+          end select
+       end function lr_ccc
+ 
+       function replace_ccs(s,tgt,ss) result(r)
+          character(*), intent(in)             :: s,tgt
+          type(string), intent(in)             :: ss
+          character(lr_ccc(s,tgt,char(ss),'first'))  :: r
+       end function replace_ccs
+ 
+       pure function uppercase_c(c)
+          character(*), intent(in) :: c
+          character(len(c)) :: uppercase_c
+       end function uppercase_c
+ 
+ end module strings
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr86045.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr86045.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr86045.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr86045.f90	Thu Jun  7 18:39:30 2018
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do compile }
+ program p
+    logical :: a(2) = (mod([2,3],0) == 0)     ! { dg-error "shall not be zero" }
+    integer :: b = count(mod([2,3],0) == 0)   ! { dg-error "shall not be zero" }
+    integer :: c = all(mod([2,3],0) == 0)     ! { dg-error "shall not be zero" }
+    integer :: d = any(mod([2,3],0) == 0)     ! { dg-error "shall not be zero" }
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr86059.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr86059.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr86059.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr86059.f90	Sat Jun  9 18:54:56 2018
***************
*** 0 ****
--- 1,8 ----
+ ! { dg-do compile }
+ ! PR fortran/86059
+ program foo
+    integer :: i(2) = [ null(), 1 ]           ! { dg-error "cannot appear in an array constructor" }
+    integer :: j(2) = [ (null(), n = 1, 2) ]  ! { dg-error "cannot appear in an array constructor" }
+    integer k(2)
+    k = 42 + [1, null()]                      ! { dg-error "cannot appear in an array constructor" }
+ end program foo
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/pr86110.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/pr86110.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/pr86110.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/pr86110.f90	Wed Jun 13 22:40:46 2018
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do compile }
+ ! PR fortran/86110
+ program p
+    character(:), allocatable :: x, y
+    x = 'abc'
+    y = [x(:)]  ! { dg-error "Incompatible ranks 0 and 1" }
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/proc_ptr_50.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/proc_ptr_50.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/proc_ptr_50.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/proc_ptr_50.f90	Tue Jul  3 09:46:31 2018
***************
*** 0 ****
--- 1,68 ----
+ ! { dg-do compile }
+ !
+ ! Test the fix for PR86242, in which the procedure pointer in 'tester'
+ ! was being copied as if it were an allocatable class component.
+ !
+ ! Contributed by <cfd@mnet-mail.de>
+ !
+ module test
+ 
+    implicit none
+ 
+    private
+    public :: tester
+ 
+    type :: wrapper
+       integer(4) :: n
+    end type wrapper
+ 
+    type :: output
+       real(8) :: dummy
+    end type output
+ 
+    type :: tester
+       class(wrapper),  allocatable :: wrap
+       procedure(proc1), pointer :: ptr => null()
+    end type tester
+ 
+    abstract interface
+       function proc1(self) result(uc)
+          import :: tester, output
+          class(tester), intent(in) :: self
+          class(output), allocatable :: uc
+       end function proc1
+    end interface
+ 
+ end module test
+ 
+ ! Comment #2 from Janus Weil  <janus@gcc.gnu.org>
+ module test1
+ 
+    implicit none
+ 
+    type :: output
+    end type
+ 
+    type :: tester
+       integer,  allocatable :: wrap
+       procedure(proc1), pointer, nopass :: ptr
+    end type
+ 
+    interface                              ! Originally abstract
+       function proc1() result(uc)
+          import :: output
+          class(output), allocatable :: uc ! Works if a pointer
+       end function
+    end interface
+ 
+ ! PR82969 from Gerhard Steinmetz  <gscfq@t-online.de>
+    type t
+       real, allocatable :: x(:)
+       procedure(f), nopass, pointer :: g
+    end type
+ contains
+    function f() result(z)
+       class(t), allocatable :: z
+    end
+ 
+ end module test1
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/realloc_on_assign_29.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/realloc_on_assign_29.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/realloc_on_assign_29.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/realloc_on_assign_29.f90	Thu Feb 22 18:52:21 2018
***************
*** 0 ****
--- 1,13 ----
+ ! { dg-do run }
+ ! PR fortran/81116
+ ! The assignment was broken due to a missing temporary.
+ ! Original test case by Clive Page.
+ 
+ program test10
+   implicit none
+   character(:), allocatable :: string
+   !
+   string = '1234567890'
+   string = string(1:5) // string(7:)
+   if (string /= '123457890') STOP 1
+ end program test10
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/realloc_on_assign_30.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/realloc_on_assign_30.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/realloc_on_assign_30.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/realloc_on_assign_30.f90	Thu Jun  7 18:13:33 2018
***************
*** 0 ****
--- 1,13 ----
+ ! { dg-do compile }
+ ! PR 85641 - this used to ICE due do infinite recursion.
+ ! Test case by Antony Lewis.
+ program tester
+ character(LEN=:), allocatable :: fields
+ integer j
+ character(LEN=4), parameter :: CMB_CL_Fields = 'TEBP'
+ 
+ fields = ''
+ j=1
+ fields = fields // CMB_CL_Fields(j:j)
+ 
+ end program tester
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/select_type_40.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/select_type_40.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/select_type_40.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/select_type_40.f90	Sun Feb 25 09:30:04 2018
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-fdefault-integer-8" }
+ ! PR 78238 - this used to cause an ICE.
+ ! Original test cae by Gerhard Steinmetz
+ class(*), allocatable :: q
+ select type (x => q)
+ type is (real)
+ end select
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/select_type_41.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/select_type_41.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/select_type_41.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/select_type_41.f90	Sat Mar  3 16:33:17 2018
***************
*** 0 ****
--- 1,30 ----
+ ! { dg-do compile }
+ ! { dg-options "-O2" }
+ !
+ ! Tests the fix for PR80965 in which the use of the name 'loc'
+ ! for the dummy argument of 'xyz' caused an ICE. If the module
+ ! was used, the error "DUMMY attribute conflicts with INTRINSIC
+ ! attribute in ‘loc’ at (1)" was emitted. Note that although 'loc'
+ ! is a GNU extension and so can be over-ridden, this is not very
+ ! good practice.
+ !
+ ! Contributed by David Sagan  <david.sagan@gmail.com>
+ !
+ module mode3_mod
+ contains
+   subroutine xyz (loc)
+     implicit none
+     class(*) :: loc
+     real x(6)
+     integer ix_use
+     select type (loc)
+       type is (integer)
+         x = 0
+         print *, "integer"
+       type is (real)
+         ix_use = 0
+         print *, "real"
+     end select
+   end subroutine xyz
+ end module mode3_mod
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/select_type_42.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/select_type_42.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/select_type_42.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/select_type_42.f90	Sun May 20 17:16:09 2018
***************
*** 0 ****
--- 1,26 ----
+ ! { dg-do run }
+ !
+ ! Tests the fix for PR82275.
+ ! Associating a name with a reduced-dimension section of a
+ ! multidimensional array precluded subsequent use of the name
+ ! with the appropriately reduced dimensionality and instead
+ ! required use of the (invalid) full set of original dimensions.
+ !
+ ! Contributed by Damian Rouson  <damian@sourceryinstitute.org>
+ !
+   type component
+    integer :: i
+   end type
+   type container
+     class(component), allocatable :: component_array(:,:)
+   end type
+   type(container) bag
+   type(component) section_copy
+   allocate(bag%component_array, source = reshape ([component(10), component (100)], [1,2]))
+   select type(associate_name=>bag%component_array(1,:))
+     type is (component)
+       section_copy = associate_name(2)  ! gfortran rejected valid
+ !      section_copy = associate_name(1,1)! gfortran accepted invalid
+   end select
+   if (section_copy%i .ne. 100) stop 1
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/shape_9.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/shape_9.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/shape_9.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/shape_9.f90	Mon Feb 12 20:13:30 2018
***************
*** 0 ****
--- 1,16 ----
+ ! { dg-do  run }
+ ! { dg-require-effective-target lto }
+ ! { dg-options "-flto" }
+ ! Check that there are no warnings with LTO for a KIND argument.
+ !
+ program test
+    implicit none
+    real, allocatable :: x(:,:)
+ 
+    allocate(x(2,5))
+    if (any(shape(x) /= [ 2, 5 ])) call abort
+    if (any(shape(x,kind=1) /= [ 2, 5 ])) call abort
+    if (any(shape(x,kind=2) /= [ 2, 5 ])) call abort
+    if (any(shape(x,kind=4) /= [ 2, 5 ])) call abort
+    if (any(shape(x,kind=8) /= [ 2, 5 ])) call abort
+  end program test
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/statement_function_1.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/statement_function_1.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/statement_function_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/statement_function_1.f90	Fri Feb 23 19:35:51 2018
***************
*** 0 ****
--- 1,24 ----
+ ! { dg-do compile }
+ ! PR fortran/84276
+       subroutine stepns(hh, h, s, w)
+       real, intent(inout) :: h, hh, s
+       real, intent(out) :: w
+       real :: qofs
+       integer i
+       qofs(s) = s
+       w = qofs(hh + h)
+       i = 42
+       w = qofs(i)       ! { dg-error "Type mismatch in argument" }
+       end subroutine stepns
+ 
+       subroutine step(hh, h, s, w)
+       real, intent(inout) :: h, hh, s
+       real, intent(out) :: w
+       real :: qofs
+       integer i
+       qofs(s, i) = i * s
+       i = 42
+       w = qofs(hh, i)
+       w = qofs(i = i, s = hh) ! { dg-error "invalid in a statement function" }
+       end subroutine step
+ ! { dg-prune-output " Obsolescent feature" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/statement_function_2.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/statement_function_2.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/statement_function_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/statement_function_2.f90	Mon Feb 12 18:04:33 2018
***************
*** 0 ****
--- 1,26 ----
+ ! { dg-do compile }
+ ! PR fortran/54223
+ subroutine r(d)
+     implicit none
+     integer, optional :: d
+     integer :: h, q
+     q(d) = d + 1     ! statement function statement
+     h = q(d)
+ end subroutine r
+ 
+ subroutine s(x)
+     implicit none
+     integer, optional :: x
+     integer :: g, z
+     g(x) = x + 1     ! statement function statement
+     z = g()          ! { dg-error "Missing actual argument" }
+ end subroutine s
+ 
+ subroutine t(a)
+     implicit none
+     integer :: a
+     integer :: f, y
+     f(a) = a + 1     ! statement function statement
+     y = f()          ! { dg-error "Missing actual argument" }
+ end subroutine t
+ ! { dg-prune-output " Obsolescent feature" }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/statement_function_3.f gcc-7.4.0/gcc/testsuite/gfortran.dg/statement_function_3.f
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/statement_function_3.f	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/statement_function_3.f	Mon Feb 12 18:08:02 2018
***************
*** 0 ****
--- 1,15 ----
+ ! { dg-do compile }
+ ! PR fortran/35299
+       subroutine phtod(e,n,i,h)
+       dimension e(n)
+       hstar(e,b)=b**.4*((1.25*fun(-e/40)+.18)) ! { dg-error "must be scalar" }
+       a = 1.
+       h = hstar(e(i-1), a)
+       end
+ 
+       function fun(a)
+          real a(*)
+          fun = 42
+       end
+ ! { dg-prune-output " Obsolescent feature" }
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/submodule_31.f08 gcc-7.4.0/gcc/testsuite/gfortran.dg/submodule_31.f08
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/submodule_31.f08	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/submodule_31.f08	Thu May 17 15:17:43 2018
***************
*** 0 ****
--- 1,54 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR82814 in which an ICE occurred for the submodule allocation.
+ !
+ ! Contributed by "Werner Blokbuster"  <werner.blokbuster@gmail.com>
+ !
+ module u
+ 
+     implicit none
+ 
+     interface unique
+         module function uniq_char(input) result(uniq)
+             character(*), intent(in) :: input(:)
+             character(size(input)), allocatable :: uniq(:)
+         end function uniq_char
+     end interface unique
+ 
+ contains
+ 
+     module function uniq2(input) result(uniq)
+         character(*), intent(in) :: input(:)
+         character(size(input)), allocatable :: uniq(:)
+             allocate(uniq(1))
+             uniq = 'A'
+     end function uniq2
+ 
+ end module u
+ 
+ 
+ submodule (u) z
+ 
+     implicit none
+ 
+ contains
+ 
+     module function uniq_char(input) result(uniq)
+         character(*), intent(in) :: input(:)
+         character(size(input)), allocatable :: uniq(:)
+             allocate(uniq(1)) ! This used to ICE
+             uniq = 'A'
+     end function uniq_char
+ 
+ end submodule z
+ 
+ 
+ program test_uniq
+     use u
+     implicit none
+     character(1), dimension(4) :: chr = ['1','2','1','2']
+ 
+     write(*,*) unique(chr)
+     write(*,*) uniq2(chr)
+ 
+ end program test_uniq
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/temporary_2.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/temporary_2.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/temporary_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/temporary_2.f90	Sat May 12 15:33:24 2018
***************
*** 0 ****
--- 1,39 ----
+ ! { dg-do compile }
+ !
+ ! Tests the fix for PR70864 in which compiler generated temporaries received
+ ! the attributes of a dummy argument. This is the original testcase.
+ ! The simplified version by Gerhard Steinmetz is gratefully acknowledged.
+ !
+ ! Contributed by Weiqun Zhang  <weiqun.zhang@gmail.com>
+ !
+ module boxarray_module
+   implicit none
+   type :: BoxArray
+      integer     :: i = 0
+    contains
+      procedure ::                  boxarray_assign
+      generic   :: assignment(=) => boxarray_assign
+   end type BoxArray
+ contains
+   subroutine boxarray_assign (dst, src)
+     class(BoxArray), intent(inout) :: dst
+     type (BoxArray), intent(in   ) :: src
+     dst%i =src%i
+   end subroutine boxarray_assign
+ end module boxarray_module
+ 
+ module multifab_module
+   use boxarray_module
+   implicit none
+   type, public   :: MultiFab
+      type(BoxArray) :: ba
+   end type MultiFab
+ contains
+   subroutine multifab_swap(mf1, mf2)
+     type(MultiFab), intent(inout) :: mf1, mf2
+     type(MultiFab) :: tmp
+     tmp = mf1
+     mf1 = mf2 ! Generated an ICE in trans-decl.c.
+     mf2 = tmp
+   end subroutine multifab_swap
+ end module multifab_module
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/temporary_3.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/temporary_3.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/temporary_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/temporary_3.f90	Sat May 12 15:33:24 2018
***************
*** 0 ****
--- 1,121 ----
+ ! { dg-do run }
+ !
+ ! Tests the fix for PR68846 in which compiler generated temporaries were
+ ! receiving the attributes of dummy arguments. This test is the original.
+ ! The simplified versions by Gerhard Steinmetz are gratefully acknowledged.
+ !
+ ! Contributed by Mirco Valentini  <mirco.valentini@polimi.it>
+ !
+ MODULE grid
+   IMPLICIT NONE
+   PRIVATE
+   REAL(KIND=8), DIMENSION(100,100), TARGET :: WORKSPACE
+   TYPE, PUBLIC :: grid_t
+     REAL(KIND=8), DIMENSION(:,:), POINTER :: P => NULL ()
+   END TYPE
+   PUBLIC :: INIT
+ CONTAINS
+   SUBROUTINE INIT (DAT)
+     IMPLICIT NONE
+     TYPE(grid_t), INTENT(INOUT) :: DAT
+     INTEGER :: I, J
+     DAT%P => WORKSPACE
+     DO I = 1, 100
+       DO J = 1, 100
+         DAT%P(I,J) = REAL ((I-1)*100+J-1)
+       END DO
+     ENDDO
+   END SUBROUTINE INIT
+ END MODULE grid
+ 
+ MODULE subgrid
+   USE :: grid, ONLY: grid_t
+   IMPLICIT NONE
+   PRIVATE
+   TYPE, PUBLIC :: subgrid_t
+     INTEGER, DIMENSION(4) :: range
+     CLASS(grid_t), POINTER    :: grd => NULL ()
+   CONTAINS
+     PROCEDURE, PASS :: INIT => LVALUE_INIT
+     PROCEDURE, PASS :: JMP => LVALUE_JMP
+   END TYPE
+ CONTAINS
+   SUBROUTINE LVALUE_INIT (HOBJ, P, D)
+     IMPLICIT NONE
+     CLASS(subgrid_t),      INTENT(INOUT) :: HOBJ
+     TYPE(grid_t), POINTER, INTENT(INOUT) :: P
+     INTEGER, DIMENSION(4), INTENT(IN)    :: D
+     HOBJ%range = D
+     HOBJ%grd => P
+   END SUBROUTINE LVALUE_INIT
+ 
+   FUNCTION LVALUE_JMP(HOBJ, I, J) RESULT(P)
+     IMPLICIT NONE
+     CLASS(subgrid_t), INTENT(INOUT) :: HOBJ
+     INTEGER, INTENT(IN) :: I, J
+     REAL(KIND=8), POINTER :: P
+     P => HOBJ%grd%P(HOBJ%range(1)+I-1, HOBJ%range(3)+J-1)
+   END FUNCTION LVALUE_JMP
+ END MODULE subgrid
+ 
+ MODULE geom
+   IMPLICIT NONE
+ CONTAINS
+   SUBROUTINE fillgeom_03( subgrid, value  )
+     USE :: subgrid, ONLY: subgrid_t
+     IMPLICIT NONE
+     TYPE(subgrid_T), intent(inout) :: subgrid
+     REAL(kind=8),    intent(in) :: value
+     INTEGER :: I, J
+     DO i = 1, 3
+       DO J = 1, 4
+         subgrid%jmp(i,j) = value ! Dummy argument '_F.DA0' with INTENT(IN)
+                                  ! in pointer association context or ICE
+                                  ! in trans_decl.c, depending on INTENT of
+                                  ! 'VALUE'
+       ENDDO
+     ENDDO
+   END SUBROUTINE fillgeom_03
+ END MODULE geom
+ 
+ PROGRAM test_lvalue
+   USE :: grid
+   USE :: subgrid
+   USE :: geom
+   IMPLICIT NONE
+   TYPE(grid_t), POINTER :: GRD => NULL()
+   TYPE(subgrid_t) :: STENCIL
+   REAL(KIND=8), POINTER :: real_tmp_ptr
+   REAL(KIND=8), DIMENSION(10,10), TARGET :: AA
+   REAL(KIND=8), DIMENSION(3,4) :: VAL
+   INTEGER :: I, J, chksum
+   integer, parameter :: r1 = 50
+   integer, parameter :: r2 = 52
+   integer, parameter :: r3 = 50
+   integer, parameter :: r4 = 53
+   DO I = 1, 3
+     DO J = 1, 4
+       VAL(I,J) = dble(I)*dble(J)
+     ENDDO
+   ENDDO
+ 
+   ALLOCATE (GRD)
+   CALL INIT (GRD)
+   chksum = sum([([((i-1)*100 + j -1, j=1,100)], i = 1,100)])
+   if (int(sum(grd%p)) .ne. chksum) stop 1
+ 
+   CALL STENCIL%INIT (GRD, [r1, r2, r3, r4])
+   if (.not.associated (stencil%grd, grd)) stop 2
+   if (int(sum(grd%p)) .ne. chksum) stop 3
+ 
+   CALL fillgeom_03(stencil, 42.0_8)
+   if (any (int (grd%p(r1:r2,r3:r4)) .ne. 42)) stop 4
+ 
+   chksum = chksum - sum([([((i - 1) * 100 + j -1, j=r3,r4)], i = r1,r2)]) &
+            + (r4 - r3 + 1) * (r2 - r1 +1) * 42
+   if (int(sum(grd%p)) .ne. chksum) stop 5
+ 
+   deallocate (grd)
+ END PROGRAM test_lvalue
+ 
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/typebound_operator_4.f03 gcc-7.4.0/gcc/testsuite/gfortran.dg/typebound_operator_4.f03
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/typebound_operator_4.f03	Sat Dec 27 22:40:21 2014
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/typebound_operator_4.f03	Sat Jun  9 21:54:45 2018
*************** PROGRAM main
*** 84,89 ****
    TYPE(myint) :: x
  
    x = 0 ! { dg-error "Can't convert" }
!   x = x + 42 ! { dg-error "Operands of" }
    x = x .PLUS. 5 ! { dg-error "Unknown operator" }
  END PROGRAM main
--- 84,89 ----
    TYPE(myint) :: x
  
    x = 0 ! { dg-error "Can't convert" }
!   x = x + 42 ! { dg-error "binary intrinsic numeric operator" }
    x = x .PLUS. 5 ! { dg-error "Unknown operator" }
  END PROGRAM main
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/unlimited_polymorphic_29.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/unlimited_polymorphic_29.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/unlimited_polymorphic_29.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/unlimited_polymorphic_29.f90	Wed May 16 09:35:19 2018
***************
*** 0 ****
--- 1,84 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR84546 in which the failing cases would
+ ! have x%vec = ['foo','b   '].
+ !
+ ! Contributed by Neil Carlson  <neil.n.carlson@gmail.com>
+ !
+ module any_vector_type
+ 
+   type :: any_vector
+     class(*), allocatable :: vec(:)
+   end type
+ 
+   interface any_vector
+     procedure any_vector1
+   end interface
+ 
+ contains
+ 
+   function any_vector1(vec) result(this)
+     class(*), intent(in) :: vec(:)
+     type(any_vector) :: this
+     allocate(this%vec, source=vec)
+   end function
+ 
+ end module
+ 
+ program main
+ 
+   use any_vector_type
+   implicit none
+ 
+   class(*), allocatable :: x
+   character(*), parameter :: vec(2) = ['foo','bar']
+   integer :: vec1(3) = [7,8,9]
+ 
+   call foo1
+   call foo2
+   call foo3
+   call foo4
+ 
+ contains
+ 
+   subroutine foo1 ! This always worked
+     allocate (any_vector :: x)
+     select type (x)
+       type is (any_vector)
+         x = any_vector(vec)
+     end select
+     call bar(1)
+     deallocate (x)
+   end
+ 
+   subroutine foo2 ! Failure found during diagnosis
+     x = any_vector (vec)
+     call bar(2)
+     deallocate (x)
+   end
+ 
+   subroutine foo3 ! Original failure
+     allocate (x, source = any_vector (vec))
+     call bar(3)
+     deallocate (x)
+   end
+ 
+   subroutine foo4 ! This always worked
+     allocate (x, source = any_vector (vec1))
+     call bar(4)
+     deallocate (x)
+   end
+ 
+   subroutine bar (stop_flag)
+     integer :: stop_flag
+     select type (x)
+       type is (any_vector)
+         select type (xvec => x%vec)
+           type is (character(*))
+             if (any(xvec /= vec)) stop stop_flag
+           type is (integer)
+             if (any(xvec /= (vec1))) stop stop_flag
+         end select
+     end select
+   end
+ end program
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/unlimited_polymorphic_30.f03 gcc-7.4.0/gcc/testsuite/gfortran.dg/unlimited_polymorphic_30.f03
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/unlimited_polymorphic_30.f03	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/unlimited_polymorphic_30.f03	Mon Jun 25 07:52:09 2018
***************
*** 0 ****
--- 1,38 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR83318.
+ !
+ ! Contributed by Neil Carlson  <neil.n.carlson@gmail.com>
+ !
+ type :: any_vector
+   class(*), allocatable :: v(:)
+ end type
+ type(any_vector) :: x, y
+ 
+ ! This did not work correctly
+   x%v = ['foo','bar']
+   call foo (x, 1)
+ 
+ ! This was reported as not working correctly but was OK before the above was fixed
+   y = x
+   call foo (y, 2)
+ 
+   x%v = [1_4,2_4]
+   call foo (x, 3)
+ 
+   y = x
+   call foo (y, 4)
+ 
+ contains
+ 
+   subroutine foo (arg, n)
+     type (any_vector) :: arg
+     integer :: n
+     select type (v => arg%v)
+         type is (character(*))
+            if (any (v .ne. ["foo","bar"])) stop n
+         type is (integer(4))
+            if (any (v .ne. [1_4,2_4])) stop n
+     end select
+   end subroutine
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/vect/pr86421.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/vect/pr86421.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/vect/pr86421.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/vect/pr86421.f90	Fri Oct 12 14:47:57 2018
***************
*** 0 ****
--- 1,35 ----
+ ! PR fortran/86421
+ ! { dg-require-effective-target vect_simd_clones }
+ ! { dg-additional-options "-fopenmp-simd" }
+ ! { dg-additional-options "-mavx" { target avx_runtime } }
+ 
+ module mod86421
+   implicit none
+ contains
+   subroutine foo(x, y, z)
+     real :: x
+     integer :: y, z
+     !$omp declare simd linear(ref(x)) linear(val(y)) linear(uval(z))
+     x = x + y
+     z = z + 1
+   end subroutine
+ end module mod86421
+ 
+ program pr86421
+   use mod86421
+   implicit none
+   integer :: i, j
+   real :: a(64)
+   j = 0
+   do i = 1, 64
+     a(i) = i
+   end do
+   !$omp simd
+   do i = 1, 64
+     call foo (a(i), i, j)
+   end do
+   do i = 1, 64
+     if (a(i) .ne. (2 * i)) stop 1
+   end do
+   if (j .ne. 64) stop 2
+ end program pr86421
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.dg/where_7.f90 gcc-7.4.0/gcc/testsuite/gfortran.dg/where_7.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.dg/where_7.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.dg/where_7.f90	Sun Nov 25 15:23:18 2018
***************
*** 0 ****
--- 1,25 ----
+ ! { dg-do compile }
+ ! { dg-options "-ffrontend-optimize" }
+ ! PR fortran/88073 - this used to ICE with front-end optimization
+ ! Original test case by 'mecej4'
+ Subroutine tfu (n, x, f)
+    Implicit None
+    Integer, Parameter :: double = Kind (0.d0)
+    Integer, Intent (In) :: n
+    Real (double), Intent (Out) :: f
+    Real (double), Intent (In) :: x (n)
+    Integer :: j
+    Logical, Dimension(n) :: l1v, l2v, l3v
+ !
+    l3v = .False.
+    l2v = .False.
+    l1v = (/ (j, j=1, n) /) == 1
+    Where ( .Not. (l1v))
+       l2v = (/ (j, j=1, n) /) == n
+    End Where
+    Where ( .Not. l1v)
+       l3v = .Not. l2v
+    End Where
+    f = sum (x(1:n), mask=l3v)
+    Return
+ end subroutine tfu
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gfortran.fortran-torture/compile/pr85878.f90 gcc-7.4.0/gcc/testsuite/gfortran.fortran-torture/compile/pr85878.f90
*** gcc-7.3.0/gcc/testsuite/gfortran.fortran-torture/compile/pr85878.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gfortran.fortran-torture/compile/pr85878.f90	Fri Jun 22 21:30:06 2018
***************
*** 0 ****
--- 1,8 ----
+ ! PR middle-end/85878
+ 
+ program pr85878
+   real :: a
+   complex :: c = (2.0, 3.0)
+   print *, c
+   print *, transfer (a, c)
+ end
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/aggr24.adb gcc-7.4.0/gcc/testsuite/gnat.dg/aggr24.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/aggr24.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/aggr24.adb	Tue Jun 19 09:46:40 2018
***************
*** 0 ****
--- 1,13 ----
+ -- { dg-do run }
+ 
+ with Aggr24_Pkg; use Aggr24_Pkg;
+ 
+ procedure Aggr24 is
+   V : Rec;
+ begin
+   V.S := "Hello";
+   Init (V);
+   if V.S /= "Hello" then
+     raise Program_Error;
+   end if;
+ end;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/aggr24_pkg.adb gcc-7.4.0/gcc/testsuite/gnat.dg/aggr24_pkg.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/aggr24_pkg.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/aggr24_pkg.adb	Tue Jun 19 09:46:40 2018
***************
*** 0 ****
--- 1,15 ----
+ package body Aggr24_Pkg is
+ 
+    procedure Init (R : out Rec) is
+    begin
+       R := (I1 => 0,
+             I2 => 0,
+             I3 => 0,
+             I4 => 0,
+             I5 => 0,
+             I6 => 0,
+             I7 => 0,
+             S => <>);
+    end;
+    
+ end Aggr24_Pkg;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/aggr24_pkg.ads gcc-7.4.0/gcc/testsuite/gnat.dg/aggr24_pkg.ads
*** gcc-7.3.0/gcc/testsuite/gnat.dg/aggr24_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/aggr24_pkg.ads	Tue Jun 19 09:46:40 2018
***************
*** 0 ****
--- 1,16 ----
+ package Aggr24_Pkg is
+ 
+    type Rec is record
+       I1 : Integer;
+       I2 : Integer;
+       I3 : Integer;
+       I4 : Integer;
+       I5 : Integer;
+       I6 : Integer;
+       I7 : Integer;
+       S : String (1 .. 5);
+    end record;
+ 
+    procedure Init (R : out Rec);
+ 
+ end Aggr24_Pkg;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/array11.adb gcc-7.4.0/gcc/testsuite/gnat.dg/array11.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/array11.adb	Sun May 30 10:38:00 2010
--- gcc-7.4.0/gcc/testsuite/gnat.dg/array11.adb	Fri Feb 16 23:26:49 2018
***************
*** 1,15 ****
  -- { dg-do compile }
  
  procedure Array11 is
  
    type Rec is null record;
!   type Ptr is access all Rec;
  
!   type Arr1 is array (1..8) of aliased Rec; -- { dg-warning "padded" }
!   type Arr2 is array (Long_Integer) of aliased Rec; -- { dg-warning "padded" }
  
    A1 : Arr1;
!   A2 : Arr2; -- { dg-warning "Storage_Error" }
  
  begin
    null;
--- 1,17 ----
  -- { dg-do compile }
  
+ with System;
+ 
  procedure Array11 is
  
    type Rec is null record;
!   type Index_T is mod System.Memory_Size;
  
!   type Arr1 is array (1 .. 8) of aliased Rec; -- { dg-warning "padded" }
!   type Arr2 is array (Index_T) of aliased Rec; -- { dg-warning "padded" }
  
    A1 : Arr1;
!   A2 : Arr2;
  
  begin
    null;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/discr53.adb gcc-7.4.0/gcc/testsuite/gnat.dg/discr53.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/discr53.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/discr53.adb	Sat Jun  2 09:52:57 2018
***************
*** 0 ****
--- 1,19 ----
+ --  { dg-do compile }
+ 
+ package body Discr53 is
+ 
+    function F return Rec is
+       Data : Rec;
+    begin
+       return Data;
+    end;
+ 
+    type Ptr is access Rec;
+ 
+    procedure Proc is
+       Local : Ptr;
+    begin
+       Local := new Rec'(F);
+    end;
+ 
+ end Discr53;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/discr53.ads gcc-7.4.0/gcc/testsuite/gnat.dg/discr53.ads
*** gcc-7.3.0/gcc/testsuite/gnat.dg/discr53.ads	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/discr53.ads	Sat Jun  2 09:52:57 2018
***************
*** 0 ****
--- 1,16 ----
+ with Discr53_Pkg;
+ 
+ package Discr53 is
+ 
+    type Rec (D : Boolean := False) is record
+       case D is
+          when True  => S : String (1 .. Discr53_Pkg.Max);
+          when False => null;
+       end case;
+    end record;
+ 
+    function F return Rec;
+ 
+    procedure Proc;
+ 
+ end Discr53;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/discr53_pkg.ads gcc-7.4.0/gcc/testsuite/gnat.dg/discr53_pkg.ads
*** gcc-7.3.0/gcc/testsuite/gnat.dg/discr53_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/discr53_pkg.ads	Sat Jun  2 09:52:57 2018
***************
*** 0 ****
--- 1,5 ----
+ package Discr53_Pkg is
+ 
+   function Max return Natural;
+ 
+ end Discr53_Pkg;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/discr55.adb gcc-7.4.0/gcc/testsuite/gnat.dg/discr55.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/discr55.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/discr55.adb	Tue Jul 17 10:12:02 2018
***************
*** 0 ****
--- 1,16 ----
+ -- { dg-do run }
+ 
+ procedure Discr55 is
+ 
+   type Rec (C : Character) is record
+     case C is
+       when 'Z' .. Character'Val (128) => I : Integer;
+       when others                     => null;
+     end case;
+   end record;
+ 
+   R : Rec ('Z');
+ 
+ begin
+   R.I := 0;
+ end;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/disp1.adb gcc-7.4.0/gcc/testsuite/gnat.dg/disp1.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/disp1.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/disp1.adb	Fri Feb 16 23:26:49 2018
***************
*** 0 ****
--- 1,10 ----
+ -- { dg-do run }
+ 
+ with Disp1_Pkg; use Disp1_Pkg;
+ 
+ procedure Disp1 is
+    O   : DT_I1;
+    Ptr : access I1'Class;
+ begin
+    Ptr := new I1'Class'(I1'Class (O));
+ end;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/disp1_pkg.ads gcc-7.4.0/gcc/testsuite/gnat.dg/disp1_pkg.ads
*** gcc-7.3.0/gcc/testsuite/gnat.dg/disp1_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/disp1_pkg.ads	Fri Feb 16 23:26:49 2018
***************
*** 0 ****
--- 1,6 ----
+ package Disp1_Pkg is
+ 
+    type I1 is interface;
+    type DT_I1 is new I1 with null record;
+ 
+ end Disp1_Pkg;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/disp2.adb gcc-7.4.0/gcc/testsuite/gnat.dg/disp2.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/disp2.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/disp2.adb	Fri Feb 16 23:26:49 2018
***************
*** 0 ****
--- 1,11 ----
+ --  { dg-do run }
+ 
+ with Disp2_Pkg; use Disp2_Pkg;
+ 
+ procedure Disp2 is
+    Obj : Object_Ptr := new Object;
+ begin
+    if Obj.Get_Ptr /= Obj.Impl_Of then
+       raise Program_Error;
+    end if;
+ end;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/disp2_pkg.adb gcc-7.4.0/gcc/testsuite/gnat.dg/disp2_pkg.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/disp2_pkg.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/disp2_pkg.adb	Fri Feb 16 23:26:49 2018
***************
*** 0 ****
--- 1,8 ----
+ package body Disp2_Pkg is
+ 
+   function Impl_Of (Self : access Object) return Object_Ptr is
+   begin
+     return Object_Ptr (Self);
+   end Impl_Of;
+ 
+ end Disp2_Pkg;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/disp2_pkg.ads gcc-7.4.0/gcc/testsuite/gnat.dg/disp2_pkg.ads
*** gcc-7.3.0/gcc/testsuite/gnat.dg/disp2_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/disp2_pkg.ads	Fri Feb 16 23:26:49 2018
***************
*** 0 ****
--- 1,11 ----
+ package Disp2_Pkg is
+ 
+   type Object     is tagged null record;
+   type Object_Ptr is access all Object'CLASS;
+ 
+   function Impl_Of (Self : access Object) return Object_Ptr;
+   function Get_Ptr (Self : access Object) return Object_Ptr
+     renames Impl_Of;
+ 
+ end Disp2_Pkg;
+ 
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/dispatch1.adb gcc-7.4.0/gcc/testsuite/gnat.dg/dispatch1.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/dispatch1.adb	Tue Oct 31 18:20:42 2006
--- gcc-7.4.0/gcc/testsuite/gnat.dg/dispatch1.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,9 ****
- -- { dg-do run }
- 
- with dispatch1_p; use dispatch1_p;
- procedure dispatch1 is
-    O   : DT_I1;
-    Ptr : access I1'Class;
- begin
-    Ptr := new I1'Class'(I1'Class (O));
- end;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/dispatch1_p.ads gcc-7.4.0/gcc/testsuite/gnat.dg/dispatch1_p.ads
*** gcc-7.3.0/gcc/testsuite/gnat.dg/dispatch1_p.ads	Tue Oct 31 18:20:42 2006
--- gcc-7.4.0/gcc/testsuite/gnat.dg/dispatch1_p.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,4 ****
- package dispatch1_p is
-    type I1 is interface;
-    type DT_I1 is new I1 with null record;
- end;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/dispatch2.adb gcc-7.4.0/gcc/testsuite/gnat.dg/dispatch2.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/dispatch2.adb	Thu Aug 16 13:29:34 2007
--- gcc-7.4.0/gcc/testsuite/gnat.dg/dispatch2.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,10 ****
- --  { dg-do run }
- 
- with dispatch2_p; use dispatch2_p;
- procedure dispatch2 is
-    Obj : Object_Ptr := new Object;
- begin
-    if Obj.Get_Ptr /= Obj.Impl_Of then
-       raise Program_Error;
-    end if;
- end;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/dispatch2_p.adb gcc-7.4.0/gcc/testsuite/gnat.dg/dispatch2_p.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/dispatch2_p.adb	Thu Aug 16 13:29:34 2007
--- gcc-7.4.0/gcc/testsuite/gnat.dg/dispatch2_p.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,7 ****
- --
- package body dispatch2_p is
-   function Impl_Of (Self : access Object) return Object_Ptr is
-   begin
-     return Object_Ptr (Self);
-   end Impl_Of;
- end;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/dispatch2_p.ads gcc-7.4.0/gcc/testsuite/gnat.dg/dispatch2_p.ads
*** gcc-7.3.0/gcc/testsuite/gnat.dg/dispatch2_p.ads	Thu Aug 16 13:29:34 2007
--- gcc-7.4.0/gcc/testsuite/gnat.dg/dispatch2_p.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,8 ****
- package dispatch2_p is
-   type Object     is tagged null record;
-   type Object_Ptr is access all Object'CLASS;
- --
-   function Impl_Of (Self : access Object) return Object_Ptr;
-   function Get_Ptr (Self : access Object) return Object_Ptr
-     renames Impl_Of;
- end;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/generic_disp.adb gcc-7.4.0/gcc/testsuite/gnat.dg/generic_disp.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/generic_disp.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/generic_disp.adb	Fri Feb 16 23:26:49 2018
***************
*** 0 ****
--- 1,10 ----
+ --  { dg-do run }
+ 
+ with Generic_Disp_Pkg; use Generic_Disp_Pkg;
+ 
+ procedure Generic_Disp is
+    I : aliased Integer := 0;
+    D : Iface'Class := Dispatching_Constructor (DT'Tag, I'access);
+ begin   
+    null;   
+ end Generic_Disp;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/generic_disp_pkg.adb gcc-7.4.0/gcc/testsuite/gnat.dg/generic_disp_pkg.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/generic_disp_pkg.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/generic_disp_pkg.adb	Fri Feb 16 23:26:49 2018
***************
*** 0 ****
--- 1,9 ----
+ package body Generic_Disp_Pkg is
+ 
+    function Constructor (I : not null access Integer) return DT is
+       R : DT; 
+    begin
+       return R;
+    end Constructor;
+ 
+ end Generic_Disp_Pkg;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/generic_disp_pkg.ads gcc-7.4.0/gcc/testsuite/gnat.dg/generic_disp_pkg.ads
*** gcc-7.3.0/gcc/testsuite/gnat.dg/generic_disp_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/generic_disp_pkg.ads	Fri Feb 16 23:26:49 2018
***************
*** 0 ****
--- 1,14 ----
+ with Ada.Tags.Generic_Dispatching_Constructor;
+ 
+ package Generic_Disp_Pkg is
+    type Iface is interface;
+    function Constructor (I : not null access Integer) return Iface is abstract;
+    function Dispatching_Constructor
+       is new Ada.Tags.Generic_Dispatching_Constructor
+                (T           => Iface,
+                 Parameters  => Integer,
+                 Constructor => Constructor);
+    type DT is new Iface with null record; 
+    overriding
+    function Constructor (I : not null access Integer) return DT;
+ end Generic_Disp_Pkg;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/generic_dispatch.adb gcc-7.4.0/gcc/testsuite/gnat.dg/generic_dispatch.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/generic_dispatch.adb	Tue Oct 31 18:20:42 2006
--- gcc-7.4.0/gcc/testsuite/gnat.dg/generic_dispatch.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,9 ****
- --  { dg-do run }
- 
- with generic_dispatch_p; use generic_dispatch_p;
- procedure generic_dispatch is
-    I : aliased Integer := 0;
-    D : Iface'Class := Dispatching_Constructor (DT'Tag, I'access);
- begin   
-    null;   
- end generic_dispatch;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/generic_dispatch_p.adb gcc-7.4.0/gcc/testsuite/gnat.dg/generic_dispatch_p.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/generic_dispatch_p.adb	Tue Oct 31 18:20:42 2006
--- gcc-7.4.0/gcc/testsuite/gnat.dg/generic_dispatch_p.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,7 ****
- package body generic_dispatch_p is
-    function Constructor (I : not null access Integer) return DT is
-       R : DT; 
-   begin
-       return R;
-    end Constructor;
- end;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/generic_dispatch_p.ads gcc-7.4.0/gcc/testsuite/gnat.dg/generic_dispatch_p.ads
*** gcc-7.3.0/gcc/testsuite/gnat.dg/generic_dispatch_p.ads	Tue Oct 31 18:20:42 2006
--- gcc-7.4.0/gcc/testsuite/gnat.dg/generic_dispatch_p.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,13 ****
- with Ada.Tags.Generic_Dispatching_Constructor;
- package generic_dispatch_p is
-    type Iface is interface;
-    function Constructor (I : not null access Integer) return Iface is abstract;
-    function Dispatching_Constructor
-       is new Ada.Tags.Generic_Dispatching_Constructor
-                (T           => Iface,
-                 Parameters  => Integer,
-                 Constructor => Constructor);
-    type DT is new Iface with null record; 
-    overriding
-    function Constructor (I : not null access Integer) return DT;
- end;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/null_pointer_deref1.adb gcc-7.4.0/gcc/testsuite/gnat.dg/null_pointer_deref1.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/null_pointer_deref1.adb	Mon Feb 14 12:32:11 2011
--- gcc-7.4.0/gcc/testsuite/gnat.dg/null_pointer_deref1.adb	Thu Nov  8 15:58:16 2018
***************
*** 1,11 ****
  -- { dg-do run }
- -- { dg-options "-gnatp" }
  
  -- This test requires architecture- and OS-specific support code for unwinding
  -- through signal frames (typically located in *-unwind.h) to pass.  Feel free
  -- to disable it if this code hasn't been implemented yet.
  
  procedure Null_Pointer_Deref1 is
     type Int_Ptr is access all Integer;
  
     function Ident return Int_Ptr is
--- 1,13 ----
  -- { dg-do run }
  
  -- This test requires architecture- and OS-specific support code for unwinding
  -- through signal frames (typically located in *-unwind.h) to pass.  Feel free
  -- to disable it if this code hasn't been implemented yet.
  
  procedure Null_Pointer_Deref1 is
+ 
+    pragma Suppress (All_Checks);
+ 
     type Int_Ptr is access all Integer;
  
     function Ident return Int_Ptr is
*************** procedure Null_Pointer_Deref1 is
*** 17,21 ****
  begin
     Data.all := 1;
  exception
!    when Constraint_Error | Storage_Error => null;
  end;
--- 19,23 ----
  begin
     Data.all := 1;
  exception
!    when others => null;
  end;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/null_pointer_deref2.adb gcc-7.4.0/gcc/testsuite/gnat.dg/null_pointer_deref2.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/null_pointer_deref2.adb	Tue Oct 27 19:41:13 2009
--- gcc-7.4.0/gcc/testsuite/gnat.dg/null_pointer_deref2.adb	Thu Nov  8 15:58:16 2018
***************
*** 1,5 ****
  -- { dg-do run }
- -- { dg-options "-gnatp" }
  
  -- This test requires architecture- and OS-specific support code for unwinding
  -- through signal frames (typically located in *-unwind.h) to pass.  Feel free
--- 1,4 ----
***************
*** 7,12 ****
--- 6,13 ----
  
  procedure Null_Pointer_Deref2 is
  
+    pragma Suppress (All_Checks);
+ 
     task T;
  
     task body T is
*************** procedure Null_Pointer_Deref2 is
*** 20,26 ****
     begin
        Data.all := 1;
     exception
!       when Constraint_Error | Storage_Error => null;
     end T;
  
  begin
--- 21,27 ----
     begin
        Data.all := 1;
     exception
!       when others => null;
     end T;
  
  begin
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/null_pointer_deref3.adb gcc-7.4.0/gcc/testsuite/gnat.dg/null_pointer_deref3.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/null_pointer_deref3.adb	Sat May 12 21:35:37 2012
--- gcc-7.4.0/gcc/testsuite/gnat.dg/null_pointer_deref3.adb	Thu Nov  8 15:58:16 2018
***************
*** 1,5 ****
  -- { dg-do run }
- -- { dg-options "-O -gnatp" }
  
  -- This test requires architecture- and OS-specific support code for unwinding
  -- through signal frames (typically located in *-unwind.h) to pass.  Feel free
--- 1,4 ----
***************
*** 7,12 ****
--- 6,13 ----
  
  procedure Null_Pointer_Deref3 is
  
+    pragma Suppress (All_Checks);
+ 
     procedure Leaf is
        type Int_Ptr is access all Integer;
        function n return Int_Ptr is
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/object_overflow1.adb gcc-7.4.0/gcc/testsuite/gnat.dg/object_overflow1.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/object_overflow1.adb	Wed Nov 28 10:51:19 2012
--- gcc-7.4.0/gcc/testsuite/gnat.dg/object_overflow1.adb	Fri Feb 16 23:26:49 2018
***************
*** 1,10 ****
  -- { dg-do compile }
  
  procedure Object_Overflow1 is
  
    procedure Proc (x : Boolean) is begin null; end;
  
!   type Arr is array(Long_Integer) of Boolean;
    Obj : Arr; -- { dg-warning "Storage_Error" }
  
  begin
--- 1,12 ----
  -- { dg-do compile }
  
+ with Interfaces.C; use Interfaces.C;
+ 
  procedure Object_Overflow1 is
  
    procedure Proc (x : Boolean) is begin null; end;
  
!   type Arr is array(ptrdiff_t) of Boolean;
    Obj : Arr; -- { dg-warning "Storage_Error" }
  
  begin
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/object_overflow2.adb gcc-7.4.0/gcc/testsuite/gnat.dg/object_overflow2.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/object_overflow2.adb	Wed Nov 28 10:51:19 2012
--- gcc-7.4.0/gcc/testsuite/gnat.dg/object_overflow2.adb	Fri Feb 16 23:26:49 2018
***************
*** 1,10 ****
  -- { dg-do compile }
  
  procedure Object_Overflow2 is
  
    procedure Proc (x : Boolean) is begin null; end;
  
!   type Arr is array(0 .. Long_Integer'Last) of Boolean;
    Obj : Arr; -- { dg-warning "Storage_Error" }
  
  begin
--- 1,12 ----
  -- { dg-do compile }
  
+ with Interfaces.C; use Interfaces.C;
+ 
  procedure Object_Overflow2 is
  
    procedure Proc (x : Boolean) is begin null; end;
  
!   type Arr is array(0 .. ptrdiff_t'Last) of Boolean;
    Obj : Arr; -- { dg-warning "Storage_Error" }
  
  begin
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/object_overflow3.adb gcc-7.4.0/gcc/testsuite/gnat.dg/object_overflow3.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/object_overflow3.adb	Wed Nov 28 10:51:19 2012
--- gcc-7.4.0/gcc/testsuite/gnat.dg/object_overflow3.adb	Fri Feb 16 23:26:49 2018
***************
*** 1,10 ****
  -- { dg-do compile }
  
  procedure Object_Overflow3 is
  
    procedure Proc (x : Boolean) is begin null; end;
  
!   type Arr is array(0 .. Long_Integer'Last) of Boolean;
  
    type Rec is record
      A : Arr;
--- 1,12 ----
  -- { dg-do compile }
  
+ with Interfaces.C; use Interfaces.C;
+ 
  procedure Object_Overflow3 is
  
    procedure Proc (x : Boolean) is begin null; end;
  
!   type Arr is array(0 .. ptrdiff_t'Last) of Boolean;
  
    type Rec is record
      A : Arr;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/object_overflow4.adb gcc-7.4.0/gcc/testsuite/gnat.dg/object_overflow4.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/object_overflow4.adb	Wed Nov 28 10:51:19 2012
--- gcc-7.4.0/gcc/testsuite/gnat.dg/object_overflow4.adb	Fri Feb 16 23:26:49 2018
***************
*** 1,14 ****
  -- { dg-do compile }
  
  procedure Object_Overflow4 is
  
    procedure Proc (x : Integer) is begin null; end;
  
!   type Index is new Long_Integer range 0 .. Long_Integer'Last;
  
!   type Arr is array(Index range <>) of Integer;
  
!   type Rec (Size: Index := 6) is record -- { dg-warning "Storage_Error" }
      A: Arr (0..Size);
    end record;
  
--- 1,16 ----
  -- { dg-do compile }
  
+ with Interfaces.C; use Interfaces.C;
+ 
  procedure Object_Overflow4 is
  
    procedure Proc (x : Integer) is begin null; end;
  
!   type Index_T is new ptrdiff_t range 0 .. ptrdiff_t'Last;
  
!   type Arr is array(Index_T range <>) of Integer;
  
!   type Rec (Size: Index_T := 6) is record -- { dg-warning "Storage_Error" }
      A: Arr (0..Size);
    end record;
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/object_overflow5.adb gcc-7.4.0/gcc/testsuite/gnat.dg/object_overflow5.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/object_overflow5.adb	Tue Mar  3 17:56:07 2015
--- gcc-7.4.0/gcc/testsuite/gnat.dg/object_overflow5.adb	Fri Feb 16 23:26:49 2018
***************
*** 1,14 ****
  -- { dg-do compile }
  
  procedure Object_Overflow5 is
  
    procedure Proc (c : Character) is begin null; end;
  
!   type Index is new Long_Integer range 0 .. Long_Integer'Last;
  
!   type Arr is array(Index range <>) of Character;
  
!   type Rec (Size: Index := 6) is record -- { dg-warning "Storage_Error" }
      A: Arr (0..Size);
    end record;
  
--- 1,16 ----
  -- { dg-do compile }
  
+ with Interfaces.C; use Interfaces.C;
+ 
  procedure Object_Overflow5 is
  
    procedure Proc (c : Character) is begin null; end;
  
!   type Index_T is new ptrdiff_t range 0 .. ptrdiff_t'Last;
  
!   type Arr is array(Index_T range <>) of Character;
  
!   type Rec (Size: Index_T := 6) is record -- { dg-warning "Storage_Error" }
      A: Arr (0..Size);
    end record;
  
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/opt74.adb gcc-7.4.0/gcc/testsuite/gnat.dg/opt74.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/opt74.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/opt74.adb	Thu Nov  8 15:58:16 2018
***************
*** 0 ****
--- 1,13 ----
+ -- { dg-do run }
+ -- { dg-options "-O2" }
+ 
+ with Opt74_Pkg; use Opt74_Pkg;
+ 
+ procedure Opt74 is
+    Index, Found : Integer;
+ begin
+    Proc (Found, Index);
+    if Found = 1 then
+       raise Program_Error;
+    end if;
+ end;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/opt74_pkg.adb gcc-7.4.0/gcc/testsuite/gnat.dg/opt74_pkg.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/opt74_pkg.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/opt74_pkg.adb	Thu Nov  8 15:58:16 2018
***************
*** 0 ****
--- 1,16 ----
+ package body Opt74_Pkg is
+ 
+    procedure Proc (Found : out Integer; Index : out Integer) is
+    begin
+       Index := 1;
+       Found := 0;
+       while (Index <= A'Last) and (Found = 0) loop
+          if A (Index) = 2 then
+             Found := 1;
+          else
+             Index := Index + 1;
+          end if;
+       end loop;
+    end;
+ 
+ end Opt74_Pkg;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/opt74_pkg.ads gcc-7.4.0/gcc/testsuite/gnat.dg/opt74_pkg.ads
*** gcc-7.3.0/gcc/testsuite/gnat.dg/opt74_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/opt74_pkg.ads	Thu Nov  8 15:58:16 2018
***************
*** 0 ****
--- 1,7 ----
+ package Opt74_Pkg is
+ 
+    A : array (1 .. 10) of Integer := (others => 0);
+ 
+    procedure Proc (Found : out Integer; Index : out Integer);
+ 
+ end Opt74_Pkg;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/prot3.adb gcc-7.4.0/gcc/testsuite/gnat.dg/prot3.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/prot3.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/prot3.adb	Sat Mar 10 10:15:01 2018
***************
*** 0 ****
--- 1,8 ----
+ --  { dg-do run }
+ 
+ with Prot3_Pkg; use Prot3_Pkg;
+ 
+ procedure Prot3 is
+ begin
+    P.Foo (4);
+ end;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/prot3_pkg.adb gcc-7.4.0/gcc/testsuite/gnat.dg/prot3_pkg.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/prot3_pkg.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/prot3_pkg.adb	Sat Mar 10 10:15:01 2018
***************
*** 0 ****
--- 1,17 ----
+ package body Prot3_Pkg is
+    
+    protected body Prot is
+       function Fn (J : Short_Integer) return Rec
+       is
+       begin
+ 	 return (V1 => J * J,
+ 		 V2 => J);
+       end;
+       
+       procedure Foo (J : Short_Integer) is
+       begin
+ 	 Val := Fn (J);
+       end;
+    end Prot;
+    
+ end Prot3_Pkg;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/prot3_pkg.ads gcc-7.4.0/gcc/testsuite/gnat.dg/prot3_pkg.ads
*** gcc-7.3.0/gcc/testsuite/gnat.dg/prot3_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/prot3_pkg.ads	Sat Mar 10 10:15:01 2018
***************
*** 0 ****
--- 1,16 ----
+ package Prot3_Pkg is
+    
+    type Rec is record
+       V1 : Short_Integer;
+       V2 : Short_Integer;
+    end record with Volatile_Full_Access;
+    
+    protected type Prot is
+       procedure Foo (J : Short_Integer);
+    private
+       Val : Rec;
+    end Prot;
+    
+    P : Prot;
+    
+ end Prot3_Pkg;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/specs/opt3.ads gcc-7.4.0/gcc/testsuite/gnat.dg/specs/opt3.ads
*** gcc-7.3.0/gcc/testsuite/gnat.dg/specs/opt3.ads	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/specs/opt3.ads	Sat Jun  2 10:52:39 2018
***************
*** 0 ****
--- 1,13 ----
+ -- { dg-do compile }
+ -- { dg-options "-O3" }
+ 
+ with Ada.Containers.Vectors;
+ with Opt3_Pkg;
+ 
+ package Opt3 is
+ 
+   type Arr is array (1 .. Opt3_Pkg.Max) of Integer;
+ 
+   package Arr_Container is new Ada.Containers.Vectors (Natural, Arr);
+ 
+ end Opt3;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/specs/opt3_pkg.ads gcc-7.4.0/gcc/testsuite/gnat.dg/specs/opt3_pkg.ads
*** gcc-7.3.0/gcc/testsuite/gnat.dg/specs/opt3_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/specs/opt3_pkg.ads	Sat Jun  2 10:58:13 2018
***************
*** 0 ****
--- 1,7 ----
+ -- { dg-excess-errors "no code generated" }
+ 
+ package Opt3_Pkg is
+ 
+   function Max return Natural;
+ 
+ end Opt3_Pkg;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/sso14.adb gcc-7.4.0/gcc/testsuite/gnat.dg/sso14.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/sso14.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/sso14.adb	Mon Oct 22 11:09:11 2018
***************
*** 0 ****
--- 1,52 ----
+ --  { dg-do run }
+ --  { dg-options "-gnatws" }
+ 
+ with System;
+ with Ada.Unchecked_Conversion;
+ 
+ procedure SSO14 is
+ 
+    type Arr is array (1 .. Integer'Size) of Boolean;
+    pragma Pack (Arr);
+    for Arr'Scalar_Storage_Order use System.High_Order_First;
+ 
+    function From_Float is new Ada.Unchecked_Conversion (Float, Arr);
+    function From_Int is new Ada.Unchecked_Conversion (Integer, Arr);
+ 
+    type R_Float is record
+      F : Float;
+    end record;
+    for R_Float'Bit_Order use System.High_Order_First;
+    for R_Float'Scalar_Storage_Order use System.High_Order_First;
+ 
+    type R_Int is record
+      I : Integer;
+    end record;
+    for R_Int'Bit_Order use System.High_Order_First;
+    for R_Int'Scalar_Storage_Order use System.High_Order_First;
+ 
+    F1 : Float := 1.234567;
+    FA : Arr;
+    F2 : R_Float;
+    for F2'Address use FA'Address;
+    pragma Import (Ada, F2);
+ 
+    I1 : Integer := 1234567;
+    IA : Arr;
+    I2 : R_Int;
+    for I2'Address use IA'Address;
+    pragma Import (Ada, I2);
+ 
+ begin
+    -- Check that converting a FP value yields a big-endian array
+    FA := From_Float (F1);
+    if F2.F /= F1 then
+       raise Program_Error;
+    end if;
+ 
+    -- Check that converting an integer value yields a big-endian array.
+    IA := From_Int (I1);
+    if I2.I /= I1 then
+       raise Program_Error;
+    end if;
+ end;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/sso15.adb gcc-7.4.0/gcc/testsuite/gnat.dg/sso15.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/sso15.adb	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/gnat.dg/sso15.adb	Mon Oct 22 11:09:11 2018
***************
*** 0 ****
--- 1,52 ----
+ --  { dg-do run }
+ --  { dg-options "-gnatws" }
+ 
+ with System;
+ with Ada.Unchecked_Conversion;
+ 
+ procedure SSO15 is
+ 
+    type Arr is array (1 .. Integer'Size) of Boolean;
+    pragma Pack (Arr);
+    for Arr'Scalar_Storage_Order use System.High_Order_First;
+ 
+    function To_Float is new Ada.Unchecked_Conversion (Arr, Float);
+    function To_Int is new Ada.Unchecked_Conversion (Arr, Integer);
+ 
+    type R_Float is record
+      F : Float;
+    end record;
+    for R_Float'Bit_Order use System.High_Order_First;
+    for R_Float'Scalar_Storage_Order use System.High_Order_First;
+ 
+    type R_Int is record
+      I : Integer;
+    end record;
+    for R_Int'Bit_Order use System.High_Order_First;
+    for R_Int'Scalar_Storage_Order use System.High_Order_First;
+ 
+    A : Arr := (1 .. 2 => True, others => False);
+ 
+    F1 : Float;
+    F2 : R_Float;
+    for F2'Address use A'Address;
+    pragma Import (Ada, F2);
+ 
+    I1 : Integer;
+    I2 : R_Int;
+    for I2'Address use A'Address;
+    pragma Import (Ada, I2);
+ 
+ begin
+    -- Check that converting to FP yields a big-endian value.
+    F1 := To_Float (A);
+    if F2.F /= F1 then
+       raise Program_Error;
+    end if;
+ 
+    -- Check that converting to integer yields a big-endian value.
+    I1 := To_Int (A);
+    if I2.I /= I1 then
+       raise Program_Error;
+    end if;
+ end;
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/warn12.adb gcc-7.4.0/gcc/testsuite/gnat.dg/warn12.adb
*** gcc-7.3.0/gcc/testsuite/gnat.dg/warn12.adb	Fri Jun 26 10:03:22 2015
--- gcc-7.4.0/gcc/testsuite/gnat.dg/warn12.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,48 ****
- -- { dg-do compile }
- -- { dg-options "-O2" }
- 
- with Text_IO; use Text_IO;
- with System.Storage_Elements; use System.Storage_Elements;
- with Warn12_Pkg; use Warn12_Pkg;
- 
- procedure Warn12 (N : Natural) is
- 
-    Buffer_Size : constant Storage_Offset
-       := Token_Groups'Size/System.Storage_Unit + 4096;
- 
-    Buffer : Storage_Array (1 .. Buffer_Size);
-    for Buffer'Alignment use 8;
- 
-    Tg1 : Token_Groups;
-    for Tg1'Address use Buffer'Address;
- 
-    Tg2 : Token_Groups;
-    pragma Warnings (Off, Tg2);
- 
-    sid : Sid_And_Attributes;
- 
-    pragma Suppress (Index_Check, Sid_And_Attributes_Array);
- 
- begin
- 
-    for I in 0 .. 7 loop
-       sid :=  Tg1.Groups(I);  -- { dg-bogus "out-of-bounds access" }
-       Put_Line("Iteration");
-    end loop;
- 
-    for I in 0 .. N loop
-       sid :=  Tg1.Groups(I);  -- { dg-bogus "out-of-bounds access" }
-       Put_Line("Iteration");
-    end loop;
- 
-    for I in 0 .. 7 loop
-       sid :=  Tg2.Groups(I);  -- { dg-warning "out-of-bounds access" }
-       Put_Line("Iteration");
-    end loop;
- 
-    for I in 0 .. N loop
-       sid :=  Tg2.Groups(I);  -- { dg-warning "out-of-bounds access" }
-       Put_Line("Iteration");
-    end loop;
- 
- end;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/gnat.dg/warn12_pkg.ads gcc-7.4.0/gcc/testsuite/gnat.dg/warn12_pkg.ads
*** gcc-7.3.0/gcc/testsuite/gnat.dg/warn12_pkg.ads	Fri Jun 26 10:03:22 2015
--- gcc-7.4.0/gcc/testsuite/gnat.dg/warn12_pkg.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- with Interfaces.C; use Interfaces.C;
- with System;
- 
- package Warn12_Pkg is
- 
-    Anysize_Array: constant := 0;
- 
-    type Sid_And_Attributes is record
-       Sid        : System.Address;
-       Attributes : Interfaces.C.Unsigned_Long;
-    end record;
- 
-    type Sid_And_Attributes_Array
-       is array (Integer range 0..Anysize_Array) of aliased Sid_And_Attributes;
- 
-    type Token_Groups is record
-       GroupCount : Interfaces.C.Unsigned_Long;
-       Groups     : Sid_And_Attributes_Array;
-    end record;
- 
- end Warn12_Pkg;
--- 0 ----
diff -Nrcpad gcc-7.3.0/gcc/testsuite/go.dg/pr85436.go gcc-7.4.0/gcc/testsuite/go.dg/pr85436.go
*** gcc-7.3.0/gcc/testsuite/go.dg/pr85436.go	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/gcc/testsuite/go.dg/pr85436.go	Fri Apr 20 12:19:10 2018
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mcpu=power9" { target { powerpc*-*-* } } } */
+ 
+ package main
+ import (
+ 	"go/ast"
+ 	"go/parser"
+ 	"go/token"
+ )
+ type testFuncs struct { }
+ func (t *testFuncs) load(filename, pkg string, doImport, seen *bool) {
+ 	var testFileSet = token.NewFileSet()
+ 	f, err := parser.ParseFile(testFileSet, filename, nil, parser.ParseComments)
+ 	if err != nil { }
+ 	for _, d := range f.Decls {
+ 		n, ok := d.(*ast.FuncDecl)
+ 		if !ok { }
+ 		ptr := n.Type.Params.List[0].Type.(*ast.StarExpr)
+ 		if sel := ptr.X.(*ast.SelectorExpr); sel.Sel.Name == "M" { }
+ 	}
+ }
diff -Nrcpad gcc-7.3.0/gcc/testsuite/jit.dg/test-long-names.c gcc-7.4.0/gcc/testsuite/jit.dg/test-long-names.c
*** gcc-7.3.0/gcc/testsuite/jit.dg/test-long-names.c	Tue Nov 11 21:55:52 2014
--- gcc-7.4.0/gcc/testsuite/jit.dg/test-long-names.c	Mon Nov 26 11:57:16 2018
*************** populate_name (const char *prefix, char
*** 24,30 ****
    int i;
  
    /* Begin with the given prefix: */
!   sprintf (buffer, prefix);
  
    /* Populate the rest of the buffer with 0123456789 repeatedly: */
    for (i = strlen (prefix); i < NAME_LENGTH - 1; i++)
--- 24,30 ----
    int i;
  
    /* Begin with the given prefix: */
!   sprintf (buffer, "%s", prefix);
  
    /* Populate the rest of the buffer with 0123456789 repeatedly: */
    for (i = strlen (prefix); i < NAME_LENGTH - 1; i++)
diff -Nrcpad gcc-7.3.0/gcc/testsuite/lib/prune.exp gcc-7.4.0/gcc/testsuite/lib/prune.exp
*** gcc-7.3.0/gcc/testsuite/lib/prune.exp	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/testsuite/lib/prune.exp	Wed Feb 28 08:05:46 2018
*************** proc prune_gcc_output { text } {
*** 28,34 ****
  
      #send_user "Before:$text\n"
  
!     regsub -all "(^|\n)(\[^\n\]*: )?In ((static member |lambda )?function|member|method|(copy )?constructor|destructor|instantiation|substitution|program|subroutine|block-data)\[^\n\]*" $text "" text
      regsub -all "(^|\n)\[^\n\]*(: )?At (top level|global scope):\[^\n\]*" $text "" text
      regsub -all "(^|\n)\[^\n\]*:   (recursively )?required \[^\n\]*" $text "" text
      regsub -all "(^|\n)\[^\n\]*:   . skipping \[0-9\]* instantiation contexts \[^\n\]*" $text "" text
--- 28,34 ----
  
      #send_user "Before:$text\n"
  
!     regsub -all "(^|\n)(\[^\n\]*: \[iI\]|I)n ((static member |lambda )?function|member|method|(copy )?constructor|destructor|instantiation|substitution|program|subroutine|block-data)\[^\n\]*" $text "" text
      regsub -all "(^|\n)\[^\n\]*(: )?At (top level|global scope):\[^\n\]*" $text "" text
      regsub -all "(^|\n)\[^\n\]*:   (recursively )?required \[^\n\]*" $text "" text
      regsub -all "(^|\n)\[^\n\]*:   . skipping \[0-9\]* instantiation contexts \[^\n\]*" $text "" text
diff -Nrcpad gcc-7.3.0/gcc/testsuite/lib/target-supports.exp gcc-7.4.0/gcc/testsuite/lib/target-supports.exp
*** gcc-7.3.0/gcc/testsuite/lib/target-supports.exp	Tue Nov 21 09:31:12 2017
--- gcc-7.4.0/gcc/testsuite/lib/target-supports.exp	Tue May  1 09:00:39 2018
*************** proc check_effective_target_vect_load_la
*** 5940,5946 ****
  	verbose "check_effective_target_vect_load_lanes: using cached result" 2
      } else {
  	set et_vect_load_lanes 0
! 	if { ([istarget arm*-*-*] && [check_effective_target_arm_neon_ok])
  	     || [istarget aarch64*-*-*] } {
  	    set et_vect_load_lanes 1
  	}
--- 5940,5947 ----
  	verbose "check_effective_target_vect_load_lanes: using cached result" 2
      } else {
  	set et_vect_load_lanes 0
! 	# We don't support load_lanes correctly on big-endian arm.
! 	if { ([check_effective_target_arm_little_endian] && [check_effective_target_arm_neon_ok])
  	     || [istarget aarch64*-*-*] } {
  	    set et_vect_load_lanes 1
  	}
*************** proc check_prefer_avx128 { } {
*** 7348,7358 ****
--- 7349,7370 ----
  proc check_effective_target_avx512f { } {
      return [check_no_compiler_messages avx512f object {
  	typedef double __m512d __attribute__ ((__vector_size__ (64)));
+ 	typedef double __m128d __attribute__ ((__vector_size__ (16)));
  
  	__m512d _mm512_add (__m512d a)
  	{
  	  return __builtin_ia32_addpd512_mask (a, a, a, 1, 4);
  	}
+ 
+ 	__m128d _mm128_add (__m128d a)
+ 	{
+ 	  return __builtin_ia32_addsd_round (a, a, 8);
+ 	}
+ 
+ 	__m128d _mm128_getmant (__m128d a)
+ 	{
+ 	  return __builtin_ia32_getmantsd_round (a, a, 0, 8);
+ 	}
      } "-O2 -mavx512f" ]
  }
  
diff -Nrcpad gcc-7.3.0/gcc/tree-cfg.c gcc-7.4.0/gcc/tree-cfg.c
*** gcc-7.3.0/gcc/tree-cfg.c	Fri Dec 15 22:09:50 2017
--- gcc-7.4.0/gcc/tree-cfg.c	Mon Nov 26 11:59:05 2018
*************** move_stmt_op (tree *tp, int *walk_subtre
*** 6640,6646 ****
  	;
        else if (block == p->orig_block
  	       || p->orig_block == NULL_TREE)
! 	TREE_SET_BLOCK (t, p->new_block);
        else if (flag_checking)
  	{
  	  while (block && TREE_CODE (block) == BLOCK && block != p->orig_block)
--- 6640,6655 ----
  	;
        else if (block == p->orig_block
  	       || p->orig_block == NULL_TREE)
! 	{
! 	  /* tree_node_can_be_shared says we can share invariant
! 	     addresses but unshare_expr copies them anyways.  Make sure
! 	     to unshare before adjusting the block in place - we do not
! 	     always see a copy here.  */
! 	  if (TREE_CODE (t) == ADDR_EXPR
! 	      && is_gimple_min_invariant (t))
! 	    *tp = t = unshare_expr (t);
! 	  TREE_SET_BLOCK (t, p->new_block);
! 	}
        else if (flag_checking)
  	{
  	  while (block && TREE_CODE (block) == BLOCK && block != p->orig_block)
diff -Nrcpad gcc-7.3.0/gcc/tree-dfa.c gcc-7.4.0/gcc/tree-dfa.c
*** gcc-7.3.0/gcc/tree-dfa.c	Thu Jan  5 19:32:09 2017
--- gcc-7.4.0/gcc/tree-dfa.c	Thu Apr 26 10:00:24 2018
*************** get_ref_base_and_extent (tree exp, HOST_
*** 438,444 ****
  		   referenced the last field of a struct or a union member
  		   then we have to adjust maxsize by the padding at the end
  		   of our field.  */
! 		if (seen_variable_array_ref && maxsize != -1)
  		  {
  		    tree stype = TREE_TYPE (TREE_OPERAND (exp, 0));
  		    tree next = DECL_CHAIN (field);
--- 438,444 ----
  		   referenced the last field of a struct or a union member
  		   then we have to adjust maxsize by the padding at the end
  		   of our field.  */
! 		if (seen_variable_array_ref)
  		  {
  		    tree stype = TREE_TYPE (TREE_OPERAND (exp, 0));
  		    tree next = DECL_CHAIN (field);
*************** get_ref_base_and_extent (tree exp, HOST_
*** 454,460 ****
  			    || ssize == NULL
  			    || TREE_CODE (ssize) != INTEGER_CST)
  			  maxsize = -1;
! 			else
  			  {
  			    offset_int tem = (wi::to_offset (ssize)
  					      - wi::to_offset (fsize));
--- 454,460 ----
  			    || ssize == NULL
  			    || TREE_CODE (ssize) != INTEGER_CST)
  			  maxsize = -1;
! 			else if (maxsize != -1)
  			  {
  			    offset_int tem = (wi::to_offset (ssize)
  					      - wi::to_offset (fsize));
*************** get_ref_base_and_extent (tree exp, HOST_
*** 463,468 ****
--- 463,473 ----
  			    maxsize += tem;
  			  }
  		      }
+ 		    /* An component ref with an adjacent field up in the
+ 		       structure hierarchy constrains the size of any variable
+ 		       array ref lower in the access hierarchy.  */
+ 		    else
+ 		      seen_variable_array_ref = false;
  		  }
  	      }
  	    else
*************** get_ref_base_and_extent (tree exp, HOST_
*** 617,623 ****
  
    if (DECL_P (exp))
      {
!       if (flag_unconstrained_commons && VAR_P (exp) && DECL_COMMON (exp))
  	{
  	  tree sz_tree = TYPE_SIZE (TREE_TYPE (exp));
  	  /* If size is unknown, or we have read to the end, assume there
--- 622,630 ----
  
    if (DECL_P (exp))
      {
!       if (VAR_P (exp)
! 	  && ((flag_unconstrained_commons && DECL_COMMON (exp))
! 	      || (DECL_EXTERNAL (exp) && seen_variable_array_ref)))
  	{
  	  tree sz_tree = TYPE_SIZE (TREE_TYPE (exp));
  	  /* If size is unknown, or we have read to the end, assume there
diff -Nrcpad gcc-7.3.0/gcc/tree-eh.c gcc-7.4.0/gcc/tree-eh.c
*** gcc-7.3.0/gcc/tree-eh.c	Thu Jul 27 07:32:15 2017
--- gcc-7.4.0/gcc/tree-eh.c	Sat Mar  3 13:25:59 2018
*************** along with GCC; see the file COPYING3.
*** 44,49 ****
--- 44,50 ----
  #include "cfgloop.h"
  #include "gimple-low.h"
  #include "asan.h"
+ #include "gimplify.h"
  
  /* In some instances a tree and a gimple need to be stored in a same table,
     i.e. in hash tables. This is a structure to do this. */
*************** operation_could_trap_helper_p (enum tree
*** 2438,2444 ****
      case ROUND_MOD_EXPR:
      case TRUNC_MOD_EXPR:
      case RDIV_EXPR:
!       if (honor_snans || honor_trapv)
  	return true;
        if (fp_operation)
  	return flag_trapping_math;
--- 2439,2445 ----
      case ROUND_MOD_EXPR:
      case TRUNC_MOD_EXPR:
      case RDIV_EXPR:
!       if (honor_snans)
  	return true;
        if (fp_operation)
  	return flag_trapping_math;
*************** tree_could_trap_p (tree expr)
*** 2722,2727 ****
--- 2723,2813 ----
      }
  }
  
+ /* Return non-NULL if there is an integer operation with trapping overflow
+    we can rewrite into non-trapping.  Called via walk_tree from
+    rewrite_to_non_trapping_overflow.  */
+ 
+ static tree
+ find_trapping_overflow (tree *tp, int *walk_subtrees, void *data)
+ {
+   if (EXPR_P (*tp)
+       && !operation_no_trapping_overflow (TREE_TYPE (*tp), TREE_CODE (*tp)))
+     return *tp;
+   if (IS_TYPE_OR_DECL_P (*tp)
+       || (TREE_CODE (*tp) == SAVE_EXPR && data == NULL))
+     *walk_subtrees = 0;
+   return NULL_TREE;
+ }
+ 
+ /* Rewrite selected operations into unsigned arithmetics, so that they
+    don't trap on overflow.  */
+ 
+ static tree
+ replace_trapping_overflow (tree *tp, int *walk_subtrees, void *data)
+ {
+   if (find_trapping_overflow (tp, walk_subtrees, data))
+     {
+       tree type = TREE_TYPE (*tp);
+       tree utype = unsigned_type_for (type);
+       *walk_subtrees = 0;
+       int len = TREE_OPERAND_LENGTH (*tp);
+       for (int i = 0; i < len; ++i)
+ 	walk_tree (&TREE_OPERAND (*tp, i), replace_trapping_overflow,
+ 		   data, (hash_set<tree> *) data);
+ 
+       if (TREE_CODE (*tp) == ABS_EXPR)
+ 	{
+ 	  tree op = TREE_OPERAND (*tp, 0);
+ 	  op = save_expr (op);
+ 	  /* save_expr skips simple arithmetics, which is undesirable
+ 	     here, if it might trap due to flag_trapv.  We need to
+ 	     force a SAVE_EXPR in the COND_EXPR condition, to evaluate
+ 	     it before the comparison.  */
+ 	  if (EXPR_P (op)
+ 	      && TREE_CODE (op) != SAVE_EXPR
+ 	      && walk_tree (&op, find_trapping_overflow, NULL, NULL))
+ 	    {
+ 	      op = build1_loc (EXPR_LOCATION (op), SAVE_EXPR, type, op);
+ 	      TREE_SIDE_EFFECTS (op) = 1;
+ 	    }
+ 	  /* Change abs (op) to op < 0 ? -op : op and handle the NEGATE_EXPR
+ 	     like other signed integer trapping operations.  */
+ 	  tree cond = fold_build2 (LT_EXPR, boolean_type_node,
+ 				   op, build_int_cst (type, 0));
+ 	  tree neg = fold_build1 (NEGATE_EXPR, utype,
+ 				  fold_convert (utype, op));
+ 	  *tp = fold_build3 (COND_EXPR, type, cond,
+ 			     fold_convert (type, neg), op);
+ 	}
+       else
+ 	{
+ 	  TREE_TYPE (*tp) = utype;
+ 	  len = TREE_OPERAND_LENGTH (*tp);
+ 	  for (int i = 0; i < len; ++i)
+ 	    TREE_OPERAND (*tp, i)
+ 	      = fold_convert (utype, TREE_OPERAND (*tp, i));
+ 	  *tp = fold_convert (type, *tp);
+ 	}
+     }
+   return NULL_TREE;
+ }
+ 
+ /* If any subexpression of EXPR can trap due to -ftrapv, rewrite it
+    using unsigned arithmetics to avoid traps in it.  */
+ 
+ tree
+ rewrite_to_non_trapping_overflow (tree expr)
+ {
+   if (!flag_trapv)
+     return expr;
+   hash_set<tree> pset;
+   if (!walk_tree (&expr, find_trapping_overflow, &pset, &pset))
+     return expr;
+   expr = unshare_expr (expr);
+   hash_set<tree> pset2;
+   walk_tree (&expr, replace_trapping_overflow, &pset2, &pset2);
+   return expr;
+ }
  
  /* Helper for stmt_could_throw_p.  Return true if STMT (assumed to be a
     an assignment or a conditional) may throw.  */
diff -Nrcpad gcc-7.3.0/gcc/tree-eh.h gcc-7.4.0/gcc/tree-eh.h
*** gcc-7.3.0/gcc/tree-eh.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/tree-eh.h	Sat Mar  3 13:25:27 2018
*************** extern bool operation_could_trap_helper_
*** 37,42 ****
--- 37,43 ----
  					   bool, tree, bool *);
  extern bool operation_could_trap_p (enum tree_code, bool, bool, tree);
  extern bool tree_could_trap_p (tree);
+ extern tree rewrite_to_non_trapping_overflow (tree);
  extern bool stmt_could_throw_p (gimple *);
  extern bool tree_could_throw_p (tree);
  extern bool stmt_can_throw_external (gimple *);
diff -Nrcpad gcc-7.3.0/gcc/tree-emutls.c gcc-7.4.0/gcc/tree-emutls.c
*** gcc-7.3.0/gcc/tree-emutls.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/tree-emutls.c	Sat Mar  3 13:15:49 2018
*************** along with GCC; see the file COPYING3.
*** 34,39 ****
--- 34,40 ----
  #include "gimple-walk.h"
  #include "langhooks.h"
  #include "tree-iterator.h"
+ #include "gimplify.h"
  
  /* Whenever a target does not support thread-local storage (TLS) natively,
     we can emulate it with some run-time support in libgcc.  This will in
*************** gen_emutls_addr (tree decl, struct lower
*** 430,435 ****
--- 431,450 ----
    return addr;
  }
  
+ /* Callback for lower_emutls_1, return non-NULL if there is any TLS
+    VAR_DECL in the subexpressions.  */
+ 
+ static tree
+ lower_emutls_2 (tree *ptr, int *walk_subtrees, void *)
+ {
+   tree t = *ptr;
+   if (TREE_CODE (t) == VAR_DECL)
+     return DECL_THREAD_LOCAL_P (t) ? t : NULL_TREE;
+   else if (!EXPR_P (t))
+     *walk_subtrees = 0;
+   return NULL_TREE;
+ }
+ 
  /* Callback for walk_gimple_op.  D = WI->INFO is a struct lower_emutls_data.
     Given an operand *PTR within D->STMT, if the operand references a TLS
     variable, then lower the reference to a call to the runtime.  Insert
*************** lower_emutls_1 (tree *ptr, int *walk_sub
*** 456,461 ****
--- 471,483 ----
  	{
  	  bool save_changed;
  
+ 	  /* Gimple invariants are shareable trees, so before changing
+ 	     anything in them if we will need to change anything, unshare
+ 	     them.  */
+ 	  if (is_gimple_min_invariant (t)
+ 	      && walk_tree (&TREE_OPERAND (t, 0), lower_emutls_2, NULL, NULL))
+ 	    *ptr = t = unshare_expr (t);
+ 
  	  /* If we're allowed more than just is_gimple_val, continue.  */
  	  if (!wi->val_only)
  	    {
diff -Nrcpad gcc-7.3.0/gcc/tree-if-conv.c gcc-7.4.0/gcc/tree-if-conv.c
*** gcc-7.3.0/gcc/tree-if-conv.c	Fri Oct 20 11:19:03 2017
--- gcc-7.4.0/gcc/tree-if-conv.c	Thu Feb  1 12:07:46 2018
*************** predicate_mem_writes (loop_p loop)
*** 2248,2257 ****
  					 TREE_OPERAND (cond, 0),
  					 TREE_OPERAND (cond, 1));
  		  else
! 		    {
! 		      gcc_assert (TREE_CODE (cond) == SSA_NAME);
! 		      mask = cond;
! 		    }
  
  		  if (swap)
  		    {
--- 2248,2254 ----
  					 TREE_OPERAND (cond, 0),
  					 TREE_OPERAND (cond, 1));
  		  else
! 		    mask = cond;
  
  		  if (swap)
  		    {
diff -Nrcpad gcc-7.3.0/gcc/tree-inline.c gcc-7.4.0/gcc/tree-inline.c
*** gcc-7.3.0/gcc/tree-inline.c	Fri Oct 27 20:33:35 2017
--- gcc-7.4.0/gcc/tree-inline.c	Fri Oct 12 13:41:56 2018
*************** along with GCC; see the file COPYING3.
*** 57,62 ****
--- 57,63 ----
  #include "cfgloop.h"
  #include "builtins.h"
  #include "tree-chkp.h"
+ #include "attribs.h"
  
  
  /* I'm not real happy about this, but we need to handle gimple and
*************** copy_tree_body_r (tree *tp, int *walk_su
*** 1182,1187 ****
--- 1183,1189 ----
  	      *tp = gimple_fold_indirect_ref (ptr);
  	      if (! *tp)
  	        {
+ 		  type = remap_type (type, id);
  		  if (TREE_CODE (ptr) == ADDR_EXPR)
  		    {
  		      *tp
*************** copy_bb (copy_body_data *id, basic_block
*** 1941,1948 ****
  		   && id->call_stmt
  		   && (decl = gimple_call_fndecl (stmt))
  		   && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL
! 		   && DECL_FUNCTION_CODE (decl) == BUILT_IN_VA_ARG_PACK_LEN
! 		   && ! gimple_call_va_arg_pack_p (id->call_stmt))
  	    {
  	      /* __builtin_va_arg_pack_len () should be replaced by
  		 the number of anonymous arguments.  */
--- 1943,1949 ----
  		   && id->call_stmt
  		   && (decl = gimple_call_fndecl (stmt))
  		   && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL
! 		   && DECL_FUNCTION_CODE (decl) == BUILT_IN_VA_ARG_PACK_LEN)
  	    {
  	      /* __builtin_va_arg_pack_len () should be replaced by
  		 the number of anonymous arguments.  */
*************** copy_bb (copy_body_data *id, basic_block
*** 1960,1969 ****
  		if (POINTER_BOUNDS_P (gimple_call_arg (id->call_stmt, i)))
  		  nargs--;
  
! 	      count = build_int_cst (integer_type_node, nargs);
! 	      new_stmt = gimple_build_assign (gimple_call_lhs (stmt), count);
! 	      gsi_replace (&copy_gsi, new_stmt, false);
! 	      stmt = new_stmt;
  	    }
  	  else if (call_stmt
  		   && id->call_stmt
--- 1961,1992 ----
  		if (POINTER_BOUNDS_P (gimple_call_arg (id->call_stmt, i)))
  		  nargs--;
  
! 	      if (!gimple_call_lhs (stmt))
! 		{
! 		  /* Drop unused calls.  */
! 		  gsi_remove (&copy_gsi, false);
! 		  continue;
! 		}
! 	      else if (!gimple_call_va_arg_pack_p (id->call_stmt))
! 		{
! 		  count = build_int_cst (integer_type_node, nargs);
! 		  new_stmt = gimple_build_assign (gimple_call_lhs (stmt), count);
! 		  gsi_replace (&copy_gsi, new_stmt, false);
! 		  stmt = new_stmt;
! 		}
! 	      else if (nargs != 0)
! 		{
! 		  tree newlhs;
! 		  if (gimple_in_ssa_p (cfun))
! 		    newlhs = make_ssa_name (integer_type_node, NULL);
! 		  else
! 		    newlhs = create_tmp_reg (integer_type_node);
! 		  count = build_int_cst (integer_type_node, nargs);
! 		  new_stmt = gimple_build_assign (gimple_call_lhs (stmt),
! 						  PLUS_EXPR, newlhs, count);
! 		  gimple_call_set_lhs (stmt, newlhs);
! 		  gsi_insert_after (&copy_gsi, new_stmt, GSI_NEW_STMT);
! 		}
  	    }
  	  else if (call_stmt
  		   && id->call_stmt
*************** tree_function_versioning (tree old_decl,
*** 6024,6029 ****
--- 6047,6071 ----
        = copy_arguments_for_versioning (DECL_ARGUMENTS (old_decl), &id,
  				       args_to_skip, &vars);
  
+   /* Remove omp declare simd attribute from the new attributes.  */
+   if (tree a = lookup_attribute ("omp declare simd",
+ 				 DECL_ATTRIBUTES (new_decl)))
+     {
+       while (tree a2 = lookup_attribute ("omp declare simd", TREE_CHAIN (a)))
+ 	a = a2;
+       a = TREE_CHAIN (a);
+       for (tree *p = &DECL_ATTRIBUTES (new_decl); *p != a;)
+ 	if (is_attribute_p ("omp declare simd", get_attribute_name (*p)))
+ 	  *p = TREE_CHAIN (*p);
+ 	else
+ 	  {
+ 	    tree chain = TREE_CHAIN (*p);
+ 	    *p = copy_node (*p);
+ 	    p = &TREE_CHAIN (*p);
+ 	    *p = chain;
+ 	  }
+     }
+ 
    DECL_INITIAL (new_decl) = remap_blocks (DECL_INITIAL (id.src_fn), &id);
    BLOCK_SUPERCONTEXT (DECL_INITIAL (new_decl)) = new_decl;
  
diff -Nrcpad gcc-7.3.0/gcc/tree-ssa-loop-ch.c gcc-7.4.0/gcc/tree-ssa-loop-ch.c
*** gcc-7.3.0/gcc/tree-ssa-loop-ch.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/tree-ssa-loop-ch.c	Tue Nov 20 14:47:49 2018
*************** should_duplicate_loop_header_p (basic_bl
*** 57,63 ****
       be true, since quite often it is possible to verify that the condition is
       satisfied in the first iteration and therefore to eliminate it.  Jump
       threading handles these cases now.  */
!   if (optimize_loop_for_size_p (loop))
      {
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file,
--- 57,64 ----
       be true, since quite often it is possible to verify that the condition is
       satisfied in the first iteration and therefore to eliminate it.  Jump
       threading handles these cases now.  */
!   if (optimize_loop_for_size_p (loop)
!       && !loop->force_vectorize)
      {
        if (dump_file && (dump_flags & TDF_DETAILS))
  	fprintf (dump_file,
diff -Nrcpad gcc-7.3.0/gcc/tree-ssa-loop-niter.c gcc-7.4.0/gcc/tree-ssa-loop-niter.c
*** gcc-7.3.0/gcc/tree-ssa-loop-niter.c	Tue Jul 25 08:56:26 2017
--- gcc-7.4.0/gcc/tree-ssa-loop-niter.c	Thu Apr 26 10:00:24 2018
*************** number_of_iterations_exit_assumptions (s
*** 2320,2330 ****
  
    tree iv0_niters = NULL_TREE;
    if (!simple_iv_with_niters (loop, loop_containing_stmt (stmt),
! 			      op0, &iv0, &iv0_niters, false))
      return false;
    tree iv1_niters = NULL_TREE;
    if (!simple_iv_with_niters (loop, loop_containing_stmt (stmt),
! 			      op1, &iv1, &iv1_niters, false))
      return false;
    /* Give up on complicated case.  */
    if (iv0_niters && iv1_niters)
--- 2320,2330 ----
  
    tree iv0_niters = NULL_TREE;
    if (!simple_iv_with_niters (loop, loop_containing_stmt (stmt),
! 			      op0, &iv0, safe ? &iv0_niters : NULL, false))
      return false;
    tree iv1_niters = NULL_TREE;
    if (!simple_iv_with_niters (loop, loop_containing_stmt (stmt),
! 			      op1, &iv1, safe ? &iv1_niters : NULL, false))
      return false;
    /* Give up on complicated case.  */
    if (iv0_niters && iv1_niters)
diff -Nrcpad gcc-7.3.0/gcc/tree-ssa-phiprop.c gcc-7.4.0/gcc/tree-ssa-phiprop.c
*** gcc-7.3.0/gcc/tree-ssa-phiprop.c	Fri Dec 15 08:12:10 2017
--- gcc-7.4.0/gcc/tree-ssa-phiprop.c	Thu Feb  8 13:30:49 2018
*************** propagate_with_phi (basic_block bb, gphi
*** 270,275 ****
--- 270,276 ----
    use_operand_p arg_p, use;
    ssa_op_iter i;
    bool phi_inserted;
+   bool changed;
    tree type = NULL_TREE;
  
    if (!POINTER_TYPE_P (TREE_TYPE (ptr))
*************** propagate_with_phi (basic_block bb, gphi
*** 317,322 ****
--- 318,324 ----
    /* Replace the first dereference of *ptr if there is one and if we
       can move the loads to the place of the ptr phi node.  */
    phi_inserted = false;
+   changed = false;
    FOR_EACH_IMM_USE_STMT (use_stmt, ui, ptr)
      {
        gimple *def_stmt;
*************** propagate_with_phi (basic_block bb, gphi
*** 403,409 ****
  	  unlink_stmt_vdef (use_stmt);
  	  gsi_remove (&gsi, true);
  
! 	  phi_inserted = true;
  	}
  
        /* Found a proper dereference.  Insert a phi node if this
--- 405,411 ----
  	  unlink_stmt_vdef (use_stmt);
  	  gsi_remove (&gsi, true);
  
! 	  changed = true;
  	}
  
        /* Found a proper dereference.  Insert a phi node if this
*************** propagate_with_phi (basic_block bb, gphi
*** 424,429 ****
--- 426,432 ----
  	  gsi_remove (&gsi, true);
  
  	  phi_inserted = true;
+ 	  changed = true;
  	}
        else
  	{
*************** propagate_with_phi (basic_block bb, gphi
*** 431,443 ****
  	     load.  */
  	  gimple_assign_set_rhs1 (use_stmt, res);
  	  update_stmt (use_stmt);
  	}
  
  next:;
        /* Continue searching for a proper dereference.  */
      }
  
!   return phi_inserted;
  }
  
  /* Main entry for phiprop pass.  */
--- 434,447 ----
  	     load.  */
  	  gimple_assign_set_rhs1 (use_stmt, res);
  	  update_stmt (use_stmt);
+ 	  changed = true;
  	}
  
  next:;
        /* Continue searching for a proper dereference.  */
      }
  
!   return changed;
  }
  
  /* Main entry for phiprop pass.  */
diff -Nrcpad gcc-7.3.0/gcc/tree-ssa-pre.c gcc-7.4.0/gcc/tree-ssa-pre.c
*** gcc-7.3.0/gcc/tree-ssa-pre.c	Fri Dec 15 20:45:36 2017
--- gcc-7.4.0/gcc/tree-ssa-pre.c	Tue Mar  6 10:01:52 2018
*************** create_expression_by_pieces (basic_block
*** 2787,2797 ****
  	  unsigned int operand = 1;
  	  vn_reference_op_t currop = &ref->operands[0];
  	  tree sc = NULL_TREE;
! 	  tree fn;
! 	  if (TREE_CODE (currop->op0) == FUNCTION_DECL)
! 	    fn = currop->op0;
! 	  else
! 	    fn = find_or_generate_expression (block, currop->op0, stmts);
  	  if (!fn)
  	    return NULL_TREE;
  	  if (currop->op1)
--- 2787,2793 ----
  	  unsigned int operand = 1;
  	  vn_reference_op_t currop = &ref->operands[0];
  	  tree sc = NULL_TREE;
! 	  tree fn  = find_or_generate_expression (block, currop->op0, stmts);
  	  if (!fn)
  	    return NULL_TREE;
  	  if (currop->op1)
*************** create_expression_by_pieces (basic_block
*** 2809,2822 ****
  		return NULL_TREE;
  	      args.quick_push (arg);
  	    }
! 	  gcall *call
! 	    = gimple_build_call_vec ((TREE_CODE (fn) == FUNCTION_DECL
! 				      ? build_fold_addr_expr (fn) : fn), args);
  	  gimple_call_set_with_bounds (call, currop->with_bounds);
  	  if (sc)
  	    gimple_call_set_chain (call, sc);
  	  tree forcedname = make_ssa_name (currop->type);
  	  gimple_call_set_lhs (call, forcedname);
  	  gimple_set_vuse (call, BB_LIVE_VOP_ON_EXIT (block));
  	  gimple_seq_add_stmt_without_update (&forced_stmts, call);
  	  folded = forcedname;
--- 2805,2831 ----
  		return NULL_TREE;
  	      args.quick_push (arg);
  	    }
! 	  gcall *call = gimple_build_call_vec (fn, args);
  	  gimple_call_set_with_bounds (call, currop->with_bounds);
  	  if (sc)
  	    gimple_call_set_chain (call, sc);
  	  tree forcedname = make_ssa_name (currop->type);
  	  gimple_call_set_lhs (call, forcedname);
+ 	  /* There's no CCP pass after PRE which would re-compute alignment
+ 	     information so make sure we re-materialize this here.  */
+ 	  if (gimple_call_builtin_p (call, BUILT_IN_ASSUME_ALIGNED)
+ 	      && args.length () - 2 <= 1
+ 	      && tree_fits_uhwi_p (args[1])
+ 	      && (args.length () != 3 || tree_fits_uhwi_p (args[2])))
+ 	    {
+ 	      unsigned HOST_WIDE_INT halign = tree_to_uhwi (args[1]);
+ 	      unsigned HOST_WIDE_INT hmisalign
+ 		= args.length () == 3 ? tree_to_uhwi (args[2]) : 0;
+ 	      if ((halign & (halign - 1)) == 0
+ 		  && (hmisalign & ~(halign - 1)) == 0)
+ 		set_ptr_info_alignment (get_ptr_info (forcedname),
+ 					halign, hmisalign);
+ 	    }
  	  gimple_set_vuse (call, BB_LIVE_VOP_ON_EXIT (block));
  	  gimple_seq_add_stmt_without_update (&forced_stmts, call);
  	  folded = forcedname;
diff -Nrcpad gcc-7.3.0/gcc/tree-ssa-reassoc.c gcc-7.4.0/gcc/tree-ssa-reassoc.c
*** gcc-7.3.0/gcc/tree-ssa-reassoc.c	Tue Aug  1 08:43:45 2017
--- gcc-7.4.0/gcc/tree-ssa-reassoc.c	Fri Jun 22 21:19:32 2018
*************** get_rank (tree e)
*** 470,476 ****
  
  /* We want integer ones to end up last no matter what, since they are
     the ones we can do the most with.  */
! #define INTEGER_CONST_TYPE 1 << 3
  #define FLOAT_CONST_TYPE 1 << 2
  #define OTHER_CONST_TYPE 1 << 1
  
--- 470,477 ----
  
  /* We want integer ones to end up last no matter what, since they are
     the ones we can do the most with.  */
! #define INTEGER_CONST_TYPE 1 << 4
! #define FLOAT_ONE_CONST_TYPE 1 << 3
  #define FLOAT_CONST_TYPE 1 << 2
  #define OTHER_CONST_TYPE 1 << 1
  
*************** constant_type (tree t)
*** 482,488 ****
    if (INTEGRAL_TYPE_P (TREE_TYPE (t)))
      return INTEGER_CONST_TYPE;
    else if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (t)))
!     return FLOAT_CONST_TYPE;
    else
      return OTHER_CONST_TYPE;
  }
--- 483,496 ----
    if (INTEGRAL_TYPE_P (TREE_TYPE (t)))
      return INTEGER_CONST_TYPE;
    else if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (t)))
!     {
!       /* Sort -1.0 and 1.0 constants last, while in some cases
! 	 const_binop can't optimize some inexact operations, multiplication
! 	 by -1.0 or 1.0 can be always merged with others.  */
!       if (real_onep (t) || real_minus_onep (t))
! 	return FLOAT_ONE_CONST_TYPE;
!       return FLOAT_CONST_TYPE;
!     }
    else
      return OTHER_CONST_TYPE;
  }
*************** sort_by_operand_rank (const void *pa, co
*** 501,507 ****
    if (oeb->rank == 0 && oea->rank == 0)
      {
        if (constant_type (oeb->op) != constant_type (oea->op))
! 	return constant_type (oeb->op) - constant_type (oea->op);
        else
  	/* To make sorting result stable, we use unique IDs to determine
  	   order.  */
--- 509,515 ----
    if (oeb->rank == 0 && oea->rank == 0)
      {
        if (constant_type (oeb->op) != constant_type (oea->op))
! 	return constant_type (oea->op) - constant_type (oeb->op);
        else
  	/* To make sorting result stable, we use unique IDs to determine
  	   order.  */
*************** optimize_range_tests_to_bit_test (enum t
*** 2870,2876 ****
  static bool
  optimize_range_tests_var_bound (enum tree_code opcode, int first, int length,
  				vec<operand_entry *> *ops,
! 				struct range_entry *ranges)
  {
    int i;
    bool any_changes = false;
--- 2878,2885 ----
  static bool
  optimize_range_tests_var_bound (enum tree_code opcode, int first, int length,
  				vec<operand_entry *> *ops,
! 				struct range_entry *ranges,
! 				basic_block first_bb)
  {
    int i;
    bool any_changes = false;
*************** optimize_range_tests_var_bound (enum tre
*** 2967,2972 ****
--- 2976,3035 ----
        if (idx == NULL)
  	continue;
  
+       /* maybe_optimize_range_tests allows statements without side-effects
+ 	 in the basic blocks as long as they are consumed in the same bb.
+ 	 Make sure rhs2's def stmt is not among them, otherwise we can't
+ 	 use safely get_nonzero_bits on it.  E.g. in:
+ 	  # RANGE [-83, 1] NONZERO 173
+ 	  # k_32 = PHI <k_47(13), k_12(9)>
+ 	 ...
+ 	  if (k_32 >= 0)
+ 	    goto <bb 5>; [26.46%]
+ 	  else
+ 	    goto <bb 9>; [73.54%]
+ 
+ 	  <bb 5> [local count: 140323371]:
+ 	  # RANGE [0, 1] NONZERO 1
+ 	  _5 = (int) k_32;
+ 	  # RANGE [0, 4] NONZERO 4
+ 	  _21 = _5 << 2;
+ 	  # RANGE [0, 4] NONZERO 4
+ 	  iftmp.0_44 = (char) _21;
+ 	  if (k_32 < iftmp.0_44)
+ 	    goto <bb 6>; [84.48%]
+ 	  else
+ 	    goto <bb 9>; [15.52%]
+ 	 the ranges on _5/_21/iftmp.0_44 are flow sensitive, assume that
+ 	 k_32 >= 0.  If we'd optimize k_32 >= 0 to true and k_32 < iftmp.0_44
+ 	 to (unsigned) k_32 < (unsigned) iftmp.0_44, then we would execute
+ 	 those stmts even for negative k_32 and the value ranges would be no
+ 	 longer guaranteed and so the optimization would be invalid.  */
+       if (opcode == ERROR_MARK)
+ 	{
+ 	  gimple *g = SSA_NAME_DEF_STMT (rhs2);
+ 	  basic_block bb2 = gimple_bb (g);
+ 	  if (bb2
+ 	      && bb2 != first_bb
+ 	      && dominated_by_p (CDI_DOMINATORS, bb2, first_bb))
+ 	    {
+ 	      /* As an exception, handle a few common cases.  */
+ 	      if (gimple_assign_cast_p (g)
+ 		  && INTEGRAL_TYPE_P (TREE_TYPE (gimple_assign_rhs1 (g)))
+ 		  && TYPE_UNSIGNED (TREE_TYPE (gimple_assign_rhs1 (g)))
+ 		  && (TYPE_PRECISION (TREE_TYPE (rhs2))
+ 		      > TYPE_PRECISION (TREE_TYPE (gimple_assign_rhs1 (g)))))
+ 		/* Zero-extension is always ok.  */ ;
+ 	      else if (is_gimple_assign (g)
+ 		       && gimple_assign_rhs_code (g) == BIT_AND_EXPR
+ 		       && TREE_CODE (gimple_assign_rhs2 (g)) == INTEGER_CST
+ 		       && !wi::neg_p (gimple_assign_rhs2 (g)))
+ 		/* Masking with INTEGER_CST with MSB clear is always ok
+ 		   too.  */ ;
+ 	      else
+ 		continue;
+ 	    }
+ 	}
+ 
        wide_int nz = get_nonzero_bits (rhs2);
        if (wi::neg_p (nz))
  	continue;
*************** optimize_range_tests_var_bound (enum tre
*** 3093,3103 ****
     maybe_optimize_range_tests for inter-bb range optimization.
     In that case if oe->op is NULL, oe->id is bb->index whose
     GIMPLE_COND is && or ||ed into the test, and oe->rank says
!    the actual opcode.  */
  
  static bool
  optimize_range_tests (enum tree_code opcode,
! 		      vec<operand_entry *> *ops)
  {
    unsigned int length = ops->length (), i, j, first;
    operand_entry *oe;
--- 3156,3167 ----
     maybe_optimize_range_tests for inter-bb range optimization.
     In that case if oe->op is NULL, oe->id is bb->index whose
     GIMPLE_COND is && or ||ed into the test, and oe->rank says
!    the actual opcode.
!    FIRST_BB is the first basic block if OPCODE is ERROR_MARK.  */
  
  static bool
  optimize_range_tests (enum tree_code opcode,
! 		      vec<operand_entry *> *ops, basic_block first_bb)
  {
    unsigned int length = ops->length (), i, j, first;
    operand_entry *oe;
*************** optimize_range_tests (enum tree_code opc
*** 3175,3181 ****
      any_changes |= optimize_range_tests_to_bit_test (opcode, first, length,
  						     ops, ranges);
    any_changes |= optimize_range_tests_var_bound (opcode, first, length, ops,
! 						 ranges);
  
    if (any_changes && opcode != ERROR_MARK)
      {
--- 3239,3245 ----
      any_changes |= optimize_range_tests_to_bit_test (opcode, first, length,
  						     ops, ranges);
    any_changes |= optimize_range_tests_var_bound (opcode, first, length, ops,
! 						 ranges, first_bb);
  
    if (any_changes && opcode != ERROR_MARK)
      {
*************** maybe_optimize_range_tests (gimple *stmt
*** 3922,3928 ****
  	break;
      }
    if (ops.length () > 1)
!     any_changes = optimize_range_tests (ERROR_MARK, &ops);
    if (any_changes)
      {
        unsigned int idx, max_idx = 0;
--- 3986,3992 ----
  	break;
      }
    if (ops.length () > 1)
!     any_changes = optimize_range_tests (ERROR_MARK, &ops, first_bb);
    if (any_changes)
      {
        unsigned int idx, max_idx = 0;
*************** reassociate_bb (basic_block bb)
*** 5674,5680 ****
  		  if (is_vector)
  		    optimize_vec_cond_expr (rhs_code, &ops);
  		  else
! 		    optimize_range_tests (rhs_code, &ops);
  	        }
  
  	      if (rhs_code == MULT_EXPR && !is_vector)
--- 5738,5744 ----
  		  if (is_vector)
  		    optimize_vec_cond_expr (rhs_code, &ops);
  		  else
! 		    optimize_range_tests (rhs_code, &ops, NULL);
  	        }
  
  	      if (rhs_code == MULT_EXPR && !is_vector)
diff -Nrcpad gcc-7.3.0/gcc/tree-ssa-sccvn.c gcc-7.4.0/gcc/tree-ssa-sccvn.c
*** gcc-7.3.0/gcc/tree-ssa-sccvn.c	Wed Nov 15 12:50:39 2017
--- gcc-7.4.0/gcc/tree-ssa-sccvn.c	Wed Nov 28 12:57:58 2018
*************** vn_reference_maybe_forwprop_address (vec
*** 1245,1251 ****
  	  return true;
  	}
        if (!addr_base
! 	  || TREE_CODE (addr_base) != MEM_REF)
  	return false;
  
        off += addr_offset;
--- 1245,1253 ----
  	  return true;
  	}
        if (!addr_base
! 	  || TREE_CODE (addr_base) != MEM_REF
! 	  || (TREE_CODE (TREE_OPERAND (addr_base, 0)) == SSA_NAME
! 	      && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (TREE_OPERAND (addr_base, 0))))
  	return false;
  
        off += addr_offset;
*************** vn_reference_maybe_forwprop_address (vec
*** 1258,1263 ****
--- 1260,1266 ----
        ptr = gimple_assign_rhs1 (def_stmt);
        ptroff = gimple_assign_rhs2 (def_stmt);
        if (TREE_CODE (ptr) != SSA_NAME
+ 	  || SSA_NAME_OCCURS_IN_ABNORMAL_PHI (ptr)
  	  || TREE_CODE (ptroff) != INTEGER_CST)
  	return false;
  
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 1933,1938 ****
--- 1936,1942 ----
        base2 = get_ref_base_and_extent (gimple_assign_lhs (def_stmt),
  				       &offset2, &size2, &maxsize2, &reverse);
        if (maxsize2 != -1
+ 	  && maxsize2 == size2
  	  && operand_equal_p (base, base2, 0)
  	  && offset2 <= offset
  	  && offset2 + size2 >= offset + maxsize)
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 1978,1985 ****
  	  if (TREE_CODE (rhs) == SSA_NAME)
  	    rhs = SSA_VAL (rhs);
  	  len = native_encode_expr (gimple_assign_rhs1 (def_stmt),
! 				    buffer, sizeof (buffer));
! 	  if (len > 0)
  	    {
  	      tree type = vr->type;
  	      /* Make sure to interpret in a type that has a range
--- 1982,1990 ----
  	  if (TREE_CODE (rhs) == SSA_NAME)
  	    rhs = SSA_VAL (rhs);
  	  len = native_encode_expr (gimple_assign_rhs1 (def_stmt),
! 				    buffer, sizeof (buffer),
! 				    (offset - offset2) / BITS_PER_UNIT);
! 	  if (len > 0 && len * BITS_PER_UNIT >= ref->size)
  	    {
  	      tree type = vr->type;
  	      /* Make sure to interpret in a type that has a range
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 1988,1997 ****
  		  && ref->size != TYPE_PRECISION (vr->type))
  		type = build_nonstandard_integer_type (ref->size,
  						       TYPE_UNSIGNED (type));
! 	      tree val = native_interpret_expr (type,
! 						buffer
! 						+ ((offset - offset2)
! 						   / BITS_PER_UNIT),
  						ref->size / BITS_PER_UNIT);
  	      /* If we chop off bits because the types precision doesn't
  		 match the memory access size this is ok when optimizing
--- 1993,1999 ----
  		  && ref->size != TYPE_PRECISION (vr->type))
  		type = build_nonstandard_integer_type (ref->size,
  						       TYPE_UNSIGNED (type));
! 	      tree val = native_interpret_expr (type, buffer,
  						ref->size / BITS_PER_UNIT);
  	      /* If we chop off bits because the types precision doesn't
  		 match the memory access size this is ok when optimizing
diff -Nrcpad gcc-7.3.0/gcc/tree-ssa-structalias.c gcc-7.4.0/gcc/tree-ssa-structalias.c
*** gcc-7.3.0/gcc/tree-ssa-structalias.c	Wed Jul 26 08:58:37 2017
--- gcc-7.4.0/gcc/tree-ssa-structalias.c	Mon Nov 26 13:31:21 2018
*************** delete_points_to_sets (void)
*** 7274,7279 ****
--- 7274,7280 ----
  struct vls_data
  {
    unsigned short clique;
+   bool escaped_p;
    bitmap rvars;
  };
  
*************** visit_loadstore (gimple *, tree base, tr
*** 7285,7290 ****
--- 7286,7292 ----
  {
    unsigned short clique = ((vls_data *) data)->clique;
    bitmap rvars = ((vls_data *) data)->rvars;
+   bool escaped_p = ((vls_data *) data)->escaped_p;
    if (TREE_CODE (base) == MEM_REF
        || TREE_CODE (base) == TARGET_MEM_REF)
      {
*************** visit_loadstore (gimple *, tree base, tr
*** 7305,7311 ****
  	    return false;
  
  	  vi = get_varinfo (find (vi->id));
! 	  if (bitmap_intersect_p (rvars, vi->solution))
  	    return false;
  	}
  
--- 7307,7314 ----
  	    return false;
  
  	  vi = get_varinfo (find (vi->id));
! 	  if (bitmap_intersect_p (rvars, vi->solution)
! 	      || (escaped_p && bitmap_bit_p (vi->solution, escaped_id)))
  	    return false;
  	}
  
*************** compute_dependence_clique (void)
*** 7382,7387 ****
--- 7385,7391 ----
    unsigned short clique = 0;
    unsigned short last_ruid = 0;
    bitmap rvars = BITMAP_ALLOC (NULL);
+   bool escaped_p = false;
    for (unsigned i = 0; i < num_ssa_names; ++i)
      {
        tree ptr = ssa_name (i);
*************** compute_dependence_clique (void)
*** 7451,7457 ****
  						 last_ruid);
  	    }
  	  if (used)
! 	    bitmap_set_bit (rvars, restrict_var->id);
  	}
      }
  
--- 7455,7466 ----
  						 last_ruid);
  	    }
  	  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;
! 	    }
  	}
      }
  
*************** compute_dependence_clique (void)
*** 7464,7470 ****
  	 parameters) we can't restrict scoping properly thus the following
  	 is too aggressive there.  For now we have excluded those globals from
  	 getting into the MR_DEPENDENCE machinery.  */
!       vls_data data = { clique, rvars };
        basic_block bb;
        FOR_EACH_BB_FN (bb, cfun)
  	for (gimple_stmt_iterator gsi = gsi_start_bb (bb);
--- 7473,7479 ----
  	 parameters) we can't restrict scoping properly thus the following
  	 is too aggressive there.  For now we have excluded those globals from
  	 getting into the MR_DEPENDENCE machinery.  */
!       vls_data data = { clique, escaped_p, rvars };
        basic_block bb;
        FOR_EACH_BB_FN (bb, cfun)
  	for (gimple_stmt_iterator gsi = gsi_start_bb (bb);
diff -Nrcpad gcc-7.3.0/gcc/tree-ssa-tail-merge.c gcc-7.4.0/gcc/tree-ssa-tail-merge.c
*** gcc-7.3.0/gcc/tree-ssa-tail-merge.c	Mon Jul  3 08:32:20 2017
--- gcc-7.4.0/gcc/tree-ssa-tail-merge.c	Mon Sep  3 10:04:08 2018
*************** stmt_local_def (gimple *stmt)
*** 298,304 ****
    if (gimple_vdef (stmt) != NULL_TREE
        || gimple_has_side_effects (stmt)
        || gimple_could_trap_p_1 (stmt, false, false)
!       || gimple_vuse (stmt) != NULL_TREE)
      return false;
  
    def_p = SINGLE_SSA_DEF_OPERAND (stmt, SSA_OP_DEF);
--- 298,312 ----
    if (gimple_vdef (stmt) != NULL_TREE
        || gimple_has_side_effects (stmt)
        || gimple_could_trap_p_1 (stmt, false, false)
!       || gimple_vuse (stmt) != NULL_TREE
!       /* Copied from tree-ssa-ifcombine.c:bb_no_side_effects_p():
! 	 const calls don't match any of the above, yet they could
! 	 still have some side-effects - they could contain
! 	 gimple_could_trap_p statements, like floating point
! 	 exceptions or integer division by zero.  See PR70586.
! 	 FIXME: perhaps gimple_has_side_effects or gimple_could_trap_p
! 	 should handle this.  */
!       || is_gimple_call (stmt))
      return false;
  
    def_p = SINGLE_SSA_DEF_OPERAND (stmt, SSA_OP_DEF);
*************** find_clusters_1 (same_succ *same_succ)
*** 1454,1460 ****
        /* TODO: handle blocks with phi-nodes.  We'll have to find corresponding
  	 phi-nodes in bb1 and bb2, with the same alternatives for the same
  	 preds.  */
!       if (bb_has_non_vop_phi (bb1) || bb_has_eh_pred (bb1))
  	continue;
  
        nr_comparisons = 0;
--- 1462,1469 ----
        /* TODO: handle blocks with phi-nodes.  We'll have to find corresponding
  	 phi-nodes in bb1 and bb2, with the same alternatives for the same
  	 preds.  */
!       if (bb_has_non_vop_phi (bb1) || bb_has_eh_pred (bb1)
! 	  || bb_has_abnormal_pred (bb1))
  	continue;
  
        nr_comparisons = 0;
*************** find_clusters_1 (same_succ *same_succ)
*** 1462,1468 ****
  	{
  	  bb2 = BASIC_BLOCK_FOR_FN (cfun, j);
  
! 	  if (bb_has_non_vop_phi (bb2) || bb_has_eh_pred (bb2))
  	    continue;
  
  	  if (BB_CLUSTER (bb1) != NULL && BB_CLUSTER (bb1) == BB_CLUSTER (bb2))
--- 1471,1478 ----
  	{
  	  bb2 = BASIC_BLOCK_FOR_FN (cfun, j);
  
! 	  if (bb_has_non_vop_phi (bb2) || bb_has_eh_pred (bb2)
! 	      || bb_has_abnormal_pred (bb2))
  	    continue;
  
  	  if (BB_CLUSTER (bb1) != NULL && BB_CLUSTER (bb1) == BB_CLUSTER (bb2))
diff -Nrcpad gcc-7.3.0/gcc/tree-ssa.c gcc-7.4.0/gcc/tree-ssa.c
*** gcc-7.3.0/gcc/tree-ssa.c	Tue Mar 28 17:24:57 2017
--- gcc-7.4.0/gcc/tree-ssa.c	Fri Feb 16 07:57:56 2018
*************** non_rewritable_mem_ref_base (tree ref)
*** 1423,1429 ****
        if (! DECL_P (decl))
  	return NULL_TREE;
        if (! is_gimple_reg_type (TREE_TYPE (base))
! 	  || VOID_TYPE_P (TREE_TYPE (base)))
  	return decl;
        if ((TREE_CODE (TREE_TYPE (decl)) == VECTOR_TYPE
  	   || TREE_CODE (TREE_TYPE (decl)) == COMPLEX_TYPE)
--- 1423,1430 ----
        if (! DECL_P (decl))
  	return NULL_TREE;
        if (! is_gimple_reg_type (TREE_TYPE (base))
! 	  || VOID_TYPE_P (TREE_TYPE (base))
! 	  || TREE_THIS_VOLATILE (decl) != TREE_THIS_VOLATILE (base))
  	return decl;
        if ((TREE_CODE (TREE_TYPE (decl)) == VECTOR_TYPE
  	   || TREE_CODE (TREE_TYPE (decl)) == COMPLEX_TYPE)
diff -Nrcpad gcc-7.3.0/gcc/tree-tailcall.c gcc-7.4.0/gcc/tree-tailcall.c
*** gcc-7.3.0/gcc/tree-tailcall.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/gcc/tree-tailcall.c	Fri Jun 22 20:31:10 2018
*************** find_tail_calls (basic_block bb, struct
*** 473,479 ****
      {
        tree arg;
  
!       for (param = DECL_ARGUMENTS (func), idx = 0;
  	   param && idx < gimple_call_num_args (call);
  	   param = DECL_CHAIN (param), idx ++)
  	{
--- 473,479 ----
      {
        tree arg;
  
!       for (param = DECL_ARGUMENTS (current_function_decl), idx = 0;
  	   param && idx < gimple_call_num_args (call);
  	   param = DECL_CHAIN (param), idx ++)
  	{
diff -Nrcpad gcc-7.3.0/gcc/tree-vect-data-refs.c gcc-7.4.0/gcc/tree-vect-data-refs.c
*** gcc-7.3.0/gcc/tree-vect-data-refs.c	Wed Jun  7 13:07:06 2017
--- gcc-7.4.0/gcc/tree-vect-data-refs.c	Mon Nov 26 13:31:21 2018
*************** vect_mark_for_runtime_alias_test (ddr_p
*** 195,200 ****
--- 195,239 ----
  }
  
  
+ /* Return true if we know that the order of vectorized STMT_A and
+    vectorized STMT_B will be the same as the order of STMT_A and STMT_B.
+    At least one of the statements is a write.  */
+ 
+ static bool
+ vect_preserves_scalar_order_p (gimple *stmt_a, gimple *stmt_b)
+ {
+   stmt_vec_info stmtinfo_a = vinfo_for_stmt (stmt_a);
+   stmt_vec_info stmtinfo_b = vinfo_for_stmt (stmt_b);
+ 
+   /* Single statements are always kept in their original order.  */
+   if (!STMT_VINFO_GROUPED_ACCESS (stmtinfo_a)
+       && !STMT_VINFO_GROUPED_ACCESS (stmtinfo_b))
+     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));
+ }
+ 
+ 
  /* Function vect_analyze_data_ref_dependence.
  
     Return TRUE if there (might) exist a dependence between a memory-reference
*************** vect_analyze_data_ref_dependence (struct
*** 378,397 ****
  		... = a[i];
  		a[i+1] = ...;
  	     where loads from the group interleave with the store.  */
! 	  if (STMT_VINFO_GROUPED_ACCESS (stmtinfo_a)
! 	      || STMT_VINFO_GROUPED_ACCESS (stmtinfo_b))
  	    {
! 	      gimple *earlier_stmt;
! 	      earlier_stmt = get_earlier_stmt (DR_STMT (dra), DR_STMT (drb));
! 	      if (DR_IS_WRITE
! 		    (STMT_VINFO_DATA_REF (vinfo_for_stmt (earlier_stmt))))
! 		{
! 		  if (dump_enabled_p ())
! 		    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				     "READ_WRITE dependence in interleaving."
! 				     "\n");
! 		  return true;
! 		}
  	    }
  
  	  continue;
--- 417,439 ----
  		... = a[i];
  		a[i+1] = ...;
  	     where loads from the group interleave with the store.  */
! 	  if (!vect_preserves_scalar_order_p (DR_STMT (dra), DR_STMT (drb)))
  	    {
! 	      if (dump_enabled_p ())
! 		dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				 "READ_WRITE dependence in interleaving."
! 				 "\n");
! 	      return true;
! 	    }
! 
! 	  unsigned int step_prec = TYPE_PRECISION (TREE_TYPE (DR_STEP (dra)));
! 	  if (loop->safelen < 2
! 	      && !expr_not_equal_to (DR_STEP (dra), wi::zero (step_prec)))
! 	    {
! 	      if (dump_enabled_p ())
! 		dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				 "step could be zero.\n");
! 	      return true;
  	    }
  
  	  continue;
*************** vect_analyze_data_ref_access (struct dat
*** 2515,2521 ****
        /* Allow references with zero step for outer loops marked
  	 with pragma omp simd only - it guarantees absence of
  	 loop-carried dependencies between inner loop iterations.  */
!       if (!loop->force_vectorize)
  	{
  	  if (dump_enabled_p ())
  	    dump_printf_loc (MSG_NOTE, vect_location,
--- 2557,2563 ----
        /* Allow references with zero step for outer loops marked
  	 with pragma omp simd only - it guarantees absence of
  	 loop-carried dependencies between inner loop iterations.  */
!       if (!loop->force_vectorize || loop->safelen < 2)
  	{
  	  if (dump_enabled_p ())
  	    dump_printf_loc (MSG_NOTE, vect_location,
diff -Nrcpad gcc-7.3.0/gcc/tree-vect-generic.c gcc-7.4.0/gcc/tree-vect-generic.c
*** gcc-7.3.0/gcc/tree-vect-generic.c	Wed Mar  1 08:34:48 2017
--- gcc-7.4.0/gcc/tree-vect-generic.c	Mon Nov 26 11:59:05 2018
*************** build_word_mode_vector_type (int nunits)
*** 89,100 ****
        return vector_last_type;
      }
  
-   /* We build a new type, but we canonicalize it nevertheless,
-      because it still saves some memory.  */
    vector_last_nunits = nunits;
!   vector_last_type = type_hash_canon (nunits,
! 				      build_vector_type (vector_inner_type,
! 							 nunits));
    return vector_last_type;
  }
  
--- 89,96 ----
        return vector_last_type;
      }
  
    vector_last_nunits = nunits;
!   vector_last_type = build_vector_type (vector_inner_type, nunits);
    return vector_last_type;
  }
  
diff -Nrcpad gcc-7.3.0/gcc/tree-vect-loop.c gcc-7.4.0/gcc/tree-vect-loop.c
*** gcc-7.3.0/gcc/tree-vect-loop.c	Fri Dec 15 22:12:46 2017
--- gcc-7.4.0/gcc/tree-vect-loop.c	Sat Mar  3 13:25:27 2018
*************** along with GCC; see the file COPYING3.
*** 50,55 ****
--- 50,56 ----
  #include "cgraph.h"
  #include "tree-cfg.h"
  #include "tree-if-conv.h"
+ #include "tree-eh.h"
  
  /* Loop Vectorization Pass.
  
*************** vect_get_loop_niters (struct loop *loop,
*** 1055,1061 ****
  							  may_be_zero));
  	  else
  	    niter = fold_build3 (COND_EXPR, TREE_TYPE (niter), may_be_zero,
! 				 build_int_cst (TREE_TYPE (niter), 0), niter);
  
  	  may_be_zero = NULL_TREE;
  	}
--- 1056,1063 ----
  							  may_be_zero));
  	  else
  	    niter = fold_build3 (COND_EXPR, TREE_TYPE (niter), may_be_zero,
! 				 build_int_cst (TREE_TYPE (niter), 0),
! 				 rewrite_to_non_trapping_overflow (niter));
  
  	  may_be_zero = NULL_TREE;
  	}
diff -Nrcpad gcc-7.3.0/gcc/tree-vect-stmts.c gcc-7.4.0/gcc/tree-vect-stmts.c
*** gcc-7.3.0/gcc/tree-vect-stmts.c	Mon Sep 18 10:13:54 2017
--- gcc-7.4.0/gcc/tree-vect-stmts.c	Thu Jun  7 10:10:00 2018
*************** vectorizable_call (gimple *gs, gimple_st
*** 2753,2759 ****
        if (cfn != CFN_LAST)
  	fndecl = targetm.vectorize.builtin_vectorized_function
  	  (cfn, vectype_out, vectype_in);
!       else
  	fndecl = targetm.vectorize.builtin_md_vectorized_function
  	  (callee, vectype_out, vectype_in);
      }
--- 2753,2759 ----
        if (cfn != CFN_LAST)
  	fndecl = targetm.vectorize.builtin_vectorized_function
  	  (cfn, vectype_out, vectype_in);
!       else if (callee)
  	fndecl = targetm.vectorize.builtin_md_vectorized_function
  	  (callee, vectype_out, vectype_in);
      }
*************** vectorizable_operation (gimple *stmt, gi
*** 5479,5493 ****
        /* Handle uses.  */
        if (j == 0)
  	{
! 	  if (op_type == binary_op || op_type == ternary_op)
  	    vect_get_vec_defs (op0, op1, stmt, &vec_oprnds0, &vec_oprnds1,
  			       slp_node, -1);
  	  else
  	    vect_get_vec_defs (op0, NULL_TREE, stmt, &vec_oprnds0, NULL,
  			       slp_node, -1);
- 	  if (op_type == ternary_op)
- 	    vect_get_vec_defs (op2, NULL_TREE, stmt, &vec_oprnds2, NULL,
- 			       slp_node, -1);
  	}
        else
  	{
--- 5479,5512 ----
        /* Handle uses.  */
        if (j == 0)
  	{
! 	  if (op_type == binary_op)
  	    vect_get_vec_defs (op0, op1, stmt, &vec_oprnds0, &vec_oprnds1,
  			       slp_node, -1);
+ 	  else if (op_type == ternary_op)
+ 	    {
+ 	      if (slp_node)
+ 		{
+ 		  auto_vec<tree> ops(3);
+ 		  ops.quick_push (op0);
+ 		  ops.quick_push (op1);
+ 		  ops.quick_push (op2);
+ 		  auto_vec<vec<tree> > vec_defs(3);
+ 		  vect_get_slp_defs (ops, slp_node, &vec_defs, -1);
+ 		  vec_oprnds0 = vec_defs[0];
+ 		  vec_oprnds1 = vec_defs[1];
+ 		  vec_oprnds2 = vec_defs[2];
+ 		}
+ 	      else
+ 		{ 
+ 		  vect_get_vec_defs (op0, op1, stmt, &vec_oprnds0, &vec_oprnds1,
+ 				     NULL, -1);
+ 		  vect_get_vec_defs (op2, NULL_TREE, stmt, &vec_oprnds2, NULL,
+ 				     NULL, -1);
+ 		}
+ 	    }
  	  else
  	    vect_get_vec_defs (op0, NULL_TREE, stmt, &vec_oprnds0, NULL,
  			       slp_node, -1);
  	}
        else
  	{
diff -Nrcpad gcc-7.3.0/gcc/tree-vectorizer.h gcc-7.4.0/gcc/tree-vectorizer.h
*** gcc-7.3.0/gcc/tree-vectorizer.h	Tue Mar 14 12:47:42 2017
--- gcc-7.4.0/gcc/tree-vectorizer.h	Mon Nov 26 13:31:21 2018
*************** set_vinfo_for_stmt (gimple *stmt, stmt_v
*** 833,864 ****
      }
  }
  
! /* Return the earlier statement between STMT1 and STMT2.  */
  
! static inline gimple *
! get_earlier_stmt (gimple *stmt1, gimple *stmt2)
  {
!   unsigned int uid1, uid2;
! 
!   if (stmt1 == NULL)
!     return stmt2;
! 
!   if (stmt2 == NULL)
!     return stmt1;
! 
!   uid1 = gimple_uid (stmt1);
!   uid2 = gimple_uid (stmt2);
! 
!   if (uid1 == 0 || uid2 == 0)
!     return NULL;
  
!   gcc_checking_assert (uid1 <= stmt_vec_info_vec.length ()
! 		       && uid2 <= stmt_vec_info_vec.length ());
  
!   if (uid1 < uid2)
!     return stmt1;
!   else
!     return stmt2;
  }
  
  /* Return the later statement between STMT1 and STMT2.  */
--- 833,854 ----
      }
  }
  
! /* Return TRUE if a statement represented by STMT_INFO is a part of a
!    pattern.  */
  
! static inline bool
! is_pattern_stmt_p (stmt_vec_info stmt_info)
  {
!   gimple *related_stmt;
!   stmt_vec_info related_stmt_info;
  
!   related_stmt = STMT_VINFO_RELATED_STMT (stmt_info);
!   if (related_stmt
!       && (related_stmt_info = vinfo_for_stmt (related_stmt))
!       && STMT_VINFO_IN_PATTERN_P (related_stmt_info))
!     return true;
  
!   return false;
  }
  
  /* Return the later statement between STMT1 and STMT2.  */
*************** get_later_stmt (gimple *stmt1, gimple *s
*** 874,881 ****
    if (stmt2 == NULL)
      return stmt1;
  
!   uid1 = gimple_uid (stmt1);
!   uid2 = gimple_uid (stmt2);
  
    if (uid1 == 0 || uid2 == 0)
      return NULL;
--- 864,875 ----
    if (stmt2 == NULL)
      return stmt1;
  
!   stmt_vec_info stmt_info1 = vinfo_for_stmt (stmt1);
!   stmt_vec_info stmt_info2 = vinfo_for_stmt (stmt2);
!   uid1 = gimple_uid (is_pattern_stmt_p (stmt_info1)
! 		     ? STMT_VINFO_RELATED_STMT (stmt_info1) : stmt1);
!   uid2 = gimple_uid (is_pattern_stmt_p (stmt_info2)
! 		     ? STMT_VINFO_RELATED_STMT (stmt_info2) : stmt2);
  
    if (uid1 == 0 || uid2 == 0)
      return NULL;
*************** get_later_stmt (gimple *stmt1, gimple *s
*** 889,912 ****
      return stmt2;
  }
  
- /* Return TRUE if a statement represented by STMT_INFO is a part of a
-    pattern.  */
- 
- static inline bool
- is_pattern_stmt_p (stmt_vec_info stmt_info)
- {
-   gimple *related_stmt;
-   stmt_vec_info related_stmt_info;
- 
-   related_stmt = STMT_VINFO_RELATED_STMT (stmt_info);
-   if (related_stmt
-       && (related_stmt_info = vinfo_for_stmt (related_stmt))
-       && STMT_VINFO_IN_PATTERN_P (related_stmt_info))
-     return true;
- 
-   return false;
- }
- 
  /* Return true if BB is a loop header.  */
  
  static inline bool
--- 883,888 ----
diff -Nrcpad gcc-7.3.0/gcc/tree-vrp.c gcc-7.4.0/gcc/tree-vrp.c
*** gcc-7.3.0/gcc/tree-vrp.c	Tue Sep 26 10:16:40 2017
--- gcc-7.4.0/gcc/tree-vrp.c	Fri Jun 22 21:33:07 2018
*************** union_ranges (enum value_range_type *vr0
*** 8671,8679 ****
  	  if (TREE_CODE (*vr0min) == INTEGER_CST)
  	    {
  	      *vr0type = vr1type;
- 	      *vr0min = vr1min;
  	      *vr0max = int_const_binop (MINUS_EXPR, *vr0min,
  					 build_int_cst (TREE_TYPE (*vr0min), 1));
  	    }
  	  else
  	    goto give_up;
--- 8671,8679 ----
  	  if (TREE_CODE (*vr0min) == INTEGER_CST)
  	    {
  	      *vr0type = vr1type;
  	      *vr0max = int_const_binop (MINUS_EXPR, *vr0min,
  					 build_int_cst (TREE_TYPE (*vr0min), 1));
+ 	      *vr0min = vr1min;
  	    }
  	  else
  	    goto give_up;
diff -Nrcpad gcc-7.3.0/gcc/tree.c gcc-7.4.0/gcc/tree.c
*** gcc-7.3.0/gcc/tree.c	Wed Nov 29 22:13:34 2017
--- gcc-7.4.0/gcc/tree.c	Sat Aug 25 11:52:15 2018
*************** free_lang_data_in_decl (tree decl)
*** 5454,5462 ****
  	 At this point, it is not needed anymore.  */
        DECL_SAVED_TREE (decl) = NULL_TREE;
  
!       /* Clear the abstract origin if it refers to a method.  Otherwise
!          dwarf2out.c will ICE as we clear TYPE_METHODS and thus the
! 	 origin will not be output correctly.  */
        if (DECL_ABSTRACT_ORIGIN (decl)
  	  && DECL_CONTEXT (DECL_ABSTRACT_ORIGIN (decl))
  	  && RECORD_OR_UNION_TYPE_P
--- 5454,5463 ----
  	 At this point, it is not needed anymore.  */
        DECL_SAVED_TREE (decl) = NULL_TREE;
  
!       /* Clear the abstract origin if it refers to a method.
!          Otherwise dwarf2out.c will ICE as we splice functions out of
!          TYPE_FIELDS and thus the origin will not be output
!          correctly.  */
        if (DECL_ABSTRACT_ORIGIN (decl)
  	  && DECL_CONTEXT (DECL_ABSTRACT_ORIGIN (decl))
  	  && RECORD_OR_UNION_TYPE_P
*************** add_expr (const_tree t, inchash::hash &h
*** 7887,7892 ****
--- 7888,7896 ----
        for (i = 0; i < TREE_VEC_LENGTH (t); ++i)
  	inchash::add_expr (TREE_VEC_ELT (t, i), hstate, flags);
        return;
+     case IDENTIFIER_NODE:
+       hstate.add_object (IDENTIFIER_HASH_VALUE (t));
+       return;
      case FUNCTION_DECL:
        /* When referring to a built-in FUNCTION_DECL, use the __builtin__ form.
  	 Otherwise nodes that compare equal according to operand_equal_p might
*************** build_common_tree_nodes (bool signed_cha
*** 10305,10312 ****
        TYPE_SIZE (int_n_trees[i].signed_type) = bitsize_int (int_n_data[i].bitsize);
        TYPE_SIZE (int_n_trees[i].unsigned_type) = bitsize_int (int_n_data[i].bitsize);
  
!       if (int_n_data[i].bitsize > LONG_LONG_TYPE_SIZE
! 	  && int_n_enabled_p[i])
  	{
  	  integer_types[itk_intN_0 + i * 2] = int_n_trees[i].signed_type;
  	  integer_types[itk_unsigned_intN_0 + i * 2] = int_n_trees[i].unsigned_type;
--- 10309,10315 ----
        TYPE_SIZE (int_n_trees[i].signed_type) = bitsize_int (int_n_data[i].bitsize);
        TYPE_SIZE (int_n_trees[i].unsigned_type) = bitsize_int (int_n_data[i].bitsize);
  
!       if (int_n_enabled_p[i])
  	{
  	  integer_types[itk_intN_0 + i * 2] = int_n_trees[i].signed_type;
  	  integer_types[itk_unsigned_intN_0 + i * 2] = int_n_trees[i].unsigned_type;
diff -Nrcpad gcc-7.3.0/gcc/varasm.c gcc-7.4.0/gcc/varasm.c
*** gcc-7.3.0/gcc/varasm.c	Fri Dec 15 08:12:10 2017
--- gcc-7.4.0/gcc/varasm.c	Fri Jun 22 20:51:42 2018
*************** use_blocks_for_decl_p (tree decl)
*** 1241,1250 ****
    if (!VAR_P (decl) && TREE_CODE (decl) != CONST_DECL)
      return false;
  
!   /* Detect decls created by dw2_force_const_mem.  Such decls are
!      special because DECL_INITIAL doesn't specify the decl's true value.
!      dw2_output_indirect_constants will instead call assemble_variable
!      with dont_output_data set to 1 and then print the contents itself.  */
    if (DECL_INITIAL (decl) == decl)
      return false;
  
--- 1241,1249 ----
    if (!VAR_P (decl) && TREE_CODE (decl) != CONST_DECL)
      return false;
  
!   /* DECL_INITIAL (decl) set to decl is a hack used for some decls that
!      are never used from code directly and we never want object block handling
!      for those.  */
    if (DECL_INITIAL (decl) == decl)
      return false;
  
diff -Nrcpad gcc-7.3.0/gcc/vmsdbgout.c gcc-7.4.0/gcc/vmsdbgout.c
*** gcc-7.3.0/gcc/vmsdbgout.c	Sat Feb 18 16:11:40 2017
--- gcc-7.4.0/gcc/vmsdbgout.c	Thu Nov 22 13:12:41 2018
*************** static int write_srccorrs (int);
*** 147,152 ****
--- 147,153 ----
  
  static void vmsdbgout_init (const char *);
  static void vmsdbgout_finish (const char *);
+ static void vmsdbgout_early_finish (const char *);
  static void vmsdbgout_assembly_start (void);
  static void vmsdbgout_define (unsigned int, const char *);
  static void vmsdbgout_undef (unsigned int, const char *);
*************** static void vmsdbgout_abstract_function
*** 176,182 ****
  const struct gcc_debug_hooks vmsdbg_debug_hooks
  = {vmsdbgout_init,
     vmsdbgout_finish,
!    debug_nothing_charstar,
     vmsdbgout_assembly_start,
     vmsdbgout_define,
     vmsdbgout_undef,
--- 177,183 ----
  const struct gcc_debug_hooks vmsdbg_debug_hooks
  = {vmsdbgout_init,
     vmsdbgout_finish,
!    vmsdbgout_early_finish,
     vmsdbgout_assembly_start,
     vmsdbgout_define,
     vmsdbgout_undef,
*************** vmsdbgout_abstract_function (tree decl)
*** 1554,1559 ****
--- 1555,1567 ----
      (*dwarf2_debug_hooks.outlining_inline_function) (decl);
  }
  
+ static void
+ vmsdbgout_early_finish (const char *filename)
+ {
+   if (write_symbols == VMS_AND_DWARF2_DEBUG)
+     (*dwarf2_debug_hooks.early_finish) (filename);
+ }
+ 
  /* Output stuff that Debug requires at the end of every file and generate the
     VMS Debug debugging info.  */
  
diff -Nrcpad gcc-7.3.0/gnattools/ChangeLog gcc-7.4.0/gnattools/ChangeLog
*** gcc-7.3.0/gnattools/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gnattools/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/gotools/ChangeLog gcc-7.4.0/gotools/ChangeLog
*** gcc-7.3.0/gotools/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/gotools/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/include/ChangeLog gcc-7.4.0/include/ChangeLog
*** gcc-7.3.0/include/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/include/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/intl/ChangeLog gcc-7.4.0/intl/ChangeLog
*** gcc-7.3.0/intl/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/intl/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libada/ChangeLog gcc-7.4.0/libada/ChangeLog
*** gcc-7.3.0/libada/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libada/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,15 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libada/configure gcc-7.4.0/libada/configure
*** gcc-7.3.0/libada/configure	Thu Jun  1 10:51:50 2017
--- gcc-7.4.0/libada/configure	Fri Jun 22 21:16:41 2018
*************** fi
*** 3018,3024 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 3018,3024 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libatomic/ChangeLog gcc-7.4.0/libatomic/ChangeLog
*** gcc-7.3.0/libatomic/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libatomic/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,23 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
+ 2018-03-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	Backport from mainline
+ 	2018-03-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+ 
+ 	* config/s390/exch_n.c: New file.
+ 	* configure.tgt: Add the config directory for s390.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libatomic/config/s390/exch_n.c gcc-7.4.0/libatomic/config/s390/exch_n.c
*** gcc-7.3.0/libatomic/config/s390/exch_n.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libatomic/config/s390/exch_n.c	Fri Mar  9 12:35:17 2018
***************
*** 0 ****
--- 1,69 ----
+ /* Copyright (C) 2018 Free Software Foundation, Inc.
+    Contributed by Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+ 
+    This file is part of the GNU Atomic Library (libatomic).
+ 
+    Libatomic is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3 of the License, or
+    (at your option) any later version.
+ 
+    Libatomic is distributed in the hope that it will be useful, but WITHOUT ANY
+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+    FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+    more details.
+ 
+    Under Section 7 of GPL version 3, you are granted additional
+    permissions described in the GCC Runtime Library Exception, version
+    3.1, as published by the Free Software Foundation.
+ 
+    You should have received a copy of the GNU General Public License and
+    a copy of the GCC Runtime Library Exception along with this program;
+    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #include <libatomic_i.h>
+ 
+ 
+ /* The compiler builtin will use the hardware instruction cdsg if the
+    memory operand is properly aligned and will fall back to the
+    library call otherwise.
+ 
+    In case the compiler for one part is able to detect that the
+    location is aligned and fails to do so for another usage of the hw
+    instruction and the sw fall back would be mixed on the same memory
+    location.  To avoid this the library fall back also has to use the
+    hardware instruction if possible.  */
+ 
+ #if !DONE && N == 16
+ UTYPE
+ SIZE(libat_exchange) (UTYPE *mptr, UTYPE newval, int smodel UNUSED)
+ {
+   if (!((uintptr_t)mptr & 0xf))
+     {
+       /* Use the builtin only if the memory operand is 16 byte
+ 	 aligned.  */
+       return __atomic_exchange_n ((UTYPE *)__builtin_assume_aligned (mptr, 16),
+ 				  newval, __ATOMIC_SEQ_CST);
+     }
+   else
+     {
+       UTYPE oldval;
+       UWORD magic;
+ 
+       pre_seq_barrier (smodel);
+       magic = protect_start (mptr);
+ 
+       oldval = *mptr;
+       *mptr = newval;
+ 
+       protect_end (mptr, magic);
+       post_seq_barrier (smodel);
+ 
+       return oldval;
+     }
+ }
+ #define DONE 1
+ #endif /* N == 16 */
+ 
+ #include "../../exch_n.c"
diff -Nrcpad gcc-7.3.0/libatomic/configure gcc-7.4.0/libatomic/configure
*** gcc-7.3.0/libatomic/configure	Thu Jan 25 08:17:54 2018
--- gcc-7.4.0/libatomic/configure	Thu Dec  6 09:58:51 2018
*************** _ACEOF
*** 12333,12338 ****
--- 12333,12339 ----
  
  
  
+ 
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __atomic_load/store for size 2" >&5
  $as_echo_n "checking for __atomic_load/store for size 2... " >&6; }
  if test "${libat_cv_have_at_ldst_2+set}" = set; then :
*************** _ACEOF
*** 12400,12405 ****
--- 12401,12407 ----
  
  
  
+ 
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __atomic_load/store for size 4" >&5
  $as_echo_n "checking for __atomic_load/store for size 4... " >&6; }
  if test "${libat_cv_have_at_ldst_4+set}" = set; then :
*************** _ACEOF
*** 12467,12472 ****
--- 12469,12475 ----
  
  
  
+ 
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __atomic_load/store for size 8" >&5
  $as_echo_n "checking for __atomic_load/store for size 8... " >&6; }
  if test "${libat_cv_have_at_ldst_8+set}" = set; then :
*************** _ACEOF
*** 12534,12539 ****
--- 12537,12543 ----
  
  
  
+ 
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __atomic_load/store for size 16" >&5
  $as_echo_n "checking for __atomic_load/store for size 16... " >&6; }
  if test "${libat_cv_have_at_ldst_16+set}" = set; then :
*************** _ACEOF
*** 12602,12607 ****
--- 12606,12612 ----
  
  
  
+ 
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __atomic_test_and_set for size 1" >&5
  $as_echo_n "checking for __atomic_test_and_set for size 1... " >&6; }
  if test "${libat_cv_have_at_tas_1+set}" = set; then :
*************** fi
*** 15267,15273 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 15272,15278 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libatomic/configure.tgt gcc-7.4.0/libatomic/configure.tgt
*** gcc-7.3.0/libatomic/configure.tgt	Mon Feb  6 21:38:57 2017
--- gcc-7.4.0/libatomic/configure.tgt	Fri Mar  9 12:35:17 2018
*************** case "${target}" in
*** 114,119 ****
--- 114,124 ----
  	config_path="${config_path} linux/arm posix"
  	;;
  
+   s390*-*-linux*)
+ 	# OS support for atomic primitives.
+ 	config_path="${config_path} s390 posix"
+ 	;;
+ 
    *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu \
    | *-*-netbsd* | *-*-freebsd* | *-*-openbsd* | *-*-dragonfly* \
    | *-*-solaris2* | *-*-sysv4* | *-*-irix6* | *-*-osf* | *-*-hpux11* \
diff -Nrcpad gcc-7.3.0/libbacktrace/ChangeLog gcc-7.4.0/libbacktrace/ChangeLog
*** gcc-7.3.0/libbacktrace/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libbacktrace/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libcc1/ChangeLog gcc-7.4.0/libcc1/ChangeLog
*** gcc-7.3.0/libcc1/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libcc1/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,15 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libcc1/configure gcc-7.4.0/libcc1/configure
*** gcc-7.3.0/libcc1/configure	Tue Jan 17 09:38:48 2017
--- gcc-7.4.0/libcc1/configure	Fri Jun 22 21:16:41 2018
*************** _ACEOF
*** 14315,14321 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 14315,14321 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libcilkrts/ChangeLog gcc-7.4.0/libcilkrts/ChangeLog
*** gcc-7.3.0/libcilkrts/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libcilkrts/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,15 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libcilkrts/configure gcc-7.4.0/libcilkrts/configure
*** gcc-7.3.0/libcilkrts/configure	Tue Jan 17 09:38:48 2017
--- gcc-7.4.0/libcilkrts/configure	Fri Jun 22 21:16:41 2018
*************** fi
*** 15413,15419 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 15413,15419 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libcpp/ChangeLog gcc-7.4.0/libcpp/ChangeLog
*** gcc-7.3.0/libcpp/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libcpp/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,23 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-01-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR preprocessor/69869
+ 	* traditional.c (skip_macro_block_comment): Return bool, true if
+ 	the macro block comment is unterminated.
+ 	(copy_comment): Use return value from skip_macro_block_comment instead
+ 	of always false.
+ 
+ 	2018-01-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* include/cpplib.h (enum cpp_builtin_type): Change BT_LAST_USER from
+ 	BT_FIRST_USER + 31 to BT_FIRST_USER + 63.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libcpp/include/cpplib.h gcc-7.4.0/libcpp/include/cpplib.h
*** gcc-7.3.0/libcpp/include/cpplib.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libcpp/include/cpplib.h	Sat Mar  3 13:20:13 2018
*************** enum cpp_builtin_type
*** 702,708 ****
    BT_COUNTER,			/* `__COUNTER__' */
    BT_HAS_ATTRIBUTE,		/* `__has_attribute__(x)' */
    BT_FIRST_USER,		/* User defined builtin macros.  */
!   BT_LAST_USER = BT_FIRST_USER + 31
  };
  
  #define CPP_HASHNODE(HNODE)	((cpp_hashnode *) (HNODE))
--- 702,708 ----
    BT_COUNTER,			/* `__COUNTER__' */
    BT_HAS_ATTRIBUTE,		/* `__has_attribute__(x)' */
    BT_FIRST_USER,		/* User defined builtin macros.  */
!   BT_LAST_USER = BT_FIRST_USER + 63
  };
  
  #define CPP_HASHNODE(HNODE)	((cpp_hashnode *) (HNODE))
diff -Nrcpad gcc-7.3.0/libcpp/lex.c gcc-7.4.0/libcpp/lex.c
*** gcc-7.3.0/libcpp/lex.c	Fri Jan  5 13:58:54 2018
--- gcc-7.4.0/libcpp/lex.c	Fri Jun 29 09:31:30 2018
*************** search_line_fast (const uchar *s, const
*** 568,574 ****
      {
        vc m_nl, m_cr, m_bs, m_qm;
  
!       data = *((const vc *)s);
        s += 16;
  
        m_nl = (vc) __builtin_vec_cmpeq(data, repl_nl);
--- 568,574 ----
      {
        vc m_nl, m_cr, m_bs, m_qm;
  
!       data = __builtin_vec_vsx_ld (0, s);
        s += 16;
  
        m_nl = (vc) __builtin_vec_cmpeq(data, repl_nl);
diff -Nrcpad gcc-7.3.0/libcpp/po/ChangeLog gcc-7.4.0/libcpp/po/ChangeLog
*** gcc-7.3.0/libcpp/po/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libcpp/po/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libcpp/traditional.c gcc-7.4.0/libcpp/traditional.c
*** gcc-7.3.0/libcpp/traditional.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libcpp/traditional.c	Sat Mar  3 13:22:45 2018
*************** check_output_buffer (cpp_reader *pfile,
*** 119,126 ****
  }
  
  /* Skip a C-style block comment in a macro as a result of -CC.
!    Buffer->cur points to the initial asterisk of the comment.  */
! static void
  skip_macro_block_comment (cpp_reader *pfile)
  {
    const uchar *cur = pfile->buffer->cur;
--- 119,129 ----
  }
  
  /* Skip a C-style block comment in a macro as a result of -CC.
!    PFILE->buffer->cur points to the initial asterisk of the comment,
!    change it to point to after the '*' and '/' characters that terminate it.
!    Return true if the macro has not been termined, in that case set
!    PFILE->buffer->cur to the end of the buffer.  */
! static bool
  skip_macro_block_comment (cpp_reader *pfile)
  {
    const uchar *cur = pfile->buffer->cur;
*************** skip_macro_block_comment (cpp_reader *pf
*** 131,140 ****
  
    /* People like decorating comments with '*', so check for '/'
       instead for efficiency.  */
!   while(! (*cur++ == '/' && cur[-2] == '*') )
!     ;
  
    pfile->buffer->cur = cur;
  }
  
  /* CUR points to the asterisk introducing a comment in the current
--- 134,148 ----
  
    /* People like decorating comments with '*', so check for '/'
       instead for efficiency.  */
!   while (! (*cur++ == '/' && cur[-2] == '*'))
!     if (cur[-1] == '\n')
!       {
! 	pfile->buffer->cur = cur - 1;
! 	return true;
!       }
  
    pfile->buffer->cur = cur;
+   return false;
  }
  
  /* CUR points to the asterisk introducing a comment in the current
*************** copy_comment (cpp_reader *pfile, const u
*** 158,164 ****
  
    buffer->cur = cur;
    if (pfile->context->prev)
!     unterminated = false, skip_macro_block_comment (pfile);
    else
      unterminated = _cpp_skip_block_comment (pfile);
      
--- 166,172 ----
  
    buffer->cur = cur;
    if (pfile->context->prev)
!     unterminated = skip_macro_block_comment (pfile);
    else
      unterminated = _cpp_skip_block_comment (pfile);
      
diff -Nrcpad gcc-7.3.0/libdecnumber/ChangeLog gcc-7.4.0/libdecnumber/ChangeLog
*** gcc-7.3.0/libdecnumber/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libdecnumber/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libffi/ChangeLog gcc-7.4.0/libffi/ChangeLog
*** gcc-7.3.0/libffi/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libffi/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,15 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libffi/configure gcc-7.4.0/libffi/configure
*** gcc-7.3.0/libffi/configure	Thu Jan 25 08:17:54 2018
--- gcc-7.4.0/libffi/configure	Thu Dec  6 09:58:51 2018
*************** $as_echo "$as_me: versioning on shared l
*** 16444,16450 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 16444,16450 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libgcc/ChangeLog gcc-7.4.0/libgcc/ChangeLog
*** gcc-7.3.0/libgcc/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libgcc/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,73 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-08-17  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2018-08-11  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/linux-atomic.c: Update comment.
+ 	(FETCH_AND_OP_2, OP_AND_FETCH_2, FETCH_AND_OP_WORD, OP_AND_FETCH_WORD,
+ 	COMPARE_AND_SWAP_2, __sync_val_compare_and_swap_4,
+ 	SYNC_LOCK_TEST_AND_SET_2, __sync_lock_test_and_set_4): Use
+ 	__ATOMIC_RELAXED for atomic loads.
+ 	(SYNC_LOCK_RELEASE_1): New define.  Use __sync_synchronize() and
+ 	unordered store to release lock.
+ 	(__sync_lock_release_8): Likewise.
+ 	(SYNC_LOCK_RELEASE_2): Remove define.
+ 	 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
+ 2018-06-22  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	Backport from mainline
+ 	2018-05-17  Jerome Lambourg  <lambourg@adacore.com>
+ 
+ 	* config/arm/cmse.c (cmse_check_address_range): Replace
+ 	UINTPTR_MAX with __UINTPTR_MAX__ and uintptr_t with __UINTPTR_TYPE__.
+ 
+ 2018-04-02  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline
+ 	2018-03-29  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/85100
+ 	* config/i386/cpuinfo.c (XCR_XFEATURE_ENABLED_MASK): New.
+ 	(XSTATE_FP): Likewise.
+ 	(XSTATE_SSE): Likewise.
+ 	(XSTATE_YMM): Likewise.
+ 	(XSTATE_OPMASK): Likewise.
+ 	(XSTATE_ZMM): Likewise.
+ 	(XSTATE_HI_ZMM): Likewise.
+ 	(XCR_AVX_ENABLED_MASK): Likewise.
+ 	(XCR_AVX512F_ENABLED_MASK): Likewise.
+ 	(get_available_features): Enable AVX and AVX512 features only
+ 	if their states are supported by OSXSAVE.
+ 
+ 2018-03-11  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/fptr.c (_dl_read_access_allowed): New.
+ 	(__canonicalize_funcptr_for_compare): Use it.
+ 	
+ 2018-02-20  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	Backport from mainline
+ 	2018-02-20  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/ieee754-df.S (__adddf3_aux): Add
+ 	.literal_position directive.
+ 	* config/xtensa/ieee754-sf.S (__addsf3_aux): Likewise.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libgcc/config/arm/cmse.c gcc-7.4.0/libgcc/config/arm/cmse.c
*** gcc-7.3.0/libgcc/config/arm/cmse.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libgcc/config/arm/cmse.c	Fri Jun 22 14:35:24 2018
*************** cmse_check_address_range (void *p, size_
*** 36,42 ****
    char *pb = (char *) p, *pe;
  
    /* Check if the range wraps around.  */
!   if (UINTPTR_MAX - (uintptr_t) p < size)
      return NULL;
  
    /* Check if an unknown flag is present.  */
--- 36,42 ----
    char *pb = (char *) p, *pe;
  
    /* Check if the range wraps around.  */
!   if (__UINTPTR_MAX__ - (__UINTPTR_TYPE__) p < size)
      return NULL;
  
    /* Check if an unknown flag is present.  */
*************** cmse_check_address_range (void *p, size_
*** 51,57 ****
  
    /* Execute the right variant of the TT instructions.  */
    pe = pb + size - 1;
!   const int singleCheck = (((uintptr_t) pb ^ (uintptr_t) pe) < 32);
    switch (flags & known_secure_level)
      {
      case 0:
--- 51,58 ----
  
    /* Execute the right variant of the TT instructions.  */
    pe = pb + size - 1;
!   const int singleCheck
!     = (((__UINTPTR_TYPE__) pb ^ (__UINTPTR_TYPE__) pe) < 32);
    switch (flags & known_secure_level)
      {
      case 0:
diff -Nrcpad gcc-7.3.0/libgcc/config/i386/cpuinfo.c gcc-7.4.0/libgcc/config/i386/cpuinfo.c
*** gcc-7.3.0/libgcc/config/i386/cpuinfo.c	Thu Jan 12 17:30:03 2017
--- gcc-7.4.0/libgcc/config/i386/cpuinfo.c	Mon Apr  2 12:03:16 2018
*************** get_available_features (unsigned int ecx
*** 220,225 ****
--- 220,259 ----
  
    unsigned int features = 0;
  
+   /* Get XCR_XFEATURE_ENABLED_MASK register with xgetbv.  */
+ #define XCR_XFEATURE_ENABLED_MASK	0x0
+ #define XSTATE_FP			0x1
+ #define XSTATE_SSE			0x2
+ #define XSTATE_YMM			0x4
+ #define XSTATE_OPMASK			0x20
+ #define XSTATE_ZMM			0x40
+ #define XSTATE_HI_ZMM			0x80
+ 
+ #define XCR_AVX_ENABLED_MASK \
+   (XSTATE_SSE | XSTATE_YMM)
+ #define XCR_AVX512F_ENABLED_MASK \
+   (XSTATE_SSE | XSTATE_YMM | XSTATE_OPMASK | XSTATE_ZMM | XSTATE_HI_ZMM)
+ 
+   /* Check if AVX and AVX512 are usable.  */
+   int avx_usable = 0;
+   int avx512_usable = 0;
+   if ((ecx & bit_OSXSAVE))
+     {
+       /* Check if XMM, YMM, OPMASK, upper 256 bits of ZMM0-ZMM15 and
+          ZMM16-ZMM31 states are supported by OSXSAVE.  */
+       unsigned int xcrlow;
+       unsigned int xcrhigh;
+       asm (".byte 0x0f, 0x01, 0xd0"
+ 	   : "=a" (xcrlow), "=d" (xcrhigh)
+ 	   : "c" (XCR_XFEATURE_ENABLED_MASK));
+       if ((xcrlow & XCR_AVX_ENABLED_MASK) == XCR_AVX_ENABLED_MASK)
+ 	{
+ 	  avx_usable = 1;
+ 	  avx512_usable = ((xcrlow & XCR_AVX512F_ENABLED_MASK)
+ 			   == XCR_AVX512F_ENABLED_MASK);
+ 	}
+     }
+ 
    if (edx & bit_CMOV)
      features |= (1 << FEATURE_CMOV);
    if (edx & bit_MMX)
*************** get_available_features (unsigned int ecx
*** 242,251 ****
      features |= (1 << FEATURE_SSE4_1);
    if (ecx & bit_SSE4_2)
      features |= (1 << FEATURE_SSE4_2);
!   if (ecx & bit_AVX)
!     features |= (1 << FEATURE_AVX);
!   if (ecx & bit_FMA)
!     features |= (1 << FEATURE_FMA);
  
    /* Get Advanced Features at level 7 (eax = 7, ecx = 0). */
    if (max_cpuid_level >= 7)
--- 276,288 ----
      features |= (1 << FEATURE_SSE4_1);
    if (ecx & bit_SSE4_2)
      features |= (1 << FEATURE_SSE4_2);
!   if (avx_usable)
!     {
!       if (ecx & bit_AVX)
! 	features |= (1 << FEATURE_AVX);
!       if (ecx & bit_FMA)
! 	features |= (1 << FEATURE_FMA);
!     }
  
    /* Get Advanced Features at level 7 (eax = 7, ecx = 0). */
    if (max_cpuid_level >= 7)
*************** get_available_features (unsigned int ecx
*** 253,286 ****
        __cpuid_count (7, 0, eax, ebx, ecx, edx);
        if (ebx & bit_BMI)
          features |= (1 << FEATURE_BMI);
!       if (ebx & bit_AVX2)
! 	features |= (1 << FEATURE_AVX2);
        if (ebx & bit_BMI2)
          features |= (1 << FEATURE_BMI2);
!       if (ebx & bit_AVX512F)
! 	features |= (1 << FEATURE_AVX512F);
!       if (ebx & bit_AVX512VL)
! 	features |= (1 << FEATURE_AVX512VL);
!       if (ebx & bit_AVX512BW)
! 	features |= (1 << FEATURE_AVX512BW);
!       if (ebx & bit_AVX512DQ)
! 	features |= (1 << FEATURE_AVX512DQ);
!       if (ebx & bit_AVX512CD)
! 	features |= (1 << FEATURE_AVX512CD);
!       if (ebx & bit_AVX512PF)
! 	features |= (1 << FEATURE_AVX512PF);
!       if (ebx & bit_AVX512ER)
! 	features |= (1 << FEATURE_AVX512ER);
!       if (ebx & bit_AVX512IFMA)
! 	features |= (1 << FEATURE_AVX512IFMA);
!       if (ecx & bit_AVX512VBMI)
! 	features |= (1 << FEATURE_AVX512VBMI);
!       if (ecx & bit_AVX512VPOPCNTDQ)
! 	features |= (1 << FEATURE_AVX512VPOPCNTDQ);
!       if (edx & bit_AVX5124VNNIW)
! 	features |= (1 << FEATURE_AVX5124VNNIW);
!       if (edx & bit_AVX5124FMAPS)
! 	features |= (1 << FEATURE_AVX5124FMAPS);
      }
  
    /* Check cpuid level of extended features.  */
--- 290,329 ----
        __cpuid_count (7, 0, eax, ebx, ecx, edx);
        if (ebx & bit_BMI)
          features |= (1 << FEATURE_BMI);
!       if (avx_usable)
! 	{
! 	  if (ebx & bit_AVX2)
! 	    features |= (1 << FEATURE_AVX2);
! 	}
        if (ebx & bit_BMI2)
          features |= (1 << FEATURE_BMI2);
!       if (avx512_usable)
! 	{
! 	  if (ebx & bit_AVX512F)
! 	    features |= (1 << FEATURE_AVX512F);
! 	  if (ebx & bit_AVX512VL)
! 	    features |= (1 << FEATURE_AVX512VL);
! 	  if (ebx & bit_AVX512BW)
! 	    features |= (1 << FEATURE_AVX512BW);
! 	  if (ebx & bit_AVX512DQ)
! 	    features |= (1 << FEATURE_AVX512DQ);
! 	  if (ebx & bit_AVX512CD)
! 	    features |= (1 << FEATURE_AVX512CD);
! 	  if (ebx & bit_AVX512PF)
! 	    features |= (1 << FEATURE_AVX512PF);
! 	  if (ebx & bit_AVX512ER)
! 	    features |= (1 << FEATURE_AVX512ER);
! 	  if (ebx & bit_AVX512IFMA)
! 	    features |= (1 << FEATURE_AVX512IFMA);
! 	  if (ecx & bit_AVX512VBMI)
! 	    features |= (1 << FEATURE_AVX512VBMI);
! 	  if (ecx & bit_AVX512VPOPCNTDQ)
! 	    features |= (1 << FEATURE_AVX512VPOPCNTDQ);
! 	  if (edx & bit_AVX5124VNNIW)
! 	    features |= (1 << FEATURE_AVX5124VNNIW);
! 	  if (edx & bit_AVX5124FMAPS)
! 	    features |= (1 << FEATURE_AVX5124FMAPS);
! 	}
      }
  
    /* Check cpuid level of extended features.  */
*************** get_available_features (unsigned int ecx
*** 292,301 ****
  
        if (ecx & bit_SSE4a)
  	features |= (1 << FEATURE_SSE4_A);
!       if (ecx & bit_FMA4)
! 	features |= (1 << FEATURE_FMA4);
!       if (ecx & bit_XOP)
! 	features |= (1 << FEATURE_XOP);
      }
      
    __cpu_model.__cpu_features[0] = features;
--- 335,347 ----
  
        if (ecx & bit_SSE4a)
  	features |= (1 << FEATURE_SSE4_A);
!       if (avx_usable)
! 	{
! 	  if (ecx & bit_FMA4)
! 	    features |= (1 << FEATURE_FMA4);
! 	  if (ecx & bit_XOP)
! 	    features |= (1 << FEATURE_XOP);
! 	}
      }
      
    __cpu_model.__cpu_features[0] = features;
diff -Nrcpad gcc-7.3.0/libgcc/config/libbid/ChangeLog gcc-7.4.0/libgcc/config/libbid/ChangeLog
*** gcc-7.3.0/libgcc/config/libbid/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libgcc/config/libbid/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libgcc/config/pa/fptr.c gcc-7.4.0/libgcc/config/pa/fptr.c
*** gcc-7.3.0/libgcc/config/pa/fptr.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libgcc/config/pa/fptr.c	Sun Mar 11 14:37:40 2018
*************** typedef int (*fptr_t) (void);
*** 52,57 ****
--- 52,67 ----
  typedef int (*fixup_t) (struct link_map *, unsigned int);
  extern unsigned int _GLOBAL_OFFSET_TABLE_;
  
+ static inline int
+ _dl_read_access_allowed (unsigned int *addr)
+ {
+   int result;
+ 
+   asm ("proberi (%1),3,%0" : "=r" (result) : "r" (addr) : );
+ 
+   return result;
+ }
+ 
  /* __canonicalize_funcptr_for_compare must be hidden so that it is not
     placed in the dynamic symbol table.  Like millicode functions, it
     must be linked into all binaries in order access the got table of 
*************** __canonicalize_funcptr_for_compare (fptr
*** 82,87 ****
--- 92,107 ----
       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.  */
diff -Nrcpad gcc-7.3.0/libgcc/config/pa/linux-atomic.c gcc-7.4.0/libgcc/config/pa/linux-atomic.c
*** gcc-7.3.0/libgcc/config/pa/linux-atomic.c	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libgcc/config/pa/linux-atomic.c	Fri Aug 17 22:56:33 2018
*************** see the files COPYING3 and COPYING.RUNTI
*** 28,41 ****
  #define EBUSY   16
  #define ENOSYS 251 
  
! /* All PA-RISC implementations supported by linux have strongly
!    ordered loads and stores.  Only cache flushes and purges can be
!    delayed.  The data cache implementations are all globally
!    coherent.  Thus, there is no need to synchonize memory accesses.
! 
!    GCC automatically issues a asm memory barrier when it encounters
!    a __sync_synchronize builtin.  Thus, we do not need to define this
!    builtin.
  
     We implement byte, short and int versions of each atomic operation
     using the kernel helper defined below.  There is no support for
--- 28,36 ----
  #define EBUSY   16
  #define ENOSYS 251 
  
! /* PA-RISC 2.0 supports out-of-order execution for loads and stores.
!    Thus, we need to synchonize memory accesses.  For more info, see:
!    "Advanced Performance Features of the 64-bit PA-8000" by Doug Hunt.
  
     We implement byte, short and int versions of each atomic operation
     using the kernel helper defined below.  There is no support for
*************** __kernel_cmpxchg2 (void *mem, const void
*** 119,125 ****
      long failure;							\
  									\
      do {								\
!       tmp = __atomic_load_n (ptr, __ATOMIC_SEQ_CST);			\
        newval = PFX_OP (tmp INF_OP val);					\
        failure = __kernel_cmpxchg2 (ptr, &tmp, &newval, INDEX);		\
      } while (failure != 0);						\
--- 114,120 ----
      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);						\
*************** FETCH_AND_OP_2 (nand, ~, &, signed char,
*** 156,162 ****
      long failure;							\
  									\
      do {								\
!       tmp = __atomic_load_n (ptr, __ATOMIC_SEQ_CST);			\
        newval = PFX_OP (tmp INF_OP val);					\
        failure = __kernel_cmpxchg2 (ptr, &tmp, &newval, INDEX);		\
      } while (failure != 0);						\
--- 151,157 ----
      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);						\
*************** OP_AND_FETCH_2 (nand, ~, &, signed char,
*** 193,199 ****
      long failure;							\
  									\
      do {								\
!       tmp = __atomic_load_n (ptr, __ATOMIC_SEQ_CST);			\
        failure = __kernel_cmpxchg (ptr, tmp, PFX_OP (tmp INF_OP val));	\
      } while (failure != 0);						\
  									\
--- 188,194 ----
      long failure;							\
  									\
      do {								\
!       tmp = __atomic_load_n (ptr, __ATOMIC_RELAXED);			\
        failure = __kernel_cmpxchg (ptr, tmp, PFX_OP (tmp INF_OP val));	\
      } while (failure != 0);						\
  									\
*************** FETCH_AND_OP_WORD (nand, ~, &)
*** 215,221 ****
      long failure;							\
  									\
      do {								\
!       tmp = __atomic_load_n (ptr, __ATOMIC_SEQ_CST);			\
        failure = __kernel_cmpxchg (ptr, tmp, PFX_OP (tmp INF_OP val));	\
      } while (failure != 0);						\
  									\
--- 210,216 ----
      long failure;							\
  									\
      do {								\
!       tmp = __atomic_load_n (ptr, __ATOMIC_RELAXED);			\
        failure = __kernel_cmpxchg (ptr, tmp, PFX_OP (tmp INF_OP val));	\
      } while (failure != 0);						\
  									\
*************** typedef unsigned char bool;
*** 241,247 ****
  									\
      while (1)								\
        {									\
! 	actual_oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST);	\
  									\
  	if (__builtin_expect (oldval != actual_oldval, 0))		\
  	  return actual_oldval;						\
--- 236,242 ----
  									\
      while (1)								\
        {									\
! 	actual_oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED);	\
  									\
  	if (__builtin_expect (oldval != actual_oldval, 0))		\
  	  return actual_oldval;						\
*************** __sync_val_compare_and_swap_4 (int *ptr,
*** 273,279 ****
      
    while (1)
      {
!       actual_oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST);
  
        if (__builtin_expect (oldval != actual_oldval, 0))
  	return actual_oldval;
--- 268,274 ----
      
    while (1)
      {
!       actual_oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED);
  
        if (__builtin_expect (oldval != actual_oldval, 0))
  	return actual_oldval;
*************** TYPE HIDDEN								\
*** 300,306 ****
      long failure;							\
  									\
      do {								\
!       oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST);			\
        failure = __kernel_cmpxchg2 (ptr, &oldval, &val, INDEX);		\
      } while (failure != 0);						\
  									\
--- 295,301 ----
      long failure;							\
  									\
      do {								\
!       oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED);			\
        failure = __kernel_cmpxchg2 (ptr, &oldval, &val, INDEX);		\
      } while (failure != 0);						\
  									\
*************** __sync_lock_test_and_set_4 (int *ptr, in
*** 318,355 ****
    int oldval;
  
    do {
!     oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST);
      failure = __kernel_cmpxchg (ptr, oldval, val);
    } while (failure != 0);
  
    return oldval;
  }
  
! #define SYNC_LOCK_RELEASE_2(TYPE, WIDTH, INDEX)			\
    void HIDDEN							\
    __sync_lock_release_##WIDTH (TYPE *ptr)			\
    {								\
!     TYPE oldval, zero = 0;					\
!     long failure;						\
! 								\
!     do {							\
!       oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST);		\
!       failure = __kernel_cmpxchg2 (ptr, &oldval, &zero, INDEX);	\
!     } while (failure != 0);					\
    }
  
! SYNC_LOCK_RELEASE_2 (long long, 8, 3)
! SYNC_LOCK_RELEASE_2 (short, 2, 1)
! SYNC_LOCK_RELEASE_2 (signed char, 1, 0)
! 
! void HIDDEN
! __sync_lock_release_4 (int *ptr)
! {
!   long failure;
!   int oldval;
! 
!   do {
!     oldval = __atomic_load_n (ptr, __ATOMIC_SEQ_CST);
!     failure = __kernel_cmpxchg (ptr, oldval, 0);
!   } while (failure != 0);
! }
--- 313,343 ----
    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)
diff -Nrcpad gcc-7.3.0/libgcc/config/xtensa/ieee754-df.S gcc-7.4.0/libgcc/config/xtensa/ieee754-df.S
*** gcc-7.3.0/libgcc/config/xtensa/ieee754-df.S	Tue Jan 23 21:47:51 2018
--- gcc-7.4.0/libgcc/config/xtensa/ieee754-df.S	Tue Feb 20 21:08:38 2018
*************** __negdf2:
*** 55,60 ****
--- 55,61 ----
  
  #ifdef L_addsubdf3
  
+ 	.literal_position
  	/* Addition */
  __adddf3_aux:
  	
diff -Nrcpad gcc-7.3.0/libgcc/config/xtensa/ieee754-sf.S gcc-7.4.0/libgcc/config/xtensa/ieee754-sf.S
*** gcc-7.3.0/libgcc/config/xtensa/ieee754-sf.S	Tue Jan 23 21:47:51 2018
--- gcc-7.4.0/libgcc/config/xtensa/ieee754-sf.S	Tue Feb 20 21:08:38 2018
*************** __negsf2:
*** 55,60 ****
--- 55,61 ----
  
  #ifdef L_addsubsf3
  
+ 	.literal_position
  	/* Addition */
  __addsf3_aux:
  
diff -Nrcpad gcc-7.3.0/libgcc/configure gcc-7.4.0/libgcc/configure
*** gcc-7.3.0/libgcc/configure	Tue Nov 21 09:31:12 2017
--- gcc-7.4.0/libgcc/configure	Fri Jun 22 21:16:41 2018
*************** esac
*** 5298,5304 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 5298,5304 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libgfortran/ChangeLog gcc-7.4.0/libgfortran/ChangeLog
*** gcc-7.3.0/libgfortran/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libgfortran/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,49 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-10-13  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	Backport from trunk
+ 	* io/close.c [!HAVE_UNLINK_OPEN_FILE]: Include <string.h>.
+ 
+ 2018-09-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	Backport from trunk
+ 	2018-09-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* io/unix.c (fallback_access): Avoid calling close on
+ 	uninitialized file descriptor.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
+ 2018-06-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backport from trunk.
+ 	PR libgfortran/86070
+ 	* io/write_float.def (build_float_string): Initialize *len.
+ 
+ 2018-06-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backport from trunk.
+ 	PR libgfortran/85840
+ 	* io/write.c (write_float_0, write_real, write_real_g0,
+ 	write_complex): Use separate local variables for the float
+ 	string length.
+ 
+ 2018-02-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backport from trunk
+ 	PR libgfortran/84412
+ 	* io/transfer.c (finalize_transfer): After completng an internal unit
+ 	I/O operation, clear internal_unit_kind.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libgfortran/configure gcc-7.4.0/libgfortran/configure
*** gcc-7.3.0/libgfortran/configure	Thu Jan 25 08:17:54 2018
--- gcc-7.4.0/libgfortran/configure	Thu Dec  6 09:58:51 2018
*************** rm -f core conftest.err conftest.$ac_obj
*** 26370,26376 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 26370,26376 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libgfortran/io/close.c gcc-7.4.0/libgfortran/io/close.c
*** gcc-7.3.0/libgfortran/io/close.c	Tue Apr 11 14:51:25 2017
--- gcc-7.4.0/libgfortran/io/close.c	Sat Oct 13 11:25:11 2018
*************** see the files COPYING3 and COPYING.RUNTI
*** 25,30 ****
--- 25,33 ----
  #include "io.h"
  #include "unix.h"
  #include <limits.h>
+ #if !HAVE_UNLINK_OPEN_FILE
+ #include <string.h>
+ #endif
  
  typedef enum
  { CLOSE_DELETE, CLOSE_KEEP, CLOSE_UNSPECIFIED }
diff -Nrcpad gcc-7.3.0/libgfortran/io/transfer.c gcc-7.4.0/libgfortran/io/transfer.c
*** gcc-7.3.0/libgfortran/io/transfer.c	Sat Dec 16 19:59:14 2017
--- gcc-7.4.0/libgfortran/io/transfer.c	Sun Feb 18 16:30:42 2018
*************** finalize_transfer (st_parameter_dt *dtp)
*** 3987,3992 ****
--- 3987,3996 ----
  
    if (dtp->u.p.unit_is_internal)
      {
+       /* The unit structure may be reused later so clear the
+ 	 internal unit kind.  */
+       dtp->u.p.current_unit->internal_unit_kind = 0;
+ 
        fbuf_destroy (dtp->u.p.current_unit);
        if (dtp->u.p.current_unit
  	  && (dtp->u.p.current_unit->child_dtio  == 0)
diff -Nrcpad gcc-7.3.0/libgfortran/io/unix.c gcc-7.4.0/libgfortran/io/unix.c
*** gcc-7.3.0/libgfortran/io/unix.c	Wed Jan  3 11:46:38 2018
--- gcc-7.4.0/libgfortran/io/unix.c	Tue Sep 18 09:02:14 2018
*************** fallback_access (const char *path, int m
*** 149,161 ****
  {
    int fd;
  
!   if ((mode & R_OK) && (fd = open (path, O_RDONLY)) < 0)
!     return -1;
!   close (fd);
  
!   if ((mode & W_OK) && (fd = open (path, O_WRONLY)) < 0)
!     return -1;
!   close (fd);
  
    if (mode == F_OK)
      {
--- 149,169 ----
  {
    int fd;
  
!   if (mode & R_OK)
!     {
!       if ((fd = open (path, O_RDONLY)) < 0)
! 	return -1;
!       else
! 	close (fd);
!     }
  
!   if (mode & W_OK)
!     {
!       if ((fd = open (path, O_WRONLY)) < 0)
! 	return -1;
!       else
! 	close (fd);
!     }
  
    if (mode == F_OK)
      {
diff -Nrcpad gcc-7.3.0/libgfortran/io/write.c gcc-7.4.0/libgfortran/io/write.c
*** gcc-7.3.0/libgfortran/io/write.c	Sun Jan 14 21:44:50 2018
--- gcc-7.4.0/libgfortran/io/write.c	Fri Jun  1 18:34:09 2018
*************** write_character (st_parameter_dt *dtp, c
*** 1483,1489 ****
  
  /* Floating point helper functions.  */
  
! #define BUF_STACK_SZ 256
  
  static int
  get_precision (st_parameter_dt *dtp, const fnode *f, const char *source, int kind)
--- 1483,1489 ----
  
  /* Floating point helper functions.  */
  
! #define BUF_STACK_SZ 384
  
  static int
  get_precision (st_parameter_dt *dtp, const fnode *f, const char *source, int kind)
*************** write_float_0 (st_parameter_dt *dtp, con
*** 1584,1590 ****
    char buf_stack[BUF_STACK_SZ];
    char str_buf[BUF_STACK_SZ];
    char *buffer, *result;
!   size_t buf_size, res_len;
  
    /* Precision for snprintf call.  */
    int precision = get_precision (dtp, f, source, kind);
--- 1584,1590 ----
    char buf_stack[BUF_STACK_SZ];
    char str_buf[BUF_STACK_SZ];
    char *buffer, *result;
!   size_t buf_size, res_len, flt_str_len;
  
    /* Precision for snprintf call.  */
    int precision = get_precision (dtp, f, source, kind);
*************** write_float_0 (st_parameter_dt *dtp, con
*** 1595,1602 ****
    buffer = select_buffer (dtp, f, precision, buf_stack, &buf_size, kind);
    
    get_float_string (dtp, f, source , kind, 0, buffer,
!                            precision, buf_size, result, &res_len);
!   write_float_string (dtp, result, res_len);
  
    if (buf_size > BUF_STACK_SZ)
      free (buffer);
--- 1595,1602 ----
    buffer = select_buffer (dtp, f, precision, buf_stack, &buf_size, kind);
    
    get_float_string (dtp, f, source , kind, 0, buffer,
!                            precision, buf_size, result, &flt_str_len);
!   write_float_string (dtp, result, flt_str_len);
  
    if (buf_size > BUF_STACK_SZ)
      free (buffer);
*************** write_real (st_parameter_dt *dtp, const
*** 1699,1705 ****
    char buf_stack[BUF_STACK_SZ];
    char str_buf[BUF_STACK_SZ];
    char *buffer, *result;
!   size_t buf_size, res_len;
    int orig_scale = dtp->u.p.scale_factor;
    dtp->u.p.scale_factor = 1;
    set_fnode_default (dtp, &f, kind);
--- 1699,1705 ----
    char buf_stack[BUF_STACK_SZ];
    char str_buf[BUF_STACK_SZ];
    char *buffer, *result;
!   size_t buf_size, res_len, flt_str_len;
    int orig_scale = dtp->u.p.scale_factor;
    dtp->u.p.scale_factor = 1;
    set_fnode_default (dtp, &f, kind);
*************** write_real (st_parameter_dt *dtp, const
*** 1714,1721 ****
    buffer = select_buffer (dtp, &f, precision, buf_stack, &buf_size, kind);
    
    get_float_string (dtp, &f, source , kind, 1, buffer,
!                            precision, buf_size, result, &res_len);
!   write_float_string (dtp, result, res_len);
  
    dtp->u.p.scale_factor = orig_scale;
    if (buf_size > BUF_STACK_SZ)
--- 1714,1721 ----
    buffer = select_buffer (dtp, &f, precision, buf_stack, &buf_size, kind);
    
    get_float_string (dtp, &f, source , kind, 1, buffer,
!                            precision, buf_size, result, &flt_str_len);
!   write_float_string (dtp, result, flt_str_len);
  
    dtp->u.p.scale_factor = orig_scale;
    if (buf_size > BUF_STACK_SZ)
*************** write_real_g0 (st_parameter_dt *dtp, con
*** 1734,1740 ****
    char buf_stack[BUF_STACK_SZ];
    char str_buf[BUF_STACK_SZ];
    char *buffer, *result;
!   size_t buf_size, res_len;
    int comp_d;
    set_fnode_default (dtp, &f, kind);
  
--- 1734,1740 ----
    char buf_stack[BUF_STACK_SZ];
    char str_buf[BUF_STACK_SZ];
    char *buffer, *result;
!   size_t buf_size, res_len, flt_str_len;
    int comp_d;
    set_fnode_default (dtp, &f, kind);
  
*************** write_real_g0 (st_parameter_dt *dtp, con
*** 1758,1765 ****
    buffer = select_buffer (dtp, &f, precision, buf_stack, &buf_size, kind);
  
    get_float_string (dtp, &f, source , kind, comp_d, buffer,
!                            precision, buf_size, result, &res_len);
!   write_float_string (dtp, result, res_len);
  
    dtp->u.p.g0_no_blanks = 0;
    if (buf_size > BUF_STACK_SZ)
--- 1758,1765 ----
    buffer = select_buffer (dtp, &f, precision, buf_stack, &buf_size, kind);
  
    get_float_string (dtp, &f, source , kind, comp_d, buffer,
!                            precision, buf_size, result, &flt_str_len);
!   write_float_string (dtp, result, flt_str_len);
  
    dtp->u.p.g0_no_blanks = 0;
    if (buf_size > BUF_STACK_SZ)
*************** write_complex (st_parameter_dt *dtp, con
*** 1784,1790 ****
    char str1_buf[BUF_STACK_SZ];
    char str2_buf[BUF_STACK_SZ];
    char *buffer, *result1, *result2;
!   size_t buf_size, res_len1, res_len2;
    int width, lblanks, orig_scale = dtp->u.p.scale_factor;
  
    dtp->u.p.scale_factor = 1;
--- 1784,1790 ----
    char str1_buf[BUF_STACK_SZ];
    char str2_buf[BUF_STACK_SZ];
    char *buffer, *result1, *result2;
!   size_t buf_size, res_len1, res_len2, flt_str_len1, flt_str_len2;
    int width, lblanks, orig_scale = dtp->u.p.scale_factor;
  
    dtp->u.p.scale_factor = 1;
*************** write_complex (st_parameter_dt *dtp, con
*** 1807,1824 ****
    buffer = select_buffer (dtp, &f, precision, buf_stack, &buf_size, kind);
  
    get_float_string (dtp, &f, source , kind, 0, buffer,
!                            precision, buf_size, result1, &res_len1);
    get_float_string (dtp, &f, source + size / 2 , kind, 0, buffer,
!                            precision, buf_size, result2, &res_len2);
    if (!dtp->u.p.namelist_mode)
      {
!       lblanks = width - res_len1 - res_len2 - 3;
        write_x (dtp, lblanks, lblanks);
      }
    write_char (dtp, '(');
!   write_float_string (dtp, result1, res_len1);
    write_char (dtp, semi_comma);
!   write_float_string (dtp, result2, res_len2);
    write_char (dtp, ')');
  
    dtp->u.p.scale_factor = orig_scale;
--- 1807,1824 ----
    buffer = select_buffer (dtp, &f, precision, buf_stack, &buf_size, kind);
  
    get_float_string (dtp, &f, source , kind, 0, buffer,
!                            precision, buf_size, result1, &flt_str_len1);
    get_float_string (dtp, &f, source + size / 2 , kind, 0, buffer,
!                            precision, buf_size, result2, &flt_str_len2);
    if (!dtp->u.p.namelist_mode)
      {
!       lblanks = width - flt_str_len1 - flt_str_len2 - 3;
        write_x (dtp, lblanks, lblanks);
      }
    write_char (dtp, '(');
!   write_float_string (dtp, result1, flt_str_len1);
    write_char (dtp, semi_comma);
!   write_float_string (dtp, result2, flt_str_len2);
    write_char (dtp, ')');
  
    dtp->u.p.scale_factor = orig_scale;
diff -Nrcpad gcc-7.3.0/libgfortran/io/write_float.def gcc-7.4.0/libgfortran/io/write_float.def
*** gcc-7.3.0/libgfortran/io/write_float.def	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libgfortran/io/write_float.def	Sun Jun 10 03:10:00 2018
*************** build_float_string (st_parameter_dt *dtp
*** 135,140 ****
--- 135,141 ----
    w = f->u.real.w;
    d = f->u.real.d;
    p = dtp->u.p.scale_factor;
+   *len = 0;
  
    rchar = '5';
  
diff -Nrcpad gcc-7.3.0/libgo/config.h.in gcc-7.4.0/libgo/config.h.in
*** gcc-7.3.0/libgo/config.h.in	Mon Oct  9 16:59:38 2017
--- gcc-7.4.0/libgo/config.h.in	Fri Jun 22 14:25:18 2018
***************
*** 340,348 ****
  /* Define to 1 if you have the `unshare' function. */
  #undef HAVE_UNSHARE
  
- /* Define to 1 if you have the <ustat.h> header file and it works. */
- #undef HAVE_USTAT_H
- 
  /* Define to 1 if you have the `utimensat' function. */
  #undef HAVE_UTIMENSAT
  
--- 340,345 ----
diff -Nrcpad gcc-7.3.0/libgo/configure gcc-7.4.0/libgo/configure
*** gcc-7.3.0/libgo/configure	Tue Nov 21 09:31:12 2017
--- gcc-7.4.0/libgo/configure	Fri Jun 22 14:25:18 2018
*************** fi
*** 14784,14822 ****
  done
  
  
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <ustat.h> can be used" >&5
- $as_echo_n "checking whether <ustat.h> can be used... " >&6; }
- if test "${libgo_cv_c_ustat_h+set}" = set; then :
-   $as_echo_n "(cached) " >&6
- else
-   CFLAGS_hold=$CFLAGS
- CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE $OSCFLAGS"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- 
- #include <sys/types.h>
- #ifdef HAVE_LINUX_FILTER_H
- #include <linux/filter.h>
- #endif
- #include <ustat.h>
- 
- _ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
-   libgo_cv_c_ustat_h=yes
- else
-   libgo_cv_c_ustat_h=no
- fi
- rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CFLAGS=$CFLAGS_hold
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgo_cv_c_ustat_h" >&5
- $as_echo "$libgo_cv_c_ustat_h" >&6; }
- if test $libgo_cv_c_ustat_h = yes; then
- 
- $as_echo "#define HAVE_USTAT_H 1" >>confdefs.h
- 
- fi
- 
   if test "$ac_cv_header_sys_mman_h" = yes; then
    HAVE_SYS_MMAN_H_TRUE=
    HAVE_SYS_MMAN_H_FALSE='#'
--- 14784,14789 ----
diff -Nrcpad gcc-7.3.0/libgo/configure.ac gcc-7.4.0/libgo/configure.ac
*** gcc-7.3.0/libgo/configure.ac	Tue Nov 21 09:31:12 2017
--- gcc-7.4.0/libgo/configure.ac	Fri Jun 22 14:25:18 2018
*************** AC_CHECK_HEADERS([linux/filter.h linux/i
*** 572,595 ****
  #endif
  ])
  
- AC_CACHE_CHECK([whether <ustat.h> can be used],
- [libgo_cv_c_ustat_h],
- [CFLAGS_hold=$CFLAGS
- CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE $OSCFLAGS"
- AC_COMPILE_IFELSE(
- [AC_LANG_SOURCE([
- #include <sys/types.h>
- #ifdef HAVE_LINUX_FILTER_H
- #include <linux/filter.h>
- #endif
- #include <ustat.h>
- ])], [libgo_cv_c_ustat_h=yes], [libgo_cv_c_ustat_h=no])
- CFLAGS=$CFLAGS_hold])
- if test $libgo_cv_c_ustat_h = yes; then
-   AC_DEFINE(HAVE_USTAT_H, 1,
-     [Define to 1 if you have the <ustat.h> header file and it works.])
- fi
- 
  AM_CONDITIONAL(HAVE_SYS_MMAN_H, test "$ac_cv_header_sys_mman_h" = yes)
  
  AC_CHECK_FUNCS(strerror_r strsignal wait4 mincore setenv unsetenv dl_iterate_phdr)
--- 572,577 ----
diff -Nrcpad gcc-7.3.0/libgo/go/os/wait_waitid.go gcc-7.4.0/libgo/go/os/wait_waitid.go
*** gcc-7.3.0/libgo/go/os/wait_waitid.go	Fri Jun 23 17:12:32 2017
--- gcc-7.4.0/libgo/go/os/wait_waitid.go	Mon Jul  2 16:29:24 2018
*************** func (p *Process) blockUntilWaitable() (
*** 25,33 ****
  	// We don't care about the values it returns.
  	var siginfo [16]uint64
  	psig := &siginfo[0]
! 	_, _, e := syscall.Syscall6(syscall.SYS_WAITID, _P_PID, uintptr(p.Pid), uintptr(unsafe.Pointer(psig)), syscall.WEXITED|syscall.WNOWAIT, 0, 0)
  	runtime.KeepAlive(p)
! 	if e != 0 {
  		// waitid has been available since Linux 2.6.9, but
  		// reportedly is not available in Ubuntu on Windows.
  		// See issue 16610.
--- 25,36 ----
  	// We don't care about the values it returns.
  	var siginfo [16]uint64
  	psig := &siginfo[0]
! 	r, _, e := syscall.Syscall6(syscall.SYS_WAITID, _P_PID, uintptr(p.Pid), uintptr(unsafe.Pointer(psig)), syscall.WEXITED|syscall.WNOWAIT, 0, 0)
  	runtime.KeepAlive(p)
! 	// Check r as well as e because syscall.Syscall6 currently
! 	// just returns errno, and the SIGCHLD signal handler may
! 	// change errno. See https://gcc.gnu.org/PR86331.
! 	if r != 0 && e != 0 {
  		// waitid has been available since Linux 2.6.9, but
  		// reportedly is not available in Ubuntu on Windows.
  		// See issue 16610.
diff -Nrcpad gcc-7.3.0/libgo/go/syscall/libcall_linux_ustat.go gcc-7.4.0/libgo/go/syscall/libcall_linux_ustat.go
*** gcc-7.3.0/libgo/go/syscall/libcall_linux_ustat.go	Sat Aug  6 00:36:33 2016
--- gcc-7.4.0/libgo/go/syscall/libcall_linux_ustat.go	Thu Jan  1 00:00:00 1970
***************
*** 1,12 ****
- // Copyright 2015 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- 
- // GNU/Linux library ustat call.
- // This is not supported on some kernels, such as arm64.
- // +build !arm64
- 
- package syscall
- 
- //sys	Ustat(dev int, ubuf *Ustat_t) (err error)
- //ustat(dev _dev_t, ubuf *Ustat_t) _C_int
--- 0 ----
diff -Nrcpad gcc-7.3.0/libgo/mksysinfo.sh gcc-7.4.0/libgo/mksysinfo.sh
*** gcc-7.3.0/libgo/mksysinfo.sh	Tue Nov 21 09:31:12 2017
--- gcc-7.4.0/libgo/mksysinfo.sh	Fri Nov  9 15:29:15 2018
*************** grep '^type _rlimit ' gen-sysinfo.go | \
*** 1088,1094 ****
--- 1088,1107 ----
  grep '^const _RLIMIT_' gen-sysinfo.go |
      sed -e 's/^\(const \)_\(RLIMIT_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
  grep '^const _RLIM_' gen-sysinfo.go |
+     grep -v '^const _RLIM_INFINITY ' |
      sed -e 's/^\(const \)_\(RLIM_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
+ rliminf=""
+ if test "${rlimit}" = "_rlimit64" && grep '^const _RLIM64_INFINITY ' gen-sysinfo.go > /dev/null 2>&1; then
+   rliminf=`grep '^const _RLIM64_INFINITY ' gen-sysinfo.go | sed -e 's/.* //'`
+ else
+   rliminf=`grep '^const _RLIM_INFINITY ' gen-sysinfo.go | sed -e 's/.* //'`
+ fi
+ # For compatibility with the gc syscall package, treat 0xffffffffffffffff as -1.
+ if test "$rliminf" = "0xffffffffffffffff"; then
+   echo "const RLIM_INFINITY = -1" >> ${OUT}
+ elif test -n "$rliminf"; then
+   echo "const RLIM_INFINITY = $rliminf" >> ${OUT}
+ fi
  
  # The sysinfo struct.
  grep '^type _sysinfo ' gen-sysinfo.go | \
*************** grep '^type _sysinfo ' gen-sysinfo.go |
*** 1107,1126 ****
        -e 's/mem_unit/Unit/' \
      >> ${OUT}
  
- # The ustat struct.
- grep '^type _ustat ' gen-sysinfo.go | \
-     sed -e 's/_ustat/Ustat_t/' \
-       -e 's/f_tfree/Tfree/' \
-       -e 's/f_tinode/Tinoe/' \
-       -e 's/f_fname/Fname/' \
-       -e 's/f_fpack/Fpack/' \
-     >> ${OUT}
- # Force it to be defined, as on some older GNU/Linux systems the
- # header file fails when using with <linux/filter.h>.
- if ! grep 'type _ustat ' gen-sysinfo.go >/dev/null 2>&1; then
-   echo 'type Ustat_t struct { Tfree int32; Tinoe uint64; Fname [5+1]int8; Fpack [5+1]int8; }' >> ${OUT}
- fi
- 
  # The utimbuf struct.
  grep '^type _utimbuf ' gen-sysinfo.go | \
      sed -e 's/_utimbuf/Utimbuf/' \
--- 1120,1125 ----
diff -Nrcpad gcc-7.3.0/libgo/sysinfo.c gcc-7.4.0/libgo/sysinfo.c
*** gcc-7.3.0/libgo/sysinfo.c	Mon Oct  9 16:59:38 2017
--- gcc-7.4.0/libgo/sysinfo.c	Fri Jun 22 14:25:18 2018
***************
*** 135,143 ****
  #if defined(HAVE_SYS_SYSINFO_H)
  #include <sys/sysinfo.h>
  #endif
- #if defined(HAVE_USTAT_H)
- #include <ustat.h>
- #endif
  #if defined(HAVE_UTIME_H)
  #include <utime.h>
  #endif
--- 135,140 ----
diff -Nrcpad gcc-7.3.0/libgomp/ChangeLog gcc-7.4.0/libgomp/ChangeLog
*** gcc-7.3.0/libgomp/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libgomp/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,69 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-10-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-07-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/86542
+ 	* testsuite/libgomp.c++/pr86542.C: New test.
+ 
+ 	PR middle-end/86539
+ 	* testsuite/libgomp.c++/pr86539.C: New test.
+ 
+ 	2018-07-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/86660
+ 	* testsuite/libgomp.c/pr86660.c: New test.
+ 
+ 2018-06-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/86291
+ 	* testsuite/libgomp.c++/pr86291.C: New test.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
+ 2018-05-01  Tom de Vries  <tom@codesourcery.com>
+ 
+ 	backport from trunk:
+ 	2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
+ 		    Tom de Vries  <tom@codesourcery.com>
+ 
+ 	PR middle-end/84955
+ 	* testsuite/libgomp.oacc-c-c++-common/pr84955.c: New test.
+ 	* testsuite/libgomp.oacc-fortran/pr84955.f90: New test.
+ 
+ 2018-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-02-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/84418
+ 	* libgomp.fortran/pr84418-1.f90: New test.
+ 	* libgomp.fortran/pr84418-2.f90: New test.
+ 
+ 	2018-01-29  Christoph Spiel  <cspiel@freenet.de>
+ 		    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libgomp/84096
+ 	* omp.h.in (omp_init_nest_lock_with_hint): Use omp_nest_lock_t
+ 	instead of omp_lock_t.
+ 
+ 2018-02-09  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-02-08  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* testsuite/libgomp.hsa.c/staticvar.c: New test.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libgomp/configure gcc-7.4.0/libgomp/configure
*** gcc-7.3.0/libgomp/configure	Thu Jan 25 08:17:54 2018
--- gcc-7.4.0/libgomp/configure	Thu Dec  6 09:58:51 2018
*************** CFLAGS="$save_CFLAGS"
*** 16823,16829 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 16823,16829 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libgomp/libgomp.info gcc-7.4.0/libgomp/libgomp.info
*** gcc-7.3.0/libgomp/libgomp.info	Thu Jan 25 08:44:49 2018
--- gcc-7.4.0/libgomp/libgomp.info	Thu Dec  6 10:24:09 2018
***************
*** 1,5 ****
  This is libgomp.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.3.0/gcc-7.3.0/libgomp/libgomp.texi.
  
  Copyright (C) 2006-2017 Free Software Foundation, Inc.
  
--- 1,5 ----
  This is libgomp.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.4.0/gcc-7.4.0/libgomp/libgomp.texi.
  
  Copyright (C) 2006-2017 Free Software Foundation, Inc.
  
diff -Nrcpad gcc-7.3.0/libgomp/omp.h.in gcc-7.4.0/libgomp/omp.h.in
*** gcc-7.3.0/libgomp/omp.h.in	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libgomp/omp.h.in	Sat Mar  3 13:21:10 2018
*************** extern void omp_unset_lock (omp_lock_t *
*** 101,107 ****
  extern int omp_test_lock (omp_lock_t *) __GOMP_NOTHROW;
  
  extern void omp_init_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
! extern void omp_init_nest_lock_with_hint (omp_lock_t *, omp_lock_hint_t)
    __GOMP_NOTHROW;
  extern void omp_destroy_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
  extern void omp_set_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
--- 101,107 ----
  extern int omp_test_lock (omp_lock_t *) __GOMP_NOTHROW;
  
  extern void omp_init_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
! extern void omp_init_nest_lock_with_hint (omp_nest_lock_t *, omp_lock_hint_t)
    __GOMP_NOTHROW;
  extern void omp_destroy_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
  extern void omp_set_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW;
diff -Nrcpad gcc-7.3.0/libgomp/testsuite/libgomp.c/pr86660.c gcc-7.4.0/libgomp/testsuite/libgomp.c/pr86660.c
*** gcc-7.3.0/libgomp/testsuite/libgomp.c/pr86660.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libgomp/testsuite/libgomp.c/pr86660.c	Fri Oct 12 14:46:18 2018
***************
*** 0 ****
--- 1,28 ----
+ /* PR middle-end/86660 */
+ 
+ #pragma omp declare target
+ int v[20];
+ 
+ void
+ foo (void)
+ {
+   if (v[7] != 2)
+     __builtin_abort ();
+   v[7] = 1;
+ }
+ #pragma omp end declare target
+ 
+ int
+ main ()
+ {
+   v[5] = 8;
+   v[7] = 2;
+   #pragma omp target map (always, tofrom: v)
+   {
+     foo ();
+     v[5] = 3;
+   }
+   if (v[7] != 1 || v[5] != 3)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/libgomp/testsuite/libgomp.c++/pr86291.C gcc-7.4.0/libgomp/testsuite/libgomp.c++/pr86291.C
*** gcc-7.3.0/libgomp/testsuite/libgomp.c++/pr86291.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libgomp/testsuite/libgomp.c++/pr86291.C	Tue Jun 26 11:16:10 2018
***************
*** 0 ****
--- 1,51 ----
+ // PR c++/86291
+ // { dg-do run }
+ // { dg-additional-options "-std=c++11" }
+ 
+ extern "C" void abort ();
+ 
+ struct I
+ {
+   using size_type = __SIZE_TYPE__;
+   using difference_type = __PTRDIFF_TYPE__;
+   using value_type = int;
+   using reference = int &;
+   using pointer = int *;
+   static I begin () { return I{}; }
+   static I end () { I res; res.pos = res.num; return res; }
+   I &operator++ () { ++pos; return *this; }
+   reference operator* () const { return val; }
+   I &operator+= (size_type diff) { pos += diff; return *this; }
+   friend bool operator< (const I &a, const I &b) { return a.pos < b.pos; }
+   friend difference_type operator- (const I &a, const I &b) { return a.pos - b.pos; }
+   size_type pos = 0;
+   size_type num = 1;
+   mutable int val = 0;
+ };
+ 
+ int c;
+ 
+ int
+ main ()
+ {
+ #pragma omp parallel for collapse(10)
+   for (auto i = I::begin (); i < I::end (); ++i)
+     for (auto j = I::begin (); j < I::end (); ++j)
+       for (auto k = I::begin (); k < I::end (); ++k)
+ 	for (auto l = I::begin (); l < I::end (); ++l)
+ 	  for (auto m = I::begin (); m < I::end (); ++m)
+ 	    for (auto n = I::begin (); n < I::end (); ++n)
+ 	      for (auto o = I::begin (); o < I::end (); ++o)
+ 		for (auto p = I::begin (); p < I::end (); ++p)
+ 		  for (auto q = I::begin (); q < I::end (); ++q)
+ 		    for (auto r = I::begin (); r < I::end (); ++r)
+ 		      {
+ 			if (*i != 0 || *j != 0 || *k != 0 || *l != 0 || *m != 0
+ 			    || *n != 0 || *o != 0 || *p != 0 || *q != 0 || *r != 0)
+ 			  abort ();
+ 			#pragma omp atomic
+ 			  c++;
+ 		      }
+   if (c != 1)
+     abort ();
+ }
diff -Nrcpad gcc-7.3.0/libgomp/testsuite/libgomp.c++/pr86539.C gcc-7.4.0/libgomp/testsuite/libgomp.c++/pr86539.C
*** gcc-7.3.0/libgomp/testsuite/libgomp.c++/pr86539.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libgomp/testsuite/libgomp.c++/pr86539.C	Fri Oct 12 14:49:32 2018
***************
*** 0 ****
--- 1,28 ----
+ // PR middle-end/86539
+ 
+ int a[384];
+ 
+ __attribute__((noinline, noclone)) void
+ foo (int &b, int &c)
+ {
+   #pragma omp taskloop shared (a) collapse(3)
+   for (int i = 0; i < 1; i++)
+     for (int *p = &b; p < &c; p++)
+       for (int j = 0; j < 1; j++)
+ 	if (p < &a[128] || p >= &a[256])
+ 	  __builtin_abort ();
+ 	else
+ 	  p[0]++;
+ }
+ 
+ int
+ main ()
+ {
+   #pragma omp parallel
+   #pragma omp single
+     foo (a[128], a[256]);
+   for (int i = 0; i < 384; i++)
+     if (a[i] != (i >= 128 && i < 256))
+       __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/libgomp/testsuite/libgomp.c++/pr86542.C gcc-7.4.0/libgomp/testsuite/libgomp.c++/pr86542.C
*** gcc-7.3.0/libgomp/testsuite/libgomp.c++/pr86542.C	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libgomp/testsuite/libgomp.c++/pr86542.C	Fri Oct 12 14:52:18 2018
***************
*** 0 ****
--- 1,37 ----
+ // PR middle-end/86542
+ 
+ struct S { int s; S (); ~S (); S (const S &); };
+ S s;
+ 
+ S::S ()
+ {
+ }
+ 
+ S::~S ()
+ {
+ }
+ 
+ S::S (const S &x)
+ {
+   s = x.s;
+ }
+ 
+ __attribute__((noinline, noclone)) void
+ foo (int i, int j, int k, S s)
+ {
+   if (i != 0 || j != 0 || k != 0 || s.s != 12)
+     __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+   volatile int inc = 16, jnc = 16, knc = 16;
+   s.s = 12;
+   #pragma omp taskloop collapse (3) firstprivate (s)
+   for (int i = 0; i < 16; i += inc)
+     for (int j = 0; j < 16; j += jnc)
+       for (int k = 0; k < 16; k += knc)
+ 	foo (i, j, k, s);
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/libgomp/testsuite/libgomp.fortran/pr84418-1.f90 gcc-7.4.0/libgomp/testsuite/libgomp.fortran/pr84418-1.f90
*** gcc-7.3.0/libgomp/testsuite/libgomp.fortran/pr84418-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libgomp/testsuite/libgomp.fortran/pr84418-1.f90	Sat Mar  3 13:33:26 2018
***************
*** 0 ****
--- 1,26 ----
+ ! PR fortran/84418
+ ! { dg-do run { target vect_simd_clones } }
+ ! { dg-options "-fno-inline" }
+ ! { dg-additional-options "-msse2" { target sse2_runtime } }
+ ! { dg-additional-options "-mavx" { target avx_runtime } }
+ 
+   real :: a(1024), b(1024), c(1024)
+   integer :: i
+   do i = 1, 1024
+     a(i) = 0.5 * i
+     b(i) = 1.5 * i
+   end do
+   !$omp simd
+   do i = 1, 1024
+     c(i) = foo (a(i), b(i))
+   end do
+   do i = 1, 1024
+     if (c(i).ne.(2 * i)) call abort
+   end do
+ contains
+   real function foo (x, y)
+     real :: x, y
+     !$omp declare simd linear (ref (x, y))
+     foo = x + y
+   end function
+ end
diff -Nrcpad gcc-7.3.0/libgomp/testsuite/libgomp.fortran/pr84418-2.f90 gcc-7.4.0/libgomp/testsuite/libgomp.fortran/pr84418-2.f90
*** gcc-7.3.0/libgomp/testsuite/libgomp.fortran/pr84418-2.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libgomp/testsuite/libgomp.fortran/pr84418-2.f90	Sat Mar  3 13:33:26 2018
***************
*** 0 ****
--- 1,35 ----
+ ! PR fortran/84418
+ ! { dg-do run { target vect_simd_clones } }
+ ! { dg-options "-fno-inline" }
+ ! { dg-additional-options "-msse2" { target sse2_runtime } }
+ ! { dg-additional-options "-mavx" { target avx_runtime } }
+ 
+   type p
+     integer :: i, j
+   end type
+   type(p) :: a(1024)
+   integer :: b(4,1024), c(1024)
+   integer :: i
+   do i = 1, 1024
+     a(i)%i = 2 * i
+     a(i)%j = 3 * i
+     b(1,i) = 4 * i
+     b(2,i) = 5 * i
+     b(3,i) = 6 * i
+     b(4,i) = 7 * i
+   end do
+   !$omp simd
+   do i = 1, 1024
+     c(i) = foo (a(i), b(:,i))
+   end do
+   do i = 1, 1024
+     if (c(i).ne.(6 * i)) call abort
+   end do
+ contains  
+   function foo (x, y)
+     type (p) :: x
+     integer :: y(4), foo
+     !$omp declare simd linear (ref (x, y))
+     foo = x%i + y(1)
+   end function
+ end
diff -Nrcpad gcc-7.3.0/libgomp/testsuite/libgomp.hsa.c/staticvar.c gcc-7.4.0/libgomp/testsuite/libgomp.hsa.c/staticvar.c
*** gcc-7.3.0/libgomp/testsuite/libgomp.hsa.c/staticvar.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libgomp/testsuite/libgomp.hsa.c/staticvar.c	Fri Feb  9 15:49:20 2018
***************
*** 0 ****
--- 1,23 ----
+ extern void abort (void);
+ 
+ #pragma omp declare target
+ int
+ foo (void)
+ {
+   static int s;
+   return ++s;
+ }
+ #pragma omp end declare target
+ 
+ int
+ main ()
+ {
+   int r;
+   #pragma omp target map(from:r)
+   {
+     r = foo ();
+   }
+   if (r != 1)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955.c gcc-7.4.0/libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955.c
*** gcc-7.3.0/libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955.c	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libgomp/testsuite/libgomp.oacc-c-c++-common/pr84955.c	Tue May  1 13:21:19 2018
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile }  */
+ 
+ int
+ main (void)
+ {
+   int i, j;
+ 
+ #pragma acc parallel loop tile(2,3)
+   for (i = 1; i < 10; i++)
+     for (j = 1; j < 10; j++)
+       for (;;)
+ 	;
+ 
+   return i + j;
+ }
diff -Nrcpad gcc-7.3.0/libgomp/testsuite/libgomp.oacc-fortran/pr84955.f90 gcc-7.4.0/libgomp/testsuite/libgomp.oacc-fortran/pr84955.f90
*** gcc-7.3.0/libgomp/testsuite/libgomp.oacc-fortran/pr84955.f90	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libgomp/testsuite/libgomp.oacc-fortran/pr84955.f90	Tue May  1 13:21:19 2018
***************
*** 0 ****
--- 1,13 ----
+ ! { dg-do compile }
+ 
+ subroutine s
+    integer :: i, j
+    !$acc parallel loop tile(2,3)
+    do i = 1, 10
+       do j = 1, 10
+          do
+          end do
+       end do
+    end do
+   !$acc end parallel loop
+ end subroutine s
diff -Nrcpad gcc-7.3.0/libhsail-rt/ChangeLog gcc-7.4.0/libhsail-rt/ChangeLog
*** gcc-7.3.0/libhsail-rt/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libhsail-rt/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,15 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libhsail-rt/configure gcc-7.4.0/libhsail-rt/configure
*** gcc-7.3.0/libhsail-rt/configure	Thu Jan 25 08:17:54 2018
--- gcc-7.4.0/libhsail-rt/configure	Thu Dec  6 09:58:51 2018
*************** _ACEOF
*** 14414,14420 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 14414,14420 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libiberty/ChangeLog gcc-7.4.0/libiberty/ChangeLog
*** gcc-7.3.0/libiberty/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libiberty/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libitm/ChangeLog gcc-7.4.0/libitm/ChangeLog
*** gcc-7.3.0/libitm/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libitm/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,15 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libitm/configure gcc-7.4.0/libitm/configure
*** gcc-7.3.0/libitm/configure	Thu Jan 25 08:17:54 2018
--- gcc-7.4.0/libitm/configure	Thu Dec  6 09:58:51 2018
*************** fi
*** 17647,17653 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 17647,17653 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libitm/libitm.info gcc-7.4.0/libitm/libitm.info
*** gcc-7.3.0/libitm/libitm.info	Thu Jan 25 08:46:25 2018
--- gcc-7.4.0/libitm/libitm.info	Thu Dec  6 10:25:31 2018
***************
*** 1,5 ****
  This is libitm.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.3.0/gcc-7.3.0/libitm/libitm.texi.
  
  Copyright (C) 2011-2017 Free Software Foundation, Inc.
  
--- 1,5 ----
  This is libitm.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.4.0/gcc-7.4.0/libitm/libitm.texi.
  
  Copyright (C) 2011-2017 Free Software Foundation, Inc.
  
diff -Nrcpad gcc-7.3.0/libmpx/ChangeLog gcc-7.4.0/libmpx/ChangeLog
*** gcc-7.3.0/libmpx/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libmpx/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,15 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libmpx/configure gcc-7.4.0/libmpx/configure
*** gcc-7.3.0/libmpx/configure	Thu Jan 19 12:23:00 2017
--- gcc-7.4.0/libmpx/configure	Fri Jun 22 21:16:41 2018
*************** fi
*** 11596,11602 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 11596,11602 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libobjc/ChangeLog gcc-7.4.0/libobjc/ChangeLog
*** gcc-7.3.0/libobjc/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libobjc/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,15 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libobjc/configure gcc-7.4.0/libobjc/configure
*** gcc-7.3.0/libobjc/configure	Wed Jan 18 15:48:54 2017
--- gcc-7.4.0/libobjc/configure	Fri Jun 22 21:16:41 2018
*************** fi
*** 11708,11714 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 11708,11714 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/liboffloadmic/ChangeLog gcc-7.4.0/liboffloadmic/ChangeLog
*** gcc-7.3.0/liboffloadmic/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/liboffloadmic/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,16 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 	* plugin/confugure: Regenerate.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/liboffloadmic/configure gcc-7.4.0/liboffloadmic/configure
*** gcc-7.3.0/liboffloadmic/configure	Tue Jan 17 09:38:48 2017
--- gcc-7.4.0/liboffloadmic/configure	Fri Jun 22 21:16:41 2018
*************** fi
*** 14492,14498 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 14492,14498 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/liboffloadmic/plugin/configure gcc-7.4.0/liboffloadmic/plugin/configure
*** gcc-7.3.0/liboffloadmic/plugin/configure	Sat Jan 21 08:47:11 2017
--- gcc-7.4.0/liboffloadmic/plugin/configure	Fri Jun 22 21:16:41 2018
*************** hardcode_into_libs=no
*** 14187,14193 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 14187,14193 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libquadmath/ChangeLog gcc-7.4.0/libquadmath/ChangeLog
*** gcc-7.3.0/libquadmath/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libquadmath/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,15 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libquadmath/configure gcc-7.4.0/libquadmath/configure
*** gcc-7.3.0/libquadmath/configure	Thu Jan 25 08:17:54 2018
--- gcc-7.4.0/libquadmath/configure	Thu Dec  6 09:58:51 2018
*************** fi
*** 12929,12935 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 12929,12935 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libquadmath/libquadmath.info gcc-7.4.0/libquadmath/libquadmath.info
*** gcc-7.3.0/libquadmath/libquadmath.info	Thu Jan 25 08:46:23 2018
--- gcc-7.4.0/libquadmath/libquadmath.info	Thu Dec  6 10:25:28 2018
***************
*** 1,5 ****
  This is libquadmath.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.3.0/gcc-7.3.0/libquadmath/libquadmath.texi.
  
  Copyright (C) 2010-2017 Free Software Foundation, Inc.
  
--- 1,5 ----
  This is libquadmath.info, produced by makeinfo version 4.13 from
! /space/rguenther/gcc-7.4.0/gcc-7.4.0/libquadmath/libquadmath.texi.
  
  Copyright (C) 2010-2017 Free Software Foundation, Inc.
  
diff -Nrcpad gcc-7.3.0/libsanitizer/ChangeLog gcc-7.4.0/libsanitizer/ChangeLog
*** gcc-7.3.0/libsanitizer/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libsanitizer/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,61 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-08-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-08-02  Martin Liska  <mliska@suse.cz>
+ 
+         PR sanitizer/86022
+ 	* sanitizer_common/sanitizer_linux_libcdep.cc (ThreadDescriptorSize):
+         Cherry-pick compiler-rt revision 338606.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
+ 2018-06-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backport from mainline
+ 	2018-03-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/84761
+ 	* sanitizer_common/sanitizer_linux_libcdep.cc (__GLIBC_PREREQ):
+ 	Define if not defined.
+ 	(DL_INTERNAL_FUNCTION): Don't define.
+ 	(InitTlsSize): For __i386__ if not compiled against glibc 2.27+
+ 	determine at runtime whether to use regparm(3), stdcall calling
+ 	convention for older glibcs or normal calling convention for
+ 	newer glibcs for call to _dl_get_tls_static_info.
+ 
+ 2018-05-31  Matthias Klose  <doko@ubuntu.com>
+ 
+ 	PR sanitizer/86012
+ 	* sanitizer_common/sanitizer_platform_limits_posix.cc: Define
+ 	SIZEOF_STRUCT_USTAT for 32bit sparc.
+ 
+ 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR sanitizer/85835
+ 	* sanitizer_common/sanitizer_platform_limits_posix.cc: Don't
+ 	include <sys/ustat.h> for Linux.
+ 	(SIZEOF_STRUCT_USTAT): New.
+ 	(struct_ustat_sz): Use SIZEOF_STRUCT_USTAT for Linux.
+ 
+ 2018-04-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backport from mainline
+ 	2018-04-18  Bill Seurer  <seurer@linux.vnet.ibm.com>
+ 
+ 	PR sanitizer/85389
+ 	* asan/asan_allocator.h (kAllocatorSpace): For __powerpc64__ change
+ 	from 0xa0000000000ULL to ~(uptr)0.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libsanitizer/asan/asan_allocator.h gcc-7.4.0/libsanitizer/asan/asan_allocator.h
*** gcc-7.3.0/libsanitizer/asan/asan_allocator.h	Tue Nov  8 22:04:09 2016
--- gcc-7.4.0/libsanitizer/asan/asan_allocator.h	Tue Apr 24 15:19:32 2018
*************** struct AsanMapUnmapCallback {
*** 115,121 ****
  
  #if SANITIZER_CAN_USE_ALLOCATOR64
  # if defined(__powerpc64__)
! const uptr kAllocatorSpace =  0xa0000000000ULL;
  const uptr kAllocatorSize  =  0x20000000000ULL;  // 2T.
  typedef DefaultSizeClassMap SizeClassMap;
  # elif defined(__aarch64__) && SANITIZER_ANDROID
--- 115,121 ----
  
  #if SANITIZER_CAN_USE_ALLOCATOR64
  # if defined(__powerpc64__)
! const uptr kAllocatorSpace = ~(uptr)0;
  const uptr kAllocatorSize  =  0x20000000000ULL;  // 2T.
  typedef DefaultSizeClassMap SizeClassMap;
  # elif defined(__aarch64__) && SANITIZER_ANDROID
diff -Nrcpad gcc-7.3.0/libsanitizer/configure gcc-7.4.0/libsanitizer/configure
*** gcc-7.3.0/libsanitizer/configure	Thu Jan 25 08:17:54 2018
--- gcc-7.4.0/libsanitizer/configure	Thu Dec  6 09:58:51 2018
*************** fi
*** 16511,16517 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 16511,16517 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc gcc-7.4.0/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc
*** gcc-7.3.0/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc	Tue Nov  8 22:04:09 2016
--- gcc-7.4.0/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc	Thu Aug 16 10:19:16 2018
*************** bool SanitizerGetThreadName(char *name,
*** 153,180 ****
  #endif
  }
  
  #if !SANITIZER_FREEBSD && !SANITIZER_ANDROID && !SANITIZER_GO
  static uptr g_tls_size;
  
- #ifdef __i386__
- # define DL_INTERNAL_FUNCTION __attribute__((regparm(3), stdcall))
- #else
- # define DL_INTERNAL_FUNCTION
- #endif
- 
  void InitTlsSize() {
  // all current supported platforms have 16 bytes stack alignment
    const size_t kStackAlign = 16;
-   typedef void (*get_tls_func)(size_t*, size_t*) DL_INTERNAL_FUNCTION;
-   get_tls_func get_tls;
-   void *get_tls_static_info_ptr = dlsym(RTLD_NEXT, "_dl_get_tls_static_info");
-   CHECK_EQ(sizeof(get_tls), sizeof(get_tls_static_info_ptr));
-   internal_memcpy(&get_tls, &get_tls_static_info_ptr,
-                   sizeof(get_tls_static_info_ptr));
-   CHECK_NE(get_tls, 0);
    size_t tls_size = 0;
    size_t tls_align = 0;
!   get_tls(&tls_size, &tls_align);
    if (tls_align < kStackAlign)
      tls_align = kStackAlign;
    g_tls_size = RoundUpTo(tls_size, tls_align);
--- 153,195 ----
  #endif
  }
  
+ #ifndef __GLIBC_PREREQ
+ #define __GLIBC_PREREQ(x, y) 0
+ #endif
+ 
  #if !SANITIZER_FREEBSD && !SANITIZER_ANDROID && !SANITIZER_GO
  static uptr g_tls_size;
  
  void InitTlsSize() {
  // all current supported platforms have 16 bytes stack alignment
    const size_t kStackAlign = 16;
    size_t tls_size = 0;
    size_t tls_align = 0;
!   void *get_tls_static_info_ptr = dlsym(RTLD_NEXT, "_dl_get_tls_static_info");
! #if defined(__i386__) && !__GLIBC_PREREQ(2, 27)
!   /* On i?86, _dl_get_tls_static_info used to be internal_function, i.e.
!      __attribute__((regparm(3), stdcall)) before glibc 2.27 and is normal
!      function in 2.27 and later.  */
!   if (!dlvsym(RTLD_NEXT, "glob", "GLIBC_2.27")) {
!     typedef void (*get_tls_func)(size_t*, size_t*)
!       __attribute__((regparm(3), stdcall));
!     get_tls_func get_tls;
!     CHECK_EQ(sizeof(get_tls), sizeof(get_tls_static_info_ptr));
!     internal_memcpy(&get_tls, &get_tls_static_info_ptr,
!                     sizeof(get_tls_static_info_ptr));
!     CHECK_NE(get_tls, 0);
!     get_tls(&tls_size, &tls_align);
!   } else
! #endif
!   {
!     typedef void (*get_tls_func)(size_t*, size_t*);
!     get_tls_func get_tls;
!     CHECK_EQ(sizeof(get_tls), sizeof(get_tls_static_info_ptr));
!     internal_memcpy(&get_tls, &get_tls_static_info_ptr,
!                     sizeof(get_tls_static_info_ptr));
!     CHECK_NE(get_tls, 0);
!     get_tls(&tls_size, &tls_align);
!   }
    if (tls_align < kStackAlign)
      tls_align = kStackAlign;
    g_tls_size = RoundUpTo(tls_size, tls_align);
*************** uptr ThreadDescriptorSize() {
*** 221,227 ****
          val = FIRST_32_SECOND_64(1168, 1776);
        else if (minor == 11 || (minor == 12 && patch == 1))
          val = FIRST_32_SECOND_64(1168, 2288);
!       else if (minor <= 13)
          val = FIRST_32_SECOND_64(1168, 2304);
        else
          val = FIRST_32_SECOND_64(1216, 2304);
--- 236,242 ----
          val = FIRST_32_SECOND_64(1168, 1776);
        else if (minor == 11 || (minor == 12 && patch == 1))
          val = FIRST_32_SECOND_64(1168, 2288);
!       else if (minor <= 14)
          val = FIRST_32_SECOND_64(1168, 2304);
        else
          val = FIRST_32_SECOND_64(1216, 2304);
diff -Nrcpad gcc-7.3.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc gcc-7.4.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
*** gcc-7.3.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc	Thu Feb 16 21:23:51 2017
--- gcc-7.4.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc	Thu May 31 09:59:35 2018
*************** typedef struct user_fpregs elf_fpregset_
*** 154,160 ****
  # include <sys/procfs.h>
  #endif
  #include <sys/user.h>
- #include <sys/ustat.h>
  #include <linux/cyclades.h>
  #include <linux/if_eql.h>
  #include <linux/if_plip.h>
--- 154,159 ----
*************** namespace __sanitizer {
*** 247,253 ****
  #endif // SANITIZER_LINUX || SANITIZER_FREEBSD
  
  #if SANITIZER_LINUX && !SANITIZER_ANDROID
!   unsigned struct_ustat_sz = sizeof(struct ustat);
    unsigned struct_rlimit64_sz = sizeof(struct rlimit64);
    unsigned struct_statvfs64_sz = sizeof(struct statvfs64);
  #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
--- 246,264 ----
  #endif // SANITIZER_LINUX || SANITIZER_FREEBSD
  
  #if SANITIZER_LINUX && !SANITIZER_ANDROID
!   // Use pre-computed size of struct ustat to avoid <sys/ustat.h> which
!   // has been removed from glibc 2.28.
! #if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \
!   || defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \
!   || defined(__x86_64__)
! #define SIZEOF_STRUCT_USTAT 32
! #elif defined(__arm__) || defined(__i386__) || defined(__mips__) \
!   || defined(__powerpc__) || defined(__s390__) || defined(__sparc__)
! #define SIZEOF_STRUCT_USTAT 20
! #else
! #error Unknown size of struct ustat
! #endif
!   unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT;
    unsigned struct_rlimit64_sz = sizeof(struct rlimit64);
    unsigned struct_statvfs64_sz = sizeof(struct statvfs64);
  #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
diff -Nrcpad gcc-7.3.0/libssp/ChangeLog gcc-7.4.0/libssp/ChangeLog
*** gcc-7.3.0/libssp/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libssp/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,15 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libssp/configure gcc-7.4.0/libssp/configure
*** gcc-7.3.0/libssp/configure	Tue Jan 17 09:38:48 2017
--- gcc-7.4.0/libssp/configure	Fri Jun 22 21:16:41 2018
*************** fi
*** 11082,11088 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 11082,11088 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/libstdc++-v3/ChangeLog gcc-7.4.0/libstdc++-v3/ChangeLog
*** gcc-7.3.0/libstdc++-v3/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libstdc++-v3/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,829 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-11-28  François Dumont  <fdumont@gcc.gnu.org>
+ 
+ 	PR libstdc++/88199
+ 	* include/bits/hashtable.h
+ 	(_Hashtable<>::_M_move_assign(_Hashtable&&, false_type)): Deallocate
+ 	former buckets after assignment.
+ 	* testsuite/23_containers/unordered_set/allocator/move_assign.cc
+ 	(test03): New.
+ 
+ 2018-10-31  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-10-31  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/87822
+ 	* include/bits/stl_pair.h (__pair_base): Change to class template.
+ 	(pair): Make base class type depend on template parameters.
+ 	* testsuite/20_util/pair/87822.cc: New test.
+ 
+ 2018-10-25  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/87749
+ 	* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
+ 	(basic_string::operator=(basic_string&&)): For short strings copy the
+ 	buffer inline. Only fall back to using assign(const basic_string&) to
+ 	do a deep copy when reallocation is needed.
+ 	* testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc:
+ 	New test.
+ 	* testsuite/21_strings/basic_string/modifiers/assign/char/
+ 	move_assign_optim.cc: New test.
+ 	* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc:
+ 	New test.
+ 	* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
+ 	move_assign_optim.cc: New test.
+ 
+ 2018-10-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/87704
+ 	* include/bits/unique_ptr.h (unique_ptr::unique_ptr(nullptr_t)): Do
+ 	not delegate to default constructor.
+ 	(unique_ptr<T[], D>::unique_ptr(nullptr_t)): Likewise.
+ 	* testsuite/20_util/unique_ptr/cons/incomplete.cc: New test.
+ 
+ 2018-10-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2017-09-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/79433
+ 	* include/Makefile.am: Remove <bits/c++14_warning.h>.
+ 	* include/Makefile.in: Regenerate.
+ 	* include/bits/c++14_warning.h: Remove.
+ 	* include/experimental/algorithm: Do not include <c++14_warning.h>.
+ 	* include/experimental/any: Likewise.
+ 	* include/experimental/array: Likewise.
+ 	* include/experimental/bits/erase_if.h: Likewise.
+ 	* include/experimental/bits/lfts_config.h: Likewise.
+ 	* include/experimental/bits/shared_ptr.h: Likewise.
+ 	* include/experimental/bits/string_view.tcc: Likewise.
+ 	* include/experimental/chrono: Likewise.
+ 	* include/experimental/deque: Likewise.
+ 	* include/experimental/filesystem: Do not include <c++0x_warning.h>.
+ 	* include/experimental/forward_list: Do not include <c++14_warning.h>.
+ 	* include/experimental/functional: Likewise.
+ 	* include/experimental/iterator: Likewise.
+ 	* include/experimental/list: Likewise.
+ 	* include/experimental/map: Likewise.
+ 	* include/experimental/memory: Likewise.
+ 	* include/experimental/numeric: Likewise.
+ 	* include/experimental/optional: Likewise.
+ 	* include/experimental/propagate_const: Likewise.
+ 	* include/experimental/ratio: Likewise.
+ 	* include/experimental/regex: Likewise.
+ 	* include/experimental/set: Likewise.
+ 	* include/experimental/string: Likewise.
+ 	* include/experimental/string_view: Likewise.
+ 	* include/experimental/system_error: Likewise.
+ 	* include/experimental/tuple: Likewise.
+ 	* include/experimental/type_traits: Likewise.
+ 	* include/experimental/unordered_map: Likewise.
+ 	* include/experimental/unordered_set: Likewise.
+ 	* include/experimental/vector: Likewise.
+ 	* testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error
+ 	line number.
+ 	* testsuite/experimental/array/neg.cc: Likewise.
+ 	* testsuite/experimental/propagate_const/assignment/move_neg.cc:
+ 	Likewise.
+ 	* testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise.
+ 	* testsuite/experimental/propagate_const/requirements2.cc: Likewise.
+ 	* testsuite/experimental/propagate_const/requirements3.cc: Likewise.
+ 	* testsuite/experimental/propagate_const/requirements4.cc: Likewise.
+ 	* testsuite/experimental/propagate_const/requirements5.cc: Likewise.
+ 
+ 2018-10-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-10-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/87641
+ 	* include/bits/valarray_array.h (__valarray_sum): Use first element
+ 	to initialize accumulator instead of value-initializing it.
+ 	* testsuite/26_numerics/valarray/87641.cc: New test.
+ 
+ 2018-10-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/22_locale/numpunct/members/char/3.cc: Adjust test to
+ 	account for change to glibc it_IT localedata (glibc bz#10797).
+ 
+ 2018-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-07-31  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/86751
+ 	* include/bits/stl_pair.h (__pair_base): New class with deleted copy
+ 	assignment operator.
+ 	(pair): Derive from __pair_base.
+ 	(pair::operator=): Remove deleted overload.
+ 	* python/libstdcxx/v6/printers.py (StdPairPrinter): New pretty printer
+ 	so that new base class isn't shown in GDB.
+ 	* testsuite/20_util/pair/86751.cc: New test.
+ 	* testsuite/20_util/pair/ref_assign.cc: New test.
+ 
+ 2018-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-09-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/78595
+ 	* include/bits/stl_map.h (map::insert(_Pair&&))
+ 	(map::insert(const_iterator, _Pair&&)): Do emplace instead of insert.
+ 	* include/bits/stl_multimap.h (multimap::insert(_Pair&&))
+ 	(multimap::insert(const_iterator, _Pair&&)): Likewise.
+ 	* include/bits/unordered_map.h (unordered_map::insert(_Pair&&))
+ 	(unordered_map::insert(const_iterator, _Pair&&))
+ 	(unordered_multimap::insert(_Pair&&))
+ 	(unordered_multimap::insert(const_iterator, _Pair&&)): Likewise.
+ 	* include/std/type_traits (__enable_if_t): Define for C++11.
+ 	* testsuite/23_containers/map/modifiers/insert/78595.cc: New test.
+ 	* testsuite/23_containers/multimap/modifiers/insert/78595.cc: New test.
+ 	* testsuite/23_containers/unordered_map/modifiers/78595.cc: New test.
+ 	* testsuite/23_containers/unordered_multimap/modifiers/78595.cc: New
+ 	test.
+ 
+ 2018-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-08-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/ext/pointer.h (_Pointer_adapter): Define operators for
+ 	pointer arithmetic using long long offsets.
+ 	* testsuite/ext/ext_pointer/1.cc: Test pointer arithmetic using
+ 	long long values.
+ 
+ 2018-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-08-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/21_strings/basic_string/init-list.cc:
+ 	Require cxx11-abi.
+ 	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
+ 	Likewise.
+ 	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
+ 	Likewise.
+ 
+ 	Backport from mainline
+ 	2018-08-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/87061
+ 	* include/experimental/regex [!_GLIBCXX_USE_CXX11_ABI]
+ 	(experimental::pmr::match_results, experimental::pmr::cmatch)
+ 	(experimental::pmr::smatch, experimental::pmr::wcmatch)
+ 	(experimental::pmr::wsmatch): Do not declare for gcc4-compatible ABI,
+ 	because COW strings don't support C++11 allocator model.
+ 	* include/experimental/string [!_GLIBCXX_USE_CXX11_ABI]
+ 	(experimental::pmr::basic_string, experimental::pmr::string)
+ 	(experimental::pmr::u16string, experimental::pmr::u32string)
+ 	(experimental::pmr::wstring): Likewise.
+ 
+ 	Backport from mainline
+ 	2018-08-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/experimental/regex: Remove begin/end macros for namespace.
+ 	* include/experimental/string: Likewise.
+ 	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc:
+ 	New test.
+ 	* testsuite/experimental/polymorphic_allocator/
+ 	pmr_typedefs_forward_list.cc: New test.
+ 	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc:
+ 	New test.
+ 	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc:
+ 	New test.
+ 	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc:
+ 	New test.
+ 	* testsuite/experimental/polymorphic_allocator/
+ 	pmr_typedefs_multimap.cc: New test.
+ 	* testsuite/experimental/polymorphic_allocator/
+ 	pmr_typedefs_multiset.cc: New test.
+ 	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc:
+ 	New test.
+ 	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
+ 	New test.
+ 	* testsuite/experimental/polymorphic_allocator/
+ 	pmr_typedefs_unordered_map.cc: New test.
+ 	* testsuite/experimental/polymorphic_allocator/
+ 	pmr_typedefs_unordered_multimap.cc: New test.
+ 	* testsuite/experimental/polymorphic_allocator/
+ 	pmr_typedefs_unordered_multiset.cc: New test.
+ 	* testsuite/experimental/polymorphic_allocator/
+ 	pmr_typedefs_unordered_set.cc: New test.
+ 	* testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc:
+ 	New test.
+ 
+ 2018-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-07-24  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/70966
+ 	* include/experimental/memory_resource (__get_default_resource): Use
+ 	placement new to create an object with dynamic storage duration.
+ 
+ 	Backport from mainline
+ 	2018-06-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/70966
+ 	* include/experimental/memory_resource (__resource_adaptor_imp): Add
+ 	static assertions to enforce requirements on pointer types.
+ 	(__resource_adaptor_imp::get_allocator()): Add noexcept.
+ 	(new_delete_resource, null_memory_resource): Return address of an
+ 	object with dynamic storage duration.
+ 	(__null_memory_resource): Remove.
+ 	* testsuite/experimental/memory_resource/70966.cc: New.
+ 
+ 2018-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/77854
+ 	* doc/xml/manual/status_cxx1998.xml: Document size_type and
+ 	difference_type for containers.
+ 	* doc/html/*: Regenerate.
+ 
+ 2018-10-08  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	Backport from mainline
+ 	2018-10-02  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* testsuite/lib/libstdc++.exp (libstdc++_init): Use
+ 	-fno-show-column in default cxxflags.
+ 
+ 2018-10-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-10-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/87538
+ 	* include/std/functional (_Not_fn::operator()): Check value of
+ 	__is_nothrow_invocable as well.
+ 	* testsuite/20_util/function_objects/not_fn/87538.cc: New test.
+ 	* testsuite/experimental/functional/87538.cc: New test.
+ 
+ 2018-08-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Revert
+ 	2018-08-10  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	PR target/85904
+ 	* configure.ac: Define HAVE_ALIGNED_ALLOC if building for
+ 	Newlib.
+ 	* configure: Regenerate.
+ 
+ 2018-08-10  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	Backport from mainline
+ 	2018-08-10  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	PR target/85904
+ 	* configure.ac: Define HAVE_ALIGNED_ALLOC if building for
+ 	Newlib.
+ 	* configure: Regenerate.
+ 
+ 2018-08-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* libsupc++/new_opa.cc (aligned_alloc): Declare inside namespace to
+ 	avoid clashing with an ::aligned_alloc function that was not detected
+ 	by configure.
+ 
+ 	* doc/xml/manual/using.xml: Remove empty table cell.
+ 	* doc/html/*: Regenerate.
+ 
+ 	* doc/xml/manual/using.xml: Add missing header to table and fix typo.
+ 	Remove C++17 and C++2a headers not present on gcc-7-branch.
+ 	* doc/html/*: Regenerate.
+ 
+ 2018-08-07  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-06-27  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/86138
+ 	* include/bits/basic_string.tcc: [_GLIBCXX_EXTERN_TEMPLATE < 0]
+ 	Declare explicit instantiations of COW empty reps and I/O functions.
+ 
+ 	Backport from mainline
+ 	2018-05-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/85672
+ 	* include/Makefile.am [!ENABLE_FLOAT128]: Change c++config.h entry
+ 	to #undef _GLIBCXX_USE_FLOAT128 instead of defining it to zero.
+ 	* include/Makefile.in: Regenerate.
+ 	* include/bits/c++config (_GLIBCXX_USE_FLOAT128): Move definition
+ 	within conditional block.
+ 
+ 	Backport from mainline
+ 	2018-05-01  Tulio Magno Quites Machado Filho  <tuliom@linux.vnet.ibm.com>
+ 
+ 	PR libstdc++/84654
+ 	* acinclude.m4: Set ENABLE_FLOAT128 instead of _GLIBCXX_USE_FLOAT128.
+ 	* config.h.in: Remove references to _GLIBCXX_USE_FLOAT128.
+ 	* configure: Regenerate.
+ 	* include/Makefile.am: Replace the value of _GLIBCXX_USE_FLOAT128
+ 	based on ENABLE_FLOAT128.
+ 	* include/Makefile.in: Regenerate.
+ 	* include/bits/c++config: Define _GLIBCXX_USE_FLOAT128.
+ 	[!defined(__FLOAT128__) && !defined(__SIZEOF_FLOAT128__)]: Undefine
+ 	_GLIBCXX_USE_FLOAT128.
+ 
+ 	Backport from mainline
+ 	2017-06-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/80893
+ 	* testsuite/23_containers/vector/bool/80893.cc: Add { target c++11 }.
+ 
+ 	Backport from mainline
+ 	2017-05-31  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/80893
+ 	* include/bits/stl_bvector.h (vector<bool>::_M_initialize): Avoid
+ 	null pointer dereference when size is zero.
+ 	* testsuite/23_containers/vector/bool/80893.cc: New.
+ 	* testsuite/util/testsuite_allocator.h (PointerBase::PointerBase):
+ 	Add non-explicit constructor from nullptr.
+ 	(PointerBase::derived() const): Add const-qualified overload.
+ 
+ 	Backport from mainline
+ 	2017-12-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/68519
+ 	* include/std/condition_variable (condition_variable::wait_for):
+ 	Convert duration to native clock's duration before addition.
+ 	* testsuite/30_threads/condition_variable/members/68519.cc: New test.
+ 
+ 	Backport from mainline
+ 	2018-06-25  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/86292
+ 	* include/bits/stl_vector.h (vector::_M_range_initialize<InputIter>):
+ 	Add try-catch block.
+ 	* testsuite/23_containers/vector/cons/86292.cc: New.
+ 
+ 	Backport from mainline
+ 	2018-07-31  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/test.xml: Improve documentation on writing tests for
+ 	newer standards.
+ 	* doc/xml/manual/using.xml: Document all headers for C++11 and later.
+ 	* doc/html/*: Regenerate.
+ 
+ 	Backport from mainline
+ 	2018-08-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* src/c++11/system_error.cc
+ 	(system_error_category::default_error_condition): Add workaround for
+ 	ENOTEMPTY and EEXIST having the same value on AIX.
+ 	* testsuite/19_diagnostics/error_category/system_category.cc: Add
+ 	extra testcases for EDOM, EILSEQ, ERANGE, EEXIST and ENOTEMPTY.
+ 
+ 	Backport from mainline
+ 	2018-08-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/60555
+ 	* src/c++11/system_error.cc
+ 	(system_error_category::default_error_condition): New override to
+ 	check for POSIX errno values.
+ 	* testsuite/19_diagnostics/error_category/generic_category.cc: New
+ 	* testsuite/19_diagnostics/error_category/system_category.cc: New
+ 	test.
+ 
+ 	Backport from mainline
+ 	2018-08-07  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/86861
+ 	* libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] (aligned_alloc):
+ 	Replace macro with inline function.
+ 	[__sun]: Increase alignment to meet memalign precondition.
+ 	[!HAVE__ALIGNED_MALLOC && !HAVE_POSIX_MEMALIGN && !HAVE_MEMALIGN]
+ 	(aligned_alloc): Move check for valid alignment to operator new.
+ 	Remove redundant check for non-zero size, it's enforced by the caller.
+ 	(operator new): Move check for valid alignment here. Use
+ 	__builtin_expect on check for zero size.
+ 
+ 	Backport from mainline
+ 	2018-07-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Add
+ 	workaround for aligned_alloc bug on AIX.
+ 	* testsuite/18_support/new_aligned.cc: New test.
+ 
+ 	Backport from mainline
+ 	2018-07-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/86734
+ 	* include/bits/stl_iterator.h (reverse_iterator::operator->): Use
+ 	addressof (LWG 2188).
+ 	* testsuite/24_iterators/reverse_iterator/dr2188.cc: New test.
+ 
+ 	Backport from mainline
+ 	2018-05-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* src/c++11/codecvt.cc (__codecvt_utf8_base<wchar_t>::do_in)
+ 	[__SIZEOF_WCHAR_T__==2 && __BYTE_ORDER__!=__ORDER_BIG_ENDIAN__]: Set
+ 	little_endian element in bitmask.
+ 	* testsuite/22_locale/codecvt/codecvt_utf8/69703.cc: Run all tests.
+ 	* testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: New.
+ 
+ 2018-07-05  François Dumont  <fdumont@gcc.gnu.org>
+ 
+ 	Backport from mainline
+ 	2018-07-04  François Dumont  <fdumont@gcc.gnu.org>
+ 
+ 	PR libstdc++/86272
+ 	* include/debug/string
+ 	(__gnu_debug::basic_string<>::insert<_Ite>(const_iterator, _Ite, _Ite)):
+ 	Use __glibcxx_check_insert_range.
+ 
+ 2018-07-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-03-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
+ 
+ 	Backport from mainline
+ 	2018-06-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	LWG 3050 Fix cv-qualification of convertibility constraints
+ 	* include/std/chrono (duration, operator*, operator/, operator%): Use
+ 	const-qualified type as source type in is_convertible constraints.
+ 	* testsuite/20_util/duration/arithmetic/dr3050.cc: New.
+ 	* testsuite/20_util/duration/cons/dr3050.cc: New.
+ 	* testsuite/20_util/duration/literals/range.cc: Rename to...
+ 	* testsuite/20_util/duration/literals/range_neg.cc: Here. Adjust
+ 	dg-error lineno.
+ 
+ 	Backport from mainline
+ 	2018-06-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/86127
+ 	* include/bits/forward_list.h (_Fwd_list_base::_Tp_alloc_type): Remove
+ 	unused typedef.
+ 	(_Fwd_list_base::_M_create_node, _Fwd_list_base::_M_erase_after):
+ 	Use node allocator to create and destroy elements.
+ 	(forward_list::_Tp_alloc_type): Remove unused typedef.
+ 	(forward_list::_Alloc_traits): Use allocator_traits instead of
+ 	__gnu_cxx::__alloc_traits.
+ 	* include/bits/forward_list.tcc (_Fwd_list_base::_M_erase_after):
+ 	Use node allocator to create and destroy elements.
+ 
+ 	Backport from mainline
+ 	2018-05-29  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/variant (__erased_dtor): Qualify call to __get.
+ 
+ 	Backport from mainline
+ 	2018-05-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify
+ 	__invoke to prevent ADL.
+ 
+ 	Backport from mainline
+ 	2018-04-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Qualify
+ 	__get calls to avoid ADL and avoid ambiguity due to Clang bug.
+ 
+ 	Backport from mainline
+ 	2018-03-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/variant (__get): Qualify calls to avoid ADL.
+ 	(__select_index): Adjust whitespace.
+ 	(variant): Add using-declaration to workaround Clang bug.
+ 
+ 	Backport from mainline
+ 	2018-05-24  Maya Rashish  <coypu@sdf.org>
+ 
+ 	PR target/85904
+ 	* crossconfig.m4: Test for aligned_alloc on netbsd.
+ 	* configure: Regenerate.
+ 
+ 	Backport from mainline
+ 	2018-05-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/85098
+ 	* include/bits/regex.h [__cplusplus < 201703L] (basic_regex::icase)
+ 	(basic_regex::nosubs, basic_regex::optimize, basic_regex::collate)
+ 	(basic_regex::ECMAScript, basic_regex::basic, basic_regex::extended)
+ 	(basic_regex::awk, basic_regex::grep, basic_regex::egrep): Add
+ 	definitions.
+ 	* include/bits/regex_automaton.h (_NFA::_M_insert_state): Adjust
+ 	whitespace.
+ 	* testsuite/28_regex/basic_regex/85098.cc: New
+ 
+ 	Backport from mainline
+ 	2018-05-07  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/85671
+ 	* include/experimental/bits/fs_path.h (operator/): Likewise.
+ 
+ 	Backport from mainline
+ 	2018-06-14  Daniel Trebbien <dtrebbien@gmail.com>
+ 		    Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/83982
+ 	* include/bits/vector.tcc (vector::_M_default_append(size_type)):
+ 	Default-construct new elements before moving existing ones.
+ 	* testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc:
+ 	New.
+ 
+ 	Backport from mainline
+ 	2018-05-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/84087 LWG DR 2268 basic_string default arguments
+ 	* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI=1]
+ 	(append(const basic_string&, size_type, size_type)
+ 	(assign(const basic_string&, size_type, size_type)
+ 	(insert(size_type, const basic_string&, size_type, size_type)
+ 	(replace(size_type,size_type,const basic_string&,size_type,size_type)
+ 	(compare(size_type,size_type,constbasic_string&,size_type,size_type)):
+ 	Add default arguments (LWG 2268).
+ 	[_GLIBCXX_USE_CXX11_ABI=0]
+ 	(append(const basic_string&, size_type, size_type)
+ 	(assign(const basic_string&, size_type, size_type)
+ 	(insert(size_type, const basic_string&, size_type, size_type)
+ 	(replace(size_type,size_type,const basic_string&,size_type,size_type)
+ 	(compare(size_type,size_type,constbasic_string&,size_type,size_type)):
+ 	Likewise.
+ 	* testsuite/21_strings/basic_string/dr2268.cc: New test.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
+ 2018-06-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-06-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/86138
+ 	* include/bits/basic_string.tcc:
+ 	[__cplusplus > 201402 && !_GLIBCXX_USE_CXX11_ABI]
+ 	(basic_string<char>::_Rep::_S_empty_rep_storage)
+ 	(basic_string<wchar_t>::_Rep::_S_empty_rep_storage): Add explicit
+ 	instantiation declarations.
+ 	[__cplusplus > 201402] (operator>>, operator<<, getline): Re-enable
+ 	explicit instantiation declarations.
+ 	* testsuite/21_strings/basic_string/cons/char/86138.cc: New.
+ 	* testsuite/21_strings/basic_string/cons/wchar_t/86138.cc: New.
+ 
+ 2018-06-21  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
+ 
+ 2018-06-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/utility: Remove unused <exception> header.
+ 
+ 2018-06-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/86169
+ 	* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
+ 	(basic_string::data()): Unshare string.
+ 	* testsuite/21_strings/basic_string/operations/data/char/86169.cc:
+ 	New.
+ 
+ 2018-06-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Only
+ 	define for C++17 and above.
+ 
+ 2018-05-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/85812
+ 	* libsupc++/cxxabi_init_exception.h (__cxa_free_exception): Declare.
+ 	* libsupc++/exception_ptr.h (make_exception_ptr) [__cpp_exceptions]:
+ 	Refactor to separate non-throwing and throwing implementations.
+ 	[__cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI]: Deallocate the memory
+ 	if constructing the object throws.
+ 
+ 2018-05-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/67554
+ 	* include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
+ 	(_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
+ 
+ 	PR libstdc++/82966
+ 	* include/bits/node_handle.h (_Node_handle_common::_M_swap): Use value
+ 	instead of type.
+ 	* testsuite/23_containers/set/modifiers/node_swap.cc: New.
+ 
+ 2018-05-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/faq.xml: Link to C++17 status. Add note to outdated answer.
+ 	* doc/xml/manual/debug_mode.xml: Add array and forward_list to list
+ 	of C++11 containers with Debug Mode support.
+ 	* doc/xml/manual/using.xml: Document Dual ABI for ios_base::failure.
+ 	* doc/html/*: Regenerate.
+ 
+ 2018-05-07  Edward Smith-Rowland  <3dw4rd@verizon.net>
+ 	    Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-05-07  Edward Smith-Rowland  <3dw4rd@verizon.net>
+ 
+ 	PR libstdc++/80506
+ 	* include/bits/random.tcc (gamma_distribution::operator()): Fix magic
+ 	number used in loop condition.
+ 	(gamma_distribution::__generate_impl()): Ditto.
+ 
+ 2018-05-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/84769
+ 	* include/std/variant (visit): Qualify std::get call.
+ 
+ 	PR libstdc++/85632 use uintmax_t for arithmetic
+ 	* src/filesystem/ops.cc (experimental::filesystem::space): Perform
+ 	arithmetic in result type.
+ 	* testsuite/experimental/filesystem/operations/space.cc: New.
+ 
+ 2018-04-30  Edward Smith-Rowland  <3dw4rd@verizon.net>
+ 
+ 	PR libstdc++/pr66689 - comp_ellint_3 and ellint_3 return garbage values
+ 	* include/tr1/ell_integral.tcc: Correct the nu sign convention
+ 	in ellint_3 and comp_ellint_3.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/
+ 	06_comp_ellint_3/check_value.cc: Regen with correct values.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/
+ 	14_ellint_3/check_value.cc: Ditto.
+ 	* testsuite/special_functions/06_comp_ellint_3/check_value.cc: Ditto.
+ 	* testsuite/special_functions/13_ellint_3/check_value.cc: Ditto.
+ 	* testsuite/special_functions/06_comp_ellint_3/pr66689.cc: New.
+ 	* testsuite/special_functions/13_ellint_3/pr66689.cc: New.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/
+ 	06_comp_ellint_3/pr66689.cc: New.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/
+ 	14_ellint_3/pr66689.cc: New.
+ 
+ 2018-04-30  Edward Smith-Rowland  <3dw4rd@verizon.net>
+ 
+ 	PR libstdc++/68397 std::tr1::expint fails ... long double arguments.
+ 	* include/tr1/exp_integral.tcc: Increase iteration limits.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/15_expint/
+ 	pr68397.cc: New test.
+ 	* testsuite/special_functions/14_expint/pr68397.cc: New test.
+ 
+ 2018-04-18  Jonathan Wakely  <jwakely@redhat.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libstdc++/85442
+ 	* src/c++11/Makefile.am: Don't generate debuginfo again for
+ 	cxx11-ios_failure-lt.s and cxx11-ios_failure.s files.
+ 	* src/c++11/Makefile.in: Regenerate.
+ 
+ 2018-04-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* src/c++11/Makefile.am: Fix sed command.
+ 	* src/c++11/Makefile.in: Regenerate.
+ 
+ 	* src/c++11/Makefile.am: Rewrite sed rule to be less fragile and to
+ 	handle mangled names starting with double underscores on darwin.
+ 	* src/c++11/Makefile.in: Regenerate.
+ 
+ 2018-04-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* src/c++11/Makefile.am: Fix comment.
+ 	* src/c++11/Makefile.in: Regenerate.
+ 	* src/c++11/cxx11-ios_failure.cc: Fix comment.
+ 	* src/c++98/ios_failure.cc: Likewise.
+ 
+ 	Backport from mainline
+ 	2018-04-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/85222
+ 	* src/c++11/Makefile.am [ENABLE_DUAL_ABI]: Add special rules for
+ 	cxx11-ios_failure.cc to rewrite type info for __ios_failure.
+ 	* src/c++11/Makefile.in: Regenerate.
+ 	* src/c++11/cxx11-ios_failure.cc (__ios_failure, __iosfail_type_info):
+ 	New types.
+ 	[_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
+ 	* src/c++11/ios.cc (__throw_ios_failure): Remove definition.
+ 	(_GLIBCXX_USE_CXX11_ABI): Don't define here.
+ 	* src/c++98/ios_failure.cc (__construct_ios_failure)
+ 	(__destroy_ios_failure, is_ios_failure_handler): New functions.
+ 	[!_GLIBCXX_USE_DUAL_ABI] (__throw_ios_failure): Define here.
+ 	* testsuite/27_io/ios_base/failure/dual_abi.cc: New.
+ 	* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Revert changes to
+ 	handler types, to always catch std::ios_base::failure.
+ 	* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
+ 	* testsuite/27_io/basic_istream/extractors_arithmetic/char/
+ 	exceptions_failbit.cc: Likewise.
+ 	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
+ 	exceptions_failbit.cc: Likewise.
+ 	* testsuite/27_io/basic_istream/extractors_other/char/
+ 	exceptions_null.cc: Likewise.
+ 	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
+ 	exceptions_null.cc: Likewise.
+ 	* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
+ 	* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
+ 	* testsuite/27_io/basic_ostream/inserters_other/char/
+ 	exceptions_null.cc: Likewise.
+ 	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
+ 	exceptions_null.cc: Likewise.
+ 	* testsuite/27_io/ios_base/storage/2.cc: Likewise.
+ 
+ 2018-03-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR libstdc++/77691
+ 	* testsuite/experimental/memory_resource/resource_adaptor.cc:
+ 	xfail execution on 32-bit Solaris/x86.
+ 
+ 2018-03-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-03-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/84769
+ 	* include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
+ 	Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.
+ 
+ 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/84773
+ 	PR libstdc++/83662
+ 	* crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32.
+ 	* configure: Regenerate.
+ 	* include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC]
+ 	(aligned_alloc): Add using-declaration.
+ 	* testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test.
+ 
+ 2018-03-02  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-03-02  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/84671
+ 	* include/bits/parse_numbers.h (_Number_help): Add partial
+ 	specialization to handle digit separators. Adjust partial
+ 	specialization for recursion temrination to require _Pow == 1ULL.
+ 	* testsuite/20_util/duration/literals/84671.cc: New
+ 
+ 2018-02-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-02-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/84532
+ 	* include/std/thread (thread::__make_invoker): Construct tuple
+ 	directly instead of using make_tuple.
+ 	* testsuite/30_threads/async/84532.cc: New.
+ 	* testsuite/30_threads/thread/84532.cc: New.
+ 
+ 2018-02-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backport from mainline
+ 	2018-02-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/81797
+ 	* configure.ac (INCLUDE_DIR_NOTPARALLEL): Define.
+ 	* configure: Regenerate.
+ 	* include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when
+ 	defined.
+ 	* include/Makefile.in: Regenerate.
+ 
+ 2018-01-29  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/83833
+ 	* testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
+ 	Add -ffloat-store to options for m68k and ia32.
+ 
+ 	PR libstdc++/83658
+ 	* include/std/any (any::__do_emplace): Only set _M_manager after
+ 	constructing the contained object.
+ 	* testsuite/20_util/any/misc/any_cast_neg.cc: Adjust dg-error line.
+ 	* testsuite/20_util/any/modifiers/83658.cc: New test.
+ 
+ 	Backport from mainline
+ 	2018-01-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/83833
+ 	* include/bits/random.h (chi_squared_distribution::param): Update
+ 	gamma distribution parameter.
+ 	* testsuite/26_numerics/random/chi_squared_distribution/83833.cc: New
+ 	test.
+ 
+ 2018-01-25  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/81076
+ 	* include/c_global/cstddef (__byte_operand): Define primary template.
+ 	* testsuite/18_support/byte/81076.cc: New test.
+ 
+ 	Backport from mainline
+ 	2018-01-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/83830
+ 	* include/std/type_traits (has_unique_object_representations_v): Add
+ 	variable template.
+ 	* testsuite/20_util/has_unique_object_representations/value.cc: Check
+ 	variable template.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libstdc++-v3/acinclude.m4 gcc-7.4.0/libstdc++-v3/acinclude.m4
*** gcc-7.3.0/libstdc++-v3/acinclude.m4	Fri Jun 16 12:18:53 2017
--- gcc-7.4.0/libstdc++-v3/acinclude.m4	Tue Aug  7 22:50:49 2018
*************** dnl Note: also checks that the types are
*** 3062,3068 ****
  dnl
  dnl Defines:
  dnl  _GLIBCXX_USE_INT128
! dnl  _GLIBCXX_USE_FLOAT128
  dnl
  AC_DEFUN([GLIBCXX_ENABLE_INT128_FLOAT128], [
  
--- 3062,3068 ----
  dnl
  dnl Defines:
  dnl  _GLIBCXX_USE_INT128
! dnl  ENABLE_FLOAT128
  dnl
  AC_DEFUN([GLIBCXX_ENABLE_INT128_FLOAT128], [
  
*************** EOF
*** 3117,3129 ****
  
      AC_MSG_CHECKING([for __float128])
      if AC_TRY_EVAL(ac_compile); then
-       AC_DEFINE(_GLIBCXX_USE_FLOAT128, 1,
-       [Define if __float128 is supported on this host.])
        enable_float128=yes
      else
        enable_float128=no
      fi
      AC_MSG_RESULT($enable_float128)
      rm -f conftest*
  
    AC_LANG_RESTORE
--- 3117,3128 ----
  
      AC_MSG_CHECKING([for __float128])
      if AC_TRY_EVAL(ac_compile); then
        enable_float128=yes
      else
        enable_float128=no
      fi
      AC_MSG_RESULT($enable_float128)
+     GLIBCXX_CONDITIONAL(ENABLE_FLOAT128, test $enable_float128 = yes)
      rm -f conftest*
  
    AC_LANG_RESTORE
diff -Nrcpad gcc-7.3.0/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt gcc-7.4.0/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
*** gcc-7.3.0/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt	Mon Feb 13 15:38:33 2017
--- gcc-7.4.0/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt	Thu Jun 21 20:51:51 2018
*************** OBJECT:0:GLIBCXX_3.4.20
*** 4004,4009 ****
--- 4004,4010 ----
  OBJECT:0:GLIBCXX_3.4.21
  OBJECT:0:GLIBCXX_3.4.22
  OBJECT:0:GLIBCXX_3.4.23
+ OBJECT:0:GLIBCXX_3.4.24
  OBJECT:0:GLIBCXX_3.4.3
  OBJECT:0:GLIBCXX_3.4.4
  OBJECT:0:GLIBCXX_3.4.5
diff -Nrcpad gcc-7.3.0/libstdc++-v3/config.h.in gcc-7.4.0/libstdc++-v3/config.h.in
*** gcc-7.3.0/libstdc++-v3/config.h.in	Wed Mar 15 15:23:44 2017
--- gcc-7.4.0/libstdc++-v3/config.h.in	Tue Aug  7 22:50:49 2018
***************
*** 912,920 ****
  /* Define if fchmodat is available in <sys/stat.h>. */
  #undef _GLIBCXX_USE_FCHMODAT
  
- /* Define if __float128 is supported on this host. */
- #undef _GLIBCXX_USE_FLOAT128
- 
  /* Defined if gettimeofday is available. */
  #undef _GLIBCXX_USE_GETTIMEOFDAY
  
--- 912,917 ----
diff -Nrcpad gcc-7.3.0/libstdc++-v3/configure gcc-7.4.0/libstdc++-v3/configure
*** gcc-7.3.0/libstdc++-v3/configure	Wed Jun 21 08:55:52 2017
--- gcc-7.4.0/libstdc++-v3/configure	Mon Aug 13 19:16:02 2018
*************** CPU_DEFINES_SRCDIR
*** 620,625 ****
--- 620,627 ----
  ATOMIC_FLAGS
  ATOMIC_WORD_SRCDIR
  ATOMICITY_SRCDIR
+ INCLUDE_DIR_NOTPARALLEL_FALSE
+ INCLUDE_DIR_NOTPARALLEL_TRUE
  BUILD_PDF_FALSE
  BUILD_PDF_TRUE
  PDFLATEX
*************** BASIC_FILE_H
*** 726,731 ****
--- 728,735 ----
  CSTDIO_H
  SECTION_FLAGS
  WERROR
+ ENABLE_FLOAT128_FALSE
+ ENABLE_FLOAT128_TRUE
  thread_header
  glibcxx_PCHFLAGS
  GLIBCXX_BUILD_PCH_FALSE
*************** else
*** 11601,11607 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11604 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 11605,11611 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11608 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** else
*** 11707,11713 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11710 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 11711,11717 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 11714 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** $as_echo "$glibcxx_cv_atomic_long_long"
*** 15393,15399 ****
    # Fake what AC_TRY_COMPILE does.
  
      cat > conftest.$ac_ext << EOF
! #line 15396 "configure"
  int main()
  {
    typedef bool atomic_type;
--- 15397,15403 ----
    # Fake what AC_TRY_COMPILE does.
  
      cat > conftest.$ac_ext << EOF
! #line 15400 "configure"
  int main()
  {
    typedef bool atomic_type;
*************** $as_echo "$glibcxx_cv_atomic_bool" >&6;
*** 15428,15434 ****
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15431 "configure"
  int main()
  {
    typedef short atomic_type;
--- 15432,15438 ----
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15435 "configure"
  int main()
  {
    typedef short atomic_type;
*************** $as_echo "$glibcxx_cv_atomic_short" >&6;
*** 15463,15469 ****
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15466 "configure"
  int main()
  {
    // NB: _Atomic_word not necessarily int.
--- 15467,15473 ----
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15470 "configure"
  int main()
  {
    // NB: _Atomic_word not necessarily int.
*************** $as_echo "$glibcxx_cv_atomic_int" >&6; }
*** 15499,15505 ****
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15502 "configure"
  int main()
  {
    typedef long long atomic_type;
--- 15503,15509 ----
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15506 "configure"
  int main()
  {
    typedef long long atomic_type;
*************** $as_echo "$as_me: WARNING: Performance o
*** 15580,15586 ****
    # unnecessary for this test.
  
      cat > conftest.$ac_ext << EOF
! #line 15583 "configure"
  int main()
  {
    _Decimal32 d1;
--- 15584,15590 ----
    # unnecessary for this test.
  
      cat > conftest.$ac_ext << EOF
! #line 15587 "configure"
  int main()
  {
    _Decimal32 d1;
*************** ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
*** 15622,15628 ****
    # unnecessary for this test.
  
      cat > conftest.$ac_ext << EOF
! #line 15625 "configure"
  template<typename T1, typename T2>
    struct same
    { typedef T2 type; };
--- 15626,15632 ----
    # unnecessary for this test.
  
      cat > conftest.$ac_ext << EOF
! #line 15629 "configure"
  template<typename T1, typename T2>
    struct same
    { typedef T2 type; };
*************** $as_echo "$enable_int128" >&6; }
*** 15656,15662 ****
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15659 "configure"
  template<typename T1, typename T2>
    struct same
    { typedef T2 type; };
--- 15660,15666 ----
      rm -f conftest*
  
      cat > conftest.$ac_ext << EOF
! #line 15663 "configure"
  template<typename T1, typename T2>
    struct same
    { typedef T2 type; };
*************** $as_echo_n "checking for __float128... "
*** 15678,15692 ****
    ac_status=$?
    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
    test $ac_status = 0; }; then
- 
- $as_echo "#define _GLIBCXX_USE_FLOAT128 1" >>confdefs.h
- 
        enable_float128=yes
      else
        enable_float128=no
      fi
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_float128" >&5
  $as_echo "$enable_float128" >&6; }
      rm -f conftest*
  
    ac_ext=c
--- 15682,15694 ----
    ac_status=$?
    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
    test $ac_status = 0; }; then
        enable_float128=yes
      else
        enable_float128=no
      fi
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_float128" >&5
  $as_echo "$enable_float128" >&6; }
+ 
      rm -f conftest*
  
    ac_ext=c
*************** _ACEOF
*** 53327,53332 ****
--- 53329,53347 ----
  fi
  done
  
+     for ac_func in aligned_alloc posix_memalign memalign _aligned_malloc
+ do :
+   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+ eval as_val=\$$as_ac_var
+    if test "x$as_val" = x""yes; then :
+   cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+ _ACEOF
+ 
+ fi
+ done
+ 
      ;;
  
    *-fuchsia*)
*************** done
*** 66077,66082 ****
--- 66092,66110 ----
  
    CXXFLAGS="$ac_save_CXXFLAGS"
  
+     for ac_func in aligned_alloc posix_memalign memalign _aligned_malloc
+ do :
+   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+ eval as_val=\$$as_ac_var
+    if test "x$as_val" = x""yes; then :
+   cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+ _ACEOF
+ 
+ fi
+ done
+ 
      ;;
    *-netbsd*)
      SECTION_FLAGS='-ffunction-sections -fdata-sections'
*************** $as_echo "$ac_ld_relro" >&6; }
*** 66244,66249 ****
--- 66272,66290 ----
        $as_echo "#define HAVE_ISNANL 1" >>confdefs.h
  
      fi
+     for ac_func in aligned_alloc posix_memalign memalign _aligned_malloc
+ do :
+   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+ eval as_val=\$$as_ac_var
+    if test "x$as_val" = x""yes; then :
+   cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+ _ACEOF
+ 
+ fi
+ done
+ 
      ;;
    *-qnx6.1* | *-qnx6.2*)
      SECTION_FLAGS='-ffunction-sections -fdata-sections'
*************** else
*** 81219,81224 ****
--- 81260,81277 ----
  fi
  
  
+ case "$build" in
+  *-*-darwin* ) glibcxx_include_dir_notparallel=yes ;;
+  * ) glibcxx_include_dir_notparallel=no ;;
+ esac
+  if test $glibcxx_include_dir_notparallel = "yes"; then
+   INCLUDE_DIR_NOTPARALLEL_TRUE=
+   INCLUDE_DIR_NOTPARALLEL_FALSE='#'
+ else
+   INCLUDE_DIR_NOTPARALLEL_TRUE='#'
+   INCLUDE_DIR_NOTPARALLEL_FALSE=
+ fi
+ 
  
  # Propagate the target-specific source directories through the build chain.
  ATOMICITY_SRCDIR=config/${atomicity_dir}
*************** else
*** 81262,81267 ****
--- 81315,81329 ----
  fi
  
  
+     if test $enable_float128 = yes; then
+   ENABLE_FLOAT128_TRUE=
+   ENABLE_FLOAT128_FALSE='#'
+ else
+   ENABLE_FLOAT128_TRUE='#'
+   ENABLE_FLOAT128_FALSE=
+ fi
+ 
+ 
      if test $enable_libstdcxx_allocator_flag = new; then
    ENABLE_ALLOCATOR_NEW_TRUE=
    ENABLE_ALLOCATOR_NEW_FALSE='#'
*************** $as_echo "$gxx_include_dir" >&6; }
*** 81657,81663 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 81719,81725 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
*************** if test -z "${GLIBCXX_BUILD_PCH_TRUE}" &
*** 81805,81810 ****
--- 81867,81876 ----
    as_fn_error "conditional \"GLIBCXX_BUILD_PCH\" was never defined.
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
  fi
+ if test -z "${ENABLE_FLOAT128_TRUE}" && test -z "${ENABLE_FLOAT128_FALSE}"; then
+   as_fn_error "conditional \"ENABLE_FLOAT128\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ fi
  if test -z "${ENABLE_ALLOCATOR_NEW_TRUE}" && test -z "${ENABLE_ALLOCATOR_NEW_FALSE}"; then
    as_fn_error "conditional \"ENABLE_ALLOCATOR_NEW\" was never defined.
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
*************** if test -z "${BUILD_PDF_TRUE}" && test -
*** 81913,81918 ****
--- 81979,81988 ----
    as_fn_error "conditional \"BUILD_PDF\" was never defined.
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
  fi
+ if test -z "${INCLUDE_DIR_NOTPARALLEL_TRUE}" && test -z "${INCLUDE_DIR_NOTPARALLEL_FALSE}"; then
+   as_fn_error "conditional \"INCLUDE_DIR_NOTPARALLEL\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ fi
  
  : ${CONFIG_STATUS=./config.status}
  ac_write_fail=0
diff -Nrcpad gcc-7.3.0/libstdc++-v3/configure.ac gcc-7.4.0/libstdc++-v3/configure.ac
*** gcc-7.3.0/libstdc++-v3/configure.ac	Tue Jan 17 09:38:48 2017
--- gcc-7.4.0/libstdc++-v3/configure.ac	Mon Aug 13 19:16:02 2018
*************** AM_CONDITIONAL(BUILD_PDF,
*** 467,472 ****
--- 467,478 ----
  	       test $ac_cv_prog_DBLATEX = "yes" &&
  	       test $ac_cv_prog_PDFLATEX = "yes")
  
+ case "$build" in
+  *-*-darwin* ) glibcxx_include_dir_notparallel=yes ;;
+  * ) glibcxx_include_dir_notparallel=no ;;
+ esac
+ AM_CONDITIONAL(INCLUDE_DIR_NOTPARALLEL,
+                test $glibcxx_include_dir_notparallel = "yes")
  
  # Propagate the target-specific source directories through the build chain.
  ATOMICITY_SRCDIR=config/${atomicity_dir}
diff -Nrcpad gcc-7.3.0/libstdc++-v3/crossconfig.m4 gcc-7.4.0/libstdc++-v3/crossconfig.m4
*** gcc-7.3.0/libstdc++-v3/crossconfig.m4	Tue Jan 17 23:36:12 2017
--- gcc-7.4.0/libstdc++-v3/crossconfig.m4	Wed Jul  4 13:59:17 2018
*************** case "${host}" in
*** 133,138 ****
--- 133,139 ----
        AC_DEFINE(HAVE_ISNANL)
      fi
      AC_CHECK_FUNCS(__cxa_thread_atexit)
+     AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
      ;;
  
    *-fuchsia*)
*************** case "${host}" in
*** 197,202 ****
--- 198,204 ----
      GLIBCXX_CHECK_LINKER_FEATURES
      GLIBCXX_CHECK_MATH_SUPPORT
      GLIBCXX_CHECK_STDLIB_SUPPORT
+     AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
      ;;
    *-netbsd*)
      SECTION_FLAGS='-ffunction-sections -fdata-sections'
*************** case "${host}" in
*** 215,220 ****
--- 217,223 ----
        AC_DEFINE(HAVE_ISINFL)
        AC_DEFINE(HAVE_ISNANL)
      fi
+     AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
      ;;
    *-qnx6.1* | *-qnx6.2*)
      SECTION_FLAGS='-ffunction-sections -fdata-sections'
diff -Nrcpad gcc-7.3.0/libstdc++-v3/doc/html/faq.html gcc-7.4.0/libstdc++-v3/doc/html/faq.html
*** gcc-7.3.0/libstdc++-v3/doc/html/faq.html	Wed Oct 25 14:18:43 2017
--- gcc-7.4.0/libstdc++-v3/doc/html/faq.html	Thu May 10 19:23:33 2018
***************
*** 534,547 ****
      except for some corner cases.  Support for localization
      in <code class="classname">locale</code> may be incomplete on some non-GNU
      platforms. Also dependent on the underlying platform is support
!     for <span class="type">wchar_t</span> and <span class="type">long
!     long</span> specializations, and details of thread support.
      </p><p>    
      Long answer: See the implementation status pages for 
      <a class="link" href="manual/status.html#status.iso.1998" title="C++ 1998/2003">C++98</a>,
!     <a class="link" href="manual/status.html#status.iso.tr1" title="C++ TR1">TR1</a>, and 
!     <a class="link" href="manual/status.html#status.iso.2011" title="C++ 2011">C++11</a>.
!     <a class="link" href="manual/status.html#status.iso.2014" title="C++ 2014">C++14</a>.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.standard_bugs"></a><a id="q-standard_bugs"></a><p><strong>5.2.</strong></p></td><td align="left" valign="top"><p>
        Bugs in the ISO C++ language or library specification
      </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-standard_bugs"></a></td><td align="left" valign="top"><p>
--- 534,548 ----
      except for some corner cases.  Support for localization
      in <code class="classname">locale</code> may be incomplete on some non-GNU
      platforms. Also dependent on the underlying platform is support
!     for <span class="type">wchar_t</span> and <span class="type">long long</span> specializations,
!     and details of thread support.
      </p><p>    
      Long answer: See the implementation status pages for 
      <a class="link" href="manual/status.html#status.iso.1998" title="C++ 1998/2003">C++98</a>,
!     <a class="link" href="manual/status.html#status.iso.tr1" title="C++ TR1">TR1</a>,
!     <a class="link" href="manual/status.html#status.iso.2011" title="C++ 2011">C++11</a>,
!     <a class="link" href="manual/status.html#status.iso.2014" title="C++ 2014">C++14</a>, and
!     <a class="link" href="manual/status.html#status.iso.2017" title="C++ 2017">C++17</a>.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.standard_bugs"></a><a id="q-standard_bugs"></a><p><strong>5.2.</strong></p></td><td align="left" valign="top"><p>
        Bugs in the ISO C++ language or library specification
      </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-standard_bugs"></a></td><td align="left" valign="top"><p>
***************
*** 633,639 ****
      without other drawbacks, send us a patch.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.ambiguous_overloads"></a><a id="q-ambiguous_overloads"></a><p><strong>6.3.</strong></p></td><td align="left" valign="top"><p>
        Ambiguous overloads after including an old-style header
!     </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-ambiguous_overloads"></a></td><td align="left" valign="top"><p>
      Another problem is the <code class="literal">rel_ops</code> namespace and the template
      comparison operator functions contained therein.  If they become
      visible in the same namespace as other comparison functions
--- 634,640 ----
      without other drawbacks, send us a patch.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.ambiguous_overloads"></a><a id="q-ambiguous_overloads"></a><p><strong>6.3.</strong></p></td><td align="left" valign="top"><p>
        Ambiguous overloads after including an old-style header
!     </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-ambiguous_overloads"></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>
      Another problem is the <code class="literal">rel_ops</code> namespace and the template
      comparison operator functions contained therein.  If they become
      visible in the same namespace as other comparison functions
diff -Nrcpad gcc-7.3.0/libstdc++-v3/doc/html/manual/debug_mode_using.html gcc-7.4.0/libstdc++-v3/doc/html/manual/debug_mode_using.html
*** gcc-7.3.0/libstdc++-v3/doc/html/manual/debug_mode_using.html	Wed Oct 25 14:18:43 2017
--- gcc-7.4.0/libstdc++-v3/doc/html/manual/debug_mode_using.html	Thu May 10 19:23:33 2018
***************
*** 20,23 ****
    containers:
  </p><div class="table"><a id="table.debug_mode_containers"></a><p class="title"><strong>Table 17.1. Debugging Containers</strong></p><div class="table-contents"><table class="table" summary="Debugging Containers" 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">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::bitset</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="classname">__gnu_debug::bitset</code></td><td align="left"><code class="filename">&lt;debug/bitset&gt;</code></td></tr><tr><td align="left"><code class="classname">std::deque</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="classname">__gnu_debug::deque</code></td><td align="left"><code class="filename">&lt;debug/deque&gt;</code></td></tr><tr><td align="left"><code class="classname">std::list</code></td><td align="left"><code class="filename">list</code></td><td align="left"><code class="classname">__gnu_debug::list</code></td><td align="left"><code class="filename">&lt;debug/list&gt;</code></td></tr><tr><td align="left"><code class="classname">std::map</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::map</code></td><td align="left"><code class="filename">&lt;debug/map&gt;</code></td></tr><tr><td align="left"><code class="classname">std::multimap</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::multimap</code></td><td align="left"><code class="filename">&lt;debug/map&gt;</code></td></tr><tr><td align="left"><code class="classname">std::multiset</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::multiset</code></td><td align="left"><code class="filename">&lt;debug/set&gt;</code></td></tr><tr><td align="left"><code class="classname">std::set</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::set</code></td><td align="left"><code class="filename">&lt;debug/set&gt;</code></td></tr><tr><td align="left"><code class="classname">std::string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::string</code></td><td align="left"><code class="filename">&lt;debug/string&gt;</code></td></tr><tr><td align="left"><code class="classname">std::wstring</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::wstring</code></td><td align="left"><code class="filename">&lt;debug/string&gt;</code></td></tr><tr><td align="left"><code class="classname">std::basic_string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::basic_string</code></td><td align="left"><code class="filename">&lt;debug/string&gt;</code></td></tr><tr><td align="left"><code class="classname">std::vector</code></td><td align="left"><code class="filename">vector</code></td><td align="left"><code class="classname">__gnu_debug::vector</code></td><td align="left"><code class="filename">&lt;debug/vector&gt;</code></td></tr></tbody></table></div></div><br class="table-break" /><p>In addition, when compiling in C++11 mode, these additional
  containers have additional debug capability.
! </p><div class="table"><a id="table.debug_mode_containers_cxx11"></a><p class="title"><strong>Table 17.2. Debugging Containers C++11</strong></p><div class="table-contents"><table class="table" summary="Debugging Containers C++11" 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">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_map</code></td><td align="left"><code class="filename">&lt;debug/unordered_map&gt;</code></td></tr><tr><td align="left"><code class="classname">std::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td align="left"><code class="filename">&lt;debug/unordered_map&gt;</code></td></tr><tr><td align="left"><code class="classname">std::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_set</code></td><td align="left"><code class="filename">&lt;debug/unordered_set&gt;</code></td></tr><tr><td align="left"><code class="classname">std::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td align="left"><code class="filename">&lt;debug/unordered_set&gt;</code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode_semantics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug_mode_design.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
\ No newline at end of file
--- 20,23 ----
    containers:
  </p><div class="table"><a id="table.debug_mode_containers"></a><p class="title"><strong>Table 17.1. Debugging Containers</strong></p><div class="table-contents"><table class="table" summary="Debugging Containers" 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">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::bitset</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="classname">__gnu_debug::bitset</code></td><td align="left"><code class="filename">&lt;debug/bitset&gt;</code></td></tr><tr><td align="left"><code class="classname">std::deque</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="classname">__gnu_debug::deque</code></td><td align="left"><code class="filename">&lt;debug/deque&gt;</code></td></tr><tr><td align="left"><code class="classname">std::list</code></td><td align="left"><code class="filename">list</code></td><td align="left"><code class="classname">__gnu_debug::list</code></td><td align="left"><code class="filename">&lt;debug/list&gt;</code></td></tr><tr><td align="left"><code class="classname">std::map</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::map</code></td><td align="left"><code class="filename">&lt;debug/map&gt;</code></td></tr><tr><td align="left"><code class="classname">std::multimap</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::multimap</code></td><td align="left"><code class="filename">&lt;debug/map&gt;</code></td></tr><tr><td align="left"><code class="classname">std::multiset</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::multiset</code></td><td align="left"><code class="filename">&lt;debug/set&gt;</code></td></tr><tr><td align="left"><code class="classname">std::set</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::set</code></td><td align="left"><code class="filename">&lt;debug/set&gt;</code></td></tr><tr><td align="left"><code class="classname">std::string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::string</code></td><td align="left"><code class="filename">&lt;debug/string&gt;</code></td></tr><tr><td align="left"><code class="classname">std::wstring</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::wstring</code></td><td align="left"><code class="filename">&lt;debug/string&gt;</code></td></tr><tr><td align="left"><code class="classname">std::basic_string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::basic_string</code></td><td align="left"><code class="filename">&lt;debug/string&gt;</code></td></tr><tr><td align="left"><code class="classname">std::vector</code></td><td align="left"><code class="filename">vector</code></td><td align="left"><code class="classname">__gnu_debug::vector</code></td><td align="left"><code class="filename">&lt;debug/vector&gt;</code></td></tr></tbody></table></div></div><br class="table-break" /><p>In addition, when compiling in C++11 mode, these additional
  containers have additional debug capability.
! </p><div class="table"><a id="table.debug_mode_containers_cxx11"></a><p class="title"><strong>Table 17.2. Debugging Containers C++11</strong></p><div class="table-contents"><table class="table" summary="Debugging Containers C++11" 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">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::array</code></td><td align="left"><code class="filename">array</code></td><td align="left"><code class="classname">__gnu_debug::array</code></td><td align="left"><code class="filename">&lt;debug/array&gt;</code></td></tr><tr><td align="left"><code class="classname">std::forward_list</code></td><td align="left"><code class="filename">forward_list</code></td><td align="left"><code class="classname">__gnu_debug::forward_list</code></td><td align="left"><code class="filename">&lt;debug/forward_list&gt;</code></td></tr><tr><td align="left"><code class="classname">std::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_map</code></td><td align="left"><code class="filename">&lt;debug/unordered_map&gt;</code></td></tr><tr><td align="left"><code class="classname">std::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td align="left"><code class="filename">&lt;debug/unordered_map&gt;</code></td></tr><tr><td align="left"><code class="classname">std::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_set</code></td><td align="left"><code class="filename">&lt;debug/unordered_set&gt;</code></td></tr><tr><td align="left"><code class="classname">std::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td align="left"><code class="filename">&lt;debug/unordered_set&gt;</code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode_semantics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug_mode_design.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html>
\ No newline at end of file
diff -Nrcpad gcc-7.3.0/libstdc++-v3/doc/html/manual/index.html gcc-7.4.0/libstdc++-v3/doc/html/manual/index.html
*** gcc-7.3.0/libstdc++-v3/doc/html/manual/index.html	Thu Jan 18 20:31:32 2018
--- gcc-7.4.0/libstdc++-v3/doc/html/manual/index.html	Wed Aug  8 13:46:29 2018
*************** Support for C++11 dialect.
*** 149,155 ****
  	  </a></dt><dt>22.10. <a href="policy_data_structures_design.html#id-1.3.5.9.4.3.3.3.23">Non-unique Mapping Containers</a></dt><dt>22.11. <a href="policy_data_structures_design.html#id-1.3.5.9.4.3.4.3.5">Point Iterator Hierarchy</a></dt><dt>22.12. <a href="policy_data_structures_design.html#id-1.3.5.9.4.3.4.4.5">Invalidation Guarantee Tags Hierarchy</a></dt><dt>22.13. <a href="policy_data_structures_design.html#id-1.3.5.9.4.3.5.7.4">Container Tag Hierarchy</a></dt><dt>22.14. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.2.3">Hash functions, ranged-hash functions, and
  	      range-hashing functions</a></dt><dt>22.15. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.5.3.4">Insert hash sequence diagram</a></dt><dt>22.16. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.5.3.6">Insert hash sequence diagram with a null policy</a></dt><dt>22.17. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.5.5.5">Hash policy class diagram</a></dt><dt>22.18. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.3.4.7">Balls and bins</a></dt><dt>22.19. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.3.5.3.6">Insert resize sequence diagram</a></dt><dt>22.20. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.3.5.3.9">Standard resize policy trigger sequence
  		diagram</a></dt><dt>22.21. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.3.5.3.10">Standard resize policy size sequence
! 		diagram</a></dt><dt>22.22. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.3.3.2.5">Tree node invariants</a></dt><dt>22.23. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.3.3.2.8">Tree node invalidation</a></dt><dt>22.24. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.3.3.2.11.3">A tree and its update policy</a></dt><dt>22.25. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.3.3.2.11.8">Restoring node invariants</a></dt><dt>22.26. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.3.3.2.11.10">Insert update sequence</a></dt><dt>22.27. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.3.3.2.11.20">Useless update path</a></dt><dt>22.28. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.4.3.2.10">A PATRICIA trie</a></dt><dt>22.29. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.4.3.3.5">A trie and its update policy</a></dt><dt>22.30. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.5.3.3.3">A simple list</a></dt><dt>22.31. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.5.3.3.6">The counter algorithm</a></dt><dt>22.32. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.6.3.3.3">Underlying Priority-Queue Data-Structures.</a></dt><dt>22.33. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.6.3.4.4">Priority-Queue Data-Structure Tags.</a></dt><dt>B.1. <a href="appendix_porting.html#fig.build_hacking.deps">Configure and Build File Dependencies</a></dt></dl></div><div class="list-of-tables"><p><strong>List of Tables</strong></p><dl><dt>1.1. <a href="status.html#table.cxx98_status">C++ 1998/2003 Implementation Status</a></dt><dt>1.2. <a href="status.html#table.cxx11_status">C++ 2011 Implementation Status</a></dt><dt>1.3. <a href="status.html#table.cxx14_status">C++ 2014 Implementation Status</a></dt><dt>1.4. <a href="status.html#table.ts_status">C++ Technical Specifications Implementation Status</a></dt><dt>1.5. <a href="status.html#table.cxx17_status">C++ 2017 Implementation Status</a></dt><dt>1.6. <a href="status.html#table.cxx17_ts_status">C++ Technical Specifications Implementation Status</a></dt><dt>1.7. <a href="status.html#table.tr1_status">C++ TR1 Implementation Status</a></dt><dt>1.8. <a href="status.html#table.decfp_status">C++ TR 24733 Implementation Status</a></dt><dt>1.9. <a href="status.html#table.specfun_status">C++ Special Functions Implementation Status</a></dt><dt>3.1. <a href="using.html#table.cmd_options">C++ Command Options</a></dt><dt>3.2. <a href="using_headers.html#table.cxx98_headers">C++ 1998 Library Headers</a></dt><dt>3.3. <a href="using_headers.html#table.cxx98_cheaders">C++ 1998 Library Headers for C Library Facilities</a></dt><dt>3.4. <a href="using_headers.html#table.cxx11_headers">C++ 2011 Library Headers</a></dt><dt>3.5. <a href="using_headers.html#table.cxx11_cheaders">C++ 2011 Library Headers for C Library Facilities</a></dt><dt>3.6. <a href="using_headers.html#table.tr1_headers">C++ TR 1 Library Headers</a></dt><dt>3.7. <a href="using_headers.html#table.tr1_cheaders">C++ TR 1 Library Headers for C Library Facilities</a></dt><dt>3.8. <a href="using_headers.html#table.decfp_headers">C++ TR 24733 Decimal Floating-Point Header</a></dt><dt>3.9. <a href="using_headers.html#table.abi_headers">C++ ABI Headers</a></dt><dt>3.10. <a href="using_headers.html#table.ext_headers">Extension Headers</a></dt><dt>3.11. <a href="using_headers.html#table.debug_headers">Extension Debug Headers</a></dt><dt>3.12. <a href="using_headers.html#table.profile_headers">Extension Profile Headers</a></dt><dt>3.13. <a href="using_headers.html#table.parallel_headers">Extension Parallel Headers</a></dt><dt>17.1. <a href="debug_mode_using.html#table.debug_mode_containers">Debugging Containers</a></dt><dt>17.2. <a href="debug_mode_using.html#table.debug_mode_containers_cxx11">Debugging Containers C++11</a></dt><dt>18.1. <a href="parallel_mode_using.html#table.parallel_algos">Parallel Algorithms</a></dt><dt>19.1. <a href="profile_mode_design.html#table.profile_code_loc">Profile Code Location</a></dt><dt>19.2. <a href="profile_mode_diagnostics.html#table.profile_diagnostics">Profile Diagnostics</a></dt><dt>21.1. <a href="bitmap_allocator_impl.html#table.bitmap_alloc">Bitmap Allocator Memory Map</a></dt><dt>B.1. <a href="documentation_hacking.html#table.doxygen_prereq">Doxygen Prerequisites</a></dt><dt>B.2. <a href="documentation_hacking.html#table.doxygen_cmp">HTML to Doxygen Markup Comparison</a></dt><dt>B.3. <a href="documentation_hacking.html#table.docbook_prereq">Docbook Prerequisites</a></dt><dt>B.4. <a href="documentation_hacking.html#table.docbook_cmp">HTML to Docbook XML Markup Comparison</a></dt><dt>B.5. <a href="documentation_hacking.html#table.docbook_elem">Docbook XML Element Use</a></dt><dt>B.6. <a href="api.html#table.extension_allocators">Extension Allocators</a></dt><dt>B.7. <a href="api.html#table.extension_allocators2">Extension Allocators Continued</a></dt></dl></div><div class="list-of-equations"><p><strong>List of Equations</strong></p><dl><dt>22.1. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.2.15">Ranged Hash Function</a></dt><dt>22.2. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.3.3">Range-Hashing, Division Method</a></dt><dt>22.3. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.3.9">Division via Prime Modulo</a></dt><dt>22.4. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.3.11">Division via Bit Mask</a></dt><dt>22.5. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.4.7">
  		A Standard String Hash Function
  	      </a></dt><dt>22.6. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.4.12">
  		Only k String DNA Hash
--- 149,155 ----
  	  </a></dt><dt>22.10. <a href="policy_data_structures_design.html#id-1.3.5.9.4.3.3.3.23">Non-unique Mapping Containers</a></dt><dt>22.11. <a href="policy_data_structures_design.html#id-1.3.5.9.4.3.4.3.5">Point Iterator Hierarchy</a></dt><dt>22.12. <a href="policy_data_structures_design.html#id-1.3.5.9.4.3.4.4.5">Invalidation Guarantee Tags Hierarchy</a></dt><dt>22.13. <a href="policy_data_structures_design.html#id-1.3.5.9.4.3.5.7.4">Container Tag Hierarchy</a></dt><dt>22.14. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.2.3">Hash functions, ranged-hash functions, and
  	      range-hashing functions</a></dt><dt>22.15. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.5.3.4">Insert hash sequence diagram</a></dt><dt>22.16. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.5.3.6">Insert hash sequence diagram with a null policy</a></dt><dt>22.17. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.5.5.5">Hash policy class diagram</a></dt><dt>22.18. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.3.4.7">Balls and bins</a></dt><dt>22.19. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.3.5.3.6">Insert resize sequence diagram</a></dt><dt>22.20. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.3.5.3.9">Standard resize policy trigger sequence
  		diagram</a></dt><dt>22.21. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.3.5.3.10">Standard resize policy size sequence
! 		diagram</a></dt><dt>22.22. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.3.3.2.5">Tree node invariants</a></dt><dt>22.23. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.3.3.2.8">Tree node invalidation</a></dt><dt>22.24. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.3.3.2.11.3">A tree and its update policy</a></dt><dt>22.25. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.3.3.2.11.8">Restoring node invariants</a></dt><dt>22.26. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.3.3.2.11.10">Insert update sequence</a></dt><dt>22.27. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.3.3.2.11.20">Useless update path</a></dt><dt>22.28. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.4.3.2.10">A PATRICIA trie</a></dt><dt>22.29. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.4.3.3.5">A trie and its update policy</a></dt><dt>22.30. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.5.3.3.3">A simple list</a></dt><dt>22.31. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.5.3.3.6">The counter algorithm</a></dt><dt>22.32. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.6.3.3.3">Underlying Priority-Queue Data-Structures.</a></dt><dt>22.33. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.6.3.4.4">Priority-Queue Data-Structure Tags.</a></dt><dt>B.1. <a href="appendix_porting.html#fig.build_hacking.deps">Configure and Build File Dependencies</a></dt></dl></div><div class="list-of-tables"><p><strong>List of Tables</strong></p><dl><dt>1.1. <a href="status.html#table.cxx98_status">C++ 1998/2003 Implementation Status</a></dt><dt>1.2. <a href="status.html#table.cxx11_status">C++ 2011 Implementation Status</a></dt><dt>1.3. <a href="status.html#table.cxx14_status">C++ 2014 Implementation Status</a></dt><dt>1.4. <a href="status.html#table.ts_status">C++ Technical Specifications Implementation Status</a></dt><dt>1.5. <a href="status.html#table.cxx17_status">C++ 2017 Implementation Status</a></dt><dt>1.6. <a href="status.html#table.cxx17_ts_status">C++ Technical Specifications Implementation Status</a></dt><dt>1.7. <a href="status.html#table.tr1_status">C++ TR1 Implementation Status</a></dt><dt>1.8. <a href="status.html#table.decfp_status">C++ TR 24733 Implementation Status</a></dt><dt>1.9. <a href="status.html#table.specfun_status">C++ Special Functions Implementation Status</a></dt><dt>3.1. <a href="using.html#table.cmd_options">C++ Command Options</a></dt><dt>3.2. <a href="using_headers.html#table.cxx98_headers">C++ 1998 Library Headers</a></dt><dt>3.3. <a href="using_headers.html#table.cxx98_cheaders">C++ 1998 Library Headers for C Library Facilities</a></dt><dt>3.4. <a href="using_headers.html#table.cxx98_deprheaders">C++ 1998 Deprecated Library Header</a></dt><dt>3.5. <a href="using_headers.html#table.cxx11_headers">C++ 2011 Library Headers</a></dt><dt>3.6. <a href="using_headers.html#table.cxx11_cheaders">C++ 2011 Library Headers for C Library Facilities</a></dt><dt>3.7. <a href="using_headers.html#table.cxx14_headers">C++ 2014 Library Header</a></dt><dt>3.8. <a href="using_headers.html#table.cxx17_headers">C++ 2017 Library Headers</a></dt><dt>3.9. <a href="using_headers.html#table.filesystemts_headers">File System TS Header</a></dt><dt>3.10. <a href="using_headers.html#table.libfundts_headers">Library Fundamentals TS Headers</a></dt><dt>3.11. <a href="using_headers.html#table.tr1_headers">C++ TR 1 Library Headers</a></dt><dt>3.12. <a href="using_headers.html#table.tr1_cheaders">C++ TR 1 Library Headers for C Library Facilities</a></dt><dt>3.13. <a href="using_headers.html#table.decfp_headers">C++ TR 24733 Decimal Floating-Point Header</a></dt><dt>3.14. <a href="using_headers.html#table.abi_headers">C++ ABI Headers</a></dt><dt>3.15. <a href="using_headers.html#table.ext_headers">Extension Headers</a></dt><dt>3.16. <a href="using_headers.html#table.debug_headers">Extension Debug Headers</a></dt><dt>3.17. <a href="using_headers.html#table.profile_headers">Extension Profile Headers</a></dt><dt>3.18. <a href="using_headers.html#table.parallel_headers">Extension Parallel Headers</a></dt><dt>17.1. <a href="debug_mode_using.html#table.debug_mode_containers">Debugging Containers</a></dt><dt>17.2. <a href="debug_mode_using.html#table.debug_mode_containers_cxx11">Debugging Containers C++11</a></dt><dt>18.1. <a href="parallel_mode_using.html#table.parallel_algos">Parallel Algorithms</a></dt><dt>19.1. <a href="profile_mode_design.html#table.profile_code_loc">Profile Code Location</a></dt><dt>19.2. <a href="profile_mode_diagnostics.html#table.profile_diagnostics">Profile Diagnostics</a></dt><dt>21.1. <a href="bitmap_allocator_impl.html#table.bitmap_alloc">Bitmap Allocator Memory Map</a></dt><dt>B.1. <a href="documentation_hacking.html#table.doxygen_prereq">Doxygen Prerequisites</a></dt><dt>B.2. <a href="documentation_hacking.html#table.doxygen_cmp">HTML to Doxygen Markup Comparison</a></dt><dt>B.3. <a href="documentation_hacking.html#table.docbook_prereq">Docbook Prerequisites</a></dt><dt>B.4. <a href="documentation_hacking.html#table.docbook_cmp">HTML to Docbook XML Markup Comparison</a></dt><dt>B.5. <a href="documentation_hacking.html#table.docbook_elem">Docbook XML Element Use</a></dt><dt>B.6. <a href="api.html#table.extension_allocators">Extension Allocators</a></dt><dt>B.7. <a href="api.html#table.extension_allocators2">Extension Allocators Continued</a></dt></dl></div><div class="list-of-equations"><p><strong>List of Equations</strong></p><dl><dt>22.1. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.2.15">Ranged Hash Function</a></dt><dt>22.2. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.3.3">Range-Hashing, Division Method</a></dt><dt>22.3. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.3.9">Division via Prime Modulo</a></dt><dt>22.4. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.3.11">Division via Bit Mask</a></dt><dt>22.5. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.4.7">
  		A Standard String Hash Function
  	      </a></dt><dt>22.6. <a href="policy_data_structures_design.html#id-1.3.5.9.4.4.2.3.2.4.12">
  		Only k String DNA Hash
diff -Nrcpad gcc-7.3.0/libstdc++-v3/doc/html/manual/status.html gcc-7.4.0/libstdc++-v3/doc/html/manual/status.html
*** gcc-7.3.0/libstdc++-v3/doc/html/manual/status.html	Thu Jan 18 20:31:32 2018
--- gcc-7.4.0/libstdc++-v3/doc/html/manual/status.html	Fri Oct 12 11:36:18 2018
*************** This page describes the C++ support in t
*** 117,122 ****
--- 117,125 ----
     </p><p><span class="emphasis"><em>[22.*]</em></span> Anything and everything we have on locale
        implementation will be described under
        <a class="link" href="localization.html#std.localization.locales.locale" title="locale">Localization</a>.
+    </p><p><span class="emphasis"><em>[23.*]</em></span> All of the containers in this clause
+      define <span class="type">size_type</span> as <span class="type">std::size_t</span> and
+      <span class="type">difference_type</span> as <span class="type">std::ptrdiff_t</span>.
     </p><p><span class="emphasis"><em>[26.2.8]/9</em></span> I have no idea what
        <code class="code">complex&lt;T&gt;</code>'s <code class="code">pow(0,0)</code> returns.
     </p><p><span class="emphasis"><em>[27.4.2.4]/2</em></span> Calling
diff -Nrcpad gcc-7.3.0/libstdc++-v3/doc/html/manual/test.html gcc-7.4.0/libstdc++-v3/doc/html/manual/test.html
*** gcc-7.3.0/libstdc++-v3/doc/html/manual/test.html	Wed Oct 25 14:18:43 2017
--- gcc-7.4.0/libstdc++-v3/doc/html/manual/test.html	Tue Aug  7 22:50:28 2018
*************** cat 27_io/objects/char/3_xin.in | a.out<
*** 456,467 ****
      possible variations.
    </p><p>
      Similarly, tests which depend on a newer standard than the default
!     should use <code class="literal">dg-options</code> instead of an effective target,
!     so that they are not skipped by default.
      For example, tests for C++17 features should use
  </p><pre class="programlisting">    // { dg-options "-std=gnu++17" }</pre><p>
!     and not
! </p><pre class="programlisting">    // { dg-do run "c++1z" }</pre><p>
    </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="tests.dg.examples"></a>Examples of Test Directives</h4></div></div></div><p>
  Example 1: Testing compilation only:
  </p><pre class="programlisting">
--- 456,470 ----
      possible variations.
    </p><p>
      Similarly, tests which depend on a newer standard than the default
!     must use <code class="literal">dg-options</code> instead of (or in addition to)
!     an effective target, so that they are not skipped by default.
      For example, tests for C++17 features should use
  </p><pre class="programlisting">    // { dg-options "-std=gnu++17" }</pre><p>
!     before any <code class="literal">dg-do</code> such as:
! </p><pre class="programlisting">    // { dg-do run "c++17" }</pre><p>
!     The <code class="literal">dg-options</code> directive must come first, so that
!     the <code class="literal">-std</code> flag has already been added to the options
!     before checking the <code class="literal">c++17</code> target.
    </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="tests.dg.examples"></a>Examples of Test Directives</h4></div></div></div><p>
  Example 1: Testing compilation only:
  </p><pre class="programlisting">
diff -Nrcpad gcc-7.3.0/libstdc++-v3/doc/html/manual/using_dual_abi.html gcc-7.4.0/libstdc++-v3/doc/html/manual/using_dual_abi.html
*** gcc-7.3.0/libstdc++-v3/doc/html/manual/using_dual_abi.html	Wed Oct 25 14:18:43 2017
--- gcc-7.4.0/libstdc++-v3/doc/html/manual/using_dual_abi.html	Thu May 10 19:23:33 2018
***************
*** 14,20 ****
    for the new implementations have different names the definitions for both
    versions can be present in the same library.
  </p><p> The <span class="symbol">_GLIBCXX_USE_CXX11_ABI</span> macro (see
! <a class="xref" href="using_macros.html" title="Macros">Macros</a>) controls whether
    the declarations in the library headers use the old or new ABI.
    So the decision of which ABI to use can be made separately for each
    source file being compiled.
--- 14,20 ----
    for the new implementations have different names the definitions for both
    versions can be present in the same library.
  </p><p> The <span class="symbol">_GLIBCXX_USE_CXX11_ABI</span> macro (see
!   <a class="xref" href="using_macros.html" title="Macros">Macros</a>) controls whether
    the declarations in the library headers use the old or new ABI.
    So the decision of which ABI to use can be made separately for each
    source file being compiled.
***************
*** 43,52 ****
    facet that derives from one or other version of
    <code class="classname">time_get</code> is installed in the locale).
  </p><p> Although the standard exception types defined in
!   <code class="filename">&lt;stdexcept&gt;</code> use strings, they
    are not defined twice, so that a <code class="classname">std::out_of_range</code>
    exception thrown in one file can always be caught by a suitable handler in
    another file, even if the two files are compiled with different ABIs.
  </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.abi.trouble"></a>Troubleshooting</h3></div></div></div><p> If you get linker errors about undefined references to symbols
    that involve types in the <code class="code">std::__cxx11</code> namespace or the tag
    <code class="code">[abi:cxx11]</code> then it probably indicates that you are trying to
--- 43,77 ----
    facet that derives from one or other version of
    <code class="classname">time_get</code> is installed in the locale).
  </p><p> Although the standard exception types defined in
!   <code class="filename">&lt;stdexcept&gt;</code> use strings, most
    are not defined twice, so that a <code class="classname">std::out_of_range</code>
    exception thrown in one file can always be caught by a suitable handler in
    another file, even if the two files are compiled with different ABIs.
+ </p><p> One exception type does change when using the new ABI, namely
+   <code class="classname">std::ios_base::failure</code>.
+   This is necessary because the 2011 standard changed its base class from
+   <code class="classname">std::exception</code> to
+   <code class="classname">std::system_error</code>, which causes its layout to change.
+   Exceptions due to iostream errors are thrown by a function inside
+   <code class="filename">libstdc++.so</code>, so whether the thrown
+   exception uses the old <code class="classname">std::ios_base::failure</code> type
+   or the new one depends on the ABI that was active when
+   <code class="filename">libstdc++.so</code> was built,
+   <span class="emphasis"><em>not</em></span> the ABI active in the user code that is using
+   iostreams.
+   This means that for a given build of GCC the type thrown is fixed.
+   In current releases the library throws a special type that can be caught
+   by handlers for either the old or new type,
+   but for GCC 7.1, 7.2 and 7.3 the library throws the new
+   <code class="classname">std::ios_base::failure</code> type,
+   and for GCC 5.x and 6.x the library throws the old type.
+   Catch handlers of type <code class="classname">std::ios_base::failure</code>
+   will only catch the exceptions if using a newer release,
+   or if the handler is compiled with the same ABI as the type thrown by
+   the library.
+   Handlers for <code class="classname">std::exception</code> will always catch
+   iostreams exceptions, because the old and new type both inherit from
+   <code class="classname">std::exception</code>.
  </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.abi.trouble"></a>Troubleshooting</h3></div></div></div><p> If you get linker errors about undefined references to symbols
    that involve types in the <code class="code">std::__cxx11</code> namespace or the tag
    <code class="code">[abi:cxx11]</code> then it probably indicates that you are trying to
diff -Nrcpad gcc-7.3.0/libstdc++-v3/doc/html/manual/using_headers.html gcc-7.4.0/libstdc++-v3/doc/html/manual/using_headers.html
*** gcc-7.3.0/libstdc++-v3/doc/html/manual/using_headers.html	Wed Oct 25 14:18:43 2017
--- gcc-7.4.0/libstdc++-v3/doc/html/manual/using_headers.html	Wed Aug  8 13:52:09 2018
***************
*** 4,10 ****
       must be available to all hosted implementations.  Actually, the
       word "files" is a misnomer, since the contents of the
       headers don't necessarily have to be in any kind of external
!      file.  The only rule is that when one <code class="code">#include</code>'s a
       header, the contents of that header become available, no matter
       how.
     </p><p>
--- 4,10 ----
       must be available to all hosted implementations.  Actually, the
       word "files" is a misnomer, since the contents of the
       headers don't necessarily have to be in any kind of external
!      file.  The only rule is that when one <code class="code">#include</code>s a
       header, the contents of that header become available, no matter
       how.
     </p><p>
***************
*** 12,36 ****
     </p><p>
       There are two main types of include files: header files related
       to a specific version of the ISO C++ standard (called Standard
!      Headers), and all others (TR1, C++ ABI, and Extensions).
     </p><p>
!      Two dialects of standard headers are supported, corresponding to
!      the 1998 standard as updated for 2003, and the current 2011 standard.
     </p><p>
!      C++98/03 include files. These are available in the default compilation mode, i.e. <code class="code">-std=c++98</code> or <code class="code">-std=gnu++98</code>.
!    </p><div class="table"><a id="table.cxx98_headers"></a><p class="title"><strong>Table 3.2. C++ 1998 Library Headers</strong></p><div class="table-contents"><table class="table" summary="C++ 1998 Library Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">complex</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td></tr><tr><td align="left"><code class="filename">fstream</code></td><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td><td align="left"><code class="filename">iosfwd</code></td></tr><tr><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td></tr><tr><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">typeinfo</code></td></tr><tr><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="table.cxx98_cheaders"></a><p class="title"><strong>Table 3.3. C++ 1998 Library Headers for C Library Facilities</strong></p><div class="table-contents"><table class="table" summary="C++ 1998 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">ciso646</code></td></tr><tr><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td></tr><tr><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
! C++11 include files. These are only available in C++11 compilation
  mode, i.e. <code class="literal">-std=c++11</code> or <code class="literal">-std=gnu++11</code>.
! </p><p></p><div class="table"><a id="table.cxx11_headers"></a><p class="title"><strong>Table 3.4. C++ 2011 Library Headers</strong></p><div class="table-contents"><table class="table" summary="C++ 2011 Library Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">array</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">chrono</code></td><td align="left"><code class="filename">complex</code></td></tr><tr><td align="left"><code class="filename">condition_variable</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td><td align="left"><code class="filename">forward_list</code></td><td align="left"><code class="filename">fstream</code></td></tr><tr><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">future</code></td><td align="left"><code class="filename">initalizer_list</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td></tr><tr><td align="left"><code class="filename">iosfwd</code></td><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td></tr><tr><td align="left"><code class="filename">list</code></td><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">mutex</code></td></tr><tr><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">random</code></td></tr><tr><td align="left"><code class="filename">ratio</code></td><td align="left"><code class="filename">regex</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">system_error</code></td><td align="left"><code class="filename">thread</code></td></tr><tr><td align="left"><code class="filename">tuple</code></td><td align="left"><code class="filename">type_traits</code></td><td align="left"><code class="filename">typeinfo</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="filename">unordered_set</code></td></tr><tr><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="table.cxx11_cheaders"></a><p class="title"><strong>Table 3.5. C++ 2011 Library Headers for C Library Facilities</strong></p><div class="table-contents"><table class="table" summary="C++ 2011 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">ccomplex</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cfenv</code></td></tr><tr><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">cinttypes</code></td><td align="left"><code class="filename">ciso646</code></td><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td></tr><tr><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstdbool</code></td></tr><tr><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdint</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctgmath</code></td><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cuchar</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
    In addition, TR1 includes as:
! </p><div class="table"><a id="table.tr1_headers"></a><p class="title"><strong>Table 3.6. C++ TR 1 Library Headers</strong></p><div class="table-contents"><table class="table" summary="C++ TR 1 Library Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/array</code></td><td align="left"><code class="filename">tr1/complex</code></td><td align="left"><code class="filename">tr1/memory</code></td><td align="left"><code class="filename">tr1/functional</code></td><td align="left"><code class="filename">tr1/random</code></td></tr><tr><td align="left"><code class="filename">tr1/regex</code></td><td align="left"><code class="filename">tr1/tuple</code></td><td align="left"><code class="filename">tr1/type_traits</code></td><td align="left"><code class="filename">tr1/unordered_map</code></td><td align="left"><code class="filename">tr1/unordered_set</code></td></tr><tr><td align="left"><code class="filename">tr1/utility</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="table.tr1_cheaders"></a><p class="title"><strong>Table 3.7. C++ TR 1 Library Headers for C Library Facilities</strong></p><div class="table-contents"><table class="table" summary="C++ TR 1 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/ccomplex</code></td><td align="left"><code class="filename">tr1/cfenv</code></td><td align="left"><code class="filename">tr1/cfloat</code></td><td align="left"><code class="filename">tr1/cmath</code></td><td align="left"><code class="filename">tr1/cinttypes</code></td></tr><tr><td align="left"><code class="filename">tr1/climits</code></td><td align="left"><code class="filename">tr1/cstdarg</code></td><td align="left"><code class="filename">tr1/cstdbool</code></td><td align="left"><code class="filename">tr1/cstdint</code></td><td align="left"><code class="filename">tr1/cstdio</code></td></tr><tr><td align="left"><code class="filename">tr1/cstdlib</code></td><td align="left"><code class="filename">tr1/ctgmath</code></td><td align="left"><code class="filename">tr1/ctime</code></td><td align="left"><code class="filename">tr1/cwchar</code></td><td align="left"><code class="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><br class="table-break" /><p>Decimal floating-point arithmetic is available if the C++
  compiler supports scalar decimal floating-point types defined via
  <code class="code">__attribute__((mode(SD|DD|LD)))</code>.
! </p><div class="table"><a id="table.decfp_headers"></a><p class="title"><strong>Table 3.8. C++ TR 24733 Decimal Floating-Point Header</strong></p><div class="table-contents"><table class="table" summary="C++ TR 24733 Decimal Floating-Point Header" border="1"><colgroup><col align="left" class="c1" /></colgroup><tbody><tr><td align="left"><code class="filename">decimal/decimal</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
    Also included are files for the C++ ABI interface:
! </p><div class="table"><a id="table.abi_headers"></a><p class="title"><strong>Table 3.9. C++ ABI Headers</strong></p><div class="table-contents"><table class="table" summary="C++ ABI Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><tbody><tr><td align="left"><code class="filename">cxxabi.h</code></td><td align="left"><code class="filename">cxxabi_forced.h</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
    And a large variety of extensions.
! </p><div class="table"><a id="table.ext_headers"></a><p class="title"><strong>Table 3.10. Extension Headers</strong></p><div class="table-contents"><table class="table" summary="Extension Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">ext/algorithm</code></td><td align="left"><code class="filename">ext/atomicity.h</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"><code class="filename">ext/cast.h</code></td></tr><tr><td align="left"><code class="filename">ext/codecvt_specializations.h</code></td><td align="left"><code class="filename">ext/concurrence.h</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="filename">ext/enc_filebuf.h</code></td><td align="left"><code class="filename">ext/extptr_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/functional</code></td><td align="left"><code class="filename">ext/iterator</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="filename">ext/memory</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="filename">ext/numeric</code></td><td align="left"><code class="filename">ext/numeric_traits.h</code></td><td align="left"><code class="filename">ext/pb_ds/assoc_container.h</code></td><td align="left"><code class="filename">ext/pb_ds/priority_queue.h</code></td></tr><tr><td align="left"><code class="filename">ext/pod_char_traits.h</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="filename">ext/rb_tree</code></td><td align="left"><code class="filename">ext/rope</code></td><td align="left"><code class="filename">ext/slist</code></td></tr><tr><td align="left"><code class="filename">ext/stdio_filebuf.h</code></td><td align="left"><code class="filename">ext/stdio_sync_filebuf.h</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left"><code class="filename">ext/typelist.h</code></td><td align="left"><code class="filename">ext/type_traits.h</code></td></tr><tr><td align="left"><code class="filename">ext/vstring.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="table.debug_headers"></a><p class="title"><strong>Table 3.11. Extension Debug Headers</strong></p><div class="table-contents"><table class="table" summary="Extension Debug Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">debug/bitset</code></td><td align="left"><code class="filename">debug/deque</code></td><td align="left"><code class="filename">debug/list</code></td><td align="left"><code class="filename">debug/map</code></td><td align="left"><code class="filename">debug/set</code></td></tr><tr><td align="left"><code class="filename">debug/string</code></td><td align="left"><code class="filename">debug/unordered_map</code></td><td align="left"><code class="filename">debug/unordered_set</code></td><td align="left"><code class="filename">debug/vector</code></td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="table.profile_headers"></a><p class="title"><strong>Table 3.12. Extension Profile Headers</strong></p><div class="table-contents"><table class="table" summary="Extension Profile Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><tbody><tr><td align="left"><code class="filename">profile/bitset</code></td><td align="left"><code class="filename">profile/deque</code></td><td align="left"><code class="filename">profile/list</code></td><td align="left"><code class="filename">profile/map</code></td></tr><tr><td align="left"><code class="filename">profile/set</code></td><td align="left"><code class="filename">profile/unordered_map</code></td><td align="left"><code class="filename">profile/unordered_set</code></td><td align="left"><code class="filename">profile/vector</code></td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="table.parallel_headers"></a><p class="title"><strong>Table 3.13. Extension Parallel Headers</strong></p><div class="table-contents"><table class="table" summary="Extension Parallel Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><tbody><tr><td align="left"><code class="filename">parallel/algorithm</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.mixing"></a>Mixing Headers</h3></div></div></div><p> A few simple rules.
  </p><p>First, mixing different dialects of the standard headers is not
  possible. It's an all-or-nothing affair. Thus, code like
  </p><pre class="programlisting">
--- 12,82 ----
     </p><p>
       There are two main types of include files: header files related
       to a specific version of the ISO C++ standard (called Standard
!      Headers), and all others (TS, TR1, C++ ABI, and Extensions).
     </p><p>
!      Multiple dialects of standard headers are supported, corresponding to
!      the 1998 standard as updated for 2003, the 2011 standard, the 2014
!      standard, and so on.
     </p><p>
!      <a class="xref" href="using_headers.html#table.cxx98_headers" title="Table 3.2. C++ 1998 Library Headers">Table 3.2, “C++ 1998 Library Headers”</a> and
!      <a class="xref" href="using_headers.html#table.cxx98_cheaders" title="Table 3.3. C++ 1998 Library Headers for C Library Facilities">Table 3.3, “C++ 1998 Library Headers for C Library Facilities”</a> and
!      <a class="xref" href="using_headers.html#table.cxx98_deprheaders" title="Table 3.4. C++ 1998 Deprecated Library Header">Table 3.4, “C++ 1998 Deprecated Library Header”</a>
!      show the C++98/03 include files.
!      These are available in the C++98 compilation mode,
!      i.e. <code class="code">-std=c++98</code> or <code class="code">-std=gnu++98</code>.
!      Unless specified otherwise below, they are also available in later modes
!      (C++11, C++14 etc).
!    </p><div class="table"><a id="table.cxx98_headers"></a><p class="title"><strong>Table 3.2. C++ 1998 Library Headers</strong></p><div class="table-contents"><table class="table" summary="C++ 1998 Library Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">complex</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td></tr><tr><td align="left"><code class="filename">fstream</code></td><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td><td align="left"><code class="filename">iosfwd</code></td></tr><tr><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td></tr><tr><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">typeinfo</code></td></tr><tr><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td colspan="3" align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="table.cxx98_cheaders"></a><p class="title"><strong>Table 3.3. C++ 1998 Library Headers for C Library Facilities</strong></p><div class="table-contents"><table class="table" summary="C++ 1998 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">ciso646</code></td></tr><tr><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td></tr><tr><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td><td colspan="2" align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
!   The following header is deprecated
!   and might be removed from a future C++ standard.
! </p><div class="table"><a id="table.cxx98_deprheaders"></a><p class="title"><strong>Table 3.4. C++ 1998 Deprecated Library Header</strong></p><div class="table-contents"><table class="table" summary="C++ 1998 Deprecated Library Header" border="1"><colgroup><col align="left" class="c1" /></colgroup><tbody><tr><td align="left"><code class="filename">strstream</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
! <a class="xref" href="using_headers.html#table.cxx11_headers" title="Table 3.5. C++ 2011 Library Headers">Table 3.5, “C++ 2011 Library Headers”</a> and
! <a class="xref" href="using_headers.html#table.cxx11_cheaders" title="Table 3.6. C++ 2011 Library Headers for C Library Facilities">Table 3.6, “C++ 2011 Library Headers for C Library Facilities”</a> show the C++11 include files.
! These are available in C++11 compilation
  mode, i.e. <code class="literal">-std=c++11</code> or <code class="literal">-std=gnu++11</code>.
! Including these headers in C++98/03 mode may result in compilation errors.
! Unless specified otherwise below, they are also available in later modes
! (C++14 etc).
! </p><p></p><div class="table"><a id="table.cxx11_headers"></a><p class="title"><strong>Table 3.5. C++ 2011 Library Headers</strong></p><div class="table-contents"><table class="table" summary="C++ 2011 Library Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">array</code></td><td align="left"><code class="filename">atomic</code></td><td align="left"><code class="filename">chrono</code></td><td align="left"><code class="filename">codecvt</code></td><td align="left"><code class="filename">condition_variable</code></td></tr><tr><td align="left"><code class="filename">forward_list</code></td><td align="left"><code class="filename">future</code></td><td align="left"><code class="filename">initalizer_list</code></td><td align="left"><code class="filename">mutex</code></td><td align="left"><code class="filename">random</code></td></tr><tr><td align="left"><code class="filename">ratio</code></td><td align="left"><code class="filename">regex</code></td><td align="left"><code class="filename">scoped_allocator</code></td><td align="left"><code class="filename">system_error</code></td><td align="left"><code class="filename">thread</code></td></tr><tr><td align="left"><code class="filename">tuple</code></td><td align="left"><code class="filename">typeindex</code></td><td align="left"><code class="filename">type_traits</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="filename">unordered_set</code></td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="table.cxx11_cheaders"></a><p class="title"><strong>Table 3.6. C++ 2011 Library Headers for C Library Facilities</strong></p><div class="table-contents"><table class="table" summary="C++ 2011 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">ccomplex</code></td><td align="left"><code class="filename">cfenv</code></td><td align="left"><code class="filename">cinttypes</code></td><td align="left"><code class="filename">cstdalign</code></td><td align="left"><code class="filename">cstdbool</code></td></tr><tr><td align="left"><code class="filename">cstdint</code></td><td align="left"><code class="filename">ctgmath</code></td><td align="left"><code class="filename">cuchar</code></td><td colspan="2" align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
! <a class="xref" href="using_headers.html#table.cxx14_headers" title="Table 3.7. C++ 2014 Library Header">Table 3.7, “C++ 2014 Library Header”</a> shows the C++14 include file.
! This is available in C++14 compilation
! mode, i.e. <code class="literal">-std=c++14</code> or <code class="literal">-std=gnu++14</code>.
! Including this header in C++98/03 mode or C++11 will not result in
! compilation errors, but will not define anything.
! Unless specified otherwise below, it is also available in later modes
! (C++17 etc).
! </p><p></p><div class="table"><a id="table.cxx14_headers"></a><p class="title"><strong>Table 3.7. C++ 2014 Library Header</strong></p><div class="table-contents"><table class="table" summary="C++ 2014 Library Header" border="1"><colgroup><col align="left" class="c1" /></colgroup><tbody><tr><td align="left"><code class="filename">shared_mutex</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
! <a class="xref" href="using_headers.html#table.cxx17_headers" title="Table 3.8. C++ 2017 Library Headers">Table 3.8, “C++ 2017 Library Headers”</a> shows the C++17 include files.
! These are available in C++17 compilation
! mode, i.e. <code class="literal">-std=c++17</code> or <code class="literal">-std=gnu++17</code>.
! Including these headers in earlier modes will not result in
! compilation errors, but will not define anything.
! Unless specified otherwise below, they are also available in later modes
! (C++20 etc).
! </p><p></p><div class="table"><a id="table.cxx17_headers"></a><p class="title"><strong>Table 3.8. C++ 2017 Library Headers</strong></p><div class="table-contents"><table class="table" summary="C++ 2017 Library Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><tbody><tr><td align="left"><code class="filename">any</code></td><td align="left"><code class="filename">optional</code></td><td align="left"><code class="filename">string_view</code></td><td align="left"><code class="filename">variant</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
! <a class="xref" href="using_headers.html#table.filesystemts_headers" title="Table 3.9. File System TS Header">Table 3.9, “File System TS Header”</a>,
! shows the additional include file define by the
! File System Technical Specification, ISO/IEC TS 18822.
! This is available in C++11 and later compilation modes.
! Including this header in earlier modes will not result in
! compilation errors, but will not define anything.
! </p><p></p><div class="table"><a id="table.filesystemts_headers"></a><p class="title"><strong>Table 3.9. File System TS Header</strong></p><div class="table-contents"><table class="table" summary="File System TS Header" border="1"><colgroup><col align="left" class="c1" /></colgroup><tbody><tr><td align="left"><code class="filename">experimental/filesystem</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
! <a class="xref" href="using_headers.html#table.libfundts_headers" title="Table 3.10. Library Fundamentals TS Headers">Table 3.10, “Library Fundamentals TS Headers”</a>,
! shows the additional include files define by the C++ Extensions for 
! Library Fundamentals Technical Specification, ISO/IEC TS 19568.
! These are available in C++14 and later compilation modes.
! Including these headers in earlier modes will not result in
! compilation errors, but will not define anything.
! </p><p></p><div class="table"><a id="table.libfundts_headers"></a><p class="title"><strong>Table 3.10. Library Fundamentals TS Headers</strong></p><div class="table-contents"><table class="table" summary="Library Fundamentals TS Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">experimental/algorithm</code></td><td align="left"><code class="filename">experimental/any</code></td><td align="left"><code class="filename">experimental/array</code></td><td align="left"><code class="filename">experimental/chrono</code></td><td align="left"><code class="filename">experimental/deque</code></td></tr><tr><td align="left"><code class="filename">experimental/forward_list</code></td><td align="left"><code class="filename">experimental/functional</code></td><td align="left"><code class="filename">experimental/iterator</code></td><td align="left"><code class="filename">experimental/list</code></td><td align="left"><code class="filename">experimental/map</code></td></tr><tr><td align="left"><code class="filename">experimental/memory</code></td><td align="left"><code class="filename">experimental/memory_resource</code></td><td align="left"><code class="filename">experimental/numeric</code></td><td align="left"><code class="filename">experimental/optional</code></td><td align="left"><code class="filename">experimental/propagate_const</code></td></tr><tr><td align="left"><code class="filename">experimental/random</code></td><td align="left"><code class="filename">experimental/ratio</code></td><td align="left"><code class="filename">experimental/regex</code></td><td align="left"><code class="filename">experimental/set</code></td><td align="left"><code class="filename">experimental/source_location</code></td></tr><tr><td align="left"><code class="filename">experimental/string</code></td><td align="left"><code class="filename">experimental/string_view</code></td><td align="left"><code class="filename">experimental/system_error</code></td><td align="left"><code class="filename">experimental/tuple</code></td><td align="left"><code class="filename">experimental/type_traits</code></td></tr><tr><td align="left"><code class="filename">experimental/unordered_map</code></td><td align="left"><code class="filename">experimental/unordered_set</code></td><td align="left"><code class="filename">experimental/utility</code></td><td align="left"><code class="filename">experimental/vector</code></td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
    In addition, TR1 includes as:
! </p><div class="table"><a id="table.tr1_headers"></a><p class="title"><strong>Table 3.11. C++ TR 1 Library Headers</strong></p><div class="table-contents"><table class="table" summary="C++ TR 1 Library Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/array</code></td><td align="left"><code class="filename">tr1/complex</code></td><td align="left"><code class="filename">tr1/memory</code></td><td align="left"><code class="filename">tr1/functional</code></td><td align="left"><code class="filename">tr1/random</code></td></tr><tr><td align="left"><code class="filename">tr1/regex</code></td><td align="left"><code class="filename">tr1/tuple</code></td><td align="left"><code class="filename">tr1/type_traits</code></td><td align="left"><code class="filename">tr1/unordered_map</code></td><td align="left"><code class="filename">tr1/unordered_set</code></td></tr><tr><td align="left"><code class="filename">tr1/utility</code></td><td colspan="4" align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="table.tr1_cheaders"></a><p class="title"><strong>Table 3.12. C++ TR 1 Library Headers for C Library Facilities</strong></p><div class="table-contents"><table class="table" summary="C++ TR 1 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/ccomplex</code></td><td align="left"><code class="filename">tr1/cfenv</code></td><td align="left"><code class="filename">tr1/cfloat</code></td><td align="left"><code class="filename">tr1/cmath</code></td><td align="left"><code class="filename">tr1/cinttypes</code></td></tr><tr><td align="left"><code class="filename">tr1/climits</code></td><td align="left"><code class="filename">tr1/cstdarg</code></td><td align="left"><code class="filename">tr1/cstdbool</code></td><td align="left"><code class="filename">tr1/cstdint</code></td><td align="left"><code class="filename">tr1/cstdio</code></td></tr><tr><td align="left"><code class="filename">tr1/cstdlib</code></td><td align="left"><code class="filename">tr1/ctgmath</code></td><td align="left"><code class="filename">tr1/ctime</code></td><td align="left"><code class="filename">tr1/cwchar</code></td><td align="left"><code class="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><br class="table-break" /><p>Decimal floating-point arithmetic is available if the C++
  compiler supports scalar decimal floating-point types defined via
  <code class="code">__attribute__((mode(SD|DD|LD)))</code>.
! </p><div class="table"><a id="table.decfp_headers"></a><p class="title"><strong>Table 3.13. C++ TR 24733 Decimal Floating-Point Header</strong></p><div class="table-contents"><table class="table" summary="C++ TR 24733 Decimal Floating-Point Header" border="1"><colgroup><col align="left" class="c1" /></colgroup><tbody><tr><td align="left"><code class="filename">decimal/decimal</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
    Also included are files for the C++ ABI interface:
! </p><div class="table"><a id="table.abi_headers"></a><p class="title"><strong>Table 3.14. C++ ABI Headers</strong></p><div class="table-contents"><table class="table" summary="C++ ABI Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><tbody><tr><td align="left"><code class="filename">cxxabi.h</code></td><td align="left"><code class="filename">cxxabi_forced.h</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
    And a large variety of extensions.
! </p><div class="table"><a id="table.ext_headers"></a><p class="title"><strong>Table 3.15. Extension Headers</strong></p><div class="table-contents"><table class="table" summary="Extension Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">ext/algorithm</code></td><td align="left"><code class="filename">ext/atomicity.h</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"><code class="filename">ext/cast.h</code></td></tr><tr><td align="left"><code class="filename">ext/codecvt_specializations.h</code></td><td align="left"><code class="filename">ext/concurrence.h</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="filename">ext/enc_filebuf.h</code></td><td align="left"><code class="filename">ext/extptr_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/functional</code></td><td align="left"><code class="filename">ext/iterator</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="filename">ext/memory</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="filename">ext/numeric</code></td><td align="left"><code class="filename">ext/numeric_traits.h</code></td><td align="left"><code class="filename">ext/pb_ds/assoc_container.h</code></td><td align="left"><code class="filename">ext/pb_ds/priority_queue.h</code></td></tr><tr><td align="left"><code class="filename">ext/pod_char_traits.h</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="filename">ext/rb_tree</code></td><td align="left"><code class="filename">ext/rope</code></td><td align="left"><code class="filename">ext/slist</code></td></tr><tr><td align="left"><code class="filename">ext/stdio_filebuf.h</code></td><td align="left"><code class="filename">ext/stdio_sync_filebuf.h</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left"><code class="filename">ext/typelist.h</code></td><td align="left"><code class="filename">ext/type_traits.h</code></td></tr><tr><td align="left"><code class="filename">ext/vstring.h</code></td><td colspan="4" align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="table.debug_headers"></a><p class="title"><strong>Table 3.16. Extension Debug Headers</strong></p><div class="table-contents"><table class="table" summary="Extension Debug Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /><col align="left" class="c5" /></colgroup><tbody><tr><td align="left"><code class="filename">debug/array</code></td><td align="left"><code class="filename">debug/bitset</code></td><td align="left"><code class="filename">debug/deque</code></td><td align="left"><code class="filename">debug/forward_list</code></td><td align="left"><code class="filename">debug/list</code></td></tr><tr><td align="left"><code class="filename">debug/map</code></td><td align="left"><code class="filename">debug/set</code></td><td align="left"><code class="filename">debug/string</code></td><td align="left"><code class="filename">debug/unordered_map</code></td><td align="left"><code class="filename">debug/unordered_set</code></td></tr><tr><td align="left"><code class="filename">debug/vector</code></td><td colspan="4" align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="table.profile_headers"></a><p class="title"><strong>Table 3.17. Extension Profile Headers</strong></p><div class="table-contents"><table class="table" summary="Extension Profile Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><tbody><tr><td align="left"><code class="filename">profile/bitset</code></td><td align="left"><code class="filename">profile/deque</code></td><td align="left"><code class="filename">profile/list</code></td><td align="left"><code class="filename">profile/map</code></td></tr><tr><td align="left"><code class="filename">profile/set</code></td><td align="left"><code class="filename">profile/unordered_map</code></td><td align="left"><code class="filename">profile/unordered_set</code></td><td align="left"><code class="filename">profile/vector</code></td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="table.parallel_headers"></a><p class="title"><strong>Table 3.18. Extension Parallel Headers</strong></p><div class="table-contents"><table class="table" summary="Extension Parallel Headers" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /></colgroup><tbody><tr><td align="left"><code class="filename">parallel/algorithm</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.mixing"></a>Mixing Headers</h3></div></div></div><p> A few simple rules.
  </p><p>First, mixing different dialects of the standard headers is not
  possible. It's an all-or-nothing affair. Thus, code like
  </p><pre class="programlisting">
diff -Nrcpad gcc-7.3.0/libstdc++-v3/doc/xml/faq.xml gcc-7.4.0/libstdc++-v3/doc/xml/faq.xml
*** gcc-7.3.0/libstdc++-v3/doc/xml/faq.xml	Tue Apr 11 22:36:40 2017
--- gcc-7.4.0/libstdc++-v3/doc/xml/faq.xml	Thu May 10 19:23:33 2018
***************
*** 734,748 ****
      except for some corner cases.  Support for localization
      in <classname>locale</classname> may be incomplete on some non-GNU
      platforms. Also dependent on the underlying platform is support
!     for <type>wchar_t</type> and <type>long
!     long</type> specializations, and details of thread support.
      </para>
      <para>    
      Long answer: See the implementation status pages for 
      <link linkend="status.iso.1998">C++98</link>,
!     <link linkend="status.iso.tr1">TR1</link>, and 
!     <link linkend="status.iso.2011">C++11</link>.
!     <link linkend="status.iso.2014">C++14</link>.
      </para> 
    </answer>
  </qandaentry>
--- 734,749 ----
      except for some corner cases.  Support for localization
      in <classname>locale</classname> may be incomplete on some non-GNU
      platforms. Also dependent on the underlying platform is support
!     for <type>wchar_t</type> and <type>long long</type> specializations,
!     and details of thread support.
      </para>
      <para>    
      Long answer: See the implementation status pages for 
      <link linkend="status.iso.1998">C++98</link>,
!     <link linkend="status.iso.tr1">TR1</link>,
!     <link linkend="status.iso.2011">C++11</link>,
!     <link linkend="status.iso.2014">C++14</link>, and
!     <link linkend="status.iso.2017">C++17</link>.
      </para> 
    </answer>
  </qandaentry>
***************
*** 875,880 ****
--- 876,884 ----
      </para>
    </question>
    <answer xml:id="a-ambiguous_overloads">
+     <note>
+       <para>This answer is old and probably no longer be relevant.</para>
+     </note>
      <para>
      Another problem is the <literal>rel_ops</literal> namespace and the template
      comparison operator functions contained therein.  If they become
diff -Nrcpad gcc-7.3.0/libstdc++-v3/doc/xml/manual/debug_mode.xml gcc-7.4.0/libstdc++-v3/doc/xml/manual/debug_mode.xml
*** gcc-7.3.0/libstdc++-v3/doc/xml/manual/debug_mode.xml	Thu Mar  2 19:11:50 2017
--- gcc-7.4.0/libstdc++-v3/doc/xml/manual/debug_mode.xml	Thu May 10 19:23:33 2018
*************** containers have additional debug capabil
*** 285,291 ****
    </row>
  </thead>
  <tbody>
!     <row>
      <entry><classname>std::unordered_map</classname></entry>
      <entry><filename class="headerfile">unordered_map</filename></entry>
      <entry><classname>__gnu_debug::unordered_map</classname></entry>
--- 285,303 ----
    </row>
  </thead>
  <tbody>
!   <row>
!     <entry><classname>std::array</classname></entry>
!     <entry><filename class="headerfile">array</filename></entry>
!     <entry><classname>__gnu_debug::array</classname></entry>
!     <entry><filename class="headerfile">&lt;debug/array&gt;</filename></entry>
!   </row>
!   <row>
!     <entry><classname>std::forward_list</classname></entry>
!     <entry><filename class="headerfile">forward_list</filename></entry>
!     <entry><classname>__gnu_debug::forward_list</classname></entry>
!     <entry><filename class="headerfile">&lt;debug/forward_list&gt;</filename></entry>
!   </row>
!   <row>
      <entry><classname>std::unordered_map</classname></entry>
      <entry><filename class="headerfile">unordered_map</filename></entry>
      <entry><classname>__gnu_debug::unordered_map</classname></entry>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/doc/xml/manual/status_cxx1998.xml gcc-7.4.0/libstdc++-v3/doc/xml/manual/status_cxx1998.xml
*** gcc-7.3.0/libstdc++-v3/doc/xml/manual/status_cxx1998.xml	Wed Oct 25 14:18:43 2017
--- gcc-7.4.0/libstdc++-v3/doc/xml/manual/status_cxx1998.xml	Fri Oct 12 11:36:18 2018
*************** This page describes the C++ support in t
*** 1125,1130 ****
--- 1125,1134 ----
        implementation will be described under
        <link linkend="std.localization.locales.locale">Localization</link>.
     </para>
+    <para><emphasis>[23.*]</emphasis> All of the containers in this clause
+      define <type>size_type</type> as <type>std::size_t</type> and
+      <type>difference_type</type> as <type>std::ptrdiff_t</type>.
+    </para>
     <para><emphasis>[26.2.8]/9</emphasis> I have no idea what
        <code>complex&lt;T&gt;</code>'s <code>pow(0,0)</code> returns.
     </para>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/doc/xml/manual/test.xml gcc-7.4.0/libstdc++-v3/doc/xml/manual/test.xml
*** gcc-7.3.0/libstdc++-v3/doc/xml/manual/test.xml	Fri Jun 16 12:19:54 2017
--- gcc-7.4.0/libstdc++-v3/doc/xml/manual/test.xml	Tue Aug  7 22:50:28 2018
*************** cat 27_io/objects/char/3_xin.in | a.out<
*** 753,764 ****
  
    <para>
      Similarly, tests which depend on a newer standard than the default
!     should use <literal>dg-options</literal> instead of an effective target,
!     so that they are not skipped by default.
      For example, tests for C++17 features should use
  <programlisting>    // { dg-options "-std=gnu++17" }</programlisting>
!     and not
! <programlisting>    // { dg-do run "c++1z" }</programlisting>
    </para>
  
  <section xml:id="tests.dg.examples"><info><title>Examples of Test Directives</title></info>
--- 753,767 ----
  
    <para>
      Similarly, tests which depend on a newer standard than the default
!     must use <literal>dg-options</literal> instead of (or in addition to)
!     an effective target, so that they are not skipped by default.
      For example, tests for C++17 features should use
  <programlisting>    // { dg-options "-std=gnu++17" }</programlisting>
!     before any <literal>dg-do</literal> such as:
! <programlisting>    // { dg-do run "c++17" }</programlisting>
!     The <literal>dg-options</literal> directive must come first, so that
!     the <literal>-std</literal> flag has already been added to the options
!     before checking the <literal>c++17</literal> target.
    </para>
  
  <section xml:id="tests.dg.examples"><info><title>Examples of Test Directives</title></info>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/doc/xml/manual/using.xml gcc-7.4.0/libstdc++-v3/doc/xml/manual/using.xml
*** gcc-7.3.0/libstdc++-v3/doc/xml/manual/using.xml	Tue Mar 28 12:43:06 2017
--- gcc-7.4.0/libstdc++-v3/doc/xml/manual/using.xml	Wed Aug  8 13:52:09 2018
***************
*** 126,132 ****
       must be available to all hosted implementations.  Actually, the
       word "files" is a misnomer, since the contents of the
       headers don't necessarily have to be in any kind of external
!      file.  The only rule is that when one <code>#include</code>'s a
       header, the contents of that header become available, no matter
       how.
     </para>
--- 126,132 ----
       must be available to all hosted implementations.  Actually, the
       word "files" is a misnomer, since the contents of the
       headers don't necessarily have to be in any kind of external
!      file.  The only rule is that when one <code>#include</code>s a
       header, the contents of that header become available, no matter
       how.
     </para>
***************
*** 138,153 ****
     <para>
       There are two main types of include files: header files related
       to a specific version of the ISO C++ standard (called Standard
!      Headers), and all others (TR1, C++ ABI, and Extensions).
     </para>
  
     <para>
!      Two dialects of standard headers are supported, corresponding to
!      the 1998 standard as updated for 2003, and the current 2011 standard.
     </para>
  
     <para>
!      C++98/03 include files. These are available in the default compilation mode, i.e. <code>-std=c++98</code> or <code>-std=gnu++98</code>.
     </para>
  
  <table frame="all" xml:id="table.cxx98_headers">
--- 138,161 ----
     <para>
       There are two main types of include files: header files related
       to a specific version of the ISO C++ standard (called Standard
!      Headers), and all others (TS, TR1, C++ ABI, and Extensions).
     </para>
  
     <para>
!      Multiple dialects of standard headers are supported, corresponding to
!      the 1998 standard as updated for 2003, the 2011 standard, the 2014
!      standard, and so on.
     </para>
  
     <para>
!      <xref linkend="table.cxx98_headers"/> and
!      <xref linkend="table.cxx98_cheaders"/> and
!      <xref linkend="table.cxx98_deprheaders"/>
!      show the C++98/03 include files.
!      These are available in the C++98 compilation mode,
!      i.e. <code>-std=c++98</code> or <code>-std=gnu++98</code>.
!      Unless specified otherwise below, they are also available in later modes
!      (C++11, C++14 etc).
     </para>
  
  <table frame="all" xml:id="table.cxx98_headers">
***************
*** 205,210 ****
--- 213,219 ----
  <row>
  <entry><filename class="headerfile">valarray</filename></entry>
  <entry><filename class="headerfile">vector</filename></entry>
+ <entry namest="c3" nameend="c5"/>
  </row>
  </tbody>
  </tgroup>
***************
*** 246,259 ****
  <entry><filename class="headerfile">ctime</filename></entry>
  <entry><filename class="headerfile">cwchar</filename></entry>
  <entry><filename class="headerfile">cwctype</filename></entry>
  </row>
  </tbody>
  </tgroup>
  </table>
  
  <para>
! C++11 include files. These are only available in C++11 compilation
  mode, i.e. <literal>-std=c++11</literal> or <literal>-std=gnu++11</literal>.
  </para>
  
  <para/>
--- 255,292 ----
  <entry><filename class="headerfile">ctime</filename></entry>
  <entry><filename class="headerfile">cwchar</filename></entry>
  <entry><filename class="headerfile">cwctype</filename></entry>
+ <entry namest="c4" nameend="c5"/>
  </row>
  </tbody>
  </tgroup>
  </table>
  
  <para>
!   The following header is deprecated
!   and might be removed from a future C++ standard.
! </para>
! 
! <table frame="all" xml:id="table.cxx98_deprheaders">
! <title>C++ 1998 Deprecated Library Header</title>
! 
! <tgroup cols="1" align="left" colsep="1" rowsep="1">
! <colspec colname="c1"/>
! <tbody>
! <row>
! <entry><filename class="headerfile">strstream</filename></entry>
! </row>
! </tbody>
! </tgroup>
! </table>
! 
! <para>
! <xref linkend="table.cxx11_headers"/> and
! <xref linkend="table.cxx11_cheaders"/> show the C++11 include files.
! These are available in C++11 compilation
  mode, i.e. <literal>-std=c++11</literal> or <literal>-std=gnu++11</literal>.
+ Including these headers in C++98/03 mode may result in compilation errors.
+ Unless specified otherwise below, they are also available in later modes
+ (C++14 etc).
  </para>
  
  <para/>
*************** mode, i.e. <literal>-std=c++11</literal>
*** 269,341 ****
  <tbody>
  
  <row>
- <entry><filename class="headerfile">algorithm</filename></entry>
  <entry><filename class="headerfile">array</filename></entry>
! <entry><filename class="headerfile">bitset</filename></entry>
  <entry><filename class="headerfile">chrono</filename></entry>
! <entry><filename class="headerfile">complex</filename></entry>
! </row>
! <row>
  <entry><filename class="headerfile">condition_variable</filename></entry>
- <entry><filename class="headerfile">deque</filename></entry>
- <entry><filename class="headerfile">exception</filename></entry>
- <entry><filename class="headerfile">forward_list</filename></entry>
- <entry><filename class="headerfile">fstream</filename></entry>
  </row>
  <row>
! <entry><filename class="headerfile">functional</filename></entry>
  <entry><filename class="headerfile">future</filename></entry>
  <entry><filename class="headerfile">initalizer_list</filename></entry>
- <entry><filename class="headerfile">iomanip</filename></entry>
- <entry><filename class="headerfile">ios</filename></entry>
- </row>
- <row>
- <entry><filename class="headerfile">iosfwd</filename></entry>
- <entry><filename class="headerfile">iostream</filename></entry>
- <entry><filename class="headerfile">istream</filename></entry>
- <entry><filename class="headerfile">iterator</filename></entry>
- <entry><filename class="headerfile">limits</filename></entry>
- </row>
- <row>
- <entry><filename class="headerfile">list</filename></entry>
- <entry><filename class="headerfile">locale</filename></entry>
- <entry><filename class="headerfile">map</filename></entry>
- <entry><filename class="headerfile">memory</filename></entry>
  <entry><filename class="headerfile">mutex</filename></entry>
- </row>
- <row>
- <entry><filename class="headerfile">new</filename></entry>
- <entry><filename class="headerfile">numeric</filename></entry>
- <entry><filename class="headerfile">ostream</filename></entry>
- <entry><filename class="headerfile">queue</filename></entry>
  <entry><filename class="headerfile">random</filename></entry>
  </row>
  <row>
  <entry><filename class="headerfile">ratio</filename></entry>
  <entry><filename class="headerfile">regex</filename></entry>
! <entry><filename class="headerfile">set</filename></entry>
! <entry><filename class="headerfile">sstream</filename></entry>
! <entry><filename class="headerfile">stack</filename></entry>
! </row>
! <row>
! <entry><filename class="headerfile">stdexcept</filename></entry>
! <entry><filename class="headerfile">streambuf</filename></entry>
! <entry><filename class="headerfile">string</filename></entry>
  <entry><filename class="headerfile">system_error</filename></entry>
  <entry><filename class="headerfile">thread</filename></entry>
  </row>
  <row>
  <entry><filename class="headerfile">tuple</filename></entry>
  <entry><filename class="headerfile">type_traits</filename></entry>
- <entry><filename class="headerfile">typeinfo</filename></entry>
  <entry><filename class="headerfile">unordered_map</filename></entry>
  <entry><filename class="headerfile">unordered_set</filename></entry>
  </row>
- <row>
- <entry><filename class="headerfile">utility</filename></entry>
- <entry><filename class="headerfile">valarray</filename></entry>
- <entry><filename class="headerfile">vector</filename></entry>
- </row>
  
  </tbody>
  </tgroup>
--- 302,334 ----
  <tbody>
  
  <row>
  <entry><filename class="headerfile">array</filename></entry>
! <entry><filename class="headerfile">atomic</filename></entry>
  <entry><filename class="headerfile">chrono</filename></entry>
! <entry><filename class="headerfile">codecvt</filename></entry>
  <entry><filename class="headerfile">condition_variable</filename></entry>
  </row>
  <row>
! <entry><filename class="headerfile">forward_list</filename></entry>
  <entry><filename class="headerfile">future</filename></entry>
  <entry><filename class="headerfile">initalizer_list</filename></entry>
  <entry><filename class="headerfile">mutex</filename></entry>
  <entry><filename class="headerfile">random</filename></entry>
  </row>
  <row>
  <entry><filename class="headerfile">ratio</filename></entry>
  <entry><filename class="headerfile">regex</filename></entry>
! <entry><filename class="headerfile">scoped_allocator</filename></entry>
  <entry><filename class="headerfile">system_error</filename></entry>
  <entry><filename class="headerfile">thread</filename></entry>
  </row>
  <row>
  <entry><filename class="headerfile">tuple</filename></entry>
+ <entry><filename class="headerfile">typeindex</filename></entry>
  <entry><filename class="headerfile">type_traits</filename></entry>
  <entry><filename class="headerfile">unordered_map</filename></entry>
  <entry><filename class="headerfile">unordered_set</filename></entry>
  </row>
  
  </tbody>
  </tgroup>
*************** mode, i.e. <literal>-std=c++11</literal>
*** 354,392 ****
  <colspec colname="c5"/>
  <tbody>
  <row>
- <entry><filename class="headerfile">cassert</filename></entry>
  <entry><filename class="headerfile">ccomplex</filename></entry>
- <entry><filename class="headerfile">cctype</filename></entry>
- <entry><filename class="headerfile">cerrno</filename></entry>
  <entry><filename class="headerfile">cfenv</filename></entry>
  </row>
  <row>
! <entry><filename class="headerfile">cfloat</filename></entry>
! <entry><filename class="headerfile">cinttypes</filename></entry>
! <entry><filename class="headerfile">ciso646</filename></entry>
! <entry><filename class="headerfile">climits</filename></entry>
! <entry><filename class="headerfile">clocale</filename></entry>
  </row>
  <row>
! <entry><filename class="headerfile">cmath</filename></entry>
! <entry><filename class="headerfile">csetjmp</filename></entry>
! <entry><filename class="headerfile">csignal</filename></entry>
! <entry><filename class="headerfile">cstdarg</filename></entry>
! <entry><filename class="headerfile">cstdbool</filename></entry>
  </row>
  <row>
! <entry><filename class="headerfile">cstddef</filename></entry>
! <entry><filename class="headerfile">cstdint</filename></entry>
! <entry><filename class="headerfile">cstdlib</filename></entry>
! <entry><filename class="headerfile">cstdio</filename></entry>
! <entry><filename class="headerfile">cstring</filename></entry>
  </row>
  <row>
! <entry><filename class="headerfile">ctgmath</filename></entry>
! <entry><filename class="headerfile">ctime</filename></entry>
! <entry><filename class="headerfile">cuchar</filename></entry>
! <entry><filename class="headerfile">cwchar</filename></entry>
! <entry><filename class="headerfile">cwctype</filename></entry>
  </row>
  </tbody>
  </tgroup>
--- 347,508 ----
  <colspec colname="c5"/>
  <tbody>
  <row>
  <entry><filename class="headerfile">ccomplex</filename></entry>
  <entry><filename class="headerfile">cfenv</filename></entry>
+ <entry><filename class="headerfile">cinttypes</filename></entry>
+ <entry><filename class="headerfile">cstdalign</filename></entry>
+ <entry><filename class="headerfile">cstdbool</filename></entry>
  </row>
  <row>
! <entry><filename class="headerfile">cstdint</filename></entry>
! <entry><filename class="headerfile">ctgmath</filename></entry>
! <entry><filename class="headerfile">cuchar</filename></entry>
! <entry namest="c4" nameend="c5"/>
  </row>
+ </tbody>
+ </tgroup>
+ </table>
+ 
+ <para>
+ <xref linkend="table.cxx14_headers"/> shows the C++14 include file.
+ This is available in C++14 compilation
+ mode, i.e. <literal>-std=c++14</literal> or <literal>-std=gnu++14</literal>.
+ Including this header in C++98/03 mode or C++11 will not result in
+ compilation errors, but will not define anything.
+ Unless specified otherwise below, it is also available in later modes
+ (C++17 etc).
+ </para>
+ 
+ <para/>
+ <table frame="all" xml:id="table.cxx14_headers">
+ <title>C++ 2014 Library Header</title>
+ 
+ <tgroup cols="1" align="left" colsep="1" rowsep="1">
+ <colspec colname="c1"/>
+ <tbody>
  <row>
! <entry><filename class="headerfile">shared_mutex</filename></entry>
  </row>
+ </tbody>
+ </tgroup>
+ </table>
+ 
+ <para>
+ <xref linkend="table.cxx17_headers"/> shows the C++17 include files.
+ These are available in C++17 compilation
+ mode, i.e. <literal>-std=c++17</literal> or <literal>-std=gnu++17</literal>.
+ Including these headers in earlier modes will not result in
+ compilation errors, but will not define anything.
+ Unless specified otherwise below, they are also available in later modes
+ (C++20 etc).
+ </para>
+ 
+ <para/>
+ <table frame="all" xml:id="table.cxx17_headers">
+ <title>C++ 2017 Library Headers</title>
+ 
+ <tgroup cols="4" align="left" colsep="1" rowsep="1">
+ <colspec colname="c1"/>
+ <colspec colname="c2"/>
+ <colspec colname="c3"/>
+ <colspec colname="c4"/>
+ <tbody>
  <row>
! <entry><filename class="headerfile">any</filename></entry>
! <entry><filename class="headerfile">optional</filename></entry>
! <entry><filename class="headerfile">string_view</filename></entry>
! <entry><filename class="headerfile">variant</filename></entry>
  </row>
+ </tbody>
+ </tgroup>
+ </table>
+ 
+ 
+ <para>
+ <xref linkend="table.filesystemts_headers"/>,
+ shows the additional include file define by the
+ File System Technical Specification, ISO/IEC TS 18822.
+ This is available in C++11 and later compilation modes.
+ Including this header in earlier modes will not result in
+ compilation errors, but will not define anything.
+ </para>
+ 
+ <para/>
+ <table frame="all" xml:id="table.filesystemts_headers">
+ <title>File System TS Header</title>
+ 
+ <tgroup cols="1" align="left" colsep="1" rowsep="1">
+ <colspec colname="c1"/>
+ <tbody>
  <row>
! <entry><filename class="headerfile">experimental/filesystem</filename></entry>
! </row>
! </tbody>
! </tgroup>
! </table>
! 
! 
! <para>
! <xref linkend="table.libfundts_headers"/>,
! shows the additional include files define by the C++ Extensions for 
! Library Fundamentals Technical Specification, ISO/IEC TS 19568.
! These are available in C++14 and later compilation modes.
! Including these headers in earlier modes will not result in
! compilation errors, but will not define anything.
! </para>
! 
! <para/>
! <table frame="all" xml:id="table.libfundts_headers">
! <title>Library Fundamentals TS Headers</title>
! 
! <tgroup cols="5" align="left" colsep="1" rowsep="1">
! <colspec colname="c1"/>
! <colspec colname="c2"/>
! <colspec colname="c3"/>
! <colspec colname="c4"/>
! <colspec colname="c5"/>
! <tbody>
! <row>
! <entry><filename class="headerfile">experimental/algorithm</filename></entry>
! <entry><filename class="headerfile">experimental/any</filename></entry>
! <entry><filename class="headerfile">experimental/array</filename></entry>
! <entry><filename class="headerfile">experimental/chrono</filename></entry>
! <entry><filename class="headerfile">experimental/deque</filename></entry>
! </row>
! <row>
! <entry><filename class="headerfile">experimental/forward_list</filename></entry>
! <entry><filename class="headerfile">experimental/functional</filename></entry>
! <entry><filename class="headerfile">experimental/iterator</filename></entry>
! <entry><filename class="headerfile">experimental/list</filename></entry>
! <entry><filename class="headerfile">experimental/map</filename></entry>
! </row>
! <row>
! <entry><filename class="headerfile">experimental/memory</filename></entry>
! <entry><filename class="headerfile">experimental/memory_resource</filename></entry>
! <entry><filename class="headerfile">experimental/numeric</filename></entry>
! <entry><filename class="headerfile">experimental/optional</filename></entry>
! <entry><filename class="headerfile">experimental/propagate_const</filename></entry>
! </row>
! <row>
! <entry><filename class="headerfile">experimental/random</filename></entry>
! <entry><filename class="headerfile">experimental/ratio</filename></entry>
! <entry><filename class="headerfile">experimental/regex</filename></entry>
! <entry><filename class="headerfile">experimental/set</filename></entry>
! <entry><filename class="headerfile">experimental/source_location</filename></entry>
! </row>
! <row>
! <entry><filename class="headerfile">experimental/string</filename></entry>
! <entry><filename class="headerfile">experimental/string_view</filename></entry>
! <entry><filename class="headerfile">experimental/system_error</filename></entry>
! <entry><filename class="headerfile">experimental/tuple</filename></entry>
! <entry><filename class="headerfile">experimental/type_traits</filename></entry>
! </row>
! <row>
! <entry><filename class="headerfile">experimental/unordered_map</filename></entry>
! <entry><filename class="headerfile">experimental/unordered_set</filename></entry>
! <entry><filename class="headerfile">experimental/utility</filename></entry>
! <entry><filename class="headerfile">experimental/vector</filename></entry>
! <entry />
  </row>
  </tbody>
  </tgroup>
*************** mode, i.e. <literal>-std=c++11</literal>
*** 424,429 ****
--- 540,546 ----
  </row>
  <row>
  <entry><filename class="headerfile">tr1/utility</filename></entry>
+ <entry namest="c2" nameend="c5"/>
  </row>
  
  </tbody>
*************** compiler supports scalar decimal floatin
*** 564,569 ****
--- 681,687 ----
  </row>
  <row>
  <entry><filename class="headerfile">ext/vstring.h</filename></entry>
+ <entry namest="c2" nameend="c5"/>
  </row>
  
  </tbody>
*************** compiler supports scalar decimal floatin
*** 584,601 ****
  <tbody>
  
  <row>
  <entry><filename class="headerfile">debug/bitset</filename></entry>
  <entry><filename class="headerfile">debug/deque</filename></entry>
  <entry><filename class="headerfile">debug/list</filename></entry>
- <entry><filename class="headerfile">debug/map</filename></entry>
- <entry><filename class="headerfile">debug/set</filename></entry>
  </row>
- 
  <row>
  <entry><filename class="headerfile">debug/string</filename></entry>
  <entry><filename class="headerfile">debug/unordered_map</filename></entry>
  <entry><filename class="headerfile">debug/unordered_set</filename></entry>
  <entry><filename class="headerfile">debug/vector</filename></entry>
  </row>
  
  </tbody>
--- 702,723 ----
  <tbody>
  
  <row>
+ <entry><filename class="headerfile">debug/array</filename></entry>
  <entry><filename class="headerfile">debug/bitset</filename></entry>
  <entry><filename class="headerfile">debug/deque</filename></entry>
+ <entry><filename class="headerfile">debug/forward_list</filename></entry>
  <entry><filename class="headerfile">debug/list</filename></entry>
  </row>
  <row>
+ <entry><filename class="headerfile">debug/map</filename></entry>
+ <entry><filename class="headerfile">debug/set</filename></entry>
  <entry><filename class="headerfile">debug/string</filename></entry>
  <entry><filename class="headerfile">debug/unordered_map</filename></entry>
  <entry><filename class="headerfile">debug/unordered_set</filename></entry>
+ </row>
+ <row>
  <entry><filename class="headerfile">debug/vector</filename></entry>
+ <entry namest="c2" nameend="c5"/>
  </row>
  
  </tbody>
*************** g++ -Winvalid-pch -I. -include stdc++.h
*** 1016,1022 ****
  </para>
  
  <para> The <symbol>_GLIBCXX_USE_CXX11_ABI</symbol> macro (see
! <xref linkend="manual.intro.using.macros"/>) controls whether
    the declarations in the library headers use the old or new ABI.
    So the decision of which ABI to use can be made separately for each
    source file being compiled.
--- 1138,1144 ----
  </para>
  
  <para> The <symbol>_GLIBCXX_USE_CXX11_ABI</symbol> macro (see
!   <xref linkend="manual.intro.using.macros"/>) controls whether
    the declarations in the library headers use the old or new ABI.
    So the decision of which ABI to use can be made separately for each
    source file being compiled.
*************** g++ -Winvalid-pch -I. -include stdc++.h
*** 1051,1062 ****
  </para>
  
  <para> Although the standard exception types defined in
!   <filename class="headerfile">&lt;stdexcept&gt;</filename> use strings, they
    are not defined twice, so that a <classname>std::out_of_range</classname>
    exception thrown in one file can always be caught by a suitable handler in
    another file, even if the two files are compiled with different ABIs.
  </para>
  
  <section xml:id="manual.intro.using.abi.trouble" xreflabel="Dual ABI Troubleshooting"><info><title>Troubleshooting</title></info>
  
  <para> If you get linker errors about undefined references to symbols
--- 1173,1211 ----
  </para>
  
  <para> Although the standard exception types defined in
!   <filename class="headerfile">&lt;stdexcept&gt;</filename> use strings, most
    are not defined twice, so that a <classname>std::out_of_range</classname>
    exception thrown in one file can always be caught by a suitable handler in
    another file, even if the two files are compiled with different ABIs.
  </para>
  
+ <para> One exception type does change when using the new ABI, namely
+   <classname>std::ios_base::failure</classname>.
+   This is necessary because the 2011 standard changed its base class from
+   <classname>std::exception</classname> to
+   <classname>std::system_error</classname>, which causes its layout to change.
+   Exceptions due to iostream errors are thrown by a function inside
+   <filename class="libraryfile">libstdc++.so</filename>, so whether the thrown
+   exception uses the old <classname>std::ios_base::failure</classname> type
+   or the new one depends on the ABI that was active when
+   <filename class="libraryfile">libstdc++.so</filename> was built,
+   <emphasis>not</emphasis> the ABI active in the user code that is using
+   iostreams.
+   This means that for a given build of GCC the type thrown is fixed.
+   In current releases the library throws a special type that can be caught
+   by handlers for either the old or new type,
+   but for GCC 7.1, 7.2 and 7.3 the library throws the new
+   <classname>std::ios_base::failure</classname> type,
+   and for GCC 5.x and 6.x the library throws the old type.
+   Catch handlers of type <classname>std::ios_base::failure</classname>
+   will only catch the exceptions if using a newer release,
+   or if the handler is compiled with the same ABI as the type thrown by
+   the library.
+   Handlers for <classname>std::exception</classname> will always catch
+   iostreams exceptions, because the old and new type both inherit from
+   <classname>std::exception</classname>.
+ </para>
+ 
  <section xml:id="manual.intro.using.abi.trouble" xreflabel="Dual ABI Troubleshooting"><info><title>Troubleshooting</title></info>
  
  <para> If you get linker errors about undefined references to symbols
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/Makefile.am gcc-7.4.0/libstdc++-v3/include/Makefile.am
*** gcc-7.3.0/libstdc++-v3/include/Makefile.am	Fri Oct 20 15:14:29 2017
--- gcc-7.4.0/libstdc++-v3/include/Makefile.am	Mon Oct 22 08:47:52 2018
*************** bits_headers = \
*** 95,101 ****
  	${bits_srcdir}/basic_string.tcc \
  	${bits_srcdir}/boost_concept_check.h \
  	${bits_srcdir}/c++0x_warning.h \
- 	${bits_srcdir}/c++14_warning.h \
  	${bits_srcdir}/char_traits.h \
  	${bits_srcdir}/codecvt.h \
  	${bits_srcdir}/concept_check.h \
--- 95,100 ----
*************** stamp-allocator-new:
*** 1225,1230 ****
--- 1224,1237 ----
  	echo 0 > stamp-allocator-new
  endif
  
+ if ENABLE_FLOAT128
+ stamp-float128:
+ 	echo 'define _GLIBCXX_USE_FLOAT128 1' > stamp-float128
+ else
+ stamp-float128:
+ 	echo 'undef _GLIBCXX_USE_FLOAT128' > stamp-float128
+ endif
+ 
  # 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} \
*************** ${host_builddir}/c++config.h: ${CONFIG_H
*** 1236,1242 ****
  			      stamp-extern-template \
  			      stamp-dual-abi \
  			      stamp-cxx11-abi \
! 			      stamp-allocator-new
  	@date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\
  	release=`sed 's/^\([0-9]*\).*$$/\1/' ${toplevel_srcdir}/gcc/BASE-VER` ;\
  	ns_version=`cat stamp-namespace-version` ;\
--- 1243,1250 ----
  			      stamp-extern-template \
  			      stamp-dual-abi \
  			      stamp-cxx11-abi \
! 			      stamp-allocator-new \
! 			      stamp-float128
  	@date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\
  	release=`sed 's/^\([0-9]*\).*$$/\1/' ${toplevel_srcdir}/gcc/BASE-VER` ;\
  	ns_version=`cat stamp-namespace-version` ;\
*************** ${host_builddir}/c++config.h: ${CONFIG_H
*** 1245,1250 ****
--- 1253,1259 ----
  	dualabi=`cat stamp-dual-abi` ;\
  	cxx11abi=`cat stamp-cxx11-abi` ;\
  	allocatornew=`cat stamp-allocator-new` ;\
+ 	float128=`cat stamp-float128` ;\
  	ldbl_compat='s,g,g,' ;\
  	grep "^[	 ]*#[	 ]*define[	 ][	 ]*_GLIBCXX_LONG_DOUBLE_COMPAT[	 ][	 ]*1[	 ]*$$" \
  	${CONFIG_HEADER} > /dev/null 2>&1 \
*************** ${host_builddir}/c++config.h: ${CONFIG_H
*** 1257,1262 ****
--- 1266,1272 ----
  	-e "s,define _GLIBCXX_USE_DUAL_ABI, define _GLIBCXX_USE_DUAL_ABI $$dualabi," \
  	-e "s,define _GLIBCXX_USE_CXX11_ABI, define _GLIBCXX_USE_CXX11_ABI $$cxx11abi," \
  	-e "s,define _GLIBCXX_USE_ALLOCATOR_NEW, define _GLIBCXX_USE_ALLOCATOR_NEW $$allocatornew," \
+ 	-e "s,define _GLIBCXX_USE_FLOAT128,$$float128," \
  	-e "$$ldbl_compat" \
  	    < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
  	sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
*************** $(decimal_headers): ; @:
*** 1474,1476 ****
--- 1484,1491 ----
  $(ext_headers): ; @:
  $(experimental_headers): ; @:
  $(experimental_bits_headers): ; @:
+ 
+ if INCLUDE_DIR_NOTPARALLEL
+ # See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81797
+ .NOTPARALLEL:
+ endif
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/Makefile.in gcc-7.4.0/libstdc++-v3/include/Makefile.in
*** gcc-7.3.0/libstdc++-v3/include/Makefile.in	Fri Oct 20 15:14:29 2017
--- gcc-7.4.0/libstdc++-v3/include/Makefile.in	Mon Oct 22 08:47:52 2018
*************** bits_headers = \
*** 388,394 ****
  	${bits_srcdir}/basic_string.tcc \
  	${bits_srcdir}/boost_concept_check.h \
  	${bits_srcdir}/c++0x_warning.h \
- 	${bits_srcdir}/c++14_warning.h \
  	${bits_srcdir}/char_traits.h \
  	${bits_srcdir}/codecvt.h \
  	${bits_srcdir}/concept_check.h \
--- 388,393 ----
*************** stamp-host: ${host_headers} ${bits_host_
*** 1656,1661 ****
--- 1655,1665 ----
  @ENABLE_ALLOCATOR_NEW_FALSE@stamp-allocator-new:
  @ENABLE_ALLOCATOR_NEW_FALSE@	echo 0 > stamp-allocator-new
  
+ @ENABLE_FLOAT128_TRUE@stamp-float128:
+ @ENABLE_FLOAT128_TRUE@	echo 'define _GLIBCXX_USE_FLOAT128 1' > stamp-float128
+ @ENABLE_FLOAT128_FALSE@stamp-float128:
+ @ENABLE_FLOAT128_FALSE@	echo 'undef _GLIBCXX_USE_FLOAT128' > stamp-float128
+ 
  # 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} \
*************** ${host_builddir}/c++config.h: ${CONFIG_H
*** 1667,1673 ****
  			      stamp-extern-template \
  			      stamp-dual-abi \
  			      stamp-cxx11-abi \
! 			      stamp-allocator-new
  	@date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\
  	release=`sed 's/^\([0-9]*\).*$$/\1/' ${toplevel_srcdir}/gcc/BASE-VER` ;\
  	ns_version=`cat stamp-namespace-version` ;\
--- 1671,1678 ----
  			      stamp-extern-template \
  			      stamp-dual-abi \
  			      stamp-cxx11-abi \
! 			      stamp-allocator-new \
! 			      stamp-float128
  	@date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\
  	release=`sed 's/^\([0-9]*\).*$$/\1/' ${toplevel_srcdir}/gcc/BASE-VER` ;\
  	ns_version=`cat stamp-namespace-version` ;\
*************** ${host_builddir}/c++config.h: ${CONFIG_H
*** 1676,1681 ****
--- 1681,1687 ----
  	dualabi=`cat stamp-dual-abi` ;\
  	cxx11abi=`cat stamp-cxx11-abi` ;\
  	allocatornew=`cat stamp-allocator-new` ;\
+ 	float128=`cat stamp-float128` ;\
  	ldbl_compat='s,g,g,' ;\
  	grep "^[	 ]*#[	 ]*define[	 ][	 ]*_GLIBCXX_LONG_DOUBLE_COMPAT[	 ][	 ]*1[	 ]*$$" \
  	${CONFIG_HEADER} > /dev/null 2>&1 \
*************** ${host_builddir}/c++config.h: ${CONFIG_H
*** 1688,1693 ****
--- 1694,1700 ----
  	-e "s,define _GLIBCXX_USE_DUAL_ABI, define _GLIBCXX_USE_DUAL_ABI $$dualabi," \
  	-e "s,define _GLIBCXX_USE_CXX11_ABI, define _GLIBCXX_USE_CXX11_ABI $$cxx11abi," \
  	-e "s,define _GLIBCXX_USE_ALLOCATOR_NEW, define _GLIBCXX_USE_ALLOCATOR_NEW $$allocatornew," \
+ 	-e "s,define _GLIBCXX_USE_FLOAT128,$$float128," \
  	-e "$$ldbl_compat" \
  	    < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
  	sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
*************** $(ext_headers): ; @:
*** 1897,1902 ****
--- 1904,1912 ----
  $(experimental_headers): ; @:
  $(experimental_bits_headers): ; @:
  
+ # See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81797
+ @INCLUDE_DIR_NOTPARALLEL_TRUE@.NOTPARALLEL:
+ 
  # 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-7.3.0/libstdc++-v3/include/bits/basic_string.h gcc-7.4.0/libstdc++-v3/include/bits/basic_string.h
*** gcc-7.3.0/libstdc++-v3/include/bits/basic_string.h	Wed Sep 20 22:26:19 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/basic_string.h	Thu Oct 25 16:32:47 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 734,753 ****
  	// Replace allocator if POCMA is true.
  	std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator());
  
! 	if (!__str._M_is_local()
! 	    && (_Alloc_traits::_S_propagate_on_move_assign()
! 	      || _Alloc_traits::_S_always_equal()))
  	  {
  	    pointer __data = nullptr;
  	    size_type __capacity;
  	    if (!_M_is_local())
  	      {
  		if (_Alloc_traits::_S_always_equal())
  		  {
  		    __data = _M_data();
  		    __capacity = _M_allocated_capacity;
  		  }
! 		else
  		  _M_destroy(_M_allocated_capacity);
  	      }
  
--- 734,762 ----
  	// Replace allocator if POCMA is true.
  	std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator());
  
! 	if (__str._M_is_local())
  	  {
+ 	    // We've always got room for a short string, just copy it.
+ 	    if (__str.size())
+ 	      this->_S_copy(_M_data(), __str._M_data(), __str.size());
+ 	    _M_set_length(__str.size());
+ 	  }
+ 	else if (_Alloc_traits::_S_propagate_on_move_assign()
+ 	    || _Alloc_traits::_S_always_equal()
+ 	    || _M_get_allocator() == __str._M_get_allocator())
+ 	  {
+ 	    // Just move the allocated pointer, our allocator can free it.
  	    pointer __data = nullptr;
  	    size_type __capacity;
  	    if (!_M_is_local())
  	      {
  		if (_Alloc_traits::_S_always_equal())
  		  {
+ 		    // __str can reuse our existing storage.
  		    __data = _M_data();
  		    __capacity = _M_allocated_capacity;
  		  }
! 		else // __str can't use it, so free it.
  		  _M_destroy(_M_allocated_capacity);
  	      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 762,769 ****
  	    else
  	      __str._M_data(__str._M_local_buf);
  	  }
! 	else
! 	    assign(__str);
  	__str.clear();
  	return *this;
        }
--- 771,778 ----
  	    else
  	      __str._M_data(__str._M_local_buf);
  	  }
! 	else // Need to do a deep copy
! 	  assign(__str);
  	__str.clear();
  	return *this;
        }
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1216,1222 ****
         *  remainder of @a __str is appended.
         */
        basic_string&
!       append(const basic_string& __str, size_type __pos, size_type __n)
        { return _M_append(__str._M_data()
  			 + __str._M_check(__pos, "basic_string::append"),
  			 __str._M_limit(__pos, __n)); }
--- 1225,1231 ----
         *  remainder of @a __str is appended.
         */
        basic_string&
!       append(const basic_string& __str, size_type __pos, size_type __n = npos)
        { return _M_append(__str._M_data()
  			 + __str._M_check(__pos, "basic_string::append"),
  			 __str._M_limit(__pos, __n)); }
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1381,1387 ****
         *  __str, the remainder of @a __str is used.
         */
        basic_string&
!       assign(const basic_string& __str, size_type __pos, size_type __n)
        { return _M_replace(size_type(0), this->size(), __str._M_data()
  			  + __str._M_check(__pos, "basic_string::assign"),
  			  __str._M_limit(__pos, __n)); }
--- 1390,1396 ----
         *  __str, the remainder of @a __str is used.
         */
        basic_string&
!       assign(const basic_string& __str, size_type __pos, size_type __n = npos)
        { return _M_replace(size_type(0), this->size(), __str._M_data()
  			  + __str._M_check(__pos, "basic_string::assign"),
  			  __str._M_limit(__pos, __n)); }
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1633,1639 ****
        */
        basic_string&
        insert(size_type __pos1, const basic_string& __str,
! 	     size_type __pos2, size_type __n)
        { return this->replace(__pos1, size_type(0), __str._M_data()
  			     + __str._M_check(__pos2, "basic_string::insert"),
  			     __str._M_limit(__pos2, __n)); }
--- 1642,1648 ----
        */
        basic_string&
        insert(size_type __pos1, const basic_string& __str,
! 	     size_type __pos2, size_type __n = npos)
        { return this->replace(__pos1, size_type(0), __str._M_data()
  			     + __str._M_check(__pos2, "basic_string::insert"),
  			     __str._M_limit(__pos2, __n)); }
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1881,1887 ****
        */
        basic_string&
        replace(size_type __pos1, size_type __n1, const basic_string& __str,
! 	      size_type __pos2, size_type __n2)
        { return this->replace(__pos1, __n1, __str._M_data()
  			     + __str._M_check(__pos2, "basic_string::replace"),
  			     __str._M_limit(__pos2, __n2)); }
--- 1890,1896 ----
        */
        basic_string&
        replace(size_type __pos1, size_type __n1, const basic_string& __str,
! 	      size_type __pos2, size_type __n2 = npos)
        { return this->replace(__pos1, __n1, __str._M_data()
  			     + __str._M_check(__pos2, "basic_string::replace"),
  			     __str._M_limit(__pos2, __n2)); }
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 2941,2947 ****
        */
        int
        compare(size_type __pos1, size_type __n1, const basic_string& __str,
! 	      size_type __pos2, size_type __n2) const;
  
        /**
         *  @brief  Compare to a C string.
--- 2950,2956 ----
        */
        int
        compare(size_type __pos1, size_type __n1, const basic_string& __str,
! 	      size_type __pos2, size_type __n2 = npos) const;
  
        /**
         *  @brief  Compare to a C string.
*************** _GLIBCXX_END_NAMESPACE_CXX11
*** 4135,4141 ****
         *  remainder of @a __str is appended.
         */
        basic_string&
!       append(const basic_string& __str, size_type __pos, size_type __n);
  
        /**
         *  @brief  Append a C substring.
--- 4144,4150 ----
         *  remainder of @a __str is appended.
         */
        basic_string&
!       append(const basic_string& __str, size_type __pos, size_type __n = npos);
  
        /**
         *  @brief  Append a C substring.
*************** _GLIBCXX_END_NAMESPACE_CXX11
*** 4280,4286 ****
         *  __str, the remainder of @a __str is used.
         */
        basic_string&
!       assign(const basic_string& __str, size_type __pos, size_type __n)
        { return this->assign(__str._M_data()
  			    + __str._M_check(__pos, "basic_string::assign"),
  			    __str._M_limit(__pos, __n)); }
--- 4289,4295 ----
         *  __str, the remainder of @a __str is used.
         */
        basic_string&
!       assign(const basic_string& __str, size_type __pos, size_type __n = npos)
        { return this->assign(__str._M_data()
  			    + __str._M_check(__pos, "basic_string::assign"),
  			    __str._M_limit(__pos, __n)); }
*************** _GLIBCXX_END_NAMESPACE_CXX11
*** 4468,4474 ****
        */
        basic_string&
        insert(size_type __pos1, const basic_string& __str,
! 	     size_type __pos2, size_type __n)
        { return this->insert(__pos1, __str._M_data()
  			    + __str._M_check(__pos2, "basic_string::insert"),
  			    __str._M_limit(__pos2, __n)); }
--- 4477,4483 ----
        */
        basic_string&
        insert(size_type __pos1, const basic_string& __str,
! 	     size_type __pos2, size_type __n = npos)
        { return this->insert(__pos1, __str._M_data()
  			    + __str._M_check(__pos2, "basic_string::insert"),
  			    __str._M_limit(__pos2, __n)); }
*************** _GLIBCXX_END_NAMESPACE_CXX11
*** 4703,4709 ****
        */
        basic_string&
        replace(size_type __pos1, size_type __n1, const basic_string& __str,
! 	      size_type __pos2, size_type __n2)
        { return this->replace(__pos1, __n1, __str._M_data()
  			     + __str._M_check(__pos2, "basic_string::replace"),
  			     __str._M_limit(__pos2, __n2)); }
--- 4712,4718 ----
        */
        basic_string&
        replace(size_type __pos1, size_type __n1, const basic_string& __str,
! 	      size_type __pos2, size_type __n2 = npos)
        { return this->replace(__pos1, __n1, __str._M_data()
  			     + __str._M_check(__pos2, "basic_string::replace"),
  			     __str._M_limit(__pos2, __n2)); }
*************** _GLIBCXX_END_NAMESPACE_CXX11
*** 5130,5136 ****
        */
        _CharT*
        data() noexcept
!       { return _M_data(); }
  #endif
  
        /**
--- 5139,5148 ----
        */
        _CharT*
        data() noexcept
!       {
! 	_M_leak();
! 	return _M_data();
!       }
  #endif
  
        /**
*************** _GLIBCXX_END_NAMESPACE_CXX11
*** 5779,5785 ****
        */
        int
        compare(size_type __pos1, size_type __n1, const basic_string& __str,
! 	      size_type __pos2, size_type __n2) const;
  
        /**
         *  @brief  Compare to a C string.
--- 5791,5797 ----
        */
        int
        compare(size_type __pos1, size_type __n1, const basic_string& __str,
! 	      size_type __pos2, size_type __n2 = npos) const;
  
        /**
         *  @brief  Compare to a C string.
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/basic_string.tcc gcc-7.4.0/libstdc++-v3/include/bits/basic_string.tcc
*** gcc-7.3.0/libstdc++-v3/include/bits/basic_string.tcc	Wed Feb  1 11:41:48 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/basic_string.tcc	Tue Aug  7 22:50:55 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1597,1604 ****
  
    // Inhibit implicit instantiations for required instantiations,
    // which are defined via explicit instantiations elsewhere.
! #if _GLIBCXX_EXTERN_TEMPLATE > 0 && __cplusplus <= 201402L
    extern template class basic_string<char>;
    extern template
      basic_istream<char>&
      operator>>(basic_istream<char>&, string&);
--- 1597,1617 ----
  
    // Inhibit implicit instantiations for required instantiations,
    // which are defined via explicit instantiations elsewhere.
! #if _GLIBCXX_EXTERN_TEMPLATE
!   // The explicit instantiations definitions in src/c++11/string-inst.cc
!   // are compiled as C++14, so the new C++17 members aren't instantiated.
!   // Until those definitions are compiled as C++17 suppress the declaration,
!   // so C++17 code will implicitly instantiate std::string and std::wstring
!   // as needed.
! # if __cplusplus <= 201402L && _GLIBCXX_EXTERN_TEMPLATE > 0
    extern template class basic_string<char>;
+ # elif ! _GLIBCXX_USE_CXX11_ABI
+   // Still need to prevent implicit instantiation of the COW empty rep,
+   // to ensure the definition in libstdc++.so is unique (PR 86138).
+   extern template basic_string<char>::size_type
+     basic_string<char>::_Rep::_S_empty_rep_storage[];
+ # endif
+ 
    extern template
      basic_istream<char>&
      operator>>(basic_istream<char>&, string&);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1613,1619 ****
--- 1626,1638 ----
      getline(basic_istream<char>&, string&);
  
  #ifdef _GLIBCXX_USE_WCHAR_T
+ # if __cplusplus <= 201402L && _GLIBCXX_EXTERN_TEMPLATE > 0
    extern template class basic_string<wchar_t>;
+ # elif ! _GLIBCXX_USE_CXX11_ABI
+   extern template basic_string<wchar_t>::size_type
+     basic_string<wchar_t>::_Rep::_S_empty_rep_storage[];
+ # endif
+ 
    extern template
      basic_istream<wchar_t>&
      operator>>(basic_istream<wchar_t>&, wstring&);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1626,1633 ****
    extern template
      basic_istream<wchar_t>&
      getline(basic_istream<wchar_t>&, wstring&);
! #endif
! #endif
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
--- 1645,1652 ----
    extern template
      basic_istream<wchar_t>&
      getline(basic_istream<wchar_t>&, wstring&);
! #endif // _GLIBCXX_USE_WCHAR_T
! #endif // _GLIBCXX_EXTERN_TEMPLATE
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/c++14_warning.h gcc-7.4.0/libstdc++-v3/include/bits/c++14_warning.h
*** gcc-7.3.0/libstdc++-v3/include/bits/c++14_warning.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/c++14_warning.h	Thu Jan  1 00:00:00 1970
***************
*** 1,37 ****
- // Copyright (C) 2013-2017 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
- // software; you can redistribute it and/or modify it under the
- // terms of the GNU General Public License as published by the
- // Free Software Foundation; either version 3, or (at your option)
- // any later version.
- 
- // This library is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- // GNU General Public License for more details.
- 
- // Under Section 7 of GPL version 3, you are granted additional
- // permissions described in the GCC Runtime Library Exception, version
- // 3.1, as published by the Free Software Foundation.
- 
- // You should have received a copy of the GNU General Public License and
- // a copy of the GCC Runtime Library Exception along with this program;
- // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
- // <http://www.gnu.org/licenses/>.
- 
- /** @file bits/c++14_warning.h
-  *  This is an internal header file, included by other library headers.
-  *  Do not attempt to use it directly. @headername{iosfwd}
-  */
- 
- #ifndef _CXX14_WARNING_H
- #define _CXX14_WARNING_H 1
- 
- #if __cplusplus <= 201103L
- #error This file requires compiler and library support \
- for the ISO C++ 2014 standard. This support must be enabled \
- with the -std=c++14 or -std=gnu++14 compiler options.
- #endif
- 
- #endif
--- 0 ----
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/c++config gcc-7.4.0/libstdc++-v3/include/bits/c++config
*** gcc-7.3.0/libstdc++-v3/include/bits/c++config	Thu Mar 23 19:40:07 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/c++config	Tue Aug  7 22:50:49 2018
*************** namespace std
*** 634,637 ****
--- 634,642 ----
  # endif
  #endif
  
+ /* Define if __float128 is supported on this host. */
+ #if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__)
+ #define _GLIBCXX_USE_FLOAT128
+ #endif
+ 
  // End of prewritten config; the settings discovered at configure time follow.
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/char_traits.h gcc-7.4.0/libstdc++-v3/include/bits/char_traits.h
*** gcc-7.3.0/libstdc++-v3/include/bits/char_traits.h	Tue Sep 12 16:27:01 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/char_traits.h	Fri Jun 15 16:42:57 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 143,150 ****
        { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); }
      };
  
- #define __cpp_lib_constexpr_char_traits 201611
- 
    template<typename _CharT>
      _GLIBCXX14_CONSTEXPR int
      char_traits<_CharT>::
--- 143,148 ----
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 217,222 ****
--- 215,222 ----
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
  #if __cplusplus > 201402
+ #define __cpp_lib_constexpr_char_traits 201611
+ 
    /**
     *  @brief Determine whether the characters of a NULL-terminated
     *  string are known at compile time.
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/forward_list.h gcc-7.4.0/libstdc++-v3/include/bits/forward_list.h
*** gcc-7.3.0/libstdc++-v3/include/bits/forward_list.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/forward_list.h	Wed Jul  4 13:59:42 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 274,280 ****
      struct _Fwd_list_base
      {
      protected:
-       typedef __alloc_rebind<_Alloc, _Tp> 		  _Tp_alloc_type;
        typedef __alloc_rebind<_Alloc, _Fwd_list_node<_Tp>> _Node_alloc_type;
        typedef __gnu_cxx::__alloc_traits<_Node_alloc_type> _Node_alloc_traits;
  
--- 274,279 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 345,355 ****
            _Node* __node = this->_M_get_node();
            __try
              {
- 	      _Tp_alloc_type __a(_M_get_Node_allocator());
- 	      typedef allocator_traits<_Tp_alloc_type> _Alloc_traits;
  	      ::new ((void*)__node) _Node;
! 	      _Alloc_traits::construct(__a, __node->_M_valptr(),
! 				       std::forward<_Args>(__args)...);
              }
            __catch(...)
              {
--- 344,353 ----
            _Node* __node = this->_M_get_node();
            __try
              {
  	      ::new ((void*)__node) _Node;
! 	      _Node_alloc_traits::construct(_M_get_Node_allocator(),
! 					    __node->_M_valptr(),
! 					    std::forward<_Args>(__args)...);
              }
            __catch(...)
              {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 412,421 ****
        typedef _Fwd_list_base<_Tp, _Alloc>                  _Base;
        typedef _Fwd_list_node<_Tp>                          _Node;
        typedef _Fwd_list_node_base                          _Node_base;
-       typedef typename _Base::_Tp_alloc_type               _Tp_alloc_type;
        typedef typename _Base::_Node_alloc_type             _Node_alloc_type;
        typedef typename _Base::_Node_alloc_traits           _Node_alloc_traits;
!       typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type>    _Alloc_traits;
  
      public:
        // types:
--- 410,418 ----
        typedef _Fwd_list_base<_Tp, _Alloc>                  _Base;
        typedef _Fwd_list_node<_Tp>                          _Node;
        typedef _Fwd_list_node_base                          _Node_base;
        typedef typename _Base::_Node_alloc_type             _Node_alloc_type;
        typedef typename _Base::_Node_alloc_traits           _Node_alloc_traits;
!       typedef allocator_traits<__alloc_rebind<_Alloc, _Tp>>    _Alloc_traits;
  
      public:
        // types:
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/forward_list.tcc gcc-7.4.0/libstdc++-v3/include/bits/forward_list.tcc
*** gcc-7.3.0/libstdc++-v3/include/bits/forward_list.tcc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/forward_list.tcc	Wed Jul  4 13:59:42 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 69,76 ****
      {
        _Node* __curr = static_cast<_Node*>(__pos->_M_next);
        __pos->_M_next = __curr->_M_next;
!       _Tp_alloc_type __a(_M_get_Node_allocator());
!       allocator_traits<_Tp_alloc_type>::destroy(__a, __curr->_M_valptr());
        __curr->~_Node();
        _M_put_node(__curr);
        return __pos->_M_next;
--- 69,76 ----
      {
        _Node* __curr = static_cast<_Node*>(__pos->_M_next);
        __pos->_M_next = __curr->_M_next;
!       _Node_alloc_traits::destroy(_M_get_Node_allocator(),
! 				  __curr->_M_valptr());
        __curr->~_Node();
        _M_put_node(__curr);
        return __pos->_M_next;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 87,94 ****
          {
            _Node* __temp = __curr;
            __curr = static_cast<_Node*>(__curr->_M_next);
! 	  _Tp_alloc_type __a(_M_get_Node_allocator());
! 	  allocator_traits<_Tp_alloc_type>::destroy(__a, __temp->_M_valptr());
  	  __temp->~_Node();
            _M_put_node(__temp);
          }
--- 87,94 ----
          {
            _Node* __temp = __curr;
            __curr = static_cast<_Node*>(__curr->_M_next);
! 	  _Node_alloc_traits::destroy(_M_get_Node_allocator(),
! 				      __temp->_M_valptr());
  	  __temp->~_Node();
            _M_put_node(__temp);
          }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/hashtable.h gcc-7.4.0/libstdc++-v3/include/bits/hashtable.h
*** gcc-7.3.0/libstdc++-v3/include/bits/hashtable.h	Mon Sep  4 12:24:42 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/hashtable.h	Wed Nov 28 06:19:38 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1206,1211 ****
--- 1206,1214 ----
  	      _M_assign(__ht,
  			[&__roan](__node_type* __n)
  			{ return __roan(std::move_if_noexcept(__n->_M_v())); });
+ 
+ 	      if (__former_buckets)
+ 		_M_deallocate_buckets(__former_buckets, __former_bucket_count);
  	      __ht.clear();
  	    }
  	  __catch(...)
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/node_handle.h gcc-7.4.0/libstdc++-v3/include/bits/node_handle.h
*** gcc-7.3.0/libstdc++-v3/include/bits/node_handle.h	Fri Dec  1 17:12:04 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/node_handle.h	Mon May 14 22:22:23 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 105,111 ****
        {
  	using std::swap;
  	swap(_M_ptr, __nh._M_ptr);
! 	if (_AllocTraits::propagate_on_container_swap
  	    || !_M_alloc || !__nh._M_alloc)
  	  _M_alloc.swap(__nh._M_alloc);
  	else
--- 105,111 ----
        {
  	using std::swap;
  	swap(_M_ptr, __nh._M_ptr);
! 	if (_AllocTraits::propagate_on_container_swap::value
  	    || !_M_alloc || !__nh._M_alloc)
  	  _M_alloc.swap(__nh._M_alloc);
  	else
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/parse_numbers.h gcc-7.4.0/libstdc++-v3/include/bits/parse_numbers.h
*** gcc-7.3.0/libstdc++-v3/include/bits/parse_numbers.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/parse_numbers.h	Sat Mar  3 00:17:03 2018
*************** namespace __parse_int
*** 197,202 ****
--- 197,209 ----
  		    "integer literal does not fit in unsigned long long");
      };
  
+   // Skip past digit separators:
+   template<unsigned _Base, unsigned long long _Pow, char _Dig, char..._Digs>
+     struct _Number_help<_Base, _Pow, '\'', _Dig, _Digs...>
+     : _Number_help<_Base, _Pow, _Dig, _Digs...>
+     { };
+ 
+   // Terminating case for recursion:
    template<unsigned _Base, unsigned long long _Pow, char _Dig>
      struct _Number_help<_Base, _Pow, _Dig>
      {
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/random.h gcc-7.4.0/libstdc++-v3/include/bits/random.h
*** gcc-7.3.0/libstdc++-v3/include/bits/random.h	Fri Jan 20 15:28:48 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/random.h	Mon Jan 29 13:58:49 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2643,2649 ****
         */
        void
        param(const param_type& __param)
!       { _M_param = __param; }
  
        /**
         * @brief Returns the greatest lower bound value of the distribution.
--- 2643,2654 ----
         */
        void
        param(const param_type& __param)
!       {
! 	_M_param = __param;
! 	typedef typename std::gamma_distribution<result_type>::param_type
! 	  param_type;
! 	_M_gd.param(param_type{__param.n() / 2});
!       }
  
        /**
         * @brief Returns the greatest lower bound value of the distribution.
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/random.tcc gcc-7.4.0/libstdc++-v3/include/bits/random.tcc
*** gcc-7.3.0/libstdc++-v3/include/bits/random.tcc	Tue Mar 28 16:09:49 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/random.tcc	Mon May  7 16:23:29 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2356,2362 ****
  	    __v = __v * __v * __v;
  	    __u = __aurng();
  	  }
! 	while (__u > result_type(1.0) - 0.331 * __n * __n * __n * __n
  	       && (std::log(__u) > (0.5 * __n * __n + __a1
  				    * (1.0 - __v + std::log(__v)))));
  
--- 2356,2362 ----
  	    __v = __v * __v * __v;
  	    __u = __aurng();
  	  }
! 	while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n
  	       && (std::log(__u) > (0.5 * __n * __n + __a1
  				    * (1.0 - __v + std::log(__v)))));
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2405,2411 ****
  		  __v = __v * __v * __v;
  		  __u = __aurng();
  		}
! 	      while (__u > result_type(1.0) - 0.331 * __n * __n * __n * __n
  		     && (std::log(__u) > (0.5 * __n * __n + __a1
  					  * (1.0 - __v + std::log(__v)))));
  
--- 2405,2411 ----
  		  __v = __v * __v * __v;
  		  __u = __aurng();
  		}
! 	      while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n
  		     && (std::log(__u) > (0.5 * __n * __n + __a1
  					  * (1.0 - __v + std::log(__v)))));
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2426,2432 ****
  		  __v = __v * __v * __v;
  		  __u = __aurng();
  		}
! 	      while (__u > result_type(1.0) - 0.331 * __n * __n * __n * __n
  		     && (std::log(__u) > (0.5 * __n * __n + __a1
  					  * (1.0 - __v + std::log(__v)))));
  
--- 2426,2432 ----
  		  __v = __v * __v * __v;
  		  __u = __aurng();
  		}
! 	      while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n
  		     && (std::log(__u) > (0.5 * __n * __n + __a1
  					  * (1.0 - __v + std::log(__v)))));
  
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/regex.h gcc-7.4.0/libstdc++-v3/include/bits/regex.h
*** gcc-7.3.0/libstdc++-v3/include/bits/regex.h	Fri Jan  5 22:22:28 2018
--- gcc-7.4.0/libstdc++-v3/include/bits/regex.h	Wed Jul  4 13:59:13 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 785,790 ****
--- 785,832 ----
        _AutomatonPtr          _M_automaton;
      };
  
+ #if __cplusplus < 201703L
+   template<typename _Ch, typename _Tr>
+     constexpr regex_constants::syntax_option_type
+     basic_regex<_Ch, _Tr>::icase;
+ 
+   template<typename _Ch, typename _Tr>
+     constexpr regex_constants::syntax_option_type
+     basic_regex<_Ch, _Tr>::nosubs;
+ 
+   template<typename _Ch, typename _Tr>
+     constexpr regex_constants::syntax_option_type
+     basic_regex<_Ch, _Tr>::optimize;
+ 
+   template<typename _Ch, typename _Tr>
+     constexpr regex_constants::syntax_option_type
+     basic_regex<_Ch, _Tr>::collate;
+ 
+   template<typename _Ch, typename _Tr>
+     constexpr regex_constants::syntax_option_type
+     basic_regex<_Ch, _Tr>::ECMAScript;
+ 
+   template<typename _Ch, typename _Tr>
+     constexpr regex_constants::syntax_option_type
+     basic_regex<_Ch, _Tr>::basic;
+ 
+   template<typename _Ch, typename _Tr>
+     constexpr regex_constants::syntax_option_type
+     basic_regex<_Ch, _Tr>::extended;
+ 
+   template<typename _Ch, typename _Tr>
+     constexpr regex_constants::syntax_option_type
+     basic_regex<_Ch, _Tr>::awk;
+ 
+   template<typename _Ch, typename _Tr>
+     constexpr regex_constants::syntax_option_type
+     basic_regex<_Ch, _Tr>::grep;
+ 
+   template<typename _Ch, typename _Tr>
+     constexpr regex_constants::syntax_option_type
+     basic_regex<_Ch, _Tr>::egrep;
+ #endif // ! C++17
+ 
    /** @brief Standard regular expressions. */
    typedef basic_regex<char>    regex;
  
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/regex_automaton.h gcc-7.4.0/libstdc++-v3/include/bits/regex_automaton.h
*** gcc-7.3.0/libstdc++-v3/include/bits/regex_automaton.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/regex_automaton.h	Wed Jul  4 13:59:13 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 333,339 ****
  	    "Number of NFA states exceeds limit. Please use shorter regex "
  	    "string, or use smaller brace expression, or make "
  	    "_GLIBCXX_REGEX_STATE_LIMIT larger.");
! 	return this->size()-1;
        }
  
        // Eliminate dummy node in this NFA to make it compact.
--- 333,339 ----
  	    "Number of NFA states exceeds limit. Please use shorter regex "
  	    "string, or use smaller brace expression, or make "
  	    "_GLIBCXX_REGEX_STATE_LIMIT larger.");
! 	return this->size() - 1;
        }
  
        // Eliminate dummy node in this NFA to make it compact.
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/stl_bvector.h gcc-7.4.0/libstdc++-v3/include/bits/stl_bvector.h
*** gcc-7.3.0/libstdc++-v3/include/bits/stl_bvector.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/stl_bvector.h	Tue Aug  7 22:50:45 2018
*************** template<typename _Alloc>
*** 1089,1097 ****
      void
      _M_initialize(size_type __n)
      {
!       _Bit_pointer __q = this->_M_allocate(__n);
!       this->_M_impl._M_end_of_storage = __q + _S_nword(__n);
!       this->_M_impl._M_start = iterator(std::__addressof(*__q), 0);
        this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n);
      }
  
--- 1089,1105 ----
      void
      _M_initialize(size_type __n)
      {
!       if (__n)
! 	{
! 	  _Bit_pointer __q = this->_M_allocate(__n);
! 	  this->_M_impl._M_end_of_storage = __q + _S_nword(__n);
! 	  this->_M_impl._M_start = iterator(std::__addressof(*__q), 0);
! 	}
!       else
! 	{
! 	  this->_M_impl._M_end_of_storage = _Bit_pointer();
! 	  this->_M_impl._M_start = iterator(0, 0);
! 	}
        this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n);
      }
  
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/stl_iterator.h gcc-7.4.0/libstdc++-v3/include/bits/stl_iterator.h
*** gcc-7.3.0/libstdc++-v3/include/bits/stl_iterator.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/stl_iterator.h	Tue Aug  7 22:50:11 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 122,127 ****
--- 122,128 ----
        */
        // _GLIBCXX_RESOLVE_LIB_DEFECTS
        // 235 No specification of default ctor for reverse_iterator
+       // 1012. reverse_iterator default ctor should value initialize
        _GLIBCXX17_CONSTEXPR
        reverse_iterator() : current() { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 176,184 ****
         *
         *  This requires that @c --current is dereferenceable.
        */
        _GLIBCXX17_CONSTEXPR pointer
        operator->() const
!       { return &(operator*()); }
  
        /**
         *  @return  @c *this
--- 177,187 ----
         *
         *  This requires that @c --current is dereferenceable.
        */
+       // _GLIBCXX_RESOLVE_LIB_DEFECTS
+       // 2188. Reverse iterator does not fully support targets that overload &
        _GLIBCXX17_CONSTEXPR pointer
        operator->() const
!       { return std::__addressof(operator*()); }
  
        /**
         *  @return  @c *this
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/stl_map.h gcc-7.4.0/libstdc++-v3/include/bits/stl_map.h
*** gcc-7.3.0/libstdc++-v3/include/bits/stl_map.h	Fri Dec  1 17:50:59 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/stl_map.h	Fri Oct 12 12:51:40 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 802,813 ****
        insert(value_type&& __x)
        { return _M_t._M_insert_unique(std::move(__x)); }
  
!       template<typename _Pair, typename = typename
! 	       std::enable_if<std::is_constructible<value_type,
! 						    _Pair&&>::value>::type>
! 	std::pair<iterator, bool>
  	insert(_Pair&& __x)
! 	{ return _M_t._M_insert_unique(std::forward<_Pair>(__x)); }
  #endif
        // @}
  
--- 802,812 ----
        insert(value_type&& __x)
        { return _M_t._M_insert_unique(std::move(__x)); }
  
!       template<typename _Pair>
! 	__enable_if_t<is_constructible<value_type, _Pair>::value,
! 		      pair<iterator, bool>>
  	insert(_Pair&& __x)
! 	{ return _M_t._M_emplace_unique(std::forward<_Pair>(__x)); }
  #endif
        // @}
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 863,875 ****
        insert(const_iterator __position, value_type&& __x)
        { return _M_t._M_insert_unique_(__position, std::move(__x)); }
  
!       template<typename _Pair, typename = typename
! 	       std::enable_if<std::is_constructible<value_type,
! 						    _Pair&&>::value>::type>
! 	iterator
  	insert(const_iterator __position, _Pair&& __x)
! 	{ return _M_t._M_insert_unique_(__position,
! 					std::forward<_Pair>(__x)); }
  #endif
        // @}
  
--- 862,874 ----
        insert(const_iterator __position, value_type&& __x)
        { return _M_t._M_insert_unique_(__position, std::move(__x)); }
  
!       template<typename _Pair>
! 	__enable_if_t<is_constructible<value_type, _Pair>::value, iterator>
  	insert(const_iterator __position, _Pair&& __x)
! 	{
! 	  return _M_t._M_emplace_hint_unique(__position,
! 					     std::forward<_Pair>(__x));
! 	}
  #endif
        // @}
  
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/stl_multimap.h gcc-7.4.0/libstdc++-v3/include/bits/stl_multimap.h
*** gcc-7.3.0/libstdc++-v3/include/bits/stl_multimap.h	Fri Dec  1 17:50:59 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/stl_multimap.h	Fri Oct 12 12:51:40 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 538,549 ****
        insert(value_type&& __x)
        { return _M_t._M_insert_equal(std::move(__x)); }
  
!       template<typename _Pair, typename = typename
! 	       std::enable_if<std::is_constructible<value_type,
! 						    _Pair&&>::value>::type>
! 	iterator
  	insert(_Pair&& __x)
! 	{ return _M_t._M_insert_equal(std::forward<_Pair>(__x)); }
  #endif
        // @}
  
--- 538,547 ----
        insert(value_type&& __x)
        { return _M_t._M_insert_equal(std::move(__x)); }
  
!       template<typename _Pair>
! 	__enable_if_t<is_constructible<value_type, _Pair>::value, iterator>
  	insert(_Pair&& __x)
! 	{ return _M_t._M_emplace_equal(std::forward<_Pair>(__x)); }
  #endif
        // @}
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 583,595 ****
        insert(const_iterator __position, value_type&& __x)
        { return _M_t._M_insert_equal_(__position, std::move(__x)); }
  
!       template<typename _Pair, typename = typename
! 	       std::enable_if<std::is_constructible<value_type,
! 						    _Pair&&>::value>::type>
! 	iterator
  	insert(const_iterator __position, _Pair&& __x)
! 	{ return _M_t._M_insert_equal_(__position,
! 				       std::forward<_Pair>(__x)); }
  #endif
        // @}
  
--- 581,593 ----
        insert(const_iterator __position, value_type&& __x)
        { return _M_t._M_insert_equal_(__position, std::move(__x)); }
  
!       template<typename _Pair>
! 	__enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
  	insert(const_iterator __position, _Pair&& __x)
! 	{
! 	  return _M_t._M_emplace_hint_equal(__position,
! 					    std::forward<_Pair>(__x));
! 	}
  #endif
        // @}
  
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/stl_pair.h gcc-7.4.0/libstdc++-v3/include/bits/stl_pair.h
*** gcc-7.3.0/libstdc++-v3/include/bits/stl_pair.h	Mon Apr  3 16:30:58 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/stl_pair.h	Wed Oct 31 13:16:10 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 185,192 ****
    struct __nonesuch_no_braces : std::__nonesuch {
      explicit __nonesuch_no_braces(const __nonesuch&) = delete;
    };
  
! #endif
  
   /**
     *  @brief Struct holding two objects of arbitrary type.
--- 185,202 ----
    struct __nonesuch_no_braces : std::__nonesuch {
      explicit __nonesuch_no_braces(const __nonesuch&) = delete;
    };
+ #endif // C++11
  
!   template<typename _U1, typename _U2> class __pair_base
!   {
! #if __cplusplus >= 201103L
!     template<typename _T1, typename _T2> friend struct pair;
!     __pair_base() = default;
!     ~__pair_base() = default;
!     __pair_base(const __pair_base&) = default;
!     __pair_base& operator=(const __pair_base&) = delete;
! #endif // C++11
!   };
  
   /**
     *  @brief Struct holding two objects of arbitrary type.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 196,201 ****
--- 206,212 ----
     */
    template<typename _T1, typename _T2>
      struct pair
+     : private __pair_base<_T1, _T2>
      {
        typedef _T1 first_type;    /// @c first_type is the first bound type
        typedef _T2 second_type;   /// @c second_type is the second bound type
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 376,392 ****
  
        pair&
        operator=(typename conditional<
- 		__not_<__and_<is_copy_assignable<_T1>,
- 		              is_copy_assignable<_T2>>>::value,
- 		const pair&, const __nonesuch_no_braces&>::type __p) = delete;
- 
-       pair&
-       operator=(typename conditional<
  		__and_<is_move_assignable<_T1>,
  		       is_move_assignable<_T2>>::value,
  		pair&&, __nonesuch_no_braces&&>::type __p)
        noexcept(__and_<is_nothrow_move_assignable<_T1>,
! 	              is_nothrow_move_assignable<_T2>>::value)
        {
  	first = std::forward<first_type>(__p.first);
  	second = std::forward<second_type>(__p.second);
--- 387,397 ----
  
        pair&
        operator=(typename conditional<
  		__and_<is_move_assignable<_T1>,
  		       is_move_assignable<_T2>>::value,
  		pair&&, __nonesuch_no_braces&&>::type __p)
        noexcept(__and_<is_nothrow_move_assignable<_T1>,
! 		      is_nothrow_move_assignable<_T2>>::value)
        {
  	first = std::forward<first_type>(__p.first);
  	second = std::forward<second_type>(__p.second);
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/stl_vector.h gcc-7.4.0/libstdc++-v3/include/bits/stl_vector.h
*** gcc-7.3.0/libstdc++-v3/include/bits/stl_vector.h	Mon Mar 20 20:51:40 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/stl_vector.h	Tue Aug  7 22:50:33 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1302,1323 ****
        // Called by the second initialize_dispatch above
        template<typename _InputIterator>
  	void
! 	_M_range_initialize(_InputIterator __first,
! 			    _InputIterator __last, std::input_iterator_tag)
  	{
! 	  for (; __first != __last; ++__first)
  #if __cplusplus >= 201103L
! 	    emplace_back(*__first);
  #else
! 	    push_back(*__first);
  #endif
  	}
  
        // Called by the second initialize_dispatch above
        template<typename _ForwardIterator>
  	void
! 	_M_range_initialize(_ForwardIterator __first,
! 			    _ForwardIterator __last, std::forward_iterator_tag)
  	{
  	  const size_type __n = std::distance(__first, __last);
  	  this->_M_impl._M_start = this->_M_allocate(__n);
--- 1302,1328 ----
        // Called by the second initialize_dispatch above
        template<typename _InputIterator>
  	void
! 	_M_range_initialize(_InputIterator __first, _InputIterator __last,
! 			    std::input_iterator_tag)
  	{
! 	  __try {
! 	    for (; __first != __last; ++__first)
  #if __cplusplus >= 201103L
! 	      emplace_back(*__first);
  #else
! 	      push_back(*__first);
  #endif
+ 	  } __catch(...) {
+ 	    clear();
+ 	    __throw_exception_again;
+ 	  }
  	}
  
        // Called by the second initialize_dispatch above
        template<typename _ForwardIterator>
  	void
! 	_M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
! 			    std::forward_iterator_tag)
  	{
  	  const size_type __n = std::distance(__first, __last);
  	  this->_M_impl._M_start = this->_M_allocate(__n);
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/unique_ptr.h gcc-7.4.0/libstdc++-v3/include/bits/unique_ptr.h
*** gcc-7.3.0/libstdc++-v3/include/bits/unique_ptr.h	Wed Jan  4 13:21:02 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/unique_ptr.h	Tue Oct 23 15:55:05 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 187,193 ****
  		typename = _DeleterConstraint<_Up>>
  	constexpr unique_ptr() noexcept
  	: _M_t()
!         { }
  
        /** Takes ownership of a pointer.
         *
--- 187,193 ----
  		typename = _DeleterConstraint<_Up>>
  	constexpr unique_ptr() noexcept
  	: _M_t()
! 	{ }
  
        /** Takes ownership of a pointer.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 230,236 ****
        /// Creates a unique_ptr that owns nothing.
        template <typename _Up = _Dp,
  		typename = _DeleterConstraint<_Up>>
! 	constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { }
  
        // Move constructors.
  
--- 230,236 ----
        /// Creates a unique_ptr that owns nothing.
        template <typename _Up = _Dp,
  		typename = _DeleterConstraint<_Up>>
! 	constexpr unique_ptr(nullptr_t) noexcept : _M_t() { }
  
        // Move constructors.
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 452,458 ****
  		typename = _DeleterConstraint<_Up>>
  	constexpr unique_ptr() noexcept
  	: _M_t()
!         { }
  
        /** Takes ownership of a pointer.
         *
--- 452,458 ----
  		typename = _DeleterConstraint<_Up>>
  	constexpr unique_ptr() noexcept
  	: _M_t()
! 	{ }
  
        /** Takes ownership of a pointer.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 511,517 ****
        /// Creates a unique_ptr that owns nothing.
        template <typename _Up = _Dp,
  		typename = _DeleterConstraint<_Up>>
! 	constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { }
  
        template<typename _Up, typename _Ep,
  	       typename = _Require<__safe_conversion_up<_Up, _Ep>>>
--- 511,517 ----
        /// Creates a unique_ptr that owns nothing.
        template <typename _Up = _Dp,
  		typename = _DeleterConstraint<_Up>>
! 	constexpr unique_ptr(nullptr_t) noexcept : _M_t() { }
  
        template<typename _Up, typename _Ep,
  	       typename = _Require<__safe_conversion_up<_Up, _Ep>>>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/unordered_map.h gcc-7.4.0/libstdc++-v3/include/bits/unordered_map.h
*** gcc-7.3.0/libstdc++-v3/include/bits/unordered_map.h	Fri Dec  1 17:50:59 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/unordered_map.h	Fri Oct 12 12:51:40 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 584,595 ****
        insert(value_type&& __x)
        { return _M_h.insert(std::move(__x)); }
  
!       template<typename _Pair, typename = typename
! 	       std::enable_if<std::is_constructible<value_type,
! 						    _Pair&&>::value>::type>
! 	std::pair<iterator, bool>
  	insert(_Pair&& __x)
!         { return _M_h.insert(std::forward<_Pair>(__x)); }
        //@}
  
        //@{
--- 584,594 ----
        insert(value_type&& __x)
        { return _M_h.insert(std::move(__x)); }
  
!       template<typename _Pair>
! 	__enable_if_t<is_constructible<value_type, _Pair&&>::value,
! 		      pair<iterator, bool>>
  	insert(_Pair&& __x)
!         { return _M_h.emplace(std::forward<_Pair>(__x)); }
        //@}
  
        //@{
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 624,635 ****
        insert(const_iterator __hint, value_type&& __x)
        { return _M_h.insert(__hint, std::move(__x)); }
  
!       template<typename _Pair, typename = typename
! 	       std::enable_if<std::is_constructible<value_type,
! 						    _Pair&&>::value>::type>
! 	iterator
  	insert(const_iterator __hint, _Pair&& __x)
! 	{ return _M_h.insert(__hint, std::forward<_Pair>(__x)); }
        //@}
  
        /**
--- 623,632 ----
        insert(const_iterator __hint, value_type&& __x)
        { return _M_h.insert(__hint, std::move(__x)); }
  
!       template<typename _Pair>
! 	__enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
  	insert(const_iterator __hint, _Pair&& __x)
! 	{ return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); }
        //@}
  
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1483,1494 ****
        insert(value_type&& __x)
        { return _M_h.insert(std::move(__x)); }
  
!       template<typename _Pair, typename = typename
! 	       std::enable_if<std::is_constructible<value_type,
! 						    _Pair&&>::value>::type>
! 	iterator
  	insert(_Pair&& __x)
!         { return _M_h.insert(std::forward<_Pair>(__x)); }
        //@}
  
        //@{
--- 1480,1489 ----
        insert(value_type&& __x)
        { return _M_h.insert(std::move(__x)); }
  
!       template<typename _Pair>
! 	__enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
  	insert(_Pair&& __x)
!         { return _M_h.emplace(std::forward<_Pair>(__x)); }
        //@}
  
        //@{
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1521,1532 ****
        insert(const_iterator __hint, value_type&& __x)
        { return _M_h.insert(__hint, std::move(__x)); }
  
!       template<typename _Pair, typename = typename
! 	       std::enable_if<std::is_constructible<value_type,
! 						    _Pair&&>::value>::type>
! 	iterator
  	insert(const_iterator __hint, _Pair&& __x)
!         { return _M_h.insert(__hint, std::forward<_Pair>(__x)); }
        //@}
  
        /**
--- 1516,1525 ----
        insert(const_iterator __hint, value_type&& __x)
        { return _M_h.insert(__hint, std::move(__x)); }
  
!       template<typename _Pair>
! 	__enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
  	insert(const_iterator __hint, _Pair&& __x)
!         { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); }
        //@}
  
        /**
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/valarray_array.h gcc-7.4.0/libstdc++-v3/include/bits/valarray_array.h
*** gcc-7.3.0/libstdc++-v3/include/bits/valarray_array.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/valarray_array.h	Thu Oct 18 19:38:56 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 152,158 ****
      {
        inline static void
        _S_do_it(const _Tp* __b, const _Tp* __e, _Tp* __restrict__ __o)
!       { __builtin_memcpy(__o, __b, (__e - __b) * sizeof(_Tp)); }
      };
  
    template<typename _Tp>
--- 152,161 ----
      {
        inline static void
        _S_do_it(const _Tp* __b, const _Tp* __e, _Tp* __restrict__ __o)
!       {
! 	if (__b)
! 	  __builtin_memcpy(__o, __b, (__e - __b) * sizeof(_Tp));
!       }
      };
  
    template<typename _Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 258,264 ****
      {
        inline static void
        _S_do_it(const _Tp* __restrict__ __a, size_t __n, _Tp* __restrict__ __b)
!       { __builtin_memcpy(__b, __a, __n * sizeof (_Tp)); }
      };
  
    // Copy a plain array __a[<__n>] into a play array __b[<>]
--- 261,270 ----
      {
        inline static void
        _S_do_it(const _Tp* __restrict__ __a, size_t __n, _Tp* __restrict__ __b)
!       {
! 	if (__n != 0)
! 	  __builtin_memcpy(__b, __a, __n * sizeof (_Tp));
!       }
      };
  
    // Copy a plain array __a[<__n>] into a play array __b[<>]
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 335,351 ****
      }
  
    //
!   // Compute the sum of elements in range [__f, __l)
    // This is a naive algorithm.  It suffers from cancelling.
!   // In the future try to specialize
!   // for _Tp = float, double, long double using a more accurate
!   // algorithm.
    //
    template<typename _Tp>
      inline _Tp
      __valarray_sum(const _Tp* __f, const _Tp* __l)
      {
!       _Tp __r = _Tp();
        while (__f != __l)
  	__r += *__f++;
        return __r;
--- 341,356 ----
      }
  
    //
!   // Compute the sum of elements in range [__f, __l) which must not be empty.
    // This is a naive algorithm.  It suffers from cancelling.
!   // In the future try to specialize for _Tp = float, double, long double
!   // using a more accurate algorithm.
    //
    template<typename _Tp>
      inline _Tp
      __valarray_sum(const _Tp* __f, const _Tp* __l)
      {
!       _Tp __r = *__f++;
        while (__f != __l)
  	__r += *__f++;
        return __r;
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/bits/vector.tcc gcc-7.4.0/libstdc++-v3/include/bits/vector.tcc
*** gcc-7.3.0/libstdc++-v3/include/bits/vector.tcc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/bits/vector.tcc	Wed Jul  4 13:59:01 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 567,589 ****
  	    {
  	      const size_type __len =
  		_M_check_len(__n, "vector::_M_default_append");
! 	      const size_type __old_size = this->size();
  	      pointer __new_start(this->_M_allocate(__len));
! 	      pointer __new_finish(__new_start);
  	      __try
  		{
! 		  __new_finish
! 		    = std::__uninitialized_move_if_noexcept_a
! 		    (this->_M_impl._M_start, this->_M_impl._M_finish,
! 		     __new_start, _M_get_Tp_allocator());
! 		  __new_finish =
! 		    std::__uninitialized_default_n_a(__new_finish, __n,
! 						     _M_get_Tp_allocator());
  		}
  	      __catch(...)
  		{
! 		  std::_Destroy(__new_start, __new_finish,
! 				_M_get_Tp_allocator());
  		  _M_deallocate(__new_start, __len);
  		  __throw_exception_again;
  		}
--- 567,589 ----
  	    {
  	      const size_type __len =
  		_M_check_len(__n, "vector::_M_default_append");
! 	      const size_type __size = this->size();
  	      pointer __new_start(this->_M_allocate(__len));
! 	      pointer __destroy_from = pointer();
  	      __try
  		{
! 		  std::__uninitialized_default_n_a(__new_start + __size,
! 						   __n, _M_get_Tp_allocator());
! 		  __destroy_from = __new_start + __size;
! 		  std::__uninitialized_move_if_noexcept_a(
! 		      this->_M_impl._M_start, this->_M_impl._M_finish,
! 		      __new_start, _M_get_Tp_allocator());
  		}
  	      __catch(...)
  		{
! 		  if (__destroy_from)
! 		    std::_Destroy(__destroy_from, __destroy_from + __n,
! 				  _M_get_Tp_allocator());
  		  _M_deallocate(__new_start, __len);
  		  __throw_exception_again;
  		}
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 593,599 ****
  			    this->_M_impl._M_end_of_storage
  			    - this->_M_impl._M_start);
  	      this->_M_impl._M_start = __new_start;
! 	      this->_M_impl._M_finish = __new_finish;
  	      this->_M_impl._M_end_of_storage = __new_start + __len;
  	    }
  	}
--- 593,599 ----
  			    this->_M_impl._M_end_of_storage
  			    - this->_M_impl._M_start);
  	      this->_M_impl._M_start = __new_start;
! 	      this->_M_impl._M_finish = __new_start + __size + __n;
  	      this->_M_impl._M_end_of_storage = __new_start + __len;
  	    }
  	}
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/c_global/cstddef gcc-7.4.0/libstdc++-v3/include/c_global/cstddef
*** gcc-7.3.0/libstdc++-v3/include/c_global/cstddef	Fri Oct 20 18:19:09 2017
--- gcc-7.4.0/libstdc++-v3/include/c_global/cstddef	Thu Jan 25 15:46:46 2018
*************** namespace std
*** 65,71 ****
    /// std::byte
    enum class byte : unsigned char {};
  
!   template<typename _IntegerType> struct __byte_operand;
    template<> struct __byte_operand<bool> { using __type = byte; };
    template<> struct __byte_operand<char> { using __type = byte; };
    template<> struct __byte_operand<signed char> { using __type = byte; };
--- 65,71 ----
    /// std::byte
    enum class byte : unsigned char {};
  
!   template<typename _IntegerType> struct __byte_operand { };
    template<> struct __byte_operand<bool> { using __type = byte; };
    template<> struct __byte_operand<char> { using __type = byte; };
    template<> struct __byte_operand<signed char> { using __type = byte; };
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/c_global/cstdlib gcc-7.4.0/libstdc++-v3/include/c_global/cstdlib
*** gcc-7.3.0/libstdc++-v3/include/c_global/cstdlib	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/c_global/cstdlib	Mon Mar 12 23:32:30 2018
*************** namespace std
*** 78,83 ****
--- 78,86 ----
  
  // Get rid of those macros defined in <stdlib.h> in lieu of real functions.
  #undef abort
+ #if __cplusplus >= 201703L && defined(_GLIBCXX_HAVE_ALIGNED_ALLOC)
+ # undef aligned_alloc
+ #endif
  #undef atexit
  #if __cplusplus >= 201103L
  # ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 125,130 ****
--- 128,136 ----
    using ::ldiv_t;
  
    using ::abort;
+ #if __cplusplus >= 201703L && defined(_GLIBCXX_HAVE_ALIGNED_ALLOC)
+   using ::aligned_alloc;
+ #endif
    using ::atexit;
  #if __cplusplus >= 201103L
  # ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/debug/string gcc-7.4.0/libstdc++-v3/include/debug/string
*** gcc-7.3.0/libstdc++-v3/include/debug/string	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/debug/string	Thu Jul  5 20:48:02 2018
*************** template<typename _CharT, typename _Trai
*** 565,571 ****
        insert(iterator __p, _InputIterator __first, _InputIterator __last)
        {
  	typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist;
! 	__glibcxx_check_insert_range2(__p, __first, __last, __dist);
  
  	if (__dist.second >= __dp_sign)
  	  _Base::insert(__p.base(), __gnu_debug::__unsafe(__first),
--- 565,571 ----
        insert(iterator __p, _InputIterator __first, _InputIterator __last)
        {
  	typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist;
! 	__glibcxx_check_insert_range(__p, __first, __last, __dist);
  
  	if (__dist.second >= __dp_sign)
  	  _Base::insert(__p.base(), __gnu_debug::__unsafe(__first),
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/algorithm gcc-7.4.0/libstdc++-v3/include/experimental/algorithm
*** gcc-7.3.0/libstdc++-v3/include/experimental/algorithm	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/algorithm	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <algorithm>
  #include <experimental/bits/lfts_config.h>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <algorithm>
  #include <experimental/bits/lfts_config.h>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/any gcc-7.4.0/libstdc++-v3/include/experimental/any
*** gcc-7.3.0/libstdc++-v3/include/experimental/any	Fri Jan 20 01:22:54 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/any	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <typeinfo>
  #include <new>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <typeinfo>
  #include <new>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/array gcc-7.4.0/libstdc++-v3/include/experimental/array
*** gcc-7.3.0/libstdc++-v3/include/experimental/array	Mon Jan 23 15:56:05 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/array	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <array>
  #include <experimental/type_traits>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <array>
  #include <experimental/type_traits>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/bits/erase_if.h gcc-7.4.0/libstdc++-v3/include/experimental/bits/erase_if.h
*** gcc-7.3.0/libstdc++-v3/include/experimental/bits/erase_if.h	Thu Jan 26 18:32:55 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/bits/erase_if.h	Mon Oct 22 08:47:52 2018
***************
*** 32,40 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  #include <experimental/bits/lfts_config.h>
  
  namespace std
--- 32,38 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  #include <experimental/bits/lfts_config.h>
  
  namespace std
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/bits/fs_path.h gcc-7.4.0/libstdc++-v3/include/experimental/bits/fs_path.h
*** gcc-7.3.0/libstdc++-v3/include/experimental/bits/fs_path.h	Fri Oct 20 15:14:23 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/bits/fs_path.h	Wed Jul  4 13:59:06 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 509,515 ****
  
    /// Append one path to another
    inline path operator/(const path& __lhs, const path& __rhs)
!   { return path(__lhs) /= __rhs; }
  
    /// Write a path to a stream
    template<typename _CharT, typename _Traits>
--- 509,519 ----
  
    /// Append one path to another
    inline path operator/(const path& __lhs, const path& __rhs)
!   {
!     path __result(__lhs);
!     __result /= __rhs;
!     return __result;
!   }
  
    /// Write a path to a stream
    template<typename _CharT, typename _Traits>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/bits/lfts_config.h gcc-7.4.0/libstdc++-v3/include/experimental/bits/lfts_config.h
*** gcc-7.3.0/libstdc++-v3/include/experimental/bits/lfts_config.h	Thu Jan 26 18:32:55 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/bits/lfts_config.h	Mon Oct 22 08:47:52 2018
***************
*** 27,35 ****
   *  Do not attempt to use it directly.
   */
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  #include <bits/c++config.h>
  
  #if _GLIBCXX_INLINE_VERSION
--- 27,33 ----
   *  Do not attempt to use it directly.
   */
  
! #if __cplusplus >= 201402L
  #include <bits/c++config.h>
  
  #if _GLIBCXX_INLINE_VERSION
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/bits/shared_ptr.h gcc-7.4.0/libstdc++-v3/include/experimental/bits/shared_ptr.h
*** gcc-7.3.0/libstdc++-v3/include/experimental/bits/shared_ptr.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/bits/shared_ptr.h	Mon Oct 22 08:47:52 2018
***************
*** 32,40 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <memory>
  #include <experimental/type_traits>
--- 32,38 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <memory>
  #include <experimental/type_traits>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/bits/string_view.tcc gcc-7.4.0/libstdc++-v3/include/experimental/bits/string_view.tcc
*** gcc-7.3.0/libstdc++-v3/include/experimental/bits/string_view.tcc	Tue Sep 12 16:27:14 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/bits/string_view.tcc	Mon Oct 22 08:47:52 2018
***************
*** 36,44 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  namespace std _GLIBCXX_VISIBILITY(default)
  {
--- 36,42 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  namespace std _GLIBCXX_VISIBILITY(default)
  {
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/chrono gcc-7.4.0/libstdc++-v3/include/experimental/chrono
*** gcc-7.3.0/libstdc++-v3/include/experimental/chrono	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/chrono	Mon Oct 22 08:47:52 2018
***************
*** 35,43 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <chrono>
  #include <experimental/bits/lfts_config.h>
--- 35,41 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <chrono>
  #include <experimental/bits/lfts_config.h>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/deque gcc-7.4.0/libstdc++-v3/include/experimental/deque
*** gcc-7.3.0/libstdc++-v3/include/experimental/deque	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/deque	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <deque>
  #include <algorithm>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <deque>
  #include <algorithm>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/filesystem gcc-7.4.0/libstdc++-v3/include/experimental/filesystem
*** gcc-7.3.0/libstdc++-v3/include/experimental/filesystem	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/filesystem	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus < 201103L
! # include <bits/c++0x_warning.h>
! #else
  
  #include <experimental/bits/fs_fwd.h>
  #include <experimental/bits/fs_path.h>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201103L
  
  #include <experimental/bits/fs_fwd.h>
  #include <experimental/bits/fs_path.h>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/forward_list gcc-7.4.0/libstdc++-v3/include/experimental/forward_list
*** gcc-7.3.0/libstdc++-v3/include/experimental/forward_list	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/forward_list	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <forward_list>
  #include <experimental/memory_resource>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <forward_list>
  #include <experimental/memory_resource>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/functional gcc-7.4.0/libstdc++-v3/include/experimental/functional
*** gcc-7.3.0/libstdc++-v3/include/experimental/functional	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/functional	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <functional>
  #include <tuple>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <functional>
  #include <tuple>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/iterator gcc-7.4.0/libstdc++-v3/include/experimental/iterator
*** gcc-7.3.0/libstdc++-v3/include/experimental/iterator	Thu Feb 23 18:25:22 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/iterator	Mon Oct 22 08:47:52 2018
***************
*** 35,43 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <iterator>
  #include <iosfwd>
--- 35,41 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <iterator>
  #include <iosfwd>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/list gcc-7.4.0/libstdc++-v3/include/experimental/list
*** gcc-7.3.0/libstdc++-v3/include/experimental/list	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/list	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <list>
  #include <experimental/memory_resource>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <list>
  #include <experimental/memory_resource>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/map gcc-7.4.0/libstdc++-v3/include/experimental/map
*** gcc-7.3.0/libstdc++-v3/include/experimental/map	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/map	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <map>
  #include <experimental/bits/erase_if.h>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <map>
  #include <experimental/bits/erase_if.h>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/memory gcc-7.4.0/libstdc++-v3/include/experimental/memory
*** gcc-7.3.0/libstdc++-v3/include/experimental/memory	Wed Jan 18 18:36:45 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/memory	Mon Oct 22 08:47:52 2018
***************
*** 35,43 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <memory>
  #include <type_traits>
--- 35,41 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <memory>
  #include <type_traits>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/memory_resource gcc-7.4.0/libstdc++-v3/include/experimental/memory_resource
*** gcc-7.3.0/libstdc++-v3/include/experimental/memory_resource	Tue Jul 25 18:04:59 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/memory_resource	Fri Oct 12 12:51:20 2018
***************
*** 33,39 ****
  #include <new>
  #include <atomic>
  #include <cstddef>
- #include <bits/alloc_traits.h>
  #include <experimental/bits/lfts_config.h>
  
  namespace std {
--- 33,38 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 258,263 ****
--- 257,278 ----
    template <typename _Alloc>
      class __resource_adaptor_imp : public memory_resource
      {
+       static_assert(is_same<char,
+ 	  typename allocator_traits<_Alloc>::value_type>::value,
+ 	  "Allocator's value_type is char");
+       static_assert(is_same<char*,
+ 	  typename allocator_traits<_Alloc>::pointer>::value,
+ 	  "Allocator's pointer type is value_type*");
+       static_assert(is_same<const char*,
+ 	  typename allocator_traits<_Alloc>::const_pointer>::value,
+ 	  "Allocator's const_pointer type is value_type const*");
+       static_assert(is_same<void*,
+ 	  typename allocator_traits<_Alloc>::void_pointer>::value,
+ 	  "Allocator's void_pointer type is void*");
+       static_assert(is_same<const void*,
+ 	  typename allocator_traits<_Alloc>::const_void_pointer>::value,
+ 	  "Allocator's const_void_pointer type is void const*");
+ 
      public:
        using allocator_type = _Alloc;
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 276,282 ****
        __resource_adaptor_imp&
        operator=(const __resource_adaptor_imp&) = default;
  
!       allocator_type get_allocator() const { return _M_alloc; }
  
      protected:
        virtual void*
--- 291,297 ----
        __resource_adaptor_imp&
        operator=(const __resource_adaptor_imp&) = default;
  
!       allocator_type get_allocator() const noexcept { return _M_alloc; }
  
      protected:
        virtual void*
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 311,323 ****
      private:
        // Calculate Aligned Size
        // Returns a size that is larger than or equal to __size and divisible
!       // by __alignment, where __alignment is required to be the power of 2.
        static size_t
        _S_aligned_size(size_t __size, size_t __alignment)
        { return ((__size - 1)|(__alignment - 1)) + 1; }
  
        // Determine whether alignment meets one of those preconditions:
!       // 1. Equals to Zero
        // 2. Is power of two
        static bool
        _S_supported (size_t __x)
--- 326,338 ----
      private:
        // Calculate Aligned Size
        // Returns a size that is larger than or equal to __size and divisible
!       // by __alignment, where __alignment is required to be a power of 2.
        static size_t
        _S_aligned_size(size_t __size, size_t __alignment)
        { return ((__size - 1)|(__alignment - 1)) + 1; }
  
        // Determine whether alignment meets one of those preconditions:
!       // 1. Equal to Zero
        // 2. Is power of two
        static bool
        _S_supported (size_t __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 327,373 ****
      };
  
    // Global memory resources
-   inline std::atomic<memory_resource*>&
-   __get_default_resource()
-   {
-     static atomic<memory_resource*> _S_default_resource(new_delete_resource());
-     return _S_default_resource;
-   }
  
    inline memory_resource*
    new_delete_resource() noexcept
    {
!     static resource_adaptor<std::allocator<char>> __r;
!     return static_cast<memory_resource*>(&__r);
    }
  
!   template <typename _Alloc>
!     class __null_memory_resource : private memory_resource
      {
-     protected:
        void*
!       do_allocate(size_t, size_t)
        { std::__throw_bad_alloc(); }
  
        void
!       do_deallocate(void*, size_t, size_t) noexcept
        { }
  
        bool
!       do_is_equal(const memory_resource& __other) const noexcept
        { return this == &__other; }
- 
-       friend memory_resource* null_memory_resource() noexcept;
      };
  
!   inline memory_resource*
!   null_memory_resource() noexcept
!   {
!     static __null_memory_resource<void> __r;
!     return static_cast<memory_resource*>(&__r);
    }
  
    // The default memory resource
    inline memory_resource*
    get_default_resource() noexcept
    { return __get_default_resource().load(); }
--- 342,391 ----
      };
  
    // Global memory resources
  
    inline memory_resource*
    new_delete_resource() noexcept
    {
!     using type = resource_adaptor<std::allocator<char>>;
!     alignas(type) static unsigned char __buf[sizeof(type)];
!     static type* __r = new(__buf) type;
!     return __r;
    }
  
!   inline memory_resource*
!   null_memory_resource() noexcept
!   {
!     class type final : public memory_resource
      {
        void*
!       do_allocate(size_t, size_t) override
        { std::__throw_bad_alloc(); }
  
        void
!       do_deallocate(void*, size_t, size_t) noexcept override
        { }
  
        bool
!       do_is_equal(const memory_resource& __other) const noexcept override
        { return this == &__other; }
      };
  
!     alignas(type) static unsigned char __buf[sizeof(type)];
!     static type* __r = new(__buf) type;
!     return __r;
    }
  
    // The default memory resource
+ 
+   inline std::atomic<memory_resource*>&
+   __get_default_resource()
+   {
+     using type = atomic<memory_resource*>;
+     alignas(type) static unsigned char __buf[sizeof(type)];
+     static type* __r = new(__buf) type(new_delete_resource());
+     return *__r;
+   }
+ 
    inline memory_resource*
    get_default_resource() noexcept
    { return __get_default_resource().load(); }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/numeric gcc-7.4.0/libstdc++-v3/include/experimental/numeric
*** gcc-7.3.0/libstdc++-v3/include/experimental/numeric	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/numeric	Mon Oct 22 08:47:52 2018
***************
*** 35,43 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <numeric>
  #include <experimental/type_traits>
--- 35,41 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <numeric>
  #include <experimental/type_traits>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/optional gcc-7.4.0/libstdc++-v3/include/experimental/optional
*** gcc-7.3.0/libstdc++-v3/include/experimental/optional	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/optional	Mon Oct 22 08:47:52 2018
***************
*** 41,49 ****
   * between different GCC releases </STRONG> for these features.
   */
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <utility>
  #include <type_traits>
--- 41,47 ----
   * between different GCC releases </STRONG> for these features.
   */
  
! #if __cplusplus >= 201402L
  
  #include <utility>
  #include <type_traits>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/propagate_const gcc-7.4.0/libstdc++-v3/include/experimental/propagate_const
*** gcc-7.3.0/libstdc++-v3/include/experimental/propagate_const	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/propagate_const	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <type_traits>
  #include <bits/functional_hash.h>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <type_traits>
  #include <bits/functional_hash.h>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/ratio gcc-7.4.0/libstdc++-v3/include/experimental/ratio
*** gcc-7.3.0/libstdc++-v3/include/experimental/ratio	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/ratio	Mon Oct 22 08:47:52 2018
***************
*** 35,43 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <ratio>
  #include <experimental/bits/lfts_config.h>
--- 35,41 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <ratio>
  #include <experimental/bits/lfts_config.h>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/regex gcc-7.4.0/libstdc++-v3/include/experimental/regex
*** gcc-7.3.0/libstdc++-v3/include/experimental/regex	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/regex	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <regex>
  #include <experimental/string>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <regex>
  #include <experimental/string>
*************** namespace experimental
*** 44,53 ****
  {
  inline namespace fundamentals_v2
  {
  namespace pmr
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
- _GLIBCXX_BEGIN_NAMESPACE_CXX11
  
    template<typename _BidirectionalIterator>
      using match_results
--- 42,51 ----
  {
  inline namespace fundamentals_v2
  {
+ #if _GLIBCXX_USE_CXX11_ABI
  namespace pmr
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
    template<typename _BidirectionalIterator>
      using match_results
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 59,68 ****
    typedef match_results<string::const_iterator> smatch;
    typedef match_results<wstring::const_iterator> wsmatch;
  
- _GLIBCXX_END_NAMESPACE_CXX11
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace pmr
! 
  } // namespace fundamentals_v2
  } // namespace experimental
  } // namespace std
--- 57,65 ----
    typedef match_results<string::const_iterator> smatch;
    typedef match_results<wstring::const_iterator> wsmatch;
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace pmr
! #endif
  } // namespace fundamentals_v2
  } // namespace experimental
  } // namespace std
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/set gcc-7.4.0/libstdc++-v3/include/experimental/set
*** gcc-7.3.0/libstdc++-v3/include/experimental/set	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/set	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <set>
  #include <experimental/bits/erase_if.h>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <set>
  #include <experimental/bits/erase_if.h>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/string gcc-7.4.0/libstdc++-v3/include/experimental/string
*** gcc-7.3.0/libstdc++-v3/include/experimental/string	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/string	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <string>
  #include <algorithm>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <string>
  #include <algorithm>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 66,74 ****
  
  _GLIBCXX_END_NAMESPACE_VERSION
  
  namespace pmr {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
- _GLIBCXX_BEGIN_NAMESPACE_CXX11
  
    // basic_string using polymorphic allocator in namespace pmr
    template<typename _CharT, typename _Traits = char_traits<_CharT>>
--- 64,72 ----
  
  _GLIBCXX_END_NAMESPACE_VERSION
  
+ #if _GLIBCXX_USE_CXX11_ABI
  namespace pmr {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
    // basic_string using polymorphic allocator in namespace pmr
    template<typename _CharT, typename _Traits = char_traits<_CharT>>
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 82,91 ****
    typedef basic_string<char32_t> u32string;
    typedef basic_string<wchar_t> wstring;
  
- _GLIBCXX_END_NAMESPACE_CXX11
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace pmr
! 
  } // namespace fundamentals_v2
  } // namespace experimental
  } // namespace std
--- 80,88 ----
    typedef basic_string<char32_t> u32string;
    typedef basic_string<wchar_t> wstring;
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace pmr
! #endif
  } // namespace fundamentals_v2
  } // namespace experimental
  } // namespace std
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/string_view gcc-7.4.0/libstdc++-v3/include/experimental/string_view
*** gcc-7.3.0/libstdc++-v3/include/experimental/string_view	Fri Dec  1 17:12:07 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/string_view	Mon Oct 22 08:47:52 2018
***************
*** 35,43 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <string>
  #include <limits>
--- 35,41 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <string>
  #include <limits>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/system_error gcc-7.4.0/libstdc++-v3/include/experimental/system_error
*** gcc-7.3.0/libstdc++-v3/include/experimental/system_error	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/system_error	Mon Oct 22 08:47:52 2018
***************
*** 35,43 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <system_error>
  #include <experimental/bits/lfts_config.h>
--- 35,41 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <system_error>
  #include <experimental/bits/lfts_config.h>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/tuple gcc-7.4.0/libstdc++-v3/include/experimental/tuple
*** gcc-7.3.0/libstdc++-v3/include/experimental/tuple	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/tuple	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <tuple>
  #include <bits/invoke.h>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <tuple>
  #include <bits/invoke.h>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/type_traits gcc-7.4.0/libstdc++-v3/include/experimental/type_traits
*** gcc-7.3.0/libstdc++-v3/include/experimental/type_traits	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/type_traits	Mon Oct 22 08:47:52 2018
***************
*** 35,43 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <type_traits>
  #include <experimental/bits/lfts_config.h>
--- 35,41 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <type_traits>
  #include <experimental/bits/lfts_config.h>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/unordered_map gcc-7.4.0/libstdc++-v3/include/experimental/unordered_map
*** gcc-7.3.0/libstdc++-v3/include/experimental/unordered_map	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/unordered_map	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <unordered_map>
  #include <experimental/bits/erase_if.h>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <unordered_map>
  #include <experimental/bits/erase_if.h>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/unordered_set gcc-7.4.0/libstdc++-v3/include/experimental/unordered_set
*** gcc-7.3.0/libstdc++-v3/include/experimental/unordered_set	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/unordered_set	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <unordered_set>
  #include <experimental/bits/erase_if.h>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <unordered_set>
  #include <experimental/bits/erase_if.h>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/experimental/vector gcc-7.4.0/libstdc++-v3/include/experimental/vector
*** gcc-7.3.0/libstdc++-v3/include/experimental/vector	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/experimental/vector	Mon Oct 22 08:47:52 2018
***************
*** 31,39 ****
  
  #pragma GCC system_header
  
! #if __cplusplus <= 201103L
! # include <bits/c++14_warning.h>
! #else
  
  #include <vector>
  #include <algorithm>
--- 31,37 ----
  
  #pragma GCC system_header
  
! #if __cplusplus >= 201402L
  
  #include <vector>
  #include <algorithm>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/ext/pointer.h gcc-7.4.0/libstdc++-v3/include/ext/pointer.h
*** gcc-7.3.0/libstdc++-v3/include/ext/pointer.h	Wed Jan 18 18:36:45 2017
--- gcc-7.4.0/libstdc++-v3/include/ext/pointer.h	Fri Oct 12 12:51:34 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 437,442 ****
--- 437,446 ----
        _CXX_POINTER_ARITH_OPERATOR_SET(unsigned int);
        _CXX_POINTER_ARITH_OPERATOR_SET(long);
        _CXX_POINTER_ARITH_OPERATOR_SET(unsigned long);
+ #ifdef _GLIBCXX_USE_LONG_LONG
+       _CXX_POINTER_ARITH_OPERATOR_SET(long long);
+       _CXX_POINTER_ARITH_OPERATOR_SET(unsigned long long);
+ #endif
  
        // Mathematical Manipulators
        inline _Pointer_adapter& 
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/std/any gcc-7.4.0/libstdc++-v3/include/std/any
*** gcc-7.3.0/libstdc++-v3/include/std/any	Fri Oct 20 15:14:29 2017
--- gcc-7.4.0/libstdc++-v3/include/std/any	Mon Jan 29 13:58:54 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 70,76 ****
  
    /**
     *  @brief A type-safe container of any type.
!    * 
     *  An @c any object's state is either empty or it stores a contained object
     *  of CopyConstructible type.
     */
--- 70,76 ----
  
    /**
     *  @brief A type-safe container of any type.
!    *
     *  An @c any object's state is either empty or it stores a contained object
     *  of CopyConstructible type.
     */
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 114,121 ****
        void __do_emplace(_Args&&... __args)
        {
  	reset();
- 	_M_manager = &_Mgr::_S_manage;
          _Mgr::_S_create(_M_storage, std::forward<_Args>(__args)...);
        }
  
      /// Emplace with an object created from @p __il and @p __args as
--- 114,121 ----
        void __do_emplace(_Args&&... __args)
        {
  	reset();
          _Mgr::_S_create(_M_storage, std::forward<_Args>(__args)...);
+ 	_M_manager = &_Mgr::_S_manage;
        }
  
      /// Emplace with an object created from @p __il and @p __args as
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 125,132 ****
        void __do_emplace(initializer_list<_Up> __il, _Args&&... __args)
        {
  	reset();
- 	_M_manager = &_Mgr::_S_manage;
          _Mgr::_S_create(_M_storage, __il, std::forward<_Args>(__args)...);
        }
  
    public:
--- 125,132 ----
        void __do_emplace(initializer_list<_Up> __il, _Args&&... __args)
        {
  	reset();
          _Mgr::_S_create(_M_storage, __il, std::forward<_Args>(__args)...);
+ 	_M_manager = &_Mgr::_S_manage;
        }
  
    public:
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 272,279 ****
  				   _Decay<_ValueType>, _Args&&...>::type
        emplace(_Args&&... __args)
        {
! 	__do_emplace<_Decay<_ValueType>>
! 	  (std::forward<_Args>(__args)...);
  	any::_Arg __arg;
  	this->_M_manager(any::_Op_access, this, &__arg);
  	return *static_cast<_Decay<_ValueType>*>(__arg._M_obj);
--- 272,278 ----
  				   _Decay<_ValueType>, _Args&&...>::type
        emplace(_Args&&... __args)
        {
! 	__do_emplace<_Decay<_ValueType>>(std::forward<_Args>(__args)...);
  	any::_Arg __arg;
  	this->_M_manager(any::_Op_access, this, &__arg);
  	return *static_cast<_Decay<_ValueType>*>(__arg._M_obj);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 288,295 ****
  				   _Args&&...>::type
        emplace(initializer_list<_Up> __il, _Args&&... __args)
        {
! 	__do_emplace<_Decay<_ValueType>, _Up>
! 	  (__il, std::forward<_Args>(__args)...);
  	any::_Arg __arg;
  	this->_M_manager(any::_Op_access, this, &__arg);
  	return *static_cast<_Decay<_ValueType>*>(__arg._M_obj);
--- 287,294 ----
  				   _Args&&...>::type
        emplace(initializer_list<_Up> __il, _Args&&... __args)
        {
! 	__do_emplace<_Decay<_ValueType>, _Up>(__il,
! 					      std::forward<_Args>(__args)...);
  	any::_Arg __arg;
  	this->_M_manager(any::_Op_access, this, &__arg);
  	return *static_cast<_Decay<_ValueType>*>(__arg._M_obj);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 624,630 ****
      }
  
    /// @}
!   
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  
--- 623,629 ----
      }
  
    /// @}
! 
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/std/chrono gcc-7.4.0/libstdc++-v3/include/std/chrono
*** gcc-7.3.0/libstdc++-v3/include/std/chrono	Fri Oct 20 21:06:20 2017
--- gcc-7.4.0/libstdc++-v3/include/std/chrono	Wed Jul  4 13:59:51 2018
*************** _GLIBCXX_END_NAMESPACE_VERSION
*** 318,325 ****
  	// constexpr copy constructor will be ill-formed.
  	duration(const duration&) = default;
  
  	template<typename _Rep2, typename = typename
! 	       enable_if<is_convertible<_Rep2, rep>::value
  			 && (treat_as_floating_point<rep>::value
  			     || !treat_as_floating_point<_Rep2>::value)>::type>
  	  constexpr explicit duration(const _Rep2& __rep)
--- 318,327 ----
  	// constexpr copy constructor will be ill-formed.
  	duration(const duration&) = default;
  
+ 	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+ 	// 3050. Conversion specification problem in chrono::duration
  	template<typename _Rep2, typename = typename
! 	       enable_if<is_convertible<const _Rep2&, rep>::value
  			 && (treat_as_floating_point<rep>::value
  			     || !treat_as_floating_point<_Rep2>::value)>::type>
  	  constexpr explicit duration(const _Rep2& __rep)
*************** _GLIBCXX_END_NAMESPACE_VERSION
*** 463,470 ****
  	return __cd(__cd(__lhs).count() - __cd(__rhs).count());
        }
  
      template<typename _Rep1, typename _Rep2, bool =
! 	     is_convertible<_Rep2,
  			    typename common_type<_Rep1, _Rep2>::type>::value>
        struct __common_rep_type { };
  
--- 465,476 ----
  	return __cd(__cd(__lhs).count() - __cd(__rhs).count());
        }
  
+     // SFINAE helper to obtain common_type<_Rep1, _Rep2> only if _Rep2
+     // is implicitly convertible to it.
+     // _GLIBCXX_RESOLVE_LIB_DEFECTS
+     // 3050. Conversion specification problem in chrono::duration constructor
      template<typename _Rep1, typename _Rep2, bool =
! 	     is_convertible<const _Rep2&,
  			    typename common_type<_Rep1, _Rep2>::type>::value>
        struct __common_rep_type { };
  
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/std/condition_variable gcc-7.4.0/libstdc++-v3/include/std/condition_variable
*** gcc-7.3.0/libstdc++-v3/include/std/condition_variable	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/std/condition_variable	Tue Aug  7 22:50:40 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 135,148 ****
        cv_status
        wait_for(unique_lock<mutex>& __lock,
  	       const chrono::duration<_Rep, _Period>& __rtime)
!       { return wait_until(__lock, __clock_t::now() + __rtime); }
  
      template<typename _Rep, typename _Period, typename _Predicate>
        bool
        wait_for(unique_lock<mutex>& __lock,
  	       const chrono::duration<_Rep, _Period>& __rtime,
  	       _Predicate __p)
!       { return wait_until(__lock, __clock_t::now() + __rtime, std::move(__p)); }
  
      native_handle_type
      native_handle()
--- 135,160 ----
        cv_status
        wait_for(unique_lock<mutex>& __lock,
  	       const chrono::duration<_Rep, _Period>& __rtime)
!       {
! 	using __dur = typename __clock_t::duration;
! 	auto __reltime = chrono::duration_cast<__dur>(__rtime);
! 	if (__reltime < __rtime)
! 	  ++__reltime;
! 	return wait_until(__lock, __clock_t::now() + __reltime);
!       }
  
      template<typename _Rep, typename _Period, typename _Predicate>
        bool
        wait_for(unique_lock<mutex>& __lock,
  	       const chrono::duration<_Rep, _Period>& __rtime,
  	       _Predicate __p)
!       {
! 	using __dur = typename __clock_t::duration;
! 	auto __reltime = chrono::duration_cast<__dur>(__rtime);
! 	if (__reltime < __rtime)
! 	  ++__reltime;
! 	return wait_until(__lock, __clock_t::now() + __reltime, std::move(__p));
!       }
  
      native_handle_type
      native_handle()
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/std/functional gcc-7.4.0/libstdc++-v3/include/std/functional
*** gcc-7.3.0/libstdc++-v3/include/std/functional	Thu May 18 18:04:15 2017
--- gcc-7.4.0/libstdc++-v3/include/std/functional	Mon Oct  8 13:13:06 2018
*************** _GLIBCXX_MEM_FN_TRAITS(&& noexcept, fals
*** 931,937 ****
        template<typename... _Args>					\
  	decltype(_S_not<__inv_res_t<_Fn _QUALS, _Args...>>())		\
  	operator()(_Args&&... __args) _QUALS				\
! 	noexcept(noexcept(_S_not<__inv_res_t<_Fn _QUALS, _Args...>>()))	\
  	{								\
  	  return !std::__invoke(std::forward< _Fn _QUALS >(_M_fn),	\
  				std::forward<_Args>(__args)...);	\
--- 931,938 ----
        template<typename... _Args>					\
  	decltype(_S_not<__inv_res_t<_Fn _QUALS, _Args...>>())		\
  	operator()(_Args&&... __args) _QUALS				\
! 	noexcept(__is_nothrow_invocable<_Fn _QUALS, _Args...>::value	\
! 	    && noexcept(_S_not<__inv_res_t<_Fn _QUALS, _Args...>>()))	\
  	{								\
  	  return !std::__invoke(std::forward< _Fn _QUALS >(_M_fn),	\
  				std::forward<_Args>(__args)...);	\
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/std/thread gcc-7.4.0/libstdc++-v3/include/std/thread
*** gcc-7.3.0/libstdc++-v3/include/std/thread	Tue Jan  3 13:31:26 2017
--- gcc-7.4.0/libstdc++-v3/include/std/thread	Mon Feb 26 17:09:34 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 243,263 ****
  	{ return _M_invoke(_Indices()); }
        };
  
-     // Alias for _Invoker<tuple<DECAY_COPY(_Tp)...>>
      template<typename... _Tp>
!       using __invoker_type
! 	= _Invoker<decltype(std::make_tuple(std::declval<_Tp>()...))>;
  
    public:
!     // Returns a call wrapper that does
!     // INVOKE(DECAY_COPY(__callable), DECAY_COPY(__args)).
      template<typename _Callable, typename... _Args>
!       static __invoker_type<_Callable, _Args...>
        __make_invoker(_Callable&& __callable, _Args&&... __args)
        {
! 	return { {
! 	    std::make_tuple(std::forward<_Callable>(__callable),
! 			    std::forward<_Args>(__args)...)
  	} };
        }
    };
--- 243,260 ----
  	{ return _M_invoke(_Indices()); }
        };
  
      template<typename... _Tp>
!       using __decayed_tuple = tuple<typename std::decay<_Tp>::type...>;
  
    public:
!     // Returns a call wrapper that stores
!     // tuple{DECAY_COPY(__callable), DECAY_COPY(__args)...}.
      template<typename _Callable, typename... _Args>
!       static _Invoker<__decayed_tuple<_Callable, _Args...>>
        __make_invoker(_Callable&& __callable, _Args&&... __args)
        {
! 	return { __decayed_tuple<_Callable, _Args...>{
! 	    std::forward<_Callable>(__callable), std::forward<_Args>(__args)...
  	} };
        }
    };
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/std/type_traits gcc-7.4.0/libstdc++-v3/include/std/type_traits
*** gcc-7.3.0/libstdc++-v3/include/std/type_traits	Tue Dec 12 18:07:24 2017
--- gcc-7.4.0/libstdc++-v3/include/std/type_traits	Fri Oct 12 12:51:40 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2458,2464 ****
      : public __invoke_result<_Functor, _ArgTypes...>
      { };
  
! #if __cplusplus > 201103L
    /// Alias template for aligned_storage
    template<size_t _Len, size_t _Align =
  	    __alignof__(typename __aligned_storage_msa<_Len>::__type)>
--- 2458,2464 ----
      : public __invoke_result<_Functor, _ArgTypes...>
      { };
  
! #if __cplusplus >= 201402L
    /// Alias template for aligned_storage
    template<size_t _Len, size_t _Align =
  	    __alignof__(typename __aligned_storage_msa<_Len>::__type)>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2490,2500 ****
    /// Alias template for result_of
    template<typename _Tp>
      using result_of_t = typename result_of<_Tp>::type;
! #endif
  
    template<typename...> using __void_t = void;
  
! #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
  #define __cpp_lib_void_t 201411
    /// A metafunction that always yields void, used for detecting valid types.
    template<typename...> using void_t = void;
--- 2490,2505 ----
    /// Alias template for result_of
    template<typename _Tp>
      using result_of_t = typename result_of<_Tp>::type;
! #endif // C++14
! 
!   // __enable_if_t (std::enable_if_t for C++11)
!   template<bool _Cond, typename _Tp = void>
!     using __enable_if_t = typename enable_if<_Cond, _Tp>::type;
  
+   // __void_t (std::void_t for C++11)
    template<typename...> using __void_t = void;
  
! #if __cplusplus >= 201703L || !defined(__STRICT_ANSI__) // c++17 or gnu++11
  #define __cpp_lib_void_t 201411
    /// A metafunction that always yields void, used for detecting valid types.
    template<typename...> using void_t = void;
*************** template <typename _From, typename _To>
*** 3069,3074 ****
--- 3074,3083 ----
        remove_cv_t<remove_all_extents_t<_Tp>>
        )>
      { };
+ 
+   template<typename _Tp>
+     inline constexpr bool has_unique_object_representations_v
+       = has_unique_object_representations<_Tp>::value;
  #endif
  #undef _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP
  
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/std/utility gcc-7.4.0/libstdc++-v3/include/std/utility
*** gcc-7.3.0/libstdc++-v3/include/std/utility	Fri Dec  1 17:12:18 2017
--- gcc-7.4.0/libstdc++-v3/include/std/utility	Tue Jun 19 17:32:50 2018
***************
*** 75,84 ****
  #include <bits/move.h>
  #include <initializer_list>
  
- #if __cplusplus > 201402L
- #include <exception>
- #endif
- 
  namespace std _GLIBCXX_VISIBILITY(default)
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
--- 75,80 ----
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/std/variant gcc-7.4.0/libstdc++-v3/include/std/variant
*** gcc-7.3.0/libstdc++-v3/include/std/variant	Fri Oct 20 15:14:29 2017
--- gcc-7.4.0/libstdc++-v3/include/std/variant	Wed Jul  4 13:59:37 2018
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 229,241 ****
  
    template<size_t _Np, typename _Union>
      constexpr decltype(auto) __get(in_place_index_t<_Np>, _Union&& __u)
!     { return __get(in_place_index<_Np-1>, std::forward<_Union>(__u)._M_rest); }
  
    // Returns the typed storage for __v.
    template<size_t _Np, typename _Variant>
      constexpr decltype(auto) __get(_Variant&& __v)
      {
!       return __get(std::in_place_index<_Np>, std::forward<_Variant>(__v)._M_u);
      }
  
    // Various functions as "vtable" entries, where those vtables are used by
--- 229,245 ----
  
    template<size_t _Np, typename _Union>
      constexpr decltype(auto) __get(in_place_index_t<_Np>, _Union&& __u)
!     {
!       return __variant::__get(in_place_index<_Np-1>,
! 			      std::forward<_Union>(__u)._M_rest);
!     }
  
    // Returns the typed storage for __v.
    template<size_t _Np, typename _Variant>
      constexpr decltype(auto) __get(_Variant&& __v)
      {
!       return __variant::__get(std::in_place_index<_Np>,
! 			      std::forward<_Variant>(__v)._M_u);
      }
  
    // Various functions as "vtable" entries, where those vtables are used by
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 251,257 ****
    template<typename _Variant, size_t _Np>
      void
      __erased_dtor(_Variant&& __v)
!     { std::_Destroy(std::__addressof(__get<_Np>(__v))); }
  
    template<typename _Lhs, typename _Rhs>
      void
--- 255,261 ----
    template<typename _Variant, size_t _Np>
      void
      __erased_dtor(_Variant&& __v)
!     { std::_Destroy(std::__addressof(__variant::__get<_Np>(__v))); }
  
    template<typename _Lhs, typename _Rhs>
      void
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 274,281 ****
      constexpr bool \
      __erased_##__NAME(const _Variant& __lhs, const _Variant& __rhs) \
      { \
!       return __get<_Np>(std::forward<_Variant>(__lhs)) \
! 	  __OP __get<_Np>(std::forward<_Variant>(__rhs)); \
      }
  
    _VARIANT_RELATION_FUNCTION_TEMPLATE(<, less)
--- 278,285 ----
      constexpr bool \
      __erased_##__NAME(const _Variant& __lhs, const _Variant& __rhs) \
      { \
!       return __variant::__get<_Np>(std::forward<_Variant>(__lhs)) \
! 	  __OP __variant::__get<_Np>(std::forward<_Variant>(__rhs)); \
      }
  
    _VARIANT_RELATION_FUNCTION_TEMPLATE(<, less)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 324,333 ****
  
    template <typename... _Types>
    using __select_index =
!     typename __select_int::_Select_int_base<sizeof...(_Types)+1,
  					    unsigned char,
! 					    unsigned short>
!     ::type::value_type;
  
    template<typename... _Types>
      struct _Variant_storage<false, _Types...>
--- 328,336 ----
  
    template <typename... _Types>
    using __select_index =
!     typename __select_int::_Select_int_base<sizeof...(_Types) + 1,
  					    unsigned char,
! 					    unsigned short>::type::value_type;
  
    template<typename... _Types>
      struct _Variant_storage<false, _Types...>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 681,689 ****
        decltype(auto)
        static constexpr __visit_invoke(_Visitor&& __visitor, _Variants... __vars)
        {
! 	return __invoke(std::forward<_Visitor>(__visitor),
! 			std::get<__indices>(
! 			    std::forward<_Variants>(__vars))...);
        }
  
        static constexpr auto
--- 684,691 ----
        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
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 741,747 ****
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
        static_assert(!is_void_v<_Tp>, "_Tp should not be void");
!       return get<__detail::__variant::__index_of_v<_Tp, _Types...>>(__v);
      }
  
    template<typename _Tp, typename... _Types>
--- 743,749 ----
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
        static_assert(!is_void_v<_Tp>, "_Tp should not be void");
!       return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>(__v);
      }
  
    template<typename _Tp, typename... _Types>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 750,756 ****
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
        static_assert(!is_void_v<_Tp>, "_Tp should not be void");
!       return get<__detail::__variant::__index_of_v<_Tp, _Types...>>(
  	std::move(__v));
      }
  
--- 752,758 ----
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
        static_assert(!is_void_v<_Tp>, "_Tp should not be void");
!       return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>(
  	std::move(__v));
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 760,766 ****
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
        static_assert(!is_void_v<_Tp>, "_Tp should not be void");
!       return get<__detail::__variant::__index_of_v<_Tp, _Types...>>(__v);
      }
  
    template<typename _Tp, typename... _Types>
--- 762,768 ----
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
        static_assert(!is_void_v<_Tp>, "_Tp should not be void");
!       return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>(__v);
      }
  
    template<typename _Tp, typename... _Types>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 769,775 ****
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
        static_assert(!is_void_v<_Tp>, "_Tp should not be void");
!       return get<__detail::__variant::__index_of_v<_Tp, _Types...>>(
  	std::move(__v));
      }
  
--- 771,777 ----
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
        static_assert(!is_void_v<_Tp>, "_Tp should not be void");
!       return std::get<__detail::__variant::__index_of_v<_Tp, _Types...>>(
  	std::move(__v));
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 808,814 ****
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
        static_assert(!is_void_v<_Tp>, "_Tp should not be void");
!       return get_if<__detail::__variant::__index_of_v<_Tp, _Types...>>(__ptr);
      }
  
    template<typename _Tp, typename... _Types>
--- 810,817 ----
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
        static_assert(!is_void_v<_Tp>, "_Tp should not be void");
!       return std::get_if<__detail::__variant::__index_of_v<_Tp, _Types...>>(
! 	  __ptr);
      }
  
    template<typename _Tp, typename... _Types>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 819,825 ****
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
        static_assert(!is_void_v<_Tp>, "_Tp should not be void");
!       return get_if<__detail::__variant::__index_of_v<_Tp, _Types...>>(__ptr);
      }
  
    struct monostate { };
--- 822,829 ----
        static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>,
  		    "T should occur for exactly once in alternatives");
        static_assert(!is_void_v<_Tp>, "_Tp should not be void");
!       return std::get_if<__detail::__variant::__index_of_v<_Tp, _Types...>>(
! 	  __ptr);
      }
  
    struct monostate { };
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1157,1162 ****
--- 1161,1172 ----
  
  #undef _VARIANT_RELATION_FUNCTION_TEMPLATE
  
+ #ifdef __clang__
+     public:
+       using _Base::_M_u; // See https://bugs.llvm.org/show_bug.cgi?id=31852
+     private:
+ #endif
+ 
        template<size_t _Np, typename _Vp>
  	friend constexpr decltype(auto) __detail::__variant::
  #if _GLIBCXX_INLINE_VERSION
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1240,1246 ****
  
        using _Result_type =
  	decltype(std::forward<_Visitor>(__visitor)(
! 	    get<0>(std::forward<_Variants>(__variants))...));
  
        constexpr auto& __vtable = __detail::__variant::__gen_vtable<
  	_Result_type, _Visitor&&, _Variants&&...>::_S_vtable;
--- 1250,1256 ----
  
        using _Result_type =
  	decltype(std::forward<_Visitor>(__visitor)(
! 	    std::get<0>(std::forward<_Variants>(__variants))...));
  
        constexpr auto& __vtable = __detail::__variant::__gen_vtable<
  	_Result_type, _Visitor&&, _Variants&&...>::_S_vtable;
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/tr1/ell_integral.tcc gcc-7.4.0/libstdc++-v3/include/tr1/ell_integral.tcc
*** gcc-7.3.0/libstdc++-v3/include/tr1/ell_integral.tcc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/tr1/ell_integral.tcc	Mon Apr 30 19:51:13 2018
*************** namespace tr1
*** 685,692 ****
            const _Tp __kk = __k * __k;
  
            return __ellint_rf(_Tp(0), _Tp(1) - __kk, _Tp(1))
!                - __nu
!                * __ellint_rj(_Tp(0), _Tp(1) - __kk, _Tp(1), _Tp(1) + __nu)
                 / _Tp(3);
          }
      }
--- 685,692 ----
            const _Tp __kk = __k * __k;
  
            return __ellint_rf(_Tp(0), _Tp(1) - __kk, _Tp(1))
!                + __nu
!                * __ellint_rj(_Tp(0), _Tp(1) - __kk, _Tp(1), _Tp(1) - __nu)
                 / _Tp(3);
          }
      }
*************** namespace tr1
*** 735,743 ****
  
            const _Tp __Pi = __s
                           * __ellint_rf(__cc, _Tp(1) - __kk * __ss, _Tp(1))
!                          - __nu * __sss
                           * __ellint_rj(__cc, _Tp(1) - __kk * __ss, _Tp(1),
!                                        _Tp(1) + __nu * __ss) / _Tp(3);
  
            if (__n == 0)
              return __Pi;
--- 735,743 ----
  
            const _Tp __Pi = __s
                           * __ellint_rf(__cc, _Tp(1) - __kk * __ss, _Tp(1))
!                          + __nu * __sss
                           * __ellint_rj(__cc, _Tp(1) - __kk * __ss, _Tp(1),
!                                        _Tp(1) - __nu * __ss) / _Tp(3);
  
            if (__n == 0)
              return __Pi;
diff -Nrcpad gcc-7.3.0/libstdc++-v3/include/tr1/exp_integral.tcc gcc-7.4.0/libstdc++-v3/include/tr1/exp_integral.tcc
*** gcc-7.3.0/libstdc++-v3/include/tr1/exp_integral.tcc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/include/tr1/exp_integral.tcc	Mon Apr 30 19:51:13 2018
*************** namespace tr1
*** 86,92 ****
        _Tp __term = _Tp(1);
        _Tp __esum = _Tp(0);
        _Tp __osum = _Tp(0);
!       const unsigned int __max_iter = 100;
        for (unsigned int __i = 1; __i < __max_iter; ++__i)
          {
            __term *= - __x / __i;
--- 86,92 ----
        _Tp __term = _Tp(1);
        _Tp __esum = _Tp(0);
        _Tp __osum = _Tp(0);
!       const unsigned int __max_iter = 1000;
        for (unsigned int __i = 1; __i < __max_iter; ++__i)
          {
            __term *= - __x / __i;
*************** namespace tr1
*** 156,162 ****
      _Tp
      __expint_En_series(unsigned int __n, _Tp __x)
      {
!       const unsigned int __max_iter = 100;
        const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
        const int __nm1 = __n - 1;
        _Tp __ans = (__nm1 != 0
--- 156,162 ----
      _Tp
      __expint_En_series(unsigned int __n, _Tp __x)
      {
!       const unsigned int __max_iter = 1000;
        const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
        const int __nm1 = __n - 1;
        _Tp __ans = (__nm1 != 0
*************** namespace tr1
*** 202,208 ****
      _Tp
      __expint_En_cont_frac(unsigned int __n, _Tp __x)
      {
!       const unsigned int __max_iter = 100;
        const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
        const _Tp __fp_min = std::numeric_limits<_Tp>::min();
        const int __nm1 = __n - 1;
--- 202,208 ----
      _Tp
      __expint_En_cont_frac(unsigned int __n, _Tp __x)
      {
!       const unsigned int __max_iter = 1000;
        const _Tp __eps = std::numeric_limits<_Tp>::epsilon();
        const _Tp __fp_min = std::numeric_limits<_Tp>::min();
        const int __nm1 = __n - 1;
diff -Nrcpad gcc-7.3.0/libstdc++-v3/libsupc++/cxxabi_init_exception.h gcc-7.4.0/libstdc++-v3/libsupc++/cxxabi_init_exception.h
*** gcc-7.3.0/libstdc++-v3/libsupc++/cxxabi_init_exception.h	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/libsupc++/cxxabi_init_exception.h	Thu May 17 17:26:44 2018
*************** namespace __cxxabiv1
*** 62,67 ****
--- 62,70 ----
        void*
        __cxa_allocate_exception(size_t) _GLIBCXX_NOTHROW;
  
+       void
+       __cxa_free_exception(void*) _GLIBCXX_NOTHROW;
+ 
        // Initialize exception (this is a GNU extension)
        __cxa_refcounted_exception*
        __cxa_init_primary_exception(void *object, std::type_info *tinfo,
diff -Nrcpad gcc-7.3.0/libstdc++-v3/libsupc++/exception_ptr.h gcc-7.4.0/libstdc++-v3/libsupc++/exception_ptr.h
*** gcc-7.3.0/libstdc++-v3/libsupc++/exception_ptr.h	Thu Mar  2 03:43:49 2017
--- gcc-7.4.0/libstdc++-v3/libsupc++/exception_ptr.h	Thu May 17 17:26:44 2018
*************** namespace std
*** 178,202 ****
      exception_ptr 
      make_exception_ptr(_Ex __ex) _GLIBCXX_USE_NOEXCEPT
      {
! #if __cpp_exceptions
        try
  	{
- #if __cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI
-           void *__e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex));
-           (void)__cxxabiv1::__cxa_init_primary_exception(
- 	      __e, const_cast<std::type_info*>(&typeid(__ex)),
- 	      __exception_ptr::__dest_thunk<_Ex>);
            ::new (__e) _Ex(__ex);
            return exception_ptr(__e);
! #else
            throw __ex;
- #endif
  	}
        catch(...)
  	{
  	  return current_exception();
  	}
! #else
        return exception_ptr();
  #endif
      }
--- 178,208 ----
      exception_ptr 
      make_exception_ptr(_Ex __ex) _GLIBCXX_USE_NOEXCEPT
      {
! #if __cpp_exceptions && __cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI
!       void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex));
!       (void) __cxxabiv1::__cxa_init_primary_exception(
! 	  __e, const_cast<std::type_info*>(&typeid(__ex)),
! 	  __exception_ptr::__dest_thunk<_Ex>);
        try
  	{
            ::new (__e) _Ex(__ex);
            return exception_ptr(__e);
! 	}
!       catch(...)
! 	{
! 	  __cxxabiv1::__cxa_free_exception(__e);
! 	  return current_exception();
! 	}
! #elif __cpp_exceptions
!       try
! 	{
            throw __ex;
  	}
        catch(...)
  	{
  	  return current_exception();
  	}
! #else // no RTTI and no exceptions
        return exception_ptr();
  #endif
      }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/libsupc++/new_opa.cc gcc-7.4.0/libstdc++-v3/libsupc++/new_opa.cc
*** gcc-7.3.0/libstdc++-v3/libsupc++/new_opa.cc	Thu Jan 26 14:30:45 2017
--- gcc-7.4.0/libstdc++-v3/libsupc++/new_opa.cc	Wed Aug  8 15:53:25 2018
***************
*** 25,44 ****
  
  #include <bits/c++config.h>
  #include <stdlib.h>
  #include <bits/exception_defines.h>
  #include "new"
  
  using std::new_handler;
  using std::bad_alloc;
  
! #if !_GLIBCXX_HAVE_ALIGNED_ALLOC
! #if _GLIBCXX_HAVE__ALIGNED_MALLOC
! #define aligned_alloc(al,sz) _aligned_malloc(sz,al)
  #elif _GLIBCXX_HAVE_POSIX_MEMALIGN
  static inline void*
  aligned_alloc (std::size_t al, std::size_t sz)
  {
    void *ptr;
    // The value of alignment shall be a power of two multiple of sizeof(void *).
    if (al < sizeof(void*))
      al = sizeof(void*);
--- 25,60 ----
  
  #include <bits/c++config.h>
  #include <stdlib.h>
+ #include <stdint.h>
  #include <bits/exception_defines.h>
  #include "new"
  
+ #if !_GLIBCXX_HAVE_ALIGNED_ALLOC && !_GLIBCXX_HAVE__ALIGNED_MALLOC \
+   && !_GLIBCXX_HAVE_POSIX_MEMALIGN && _GLIBCXX_HAVE_MEMALIGN
+ # if _GLIBCXX_HOSTED && __has_include(<malloc.h>)
+ // Some C libraries declare memalign in <malloc.h>
+ #  include <malloc.h>
+ # else
+ extern "C" void *memalign(std::size_t boundary, std::size_t size);
+ # endif
+ #endif
+ 
  using std::new_handler;
  using std::bad_alloc;
  
! namespace __gnu_cxx {
! #if _GLIBCXX_HAVE_ALIGNED_ALLOC
! using ::aligned_alloc;
! #elif _GLIBCXX_HAVE__ALIGNED_MALLOC
! static inline void*
! aligned_alloc (std::size_t al, std::size_t sz)
! { return _aligned_malloc(sz, al); }
  #elif _GLIBCXX_HAVE_POSIX_MEMALIGN
  static inline void*
  aligned_alloc (std::size_t al, std::size_t sz)
  {
    void *ptr;
+   // posix_memalign has additional requirement, not present on aligned_alloc:
    // The value of alignment shall be a power of two multiple of sizeof(void *).
    if (al < sizeof(void*))
      al = sizeof(void*);
*************** aligned_alloc (std::size_t al, std::size
*** 48,72 ****
    return nullptr;
  }
  #elif _GLIBCXX_HAVE_MEMALIGN
! #if _GLIBCXX_HOSTED
! #include <malloc.h>
! #else
! extern "C" void *memalign(std::size_t boundary, std::size_t size);
  #endif
! #define aligned_alloc memalign
! #else
! #include <stdint.h>
  // The C library doesn't provide any aligned allocation functions, define one.
  // This is a modified version of code from gcc/config/i386/gmm_malloc.h
  static inline void*
  aligned_alloc (std::size_t al, std::size_t sz)
  {
-   // Alignment must be a power of two.
-   if (al & (al - 1))
-     return nullptr;
-   else if (!sz)
-     return nullptr;
- 
    // We need extra bytes to store the original value returned by malloc.
    if (al < sizeof(void*))
      al = sizeof(void*);
--- 64,86 ----
    return nullptr;
  }
  #elif _GLIBCXX_HAVE_MEMALIGN
! static inline void*
! aligned_alloc (std::size_t al, std::size_t sz)
! {
! #ifdef __sun
!   // Solaris 10 memalign requires that alignment is greater than or equal to
!   // the size of a word.
!   if (al < sizeof(int))
!     al = sizeof(int);
  #endif
!   return memalign (al, sz);
! }
! #else // !HAVE__ALIGNED_MALLOC && !HAVE_POSIX_MEMALIGN && !HAVE_MEMALIGN
  // The C library doesn't provide any aligned allocation functions, define one.
  // This is a modified version of code from gcc/config/i386/gmm_malloc.h
  static inline void*
  aligned_alloc (std::size_t al, std::size_t sz)
  {
    // We need extra bytes to store the original value returned by malloc.
    if (al < sizeof(void*))
      al = sizeof(void*);
*************** aligned_alloc (std::size_t al, std::size
*** 82,88 ****
    return aligned_ptr;
  }
  #endif
! #endif
  
  _GLIBCXX_WEAK_DEFINITION void *
  operator new (std::size_t sz, std::align_val_t al)
--- 96,102 ----
    return aligned_ptr;
  }
  #endif
! } // namespace __gnu_cxx
  
  _GLIBCXX_WEAK_DEFINITION void *
  operator new (std::size_t sz, std::align_val_t al)
*************** operator new (std::size_t sz, std::align
*** 90,105 ****
    void *p;
    std::size_t align = (std::size_t)al;
  
    /* malloc (0) is unpredictable; avoid it.  */
!   if (sz == 0)
      sz = 1;
  
  #if _GLIBCXX_HAVE_ALIGNED_ALLOC
    /* C11: the value of size shall be an integral multiple of alignment.  */
    if (std::size_t rem = sz & (align - 1))
      sz += align - rem;
  #endif
  
    while (__builtin_expect ((p = aligned_alloc (align, sz)) == 0, false))
      {
        new_handler handler = std::get_new_handler ();
--- 104,131 ----
    void *p;
    std::size_t align = (std::size_t)al;
  
+   /* Alignment must be a power of two.  */
+   /* XXX This should be checked by the compiler (PR 86878).  */
+   if (__builtin_expect (align & (align - 1), false))
+     _GLIBCXX_THROW_OR_ABORT(bad_alloc());
+ 
    /* malloc (0) is unpredictable; avoid it.  */
!   if (__builtin_expect (sz == 0, false))
      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
    /* C11: the value of size shall be an integral multiple of alignment.  */
    if (std::size_t rem = sz & (align - 1))
      sz += align - rem;
  #endif
  
+   using __gnu_cxx::aligned_alloc;
    while (__builtin_expect ((p = aligned_alloc (align, sz)) == 0, false))
      {
        new_handler handler = std::get_new_handler ();
diff -Nrcpad gcc-7.3.0/libstdc++-v3/python/libstdcxx/v6/printers.py gcc-7.4.0/libstdc++-v3/python/libstdcxx/v6/printers.py
*** gcc-7.3.0/libstdc++-v3/python/libstdcxx/v6/printers.py	Sat Jan 13 01:53:52 2018
--- gcc-7.4.0/libstdc++-v3/python/libstdcxx/v6/printers.py	Fri Oct 12 12:51:46 2018
*************** class StdExpPathPrinter:
*** 1184,1189 ****
--- 1184,1222 ----
          return self._iterator(self.val['_M_cmpts'])
  
  
+ class StdPairPrinter:
+     "Print a std::pair object, with 'first' and 'second' as children"
+ 
+     def __init__(self, typename, val):
+         self.val = val
+ 
+     class _iter(Iterator):
+         "An iterator for std::pair types. Returns 'first' then 'second'."
+ 
+         def __init__(self, val):
+             self.val = val
+             self.which = 'first'
+ 
+         def __iter__(self):
+             return self
+ 
+         def __next__(self):
+             if self.which is None:
+                 raise StopIteration
+             which = self.which
+             if which == 'first':
+                 self.which = 'second'
+             else:
+                 self.which = None
+             return (which, self.val[which])
+ 
+     def children(self):
+         return self._iter(self.val)
+ 
+     def to_string(self):
+         return None
+ 
+ 
  # A "regular expression" printer which conforms to the
  # "SubPrettyPrinter" protocol from gdb.printing.
  class RxPrinter(object):
*************** def build_libstdcxx_dictionary ():
*** 1515,1520 ****
--- 1548,1554 ----
      libstdcxx_printer.add_container('std::', 'map', StdMapPrinter)
      libstdcxx_printer.add_container('std::', 'multimap', StdMapPrinter)
      libstdcxx_printer.add_container('std::', 'multiset', StdSetPrinter)
+     libstdcxx_printer.add_version('std::', 'pair', StdPairPrinter)
      libstdcxx_printer.add_version('std::', 'priority_queue',
                                    StdStackOrQueuePrinter)
      libstdcxx_printer.add_version('std::', 'queue', StdStackOrQueuePrinter)
diff -Nrcpad gcc-7.3.0/libstdc++-v3/src/c++11/Makefile.am gcc-7.4.0/libstdc++-v3/src/c++11/Makefile.am
*** gcc-7.3.0/libstdc++-v3/src/c++11/Makefile.am	Fri Feb  3 18:59:05 2017
--- gcc-7.4.0/libstdc++-v3/src/c++11/Makefile.am	Wed Apr 18 13:13:29 2018
*************** hashtable_c++0x.lo: hashtable_c++0x.cc
*** 126,131 ****
--- 126,151 ----
  hashtable_c++0x.o: hashtable_c++0x.cc
  	$(CXXCOMPILE) -fimplicit-templates -c $<
  
+ if ENABLE_DUAL_ABI
+ # Rewrite the type info for __ios_failure.
+ rewrite_ios_failure_typeinfo = sed -e '/^_*_ZTISt13__ios_failure:/,/_ZTVN10__cxxabiv120__si_class_type_infoE/s/_ZTVN10__cxxabiv120__si_class_type_infoE/_ZTVSt19__iosfail_type_info/'
+ 
+ cxx11-ios_failure-lt.s: cxx11-ios_failure.cc
+ 	$(LTCXXCOMPILE) -S $< -o tmp-cxx11-ios_failure-lt.s
+ 	-test -f tmp-cxx11-ios_failure-lt.o && mv -f tmp-cxx11-ios_failure-lt.o tmp-cxx11-ios_failure-lt.s
+ 	$(rewrite_ios_failure_typeinfo) tmp-$@ > $@
+ 	-rm -f tmp-$@
+ cxx11-ios_failure.s: cxx11-ios_failure.cc
+ 	$(CXXCOMPILE) -S $< -o tmp-$@
+ 	$(rewrite_ios_failure_typeinfo) tmp-$@ > $@
+ 	-rm -f tmp-$@
+ 
+ cxx11-ios_failure.lo: cxx11-ios_failure-lt.s
+ 	$(LTCXXCOMPILE) -g0 -c $< -o $@
+ cxx11-ios_failure.o: cxx11-ios_failure.s
+ 	$(CXXCOMPILE) -g0 -c $<
+ endif
+ 
  # 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
diff -Nrcpad gcc-7.3.0/libstdc++-v3/src/c++11/Makefile.in gcc-7.4.0/libstdc++-v3/src/c++11/Makefile.in
*** gcc-7.3.0/libstdc++-v3/src/c++11/Makefile.in	Fri Feb  3 18:59:05 2017
--- gcc-7.4.0/libstdc++-v3/src/c++11/Makefile.in	Wed Apr 18 13:13:29 2018
*************** sources = \
*** 433,438 ****
--- 433,441 ----
  
  libc__11convenience_la_SOURCES = $(sources)  $(inst_sources)
  
+ # Rewrite the type info for __ios_failure.
+ @ENABLE_DUAL_ABI_TRUE@rewrite_ios_failure_typeinfo = sed -e '/^_*_ZTISt13__ios_failure:/,/_ZTVN10__cxxabiv120__si_class_type_infoE/s/_ZTVN10__cxxabiv120__si_class_type_infoE/_ZTVSt19__iosfail_type_info/'
+ 
  # 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
*************** hashtable_c++0x.lo: hashtable_c++0x.cc
*** 748,753 ****
--- 751,771 ----
  hashtable_c++0x.o: hashtable_c++0x.cc
  	$(CXXCOMPILE) -fimplicit-templates -c $<
  
+ @ENABLE_DUAL_ABI_TRUE@cxx11-ios_failure-lt.s: cxx11-ios_failure.cc
+ @ENABLE_DUAL_ABI_TRUE@	$(LTCXXCOMPILE) -S $< -o tmp-cxx11-ios_failure-lt.s
+ @ENABLE_DUAL_ABI_TRUE@	-test -f tmp-cxx11-ios_failure-lt.o && mv -f tmp-cxx11-ios_failure-lt.o tmp-cxx11-ios_failure-lt.s
+ @ENABLE_DUAL_ABI_TRUE@	$(rewrite_ios_failure_typeinfo) tmp-$@ > $@
+ @ENABLE_DUAL_ABI_TRUE@	-rm -f tmp-$@
+ @ENABLE_DUAL_ABI_TRUE@cxx11-ios_failure.s: cxx11-ios_failure.cc
+ @ENABLE_DUAL_ABI_TRUE@	$(CXXCOMPILE) -S $< -o tmp-$@
+ @ENABLE_DUAL_ABI_TRUE@	$(rewrite_ios_failure_typeinfo) tmp-$@ > $@
+ @ENABLE_DUAL_ABI_TRUE@	-rm -f tmp-$@
+ 
+ @ENABLE_DUAL_ABI_TRUE@cxx11-ios_failure.lo: cxx11-ios_failure-lt.s
+ @ENABLE_DUAL_ABI_TRUE@	$(LTCXXCOMPILE) -g0 -c $< -o $@
+ @ENABLE_DUAL_ABI_TRUE@cxx11-ios_failure.o: cxx11-ios_failure.s
+ @ENABLE_DUAL_ABI_TRUE@	$(CXXCOMPILE) -g0 -c $<
+ 
  # 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-7.3.0/libstdc++-v3/src/c++11/codecvt.cc gcc-7.4.0/libstdc++-v3/src/c++11/codecvt.cc
*** gcc-7.3.0/libstdc++-v3/src/c++11/codecvt.cc	Fri Mar 17 19:28:05 2017
--- gcc-7.4.0/libstdc++-v3/src/c++11/codecvt.cc	Tue Aug  7 22:50:06 2018
*************** do_in(state_type&, const extern_type* __
*** 1086,1092 ****
      reinterpret_cast<char16_t*>(__to),
      reinterpret_cast<char16_t*>(__to_end)
    };
!   auto res = ucs2_in(from, to, _M_maxcode, _M_mode);
  #elif __SIZEOF_WCHAR_T__ == 4
    range<char32_t> to{
      reinterpret_cast<char32_t*>(__to),
--- 1086,1097 ----
      reinterpret_cast<char16_t*>(__to),
      reinterpret_cast<char16_t*>(__to_end)
    };
! #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
!   codecvt_mode mode = {};
! #else
!   codecvt_mode mode = little_endian;
! #endif
!   auto res = ucs2_in(from, to, _M_maxcode, mode);
  #elif __SIZEOF_WCHAR_T__ == 4
    range<char32_t> to{
      reinterpret_cast<char32_t*>(__to),
diff -Nrcpad gcc-7.3.0/libstdc++-v3/src/c++11/cxx11-ios_failure.cc gcc-7.4.0/libstdc++-v3/src/c++11/cxx11-ios_failure.cc
*** gcc-7.3.0/libstdc++-v3/src/c++11/cxx11-ios_failure.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/src/c++11/cxx11-ios_failure.cc	Thu Apr 12 20:55:25 2018
***************
*** 28,33 ****
--- 28,42 ----
  
  #define _GLIBCXX_USE_CXX11_ABI 1
  #include <ios>
+ #include <bits/functexcept.h>
+ #include <cxxabi.h>
+ 
+ #ifdef _GLIBCXX_USE_NLS
+ # include <libintl.h>
+ # define _(msgid)   gettext (msgid)
+ #else
+ # define _(msgid)   (msgid)
+ #endif
  
  #if ! _GLIBCXX_USE_DUAL_ABI
  # error This file should not be compiled for this configuration.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 91,95 ****
--- 100,165 ----
    ios_base::failure::what() const throw()
    { return runtime_error::what(); }
  
+ #if __cpp_rtti
+   // These functions are defined in src/c++98/ios_failure.cc
+   extern void __construct_ios_failure(void*, const char*);
+   extern void __destroy_ios_failure(void*);
+   extern bool __is_ios_failure_handler(const __cxxabiv1::__class_type_info*);
+ 
+   // The type thrown to report errors during stream buffer operations.
+   // In addition to the ios::failure[abi:cxx11] base class it also has a
+   // member of the gcc4-compatible ios::failure type (in an opaque buffer).
+   struct __ios_failure : std::ios::failure
+   {
+     __ios_failure(const char* s) : failure(s)
+     { __construct_ios_failure(buf, runtime_error::what()); }
+ 
+     ~__ios_failure()
+     { __destroy_ios_failure(buf); }
+ 
+     // Use std::runtime_error as a proxy for the gcc4-compatible ios::failure
+     // (which can't be declared here because _GLIBCXX_USE_CXX11_ABI == 1).
+     // There are assertions in src/c++98/ios_failure.cc to ensure the size
+     // and alignment assumptions are valid.
+     alignas(runtime_error) unsigned char buf[sizeof(runtime_error)];
+   };
+ 
+   // Custom type info for __ios_failure.
+   class __iosfail_type_info : __cxxabiv1::__si_class_type_info
+   {
+     ~__iosfail_type_info();
+ 
+     bool
+     __do_upcast (const __class_type_info *dst_type,
+ 		 void **obj_ptr) const override;
+   };
+ 
+   __iosfail_type_info::~__iosfail_type_info() = default;
+ 
+   // This function gets called to see if an exception of type
+   // __ios_failure can be upcast to the type in a catch handler.
+   bool
+   __iosfail_type_info::__do_upcast(const __class_type_info *dst_type,
+ 				   void **obj_ptr) const
+   {
+     // If the handler is for the gcc4-compatible ios::failure type then
+     // catch the object stored in __ios_failure::buf instead of
+     // the __ios_failure exception object itself.
+     if (__is_ios_failure_handler(dst_type))
+       {
+ 	*obj_ptr = static_cast<__ios_failure*>(*obj_ptr)->buf;
+ 	return true;
+       }
+     // Otherwise proceed as normal to see if the handler matches.
+     return __class_type_info::__do_upcast(dst_type, obj_ptr);
+   }
+ #else // ! __cpp_rtti
+   using __ios_failure = ios::failure;
+ #endif
+ 
+   void
+   __throw_ios_failure(const char* __s __attribute__((unused)))
+   { _GLIBCXX_THROW_OR_ABORT(__ios_failure(_(__s))); }
+ 
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-7.3.0/libstdc++-v3/src/c++11/ios.cc gcc-7.4.0/libstdc++-v3/src/c++11/ios.cc
*** gcc-7.3.0/libstdc++-v3/src/c++11/ios.cc	Fri Feb  3 18:59:05 2017
--- gcc-7.4.0/libstdc++-v3/src/c++11/ios.cc	Thu Apr 12 19:06:50 2018
***************
*** 26,54 ****
  // ISO C++ 14882: 27.4  Iostreams base classes
  //
  
- // Determines the version of ios_base::failure thrown by __throw_ios_failure.
- // If !_GLIBCXX_USE_DUAL_ABI this will get undefined automatically.
- #define _GLIBCXX_USE_CXX11_ABI 1
- 
  #include <ios>
  #include <limits>
- #include <bits/functexcept.h>
- 
- #ifdef _GLIBCXX_USE_NLS
- # include <libintl.h>
- # define _(msgid)   gettext (msgid)
- #else
- # define _(msgid)   (msgid)
- #endif
  
  namespace std _GLIBCXX_VISIBILITY(default)
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
-   void
-   __throw_ios_failure(const char* __s __attribute__((unused)))
-   { _GLIBCXX_THROW_OR_ABORT(ios_base::failure(_(__s))); }
- 
    // Definitions for static const members of ios_base.
    const ios_base::fmtflags ios_base::boolalpha;
    const ios_base::fmtflags ios_base::dec;
--- 26,38 ----
diff -Nrcpad gcc-7.3.0/libstdc++-v3/src/c++11/system_error.cc gcc-7.4.0/libstdc++-v3/src/c++11/system_error.cc
*** gcc-7.3.0/libstdc++-v3/src/c++11/system_error.cc	Fri Feb  3 18:59:05 2017
--- gcc-7.4.0/libstdc++-v3/src/c++11/system_error.cc	Tue Aug  7 22:50:24 2018
***************
*** 29,34 ****
--- 29,35 ----
  #include <system_error>
  #include <bits/functexcept.h>
  #include <limits>
+ #include <errno.h>
  #undef __sso_string
  
  namespace
*************** namespace
*** 65,70 ****
--- 66,326 ----
        // _GLIBCXX_HAVE_STRERROR_L, strerror_l(i, cloc)
        return string(strerror(i));
      }
+ 
+     virtual std::error_condition
+     default_error_condition(int ev) const noexcept
+     {
+       switch (ev)
+       {
+       // List of errno macros from [cerrno.syn].
+       // C11 only defines EDOM, EILSEQ and ERANGE, the rest are from POSIX.
+       // They expand to integer constant expressions with type int,
+       // and distinct positive values, suitable for use in #if directives.
+       // POSIX adds more macros (but they're not defined on all targets,
+       // see config/os/*/error_constants.h), and POSIX allows
+       // EAGAIN == EWOULDBLOCK and ENOTSUP == EOPNOTSUPP.
+ 
+ #ifdef E2BIG
+       case E2BIG:
+ #endif
+ #ifdef EACCES
+       case EACCES:
+ #endif
+ #ifdef EADDRINUSE
+       case EADDRINUSE:
+ #endif
+ #ifdef EADDRNOTAVAIL
+       case EADDRNOTAVAIL:
+ #endif
+ #ifdef EAFNOSUPPORT
+       case EAFNOSUPPORT:
+ #endif
+ #ifdef EAGAIN
+       case EAGAIN:
+ #endif
+ #ifdef EALREADY
+       case EALREADY:
+ #endif
+ #ifdef EBADF
+       case EBADF:
+ #endif
+ #ifdef EBADMSG
+       case EBADMSG:
+ #endif
+ #ifdef EBUSY
+       case EBUSY:
+ #endif
+ #ifdef ECANCELED
+       case ECANCELED:
+ #endif
+ #ifdef ECHILD
+       case ECHILD:
+ #endif
+ #ifdef ECONNABORTED
+       case ECONNABORTED:
+ #endif
+ #ifdef ECONNREFUSED
+       case ECONNREFUSED:
+ #endif
+ #ifdef ECONNRESET
+       case ECONNRESET:
+ #endif
+ #ifdef EDEADLK
+       case EDEADLK:
+ #endif
+ #ifdef EDESTADDRREQ
+       case EDESTADDRREQ:
+ #endif
+       case EDOM:
+ #ifdef EEXIST
+       case EEXIST:
+ #endif
+ #ifdef EFAULT
+       case EFAULT:
+ #endif
+ #ifdef EFBIG
+       case EFBIG:
+ #endif
+ #ifdef EHOSTUNREACH
+       case EHOSTUNREACH:
+ #endif
+ #ifdef EIDRM
+       case EIDRM:
+ #endif
+       case EILSEQ:
+ #ifdef EINPROGRESS
+       case EINPROGRESS:
+ #endif
+ #ifdef EINTR
+       case EINTR:
+ #endif
+ #ifdef EINVAL
+       case EINVAL:
+ #endif
+ #ifdef EIO
+       case EIO:
+ #endif
+ #ifdef EISCONN
+       case EISCONN:
+ #endif
+ #ifdef EISDIR
+       case EISDIR:
+ #endif
+ #ifdef ELOOP
+       case ELOOP:
+ #endif
+ #ifdef EMFILE
+       case EMFILE:
+ #endif
+ #ifdef EMLINK
+       case EMLINK:
+ #endif
+ #ifdef EMSGSIZE
+       case EMSGSIZE:
+ #endif
+ #ifdef ENAMETOOLONG
+       case ENAMETOOLONG:
+ #endif
+ #ifdef ENETDOWN
+       case ENETDOWN:
+ #endif
+ #ifdef ENETRESET
+       case ENETRESET:
+ #endif
+ #ifdef ENETUNREACH
+       case ENETUNREACH:
+ #endif
+ #ifdef ENFILE
+       case ENFILE:
+ #endif
+ #ifdef ENOBUFS
+       case ENOBUFS:
+ #endif
+ #ifdef ENODATA
+       case ENODATA:
+ #endif
+ #ifdef ENODEV
+       case ENODEV:
+ #endif
+ #ifdef ENOENT
+       case ENOENT:
+ #endif
+ #ifdef ENOEXEC
+       case ENOEXEC:
+ #endif
+ #ifdef ENOLCK
+       case ENOLCK:
+ #endif
+ #ifdef ENOLINK
+       case ENOLINK:
+ #endif
+ #ifdef ENOMEM
+       case ENOMEM:
+ #endif
+ #ifdef ENOMSG
+       case ENOMSG:
+ #endif
+ #ifdef ENOPROTOOPT
+       case ENOPROTOOPT:
+ #endif
+ #ifdef ENOSPC
+       case ENOSPC:
+ #endif
+ #ifdef ENOSR
+       case ENOSR:
+ #endif
+ #ifdef ENOSTR
+       case ENOSTR:
+ #endif
+ #ifdef ENOSYS
+       case ENOSYS:
+ #endif
+ #ifdef ENOTCONN
+       case ENOTCONN:
+ #endif
+ #ifdef ENOTDIR
+       case ENOTDIR:
+ #endif
+ #if defined ENOTEMPTY && (!defined EEXIST || ENOTEMPTY != EEXIST)
+       // AIX sometimes uses the same value for EEXIST and ENOTEMPTY
+       case ENOTEMPTY:
+ #endif
+ #ifdef ENOTRECOVERABLE
+       case ENOTRECOVERABLE:
+ #endif
+ #ifdef ENOTSOCK
+       case ENOTSOCK:
+ #endif
+ #ifdef ENOTSUP
+       case ENOTSUP:
+ #endif
+ #ifdef ENOTTY
+       case ENOTTY:
+ #endif
+ #ifdef ENXIO
+       case ENXIO:
+ #endif
+ #if defined EOPNOTSUPP && (!defined ENOTSUP || EOPNOTSUPP != ENOTSUP)
+       case EOPNOTSUPP:
+ #endif
+ #ifdef EOVERFLOW
+       case EOVERFLOW:
+ #endif
+ #ifdef EOWNERDEAD
+       case EOWNERDEAD:
+ #endif
+ #ifdef EPERM
+       case EPERM:
+ #endif
+ #ifdef EPIPE
+       case EPIPE:
+ #endif
+ #ifdef EPROTO
+       case EPROTO:
+ #endif
+ #ifdef EPROTONOSUPPORT
+       case EPROTONOSUPPORT:
+ #endif
+ #ifdef EPROTOTYPE
+       case EPROTOTYPE:
+ #endif
+       case ERANGE:
+ #ifdef EROFS
+       case EROFS:
+ #endif
+ #ifdef ESPIPE
+       case ESPIPE:
+ #endif
+ #ifdef ESRCH
+       case ESRCH:
+ #endif
+ #ifdef ETIME
+       case ETIME:
+ #endif
+ #ifdef ETIMEDOUT
+       case ETIMEDOUT:
+ #endif
+ #ifdef ETXTBSY
+       case ETXTBSY:
+ #endif
+ #if defined EWOULDBLOCK && (!defined EAGAIN || EWOULDBLOCK != EAGAIN)
+       case EWOULDBLOCK:
+ #endif
+ #ifdef EXDEV
+       case EXDEV:
+ #endif
+         return std::error_condition(ev, std::generic_category());
+ 
+       /* Additional system-dependent mappings from non-standard error codes
+        * to one of the POSIX values above would go here, e.g.
+       case EBLAH:
+ 	return std::error_condition(EINVAL, std::generic_category());
+        */
+ 
+       default:
+ 	return std::error_condition(ev, std::system_category());
+       }
+     }
    };
  
    const generic_error_category generic_category_instance{};
diff -Nrcpad gcc-7.3.0/libstdc++-v3/src/c++98/ios_failure.cc gcc-7.4.0/libstdc++-v3/src/c++98/ios_failure.cc
*** gcc-7.3.0/libstdc++-v3/src/c++98/ios_failure.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/src/c++98/ios_failure.cc	Thu Apr 12 20:55:25 2018
***************
*** 29,34 ****
--- 29,46 ----
  #define _GLIBCXX_USE_CXX11_ABI 0
  #include <ios>
  
+ #if _GLIBCXX_USE_DUAL_ABI && __cpp_rtti
+ #include <cxxabi.h>
+ #include <typeinfo>
+ #endif
+ 
+ #ifdef _GLIBCXX_USE_NLS
+ # include <libintl.h>
+ # define _(msgid)   gettext (msgid)
+ #else
+ # define _(msgid)   (msgid)
+ #endif
+ 
  namespace std _GLIBCXX_VISIBILITY(default)
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 43,47 ****
--- 55,94 ----
    ios_base::failure::what() const throw()
    { return _M_msg.c_str(); }
  
+ #if _GLIBCXX_USE_DUAL_ABI
+   // When the dual ABI is enabled __throw_ios_failure() is defined in
+   // src/c++11/cxx11-ios_failure.cc
+ #if __cpp_rtti
+   // If RTTI is enabled the exception type thrown will use these functions to
+   // construct/destroy a gcc4-compatible ios::failure object in a buffer,
+   // and to catch that object via a handler of the gcc4-compatible type.
+   void
+   __construct_ios_failure(void* buf, const char* msg)
+   { ::new(buf) ios_base::failure(msg); }
+ 
+   void
+   __destroy_ios_failure(void* buf)
+   { static_cast<ios_base::failure*>(buf)->~failure(); }
+ 
+   bool
+   __is_ios_failure_handler(const __cxxabiv1::__class_type_info* type)
+   { return *type == typeid(ios::failure); }
+ 
+   namespace {
+   // C++98-style static assertions to ensure ios::failure fits in a buffer
+   // with the same size and alignment as runtime_error:
+   typedef char S[1 / (sizeof(ios::failure) <= sizeof(runtime_error))];
+   typedef char A[1 / (__alignof(ios::failure) <= __alignof(runtime_error))];
+   }
+ #endif // __cpp_rtti
+ 
+ #else // ! _GLIBCXX_USE_DUAL_ABI
+ 
+   void
+   __throw_ios_failure(const char* __s __attribute__((unused)))
+   { _GLIBCXX_THROW_OR_ABORT(ios::failure(_(__s))); }
+ 
+ #endif
+ 
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-7.3.0/libstdc++-v3/src/filesystem/ops.cc gcc-7.4.0/libstdc++-v3/src/filesystem/ops.cc
*** gcc-7.3.0/libstdc++-v3/src/filesystem/ops.cc	Sat Jan 13 01:53:47 2018
--- gcc-7.4.0/libstdc++-v3/src/filesystem/ops.cc	Wed Jul  4 13:59:57 2018
*************** namespace
*** 720,729 ****
      if (::mkdir(p.c_str(), mode))
        {
  	const int err = errno;
! 	if (err != EEXIST || !is_directory(p))
  	  ec.assign(err, std::generic_category());
- 	else
- 	  ec.clear();
        }
      else
        {
--- 720,727 ----
      if (::mkdir(p.c_str(), mode))
        {
  	const int err = errno;
! 	if (err != EEXIST || !is_directory(p, ec))
  	  ec.assign(err, std::generic_category());
        }
      else
        {
*************** fs::space(const path& p, error_code& ec)
*** 1391,1400 ****
        ec.assign(errno, std::generic_category());
    else
      {
        info = space_info{
! 	f.f_blocks * f.f_frsize,
! 	f.f_bfree * f.f_frsize,
! 	f.f_bavail * f.f_frsize
        };
        ec.clear();
      }
--- 1389,1399 ----
        ec.assign(errno, std::generic_category());
    else
      {
+       uintmax_t fragment_size = f.f_frsize;
        info = space_info{
! 	f.f_blocks * fragment_size,
! 	f.f_bfree * fragment_size,
! 	f.f_bavail * fragment_size
        };
        ec.clear();
      }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc gcc-7.4.0/libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc	Mon Mar 12 23:32:30 2018
***************
*** 0 ****
--- 1,42 ----
+ // Copyright (C) 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
+ // 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" }
+ // { dg-do run { target c++1z } }
+ 
+ #include <cstdlib>
+ #include <cstdint>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+ #ifdef _GLIBCXX_HAVE_ALIGNED_ALLOC
+   void* p = std::aligned_alloc(256, 1);
+   if (p)
+   {
+     VERIFY( (reinterpret_cast<std::uintptr_t>(p) % 256) == 0 );
+     std::free(p);
+   }
+ #endif
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/18_support/byte/81076.cc gcc-7.4.0/libstdc++-v3/testsuite/18_support/byte/81076.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/18_support/byte/81076.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/18_support/byte/81076.cc	Thu Jan 25 15:46:46 2018
***************
*** 0 ****
--- 1,26 ----
+ // Copyright (C) 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
+ // 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" }
+ // { dg-do compile { target c++1z } }
+ 
+ #include <cstddef>
+ 
+ template<class> void to_integer(...);
+ 
+ using T = decltype(to_integer<void* const>(std::byte{}));
+ using T = void;
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/18_support/new_aligned.cc gcc-7.4.0/libstdc++-v3/testsuite/18_support/new_aligned.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/18_support/new_aligned.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/18_support/new_aligned.cc	Tue Aug  7 22:50:15 2018
***************
*** 0 ****
--- 1,119 ----
+ // Copyright (C) 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
+ // 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" }
+ // { dg-do run { target c++1z } }
+ 
+ #include <new>
+ #include <memory>
+ #include <testsuite_hooks.h>
+ 
+ struct Test
+ {
+   Test(std::size_t size, std::size_t a)
+   : size(size), alignment(std::align_val_t{a}),
+     p(::operator new(size, alignment))
+   { }
+ 
+   ~Test() { ::operator delete(p, size, alignment); }
+ 
+   std::size_t size;
+   std::align_val_t alignment;
+   void* p;
+ 
+   bool valid() const { return p != nullptr; }
+ 
+   bool aligned() const
+   {
+     auto ptr = p;
+     auto space = size;
+     return std::align((std::size_t)alignment, size, ptr, space) == p;
+   }
+ };
+ 
+ // operator new(size_t size, align_val_t alignment) has
+ // undefined behaviour if the alignment argument is not
+ // a valid alignment value (i.e. not a power of two).
+ //
+ // Unlike posix_memalign there is no requirement that
+ // alignment >= sizeof(void*).
+ //
+ // Unlike aligned_alloc there is no requirement that
+ // size is an integer multiple of alignment.
+ 
+ void
+ test01()
+ {
+   // Test small values that would not be valid for
+   // posix_memalign or aligned_alloc.
+ 
+   Test t11{1, 1};
+   VERIFY( t11.valid() );
+   VERIFY( t11.aligned() );
+ 
+   Test t21{2, 1};
+   VERIFY( t21.valid() );
+   VERIFY( t21.aligned() );
+ 
+   Test t12{1, 2};
+   VERIFY( t12.valid() );
+   VERIFY( t12.aligned() );
+ 
+   Test t22{2, 2};
+   VERIFY( t22.valid() );
+   VERIFY( t22.aligned() );
+ 
+   Test t32{3, 2};
+   VERIFY( t32.valid() );
+   VERIFY( t32.aligned() );
+ 
+   Test t42{4, 2};
+   VERIFY( t42.valid() );
+   VERIFY( t42.aligned() );
+ 
+   Test t24{2, 4};
+   VERIFY( t24.valid() );
+   VERIFY( t24.aligned() );
+ 
+   Test t34{3, 4};
+   VERIFY( t34.valid() );
+   VERIFY( t34.aligned() );
+ 
+   Test t44{4, 4};
+   VERIFY( t44.valid() );
+   VERIFY( t44.aligned() );
+ 
+   // Test some larger values.
+ 
+   Test t128_16{128, 16};
+   VERIFY( t128_16.valid() );
+   VERIFY( t128_16.aligned() );
+ 
+   Test t128_64{128, 64};
+   VERIFY( t128_64.valid() );
+   VERIFY( t128_64.aligned() );
+ 
+   Test t64_128{64, 128};
+   VERIFY( t64_128.valid() );
+   VERIFY( t64_128.aligned() );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/19_diagnostics/error_category/generic_category.cc gcc-7.4.0/libstdc++-v3/testsuite/19_diagnostics/error_category/generic_category.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/19_diagnostics/error_category/generic_category.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/19_diagnostics/error_category/generic_category.cc	Tue Aug  7 22:50:24 2018
***************
*** 0 ****
--- 1,69 ----
+ // Copyright (C) 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
+ // 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 <system_error>
+ #include <locale>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   const char* name = std::generic_category().name();
+   VERIFY( name == std::string("generic") );
+ }
+ 
+ void
+ test02()
+ {
+   const std::error_category& cat = std::generic_category();
+   std::error_condition cond;
+ 
+   cond = cat.default_error_condition(EBADF);
+   VERIFY( cond.value() == EBADF );
+   VERIFY( cond == std::errc::bad_file_descriptor );
+   VERIFY( cond.category() == std::generic_category() );
+   cond = cat.default_error_condition(EACCES);
+   VERIFY( cond.value() == EACCES );
+   VERIFY( cond == std::errc::permission_denied );
+   VERIFY( cond.category() == std::generic_category() );
+ 
+   // PR libstdc++/60555
+   VERIFY( std::error_code(EBADF, cat) == std::errc::bad_file_descriptor );
+   VERIFY( std::error_code(EACCES, cat) == std::errc::permission_denied );
+ }
+ 
+ void
+ test03()
+ {
+   // set "C" locale to get expected message
+   auto loc = std::locale::global(std::locale::classic());
+ 
+   std::string msg = std::generic_category().message(EBADF);
+   VERIFY( msg.find("file") != std::string::npos );
+ 
+   std::locale::global(loc);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+   test03();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc gcc-7.4.0/libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc	Tue Aug  7 22:50:24 2018
***************
*** 0 ****
--- 1,114 ----
+ // Copyright (C) 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
+ // 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 <system_error>
+ #include <locale>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   const char* name = std::system_category().name();
+   VERIFY( name == std::string("system") );
+ }
+ 
+ void
+ test02()
+ {
+   const std::error_category& cat = std::system_category();
+   std::error_condition cond;
+ 
+   // As of 2011, ISO C only defines EDOM, EILSEQ and ERANGE:
+   cond = cat.default_error_condition(EDOM);
+   VERIFY( cond.value() == EDOM );
+   VERIFY( cond == std::errc::argument_out_of_domain );
+   VERIFY( cond.category() == std::generic_category() );
+   cond = cat.default_error_condition(EILSEQ);
+   VERIFY( cond.value() == EILSEQ );
+   VERIFY( cond == std::errc::illegal_byte_sequence );
+   VERIFY( cond.category() == std::generic_category() );
+   cond = cat.default_error_condition(ERANGE);
+   VERIFY( cond.value() == ERANGE );
+   VERIFY( cond == std::errc::result_out_of_range );
+   VERIFY( cond.category() == std::generic_category() );
+ 
+   // EBADF and EACCES are defined on all targets,
+   // according to config/os/*/error_constants.h
+   cond = cat.default_error_condition(EBADF);
+   VERIFY( cond.value() == EBADF );
+   VERIFY( cond == std::errc::bad_file_descriptor );
+   VERIFY( cond.category() == std::generic_category() );
+   cond = cat.default_error_condition(EACCES);
+   VERIFY( cond.value() == EACCES );
+   VERIFY( cond == std::errc::permission_denied );
+   VERIFY( cond.category() == std::generic_category() );
+ 
+   // All POSIX errno values are positive:
+   cond = cat.default_error_condition(-1);
+   VERIFY( cond.value() == -1 );
+   VERIFY( cond.category() == cat );
+   cond = cat.default_error_condition(-99);
+   VERIFY( cond.value() == -99 );
+   VERIFY( cond.category() == cat );
+ 
+   // PR libstdc++/60555
+   VERIFY( std::error_code(EDOM, cat) == std::errc::argument_out_of_domain );
+   VERIFY( std::error_code(EILSEQ, cat) == std::errc::illegal_byte_sequence );
+   VERIFY( std::error_code(ERANGE, cat) == std::errc::result_out_of_range );
+   VERIFY( std::error_code(EBADF, cat) == std::errc::bad_file_descriptor );
+   VERIFY( std::error_code(EACCES, cat) == std::errc::permission_denied );
+ 
+   // As shown at https://gcc.gnu.org/ml/libstdc++/2018-08/msg00018.html
+   // these two error codes might have the same value on AIX, but we still
+   // expect both to be matched by system_category and so use generic_category:
+ #ifdef EEXIST
+   cond = cat.default_error_condition(EEXIST);
+   VERIFY( cond.value() == EEXIST );
+   VERIFY( cond == std::errc::file_exists );
+   VERIFY( cond.category() == std::generic_category() );
+   VERIFY( std::error_code(EEXIST, cat) == std::errc::file_exists );
+ #endif
+ #ifdef ENOTEMPTY
+   cond = cat.default_error_condition(ENOTEMPTY);
+   VERIFY( cond.value() == ENOTEMPTY );
+   VERIFY( cond == std::errc::directory_not_empty );
+   VERIFY( cond.category() == std::generic_category() );
+   VERIFY( std::error_code(ENOTEMPTY, cat) == std::errc::directory_not_empty );
+ #endif
+ }
+ 
+ void
+ test03()
+ {
+   // set "C" locale to get expected message
+   auto loc = std::locale::global(std::locale::classic());
+ 
+   std::string msg = std::system_category().message(EBADF);
+   VERIFY( msg.find("file") != std::string::npos );
+ 
+   std::locale::global(loc);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+   test03();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc gcc-7.4.0/libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc	Wed Mar 15 23:13:20 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc	Mon Jan 29 13:58:54 2018
*************** void test01()
*** 26,30 ****
    using std::any_cast;
  
    const any y(1);
!   any_cast<int&>(y); // { dg-error "invalid static_cast" "" { target { *-*-* } } 461 }
  }
--- 26,30 ----
    using std::any_cast;
  
    const any y(1);
!   any_cast<int&>(y); // { dg-error "invalid static_cast" "" { target { *-*-* } } 460 }
  }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/20_util/any/modifiers/83658.cc gcc-7.4.0/libstdc++-v3/testsuite/20_util/any/modifiers/83658.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/20_util/any/modifiers/83658.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/20_util/any/modifiers/83658.cc	Mon Jan 29 13:58:54 2018
***************
*** 0 ****
--- 1,74 ----
+ // Copyright (C) 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
+ // 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" }
+ // { dg-do run { target c++1z } }
+ 
+ #include <any>
+ #include <new>
+ #include <testsuite_hooks.h>
+ 
+ struct E : std::bad_alloc { };
+ 
+ struct X
+ {
+     X() = default;
+     X(std::initializer_list<int>) { }
+ 
+     // Prevents small-object optimization:
+     X(const X&) noexcept(false) { }
+ 
+     static void* operator new(std::size_t) { throw E{}; }
+     static void operator delete(void*, std::size_t) noexcept { }
+ };
+ 
+ void
+ test01()
+ {
+   std::any a;
+   try
+   {
+     a.emplace<X>();
+     VERIFY(false);
+   }
+   catch (const E&)
+   {
+     VERIFY( !a.has_value() );
+   }
+ }
+ 
+ void
+ test02()
+ {
+   std::any a;
+   try
+   {
+     a.emplace<X>(std::initializer_list<int>{});
+     VERIFY(false);
+   }
+   catch (const E&)
+   {
+     VERIFY( !a.has_value() );
+   }
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/20_util/duration/cons/dr3050.cc gcc-7.4.0/libstdc++-v3/testsuite/20_util/duration/cons/dr3050.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/20_util/duration/cons/dr3050.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/20_util/duration/cons/dr3050.cc	Wed Jul  4 13:59:51 2018
***************
*** 0 ****
--- 1,24 ----
+ // Copyright (C) 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
+ // 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 <chrono>
+ 
+ struct X { operator int64_t() /* not const */; };
+ static_assert(!std::is_constructible<std::chrono::seconds, X>::value,
+ 	      "LWG 3050");
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/20_util/duration/literals/84671.cc gcc-7.4.0/libstdc++-v3/testsuite/20_util/duration/literals/84671.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/20_util/duration/literals/84671.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/20_util/duration/literals/84671.cc	Sat Mar  3 00:17:03 2018
***************
*** 0 ****
--- 1,26 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <chrono>
+ 
+ // PR libstdc++/84671
+ using namespace std::literals::chrono_literals;
+ constexpr auto ns_ok = 12113ns;
+ constexpr auto ns_fail = 12'11'3ns;
+ static_assert(ns_ok == ns_fail, "digit separators work in duration literals");
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/20_util/duration/literals/range.cc gcc-7.4.0/libstdc++-v3/testsuite/20_util/duration/literals/range.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/20_util/duration/literals/range.cc	Wed Sep 13 15:20:21 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/20_util/duration/literals/range.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,31 ****
- // { dg-do compile { target c++14 } }
- 
- // Copyright (C) 2014-2017 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
- // software; you can redistribute it and/or modify it under the
- // terms of the GNU General Public License as published by the
- // Free Software Foundation; either version 3, or (at your option)
- // any later version.
- 
- // This library is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- // GNU General Public License for more details.
- 
- // You should have received a copy of the GNU General Public License along
- // with this library; see the file COPYING3.  If not see
- // <http://www.gnu.org/licenses/>.
- 
- #include <chrono>
- 
- void
- test01()
- {
-   using namespace std::literals::chrono_literals;
- 
-   // std::numeric_limits<int64_t>::max() == 9223372036854775807;
-   auto h = 9223372036854775808h;
-   // { dg-error "cannot be represented" "" { target *-*-* } 893 }
- }
- // { dg-prune-output "in constexpr expansion" } // needed for -O0
--- 0 ----
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/20_util/duration/literals/range_neg.cc gcc-7.4.0/libstdc++-v3/testsuite/20_util/duration/literals/range_neg.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/20_util/duration/literals/range_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/20_util/duration/literals/range_neg.cc	Wed Jul  4 13:59:51 2018
***************
*** 0 ****
--- 1,31 ----
+ // { dg-do compile { target c++14 } }
+ 
+ // Copyright (C) 2014-2017 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <chrono>
+ 
+ void
+ test01()
+ {
+   using namespace std::literals::chrono_literals;
+ 
+   // std::numeric_limits<int64_t>::max() == 9223372036854775807;
+   auto h = 9223372036854775808h;
+   // { dg-error "cannot be represented" "" { target *-*-* } 899 }
+ }
+ // { dg-prune-output "in constexpr expansion" } // needed for -O0
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/20_util/function_objects/not_fn/87538.cc gcc-7.4.0/libstdc++-v3/testsuite/20_util/function_objects/not_fn/87538.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/20_util/function_objects/not_fn/87538.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/20_util/function_objects/not_fn/87538.cc	Mon Oct  8 13:13:06 2018
***************
*** 0 ****
--- 1,49 ----
+ // Copyright (C) 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
+ // 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" }
+ // { dg-do run { target c++1z } }
+ 
+ #include <functional>
+ #include <testsuite_hooks.h>
+ 
+ struct N {
+   int operator()(int i) { if (i == 0) throw -1; return i; }
+ };
+ 
+ void
+ test01()
+ {
+   N n;
+   auto not_n = std::not_fn(n);
+   static_assert( !noexcept(not_n(1)) );
+   VERIFY(not_n(1) == 0);
+   int exception = 0;
+   try {
+     not_n(0);
+   }
+   catch (int e) {
+     exception = e;
+   }
+   VERIFY(exception == -1);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc gcc-7.4.0/libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc	Thu Jan 25 15:46:41 2018
*************** void test01()
*** 108,110 ****
--- 108,124 ----
    static_assert(test_category<has_unique_object_representations,
  		Aligned[][1]>(false), "");
  }
+ 
+ void
+ test02()
+ {
+   using std::has_unique_object_representations;
+   using std::has_unique_object_representations_v;
+ 
+   static_assert(has_unique_object_representations_v<int>
+ 		== has_unique_object_representations<int>::value);
+   static_assert(has_unique_object_representations_v<void>
+ 		== has_unique_object_representations<void>::value);
+   static_assert(has_unique_object_representations_v<float>
+ 		== has_unique_object_representations<float>::value);
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/20_util/pair/86751.cc gcc-7.4.0/libstdc++-v3/testsuite/20_util/pair/86751.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/20_util/pair/86751.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/20_util/pair/86751.cc	Fri Oct 12 12:51:46 2018
***************
*** 0 ****
--- 1,33 ----
+ // Copyright (C) 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
+ // 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 <utility>
+ 
+ struct X {
+   template<typename T> operator T() const;
+ };
+ 
+ 
+ void
+ test01()
+ {
+   std::pair<int, int> p;
+   X x;
+   p = x;  // PR libstdc++/86751
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/20_util/pair/87822.cc gcc-7.4.0/libstdc++-v3/testsuite/20_util/pair/87822.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/20_util/pair/87822.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/20_util/pair/87822.cc	Wed Oct 31 13:16:10 2018
***************
*** 0 ****
--- 1,64 ----
+ // Copyright (C) 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
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <utility>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   std::pair<std::pair<int, int>, int> p;
+ #if __cplusplus >= 201103L
+   static_assert(sizeof(p) == (3 * sizeof(int)), "PR libstdc++/87822");
+ #endif
+   VERIFY( (void*)&p == (void*)&p.first );
+   VERIFY( (void*)&p == (void*)&p.first.first );
+ }
+ 
+ struct empty { };
+ 
+ void
+ test02()
+ {
+   std::pair<std::pair<empty, empty>, empty> p;
+ #if __cplusplus >= 201103L
+   static_assert(sizeof(p) == (3 * sizeof(empty)), "PR libstdc++/87822");
+ #endif
+   VERIFY( (void*)&p == (void*)&p.first );
+ }
+ 
+ void
+ test03()
+ {
+   typedef std::pair<int, int> int_pair;
+   typedef std::pair<int_pair, int_pair> int_pair_pair;
+   std::pair<int_pair_pair, int_pair_pair> p;
+ #if __cplusplus >= 201103L
+   static_assert(sizeof(int_pair_pair) == (2 * sizeof(int_pair)), "nested");
+   static_assert(sizeof(p) == (2 * sizeof(int_pair_pair)), "nested again");
+ #endif
+   VERIFY( (void*)&p == (void*)&p.first );
+   VERIFY( (void*)&p == (void*)&p.first.first );
+   VERIFY( (void*)&p == (void*)&p.first.first.first );
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   test03();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/20_util/pair/ref_assign.cc gcc-7.4.0/libstdc++-v3/testsuite/20_util/pair/ref_assign.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/20_util/pair/ref_assign.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/20_util/pair/ref_assign.cc	Fri Oct 12 12:51:46 2018
***************
*** 0 ****
--- 1,74 ----
+ // Copyright (C) 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
+ // 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 <utility>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   typedef std::pair<int&, int> pair_type;
+   int i = 1;
+   int j = 2;
+   pair_type p(i, 3);
+   const pair_type q(j, 4);
+   p = q;
+   VERIFY( p.first == q.first );
+   VERIFY( p.second == q.second );
+   VERIFY( i == j );
+ }
+ 
+ void
+ test02()
+ {
+   typedef std::pair<int, int&> pair_type;
+   int i = 1;
+   int j = 2;
+   pair_type p(3, i);
+   const pair_type q(4, j);
+   p = q;
+   VERIFY( p.first == q.first );
+   VERIFY( p.second == q.second );
+   VERIFY( i == j );
+ }
+ 
+ void
+ test03()
+ {
+   typedef std::pair<int&, int&> pair_type;
+   int i = 1;
+   int j = 2;
+   int k = 3;
+   int l = 4;
+   pair_type p(i, j);
+   const pair_type q(k, l);
+   p = q;
+   VERIFY( p.first == q.first );
+   VERIFY( p.second == q.second );
+   VERIFY( i == k );
+   VERIFY( j == l );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+   test03();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc gcc-7.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc	Tue Oct 23 15:55:05 2018
***************
*** 0 ****
--- 1,32 ----
+ // Copyright (C) 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
+ // 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 Incomplete;
+ 
+ void f(void** p)
+ {
+   ::new (p[0]) std::unique_ptr<Incomplete>();
+   ::new (p[1]) std::unique_ptr<Incomplete[]>();
+ 
+   // PR libstdc++/87704
+   ::new (p[2]) std::unique_ptr<Incomplete>(nullptr);
+   ::new (p[3]) std::unique_ptr<Incomplete[]>(nullptr);
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/86138.cc gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/86138.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/86138.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/86138.cc	Fri Jun 22 15:58:38 2018
***************
*** 0 ****
--- 1,30 ----
+ // Copyright (C) 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
+ // 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" }
+ // { dg-do compile { target c++1z } }
+ // { dg-final { scan-assembler-not "_ZNSs4_Rep20_S_empty_rep_storageE:" } }
+ 
+ #undef _GLIBCXX_USE_CXX11_ABI
+ #define _GLIBCXX_USE_CXX11_ABI 0
+ #include <string>
+ 
+ void
+ test01(std::string* s)
+ {
+   s->~basic_string();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/86138.cc gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/86138.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/86138.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/86138.cc	Fri Jun 22 15:58:38 2018
***************
*** 0 ****
--- 1,30 ----
+ // Copyright (C) 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
+ // 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" }
+ // { dg-do compile { target c++1z } }
+ // { dg-final { scan-assembler-not "_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE:" } }
+ 
+ #undef _GLIBCXX_USE_CXX11_ABI
+ #define _GLIBCXX_USE_CXX11_ABI 0
+ #include <string>
+ 
+ void
+ test01(std::wstring* s)
+ {
+   s->~basic_string();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/dr2268.cc gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/dr2268.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/dr2268.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/dr2268.cc	Wed Jul  4 13:58:50 2018
***************
*** 0 ****
--- 1,45 ----
+ // Copyright (C) 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
+ // 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 <string>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   // PR libstdc++/84087
+ 
+   std::string s0 = "string";
+   std::string s;
+   s.append(s0, 2);
+   VERIFY( s == "ring" );
+   s.assign(s0, 3);
+   VERIFY( s == "ing" );
+   s.insert(2, s0, 4);
+   VERIFY( s == "inngg" );
+   s.replace(2, 3, s0, 2);
+   VERIFY( s == "inring" );
+   VERIFY( s.compare(2, 4, s0, 2) == 0 );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc	Fri Oct 12 12:51:29 2018
***************
*** 17,22 ****
--- 17,23 ----
  //
  
  // { dg-do run { target c++11 } }
+ // { dg-require-effective-target cxx11-abi }
  
  #include <string>
  #include <testsuite_hooks.h>
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc	Thu Oct 25 16:32:47 2018
***************
*** 0 ****
--- 1,78 ----
+ // Copyright (C) 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
+ // 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 } }
+ 
+ // PR libstdc++/87749
+ 
+ #include <string>
+ #include <testsuite_hooks.h>
+ 
+ bool oom = false;
+ 
+ template<typename T>
+ struct alloc
+ {
+   using value_type = T;
+ 
+ #if !_GLIBCXX_USE_CXX11_ABI
+   using size_type = unsigned long;
+   using difference_type = long;
+   using reference = T&;
+   using const_reference = T&;
+   using pointer = T*;
+   using const_pointer = const T*;
+   template<typename U>
+     struct rebind { using other = alloc<U>; };
+ #endif
+ 
+   int not_empty = 0; // this makes is_always_equal false
+ 
+   alloc() = default;
+   template<typename U>
+     alloc(const alloc<U>&) { }
+ 
+   T* allocate(unsigned long n)
+   {
+     if (oom)
+       throw std::bad_alloc();
+     return std::allocator<T>().allocate(n);
+   }
+ 
+   void deallocate(T* p, unsigned long n)
+   {
+     std::allocator<T>().deallocate(p, n);
+   }
+ };
+ 
+ template<typename T, typename U>
+ bool operator==(const alloc<T>&, const alloc<U>&) { return true; }
+ 
+ template<typename T, typename U>
+ bool operator!=(const alloc<T>&, const alloc<U>&) { return false; }
+ 
+ int main()
+ {
+   using string = std::basic_string<char, std::char_traits<char>, alloc<char>>;
+ 
+   string s = "PR libstdc++/87749 a string that is longer than a short string";
+   const auto ptr = s.c_str();
+   oom = true;
+   string ss;
+   ss = std::move(s); // allocators are equal, should not allocate new storage
+   VERIFY( ss.c_str() == ptr );
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc	Thu Oct 25 16:32:47 2018
***************
*** 0 ****
--- 1,35 ----
+ // Copyright (C) 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
+ // 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 "-O1" }
+ // { dg-do compile { target c++11 } }
+ // { dg-final { scan-assembler-not "__throw_length_error" } }
+ // { dg-final { scan-assembler-not "__throw_bad_alloc" } }
+ 
+ #include <bits/c++config.h>
+ #undef _GLIBCXX_EXTERN_TEMPLATE
+ #include <string>
+ 
+ void
+ test01(std::string& target, std::string&& source)
+ {
+   // The move assignment operator should be simple enough that the compiler
+   // can see that it never results in a length_error or bad_alloc exception
+   // (which would be turned into std::terminate by the noexcept on the
+   // assignment operator).
+   target = std::move(source);
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc	Thu Oct 25 16:32:47 2018
***************
*** 0 ****
--- 1,79 ----
+ // Copyright (C) 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
+ // 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 } }
+ 
+ // PR libstdc++/87749
+ 
+ #include <string>
+ #include <testsuite_hooks.h>
+ 
+ bool oom = false;
+ 
+ template<typename T>
+ struct alloc
+ {
+   using value_type = T;
+ 
+ #if !_GLIBCXX_USE_CXX11_ABI
+   using size_type = unsigned long;
+   using difference_type = long;
+   using reference = T&;
+   using const_reference = T&;
+   using pointer = T*;
+   using const_pointer = const T*;
+   template<typename U>
+     struct rebind { using other = alloc<U>; };
+ #endif
+ 
+   int not_empty = 0; // this makes is_always_equal false
+ 
+   alloc() = default;
+   template<typename U>
+     alloc(const alloc<U>&) { }
+ 
+   T* allocate(unsigned long n)
+   {
+     if (oom)
+       throw std::bad_alloc();
+     return std::allocator<T>().allocate(n);
+   }
+ 
+   void deallocate(T* p, unsigned long n)
+   {
+     std::allocator<T>().deallocate(p, n);
+   }
+ };
+ 
+ template<typename T, typename U>
+ bool operator==(const alloc<T>&, const alloc<U>&) { return true; }
+ 
+ template<typename T, typename U>
+ bool operator!=(const alloc<T>&, const alloc<U>&) { return false; }
+ 
+ int main()
+ {
+   using string
+     = std::basic_string<wchar_t, std::char_traits<wchar_t>, alloc<wchar_t>>;
+ 
+   string s = L"PR libstdc++/87749 a string that is longer than a short string";
+   const auto ptr = s.c_str();
+   oom = true;
+   string ss;
+   ss = std::move(s); // allocators are equal, should not allocate new storage
+   VERIFY( ss.c_str() == ptr );
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc	Thu Oct 25 16:32:47 2018
***************
*** 0 ****
--- 1,35 ----
+ // Copyright (C) 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
+ // 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 "-O1" }
+ // { dg-do compile { target c++11 } }
+ // { dg-final { scan-assembler-not "__throw_length_error" } }
+ // { dg-final { scan-assembler-not "__throw_bad_alloc" } }
+ 
+ #include <bits/c++config.h>
+ #undef _GLIBCXX_EXTERN_TEMPLATE
+ #include <string>
+ 
+ void
+ test01(std::wstring& target, std::wstring&& source)
+ {
+   // The move assignment operator should be simple enough that the compiler
+   // can see that it never results in a length_error or bad_alloc exception
+   // (which would be turned into std::terminate by the noexcept on the
+   // assignment operator).
+   target = std::move(source);
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/86169.cc gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/86169.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/86169.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/86169.cc	Fri Jun 15 19:19:04 2018
***************
*** 0 ****
--- 1,37 ----
+ // Copyright (C) 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
+ // 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" }
+ // { dg-do run { target c++1z } }
+ 
+ // PR libstdc++/86169
+ 
+ #ifndef _GLIBCXX_USE_CXX11_ABI
+ # define _GLIBCXX_USE_CXX11_ABI 0
+ #endif
+ 
+ #include <string>
+ #include <testsuite_hooks.h>
+ 
+ int main()
+ {
+   const std::string s0{"hello world"};
+   std::string s1 {s0};
+   char* p = s1.data();
+   *p = ' ';
+   VERIFY(s0.compare("hello world") == 0);
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc gcc-7.4.0/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc	Tue Aug  7 22:50:06 2018
*************** test03()
*** 68,74 ****
    VERIFY( in[2] == U'c' );
  }
  
- 
  void
  test04()
  {
--- 68,73 ----
*************** main()
*** 90,95 ****
  {
    test01();
    test02();
!   test01();
!   test02();
  }
--- 89,94 ----
  {
    test01();
    test02();
!   test03();
!   test04();
  }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc gcc-7.4.0/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc	Tue Aug  7 22:50:06 2018
***************
*** 0 ****
--- 1,52 ----
+ // Copyright (C) 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
+ // 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 <string>
+ #include <codecvt>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   const char out[] = u8"\u00A33.50";
+   wchar_t in[8] = {};
+   std::codecvt_utf8<wchar_t> cvt;
+   std::mbstate_t st;
+   const char* no;
+   wchar_t* ni;
+   auto res = cvt.in(st, out, out+6, no, in, in+8, ni);
+   VERIFY( res == std::codecvt_base::ok );
+   VERIFY( in[1] == L'3' );
+   VERIFY( in[2] == L'.' );
+   VERIFY( in[3] == L'5' );
+   VERIFY( in[4] == L'0' );
+ 
+   char out2[8] = {};
+   char* no2;
+   const wchar_t* ni2;
+   res = cvt.out(st, in, ni, ni2, out2, out2+8, no2);
+   VERIFY( res == std::codecvt_base::ok );
+   VERIFY( out2 == std::string(out) );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc gcc-7.4.0/libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc	Mon Oct 15 14:01:47 2018
***************
*** 1,4 ****
! // { dg-require-namedlocale "it_IT.ISO8859-15" }
  
  // 2001-01-24 Benjamin Kosnik  <bkoz@redhat.com>
  
--- 1,4 ----
! // { dg-require-namedlocale "nl_NL.ISO8859-15" }
  
  // 2001-01-24 Benjamin Kosnik  <bkoz@redhat.com>
  
*************** void test02()
*** 28,39 ****
  {
    using namespace std;
  
!   locale loc_it = locale(ISO_8859(15,it_IT));
  
    const numpunct<char>& nump_it = use_facet<numpunct<char> >(loc_it); 
  
    string g = nump_it.grouping();
  
    VERIFY( g == "" );
  }
  
--- 28,41 ----
  {
    using namespace std;
  
!   // nl_NL chosen because it has no thousands separator (at this time).
!   locale loc_it = locale(ISO_8859(15,nl_NL));
  
    const numpunct<char>& nump_it = use_facet<numpunct<char> >(loc_it); 
  
    string g = nump_it.grouping();
  
+   // Ensure that grouping is empty for locales with empty thousands separator.
    VERIFY( g == "" );
  }
  
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/23_containers/map/modifiers/insert/78595.cc gcc-7.4.0/libstdc++-v3/testsuite/23_containers/map/modifiers/insert/78595.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/23_containers/map/modifiers/insert/78595.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/23_containers/map/modifiers/insert/78595.cc	Fri Oct 12 12:51:40 2018
***************
*** 0 ****
--- 1,115 ----
+ // Copyright (C) 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
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do run { target c++11 } }
+ 
+ #include <map>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   struct X {
+     mutable int conversions = 0;
+ 
+     operator std::pair<const int, int>() const {
+       if (++conversions > 1)
+ 	throw 1;
+       return {};
+     }
+   };
+ 
+   std::map<int, int> m;
+   m.insert(X());
+   VERIFY( m.size() == 1 );
+   m.insert(m.begin(), X());
+   VERIFY( m.size() == 1 );
+ 
+ }
+ void
+ test02()
+ {
+   struct Y {
+     int conversions = 0;
+ 
+     operator std::pair<const int, int>() && {
+       if (++conversions > 1)
+ 	throw 1;
+       return {};
+     }
+   };
+ 
+   std::map<int, int> m;
+   m.insert(Y());
+   VERIFY( m.size() == 1 );
+   m.insert(m.begin(), Y());
+   VERIFY( m.size() == 1 );
+ }
+ 
+ struct Key {
+   int key;
+   bool operator<(const Key& r) const { return key < r.key; }
+ };
+ 
+ struct Z {
+   operator std::pair<const Key, int>() const { return { { z }, 0 }; }
+   int z;
+ };
+ 
+ template<typename T>
+ struct Alloc
+ {
+   Alloc() = default;
+ 
+   template<typename U>
+     Alloc(const Alloc<U>&) { }
+ 
+   using value_type = T;
+ 
+   T* allocate(std::size_t n) { return std::allocator<T>().allocate(n); }
+ 
+   void deallocate(T* p, std::size_t n) { std::allocator<T>().deallocate(p, n); }
+ 
+   template<typename U>
+     void construct(U* p, const Z& z) { ::new (p) U{ { z.z+1 }, 0}; }
+ 
+   template<typename U>
+     bool operator==(const Alloc<U>&) { return true; }
+ 
+   template<typename U>
+     bool operator!=(const Alloc<U>&) { return false; }
+ };
+ 
+ void
+ test03()
+ {
+   std::map<Key, int, std::less<Key>, Alloc<std::pair<const Key, int>>> m;
+   m.insert(Z{});
+   m.insert(Z{});
+   VERIFY( m.size() == 1 );
+   m.insert(Z{});
+   m.insert(Z{1});
+   VERIFY( m.size() == 2 );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+   test03();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/78595.cc gcc-7.4.0/libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/78595.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/78595.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/78595.cc	Fri Oct 12 12:51:40 2018
***************
*** 0 ****
--- 1,115 ----
+ // Copyright (C) 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
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do run { target c++11 } }
+ 
+ #include <map>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   struct X {
+     mutable int conversions = 0;
+ 
+     operator std::pair<const int, int>() const {
+       if (++conversions > 1)
+ 	throw 1;
+       return {};
+     }
+   };
+ 
+   std::multimap<int, int> m;
+   m.insert(X());
+   VERIFY( m.size() == 1 );
+   m.insert(m.begin(), X());
+   VERIFY( m.size() == 2 );
+ 
+ }
+ void
+ test02()
+ {
+   struct Y {
+     int conversions = 0;
+ 
+     operator std::pair<const int, int>() && {
+       if (++conversions > 1)
+ 	throw 1;
+       return {};
+     }
+   };
+ 
+   std::multimap<int, int> m;
+   m.insert(Y());
+   VERIFY( m.size() == 1 );
+   m.insert(m.begin(), Y());
+   VERIFY( m.size() == 2 );
+ }
+ 
+ struct Key {
+   int key;
+   bool operator<(const Key& r) const { return key < r.key; }
+ };
+ 
+ struct Z {
+   operator std::pair<const Key, int>() const { return { { z }, 0 }; }
+   int z;
+ };
+ 
+ template<typename T>
+ struct Alloc
+ {
+   Alloc() = default;
+ 
+   template<typename U>
+     Alloc(const Alloc<U>&) { }
+ 
+   using value_type = T;
+ 
+   T* allocate(std::size_t n) { return std::allocator<T>().allocate(n); }
+ 
+   void deallocate(T* p, std::size_t n) { std::allocator<T>().deallocate(p, n); }
+ 
+   template<typename U>
+     void construct(U* p, const Z& z) { ::new (p) U{ { z.z+1 }, 0}; }
+ 
+   template<typename U>
+     bool operator==(const Alloc<U>&) { return true; }
+ 
+   template<typename U>
+     bool operator!=(const Alloc<U>&) { return false; }
+ };
+ 
+ void
+ test03()
+ {
+   std::multimap<Key, int, std::less<Key>, Alloc<std::pair<const Key, int>>> m;
+   m.insert(Z{});
+   m.insert(Z{});
+   VERIFY( m.size() == 2 );
+   m.insert(Z{});
+   m.insert(Z{1});
+   VERIFY( m.size() == 4 );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+   test03();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc gcc-7.4.0/libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc	Mon May 14 22:22:23 2018
***************
*** 0 ****
--- 1,48 ----
+ // Copyright (C) 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
+ // 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" }
+ // { dg-do run { target c++1z } }
+ 
+ #include <set>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   // PR libstdc++/82966
+   std::set<int>::node_type n1, n2;
+   n1.swap(n2);
+   VERIFY( n1.empty() );
+   VERIFY( n2.empty() );
+ }
+ 
+ void
+ test02()
+ {
+   std::set<int> s{1, 2};
+   std::set<int>::node_type n1 = s.extract(1), n2;
+   swap(n1, n2);
+   VERIFY( n1.empty() );
+   VERIFY( !n2.empty() );
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/78595.cc gcc-7.4.0/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/78595.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/78595.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/78595.cc	Fri Oct 12 12:51:40 2018
***************
*** 0 ****
--- 1,122 ----
+ // Copyright (C) 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
+ // 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 <unordered_map>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   struct X {
+     mutable int conversions = 0;
+ 
+     operator std::pair<const int, int>() const {
+       if (++conversions > 1)
+ 	throw 1;
+       return {};
+     }
+   };
+ 
+   std::unordered_map<int, int> m;
+   m.insert(X());
+   VERIFY( m.size() == 1 );
+   m.insert(m.begin(), X());
+   VERIFY( m.size() == 1 );
+ 
+ }
+ void
+ test02()
+ {
+   struct Y {
+     int conversions = 0;
+ 
+     operator std::pair<const int, int>() && {
+       if (++conversions > 1)
+ 	throw 1;
+       return {};
+     }
+   };
+ 
+   std::unordered_map<int, int> m;
+   m.insert(Y());
+   VERIFY( m.size() == 1 );
+   m.insert(m.begin(), Y());
+   VERIFY( m.size() == 1 );
+ }
+ 
+ struct Key {
+   int key;
+   bool operator==(const Key& r) const { return key == r.key; }
+ };
+ 
+ namespace std {
+   template<> struct hash<Key> {
+     size_t operator()(const Key& k) const { return std::hash<int>()(k.key); }
+   };
+ }
+ 
+ struct Z {
+   operator std::pair<const Key, int>() const { return { { z }, 0 }; }
+   int z;
+ };
+ 
+ template<typename T>
+ struct Alloc
+ {
+   Alloc() = default;
+ 
+   template<typename U>
+     Alloc(const Alloc<U>&) { }
+ 
+   using value_type = T;
+ 
+   T* allocate(std::size_t n) { return std::allocator<T>().allocate(n); }
+ 
+   void deallocate(T* p, std::size_t n) { std::allocator<T>().deallocate(p, n); }
+ 
+   template<typename U>
+     void construct(U* p, const Z& z) { ::new (p) U{ { z.z+1 }, 0}; }
+ 
+   template<typename U>
+     bool operator==(const Alloc<U>&) { return true; }
+ 
+   template<typename U>
+     bool operator!=(const Alloc<U>&) { return false; }
+ };
+ 
+ void
+ test03()
+ {
+   std::unordered_map<Key, int, std::hash<Key>, std::equal_to<Key>,
+ 		     Alloc<std::pair<const Key, int>>> m;
+   m.insert(Z{});
+   m.insert(Z{});
+   VERIFY( m.size() == 1 );
+   m.insert(Z{});
+   m.insert(Z{1});
+   VERIFY( m.size() == 2 );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+   test03();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/78595.cc gcc-7.4.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/78595.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/78595.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/78595.cc	Fri Oct 12 12:51:40 2018
***************
*** 0 ****
--- 1,122 ----
+ // Copyright (C) 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
+ // 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 <unordered_map>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   struct X {
+     mutable int conversions = 0;
+ 
+     operator std::pair<const int, int>() const {
+       if (++conversions > 1)
+ 	throw 1;
+       return {};
+     }
+   };
+ 
+   std::unordered_multimap<int, int> m;
+   m.insert(X());
+   VERIFY( m.size() == 1 );
+   m.insert(m.begin(), X());
+   VERIFY( m.size() == 2 );
+ 
+ }
+ void
+ test02()
+ {
+   struct Y {
+     int conversions = 0;
+ 
+     operator std::pair<const int, int>() && {
+       if (++conversions > 1)
+ 	throw 1;
+       return {};
+     }
+   };
+ 
+   std::unordered_multimap<int, int> m;
+   m.insert(Y());
+   VERIFY( m.size() == 1 );
+   m.insert(m.begin(), Y());
+   VERIFY( m.size() == 2 );
+ }
+ 
+ struct Key {
+   int key;
+   bool operator==(const Key& r) const { return key == r.key; }
+ };
+ 
+ namespace std {
+   template<> struct hash<Key> {
+     size_t operator()(const Key& k) const { return std::hash<int>()(k.key); }
+   };
+ }
+ 
+ struct Z {
+   operator std::pair<const Key, int>() const { return { { z }, 0 }; }
+   int z;
+ };
+ 
+ template<typename T>
+ struct Alloc
+ {
+   Alloc() = default;
+ 
+   template<typename U>
+     Alloc(const Alloc<U>&) { }
+ 
+   using value_type = T;
+ 
+   T* allocate(std::size_t n) { return std::allocator<T>().allocate(n); }
+ 
+   void deallocate(T* p, std::size_t n) { std::allocator<T>().deallocate(p, n); }
+ 
+   template<typename U>
+     void construct(U* p, const Z& z) { ::new (p) U{ { z.z+1 }, 0}; }
+ 
+   template<typename U>
+     bool operator==(const Alloc<U>&) { return true; }
+ 
+   template<typename U>
+     bool operator!=(const Alloc<U>&) { return false; }
+ };
+ 
+ void
+ test03()
+ {
+   std::unordered_multimap<Key, int, std::hash<Key>, std::equal_to<Key>,
+ 			  Alloc<std::pair<const Key, int>>> m;
+   m.insert(Z{});
+   m.insert(Z{});
+   VERIFY( m.size() == 2 );
+   m.insert(Z{});
+   m.insert(Z{1});
+   VERIFY( m.size() == 4 );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+   test03();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc gcc-7.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc	Wed Nov 28 06:19:38 2018
***************
*** 18,88 ****
  // { dg-do run { target c++11 } }
  
  #include <unordered_set>
  #include <testsuite_hooks.h>
  #include <testsuite_allocator.h>
  #include <testsuite_counter_type.h>
  
  using __gnu_test::propagating_allocator;
  using __gnu_test::counter_type;
  
  void test01()
  {
!   typedef propagating_allocator<counter_type, false> alloc_type;
!   typedef __gnu_test::counter_type_hasher hash;
!   typedef std::unordered_set<counter_type, hash,
! 			     std::equal_to<counter_type>,
! 			     alloc_type> test_type;
  
!   test_type v1(alloc_type(1));
!   v1.emplace(0);
  
!   test_type v2(alloc_type(2));
!   v2.emplace(1);
  
!   counter_type::reset();
  
!   v2 = std::move(v1);
  
!   VERIFY( 1 == v1.get_allocator().get_personality() );
!   VERIFY( 2 == v2.get_allocator().get_personality() );
  
!   VERIFY( counter_type::move_count == 1  );
!   VERIFY( counter_type::destructor_count == 2 );
  }
  
  void test02()
  {
!   typedef propagating_allocator<counter_type, true> alloc_type;
!   typedef __gnu_test::counter_type_hasher hash;
!   typedef std::unordered_set<counter_type, hash,
! 			     std::equal_to<counter_type>,
! 			     alloc_type> test_type;
  
!   test_type v1(alloc_type(1));
!   v1.emplace(0);
  
!   auto it = v1.begin();
  
!   test_type v2(alloc_type(2));
!   v2.emplace(0);
  
!   counter_type::reset();
  
!   v2 = std::move(v1);
  
!   VERIFY(0 == v1.get_allocator().get_personality());
!   VERIFY(1 == v2.get_allocator().get_personality());
  
!   VERIFY( counter_type::move_count == 0 );
!   VERIFY( counter_type::copy_count == 0 );
!   VERIFY( counter_type::destructor_count == 1 );
  
!   VERIFY( it == v2.begin() );
  }
  
  int main()
  {
    test01();
    test02();
    return 0;
  }
--- 18,150 ----
  // { dg-do run { target c++11 } }
  
  #include <unordered_set>
+ 
  #include <testsuite_hooks.h>
  #include <testsuite_allocator.h>
  #include <testsuite_counter_type.h>
  
  using __gnu_test::propagating_allocator;
  using __gnu_test::counter_type;
+ using __gnu_test::tracker_allocator;
+ using __gnu_test::tracker_allocator_counter;
  
  void test01()
  {
!   tracker_allocator_counter::reset();
!   {
!     typedef propagating_allocator<counter_type, false,
! 				  tracker_allocator<counter_type>> alloc_type;
!     typedef __gnu_test::counter_type_hasher hash;
!     typedef std::unordered_set<counter_type, hash,
! 			       std::equal_to<counter_type>,
! 			       alloc_type> test_type;
  
!     test_type v1(alloc_type(1));
!     v1.emplace(0);
  
!     test_type v2(alloc_type(2));
!     v2.emplace(1);
  
!     counter_type::reset();
  
!     v2 = std::move(v1);
  
!     VERIFY( 1 == v1.get_allocator().get_personality() );
!     VERIFY( 2 == v2.get_allocator().get_personality() );
  
!     VERIFY( counter_type::move_count == 1  );
!     VERIFY( counter_type::destructor_count == 2 );
!   }
! 
!   // Check there's nothing left allocated or constructed.
!   VERIFY( tracker_allocator_counter::get_construct_count()
! 	  == tracker_allocator_counter::get_destruct_count() );
!   VERIFY( tracker_allocator_counter::get_allocation_count()
! 	  == tracker_allocator_counter::get_deallocation_count() );
  }
  
  void test02()
  {
!   tracker_allocator_counter::reset();
!   {
!     typedef propagating_allocator<counter_type, true,
! 				  tracker_allocator<counter_type>> alloc_type;
!     typedef __gnu_test::counter_type_hasher hash;
!     typedef std::unordered_set<counter_type, hash,
! 			       std::equal_to<counter_type>,
! 			       alloc_type> test_type;
  
!     test_type v1(alloc_type(1));
!     v1.emplace(0);
  
!     auto it = v1.begin();
  
!     test_type v2(alloc_type(2));
!     v2.emplace(0);
  
!     counter_type::reset();
  
!     v2 = std::move(v1);
  
!     VERIFY(0 == v1.get_allocator().get_personality());
!     VERIFY(1 == v2.get_allocator().get_personality());
  
!     VERIFY( counter_type::move_count == 0 );
!     VERIFY( counter_type::copy_count == 0 );
!     VERIFY( counter_type::destructor_count == 1 );
  
!     VERIFY( it == v2.begin() );
!   }
! 
!   // Check there's nothing left allocated or constructed.
!   VERIFY( tracker_allocator_counter::get_construct_count()
! 	  == tracker_allocator_counter::get_destruct_count() );
!   VERIFY( tracker_allocator_counter::get_allocation_count()
! 	  == tracker_allocator_counter::get_deallocation_count() );
! }
! 
! void test03()
! {
!   tracker_allocator_counter::reset();
!   {
!     typedef propagating_allocator<counter_type, false,
! 				  tracker_allocator<counter_type>> alloc_type;
!     typedef __gnu_test::counter_type_hasher hash;
!     typedef std::unordered_set<counter_type, hash,
! 			       std::equal_to<counter_type>,
! 			       alloc_type> test_type;
! 
!     test_type v1(alloc_type(1));
!     v1.emplace(0);
! 
!     test_type v2(alloc_type(2));
!     int i = 0;
!     v2.emplace(i++);
!     for (; v2.bucket_count() == v1.bucket_count(); ++i)
!       v2.emplace(i);
! 
!     counter_type::reset();
! 
!     v2 = std::move(v1);
! 
!     VERIFY( 1 == v1.get_allocator().get_personality() );
!     VERIFY( 2 == v2.get_allocator().get_personality() );
! 
!     VERIFY( counter_type::move_count == 1  );
!     VERIFY( counter_type::destructor_count == i + 1 );
!   }
! 
!   // Check there's nothing left allocated or constructed.
!   VERIFY( tracker_allocator_counter::get_construct_count()
! 	  == tracker_allocator_counter::get_destruct_count() );
!   VERIFY( tracker_allocator_counter::get_allocation_count()
! 	  == tracker_allocator_counter::get_deallocation_count() );
  }
  
  int main()
  {
    test01();
    test02();
+   test03();
    return 0;
  }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/23_containers/vector/bool/80893.cc gcc-7.4.0/libstdc++-v3/testsuite/23_containers/vector/bool/80893.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/23_containers/vector/bool/80893.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/23_containers/vector/bool/80893.cc	Tue Aug  7 22:50:45 2018
***************
*** 0 ****
--- 1,76 ----
+ // Copyright (C) 2017 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 } }
+ 
+ // libstdc++/80893
+ 
+ #include <vector>
+ #include <testsuite_allocator.h>
+ 
+ struct DereferencedInvalidPointer { };
+ 
+ // User-defined pointer type that throws if a null pointer is dereferenced.
+ template<typename T>
+ struct Pointer : __gnu_test::PointerBase<Pointer<T>, T>
+ {
+   using __gnu_test::PointerBase<Pointer<T>, T>::PointerBase;
+ 
+   T& operator*() const
+   {
+     if (!this->value)
+       throw DereferencedInvalidPointer();
+     return *this->value;
+   }
+ };
+ 
+ // Minimal allocator using Pointer<T>
+ template<typename T>
+ struct Alloc
+ {
+   typedef T value_type;
+   typedef Pointer<T> pointer;
+ 
+   Alloc() = default;
+   template<typename U>
+     Alloc(const Alloc<U>&) { }
+ 
+   pointer allocate(std::size_t n)
+   {
+     if (n)
+       return pointer(std::allocator<T>().allocate(n));
+     return nullptr;
+   }
+ 
+   void deallocate(pointer p, std::size_t n)
+   {
+     if (n)
+       std::allocator<T>().deallocate(p.value, n);
+   }
+ };
+ 
+ template<typename T>
+ bool operator==(Alloc<T>, Alloc<T>) { return true; }
+ 
+ template<typename T>
+ bool operator!=(Alloc<T>, Alloc<T>) { return false; }
+ 
+ int main()
+ {
+   std::vector<bool, Alloc<bool>> v(0);
+   std::vector<bool, Alloc<bool>> w(v);
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc gcc-7.4.0/libstdc++-v3/testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc	Wed Jul  4 13:59:01 2018
***************
*** 0 ****
--- 1,60 ----
+ // Copyright (C) 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
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <vector>
+ #include <testsuite_hooks.h>
+ 
+ struct X
+ {
+   X() : data(1)
+   {
+     if (fail)
+       throw 1;
+   }
+ 
+   static bool fail;
+ 
+   std::vector<int> data;
+ };
+ 
+ bool X::fail = false;
+ 
+ void
+ test01()
+ {
+   std::vector<X> v(2);
+   X* const addr = &v[0];
+   bool caught = false;
+   try {
+     X::fail = true;
+     v.resize(v.capacity() + 1); // force reallocation
+   } catch (int) {
+     caught = true;
+   }
+   VERIFY( caught );
+   VERIFY( v.size() == 2 );
+   VERIFY( &v[0] == addr );
+   // PR libstdc++/83982
+   VERIFY( ! v[0].data.empty() );
+   VERIFY( ! v[1].data.empty() );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/23_containers/vector/cons/86292.cc gcc-7.4.0/libstdc++-v3/testsuite/23_containers/vector/cons/86292.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/23_containers/vector/cons/86292.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/23_containers/vector/cons/86292.cc	Tue Aug  7 22:50:33 2018
***************
*** 0 ****
--- 1,64 ----
+ // Copyright (C) 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
+ // 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 }
+ 
+ #include <vector>
+ #include <testsuite_hooks.h>
+ #include <testsuite_iterators.h>
+ 
+ struct X
+ {
+   X() { ++count; }
+   X(const X&) { if (++copies >= max_copies) throw 1; ++count; }
+   ~X() { --count; }
+ 
+   static int count;
+   static int copies;
+   static int max_copies;
+ };
+ 
+ int X::count = 0;
+ int X::copies = 0;
+ int X::max_copies = 0;
+ 
+ void
+ test01()
+ {
+   X x[3];
+   const int count = X::count;
+   X::max_copies = 2;
+   __gnu_test::test_container<const X, __gnu_test::input_iterator_wrapper>
+     x_input(x, x+3);
+   bool caught = false;
+   try
+   {
+     std::vector<X> v(x_input.begin(), x_input.end());
+   }
+   catch(int)
+   {
+     caught = true;
+   }
+   VERIFY( caught );
+   VERIFY( X::count == count );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr2188.cc gcc-7.4.0/libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr2188.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr2188.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr2188.cc	Tue Aug  7 22:50:11 2018
***************
*** 0 ****
--- 1,47 ----
+ // Copyright (C) 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
+ // 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 } }
+ 
+ // PR libstdc++/86734
+ 
+ #include <iterator>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   // LWG DR 2188
+   // Reverse iterator does not fully support targets that overload operator&
+   struct X {
+     int val;
+     int* operator&() { return &val; }
+     const int* operator&() const { return &val; }
+   };
+ 
+   X x[2] = { {1}, {2} };
+   std::reverse_iterator<X*> rev(x+2);
+   VERIFY( rev->val == 2 );
+   ++rev;
+   VERIFY( rev->val == 1 );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/83833.cc gcc-7.4.0/libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/83833.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/83833.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/83833.cc	Mon Jan 29 14:45:00 2018
***************
*** 0 ****
--- 1,40 ----
+ // Copyright (C) 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
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do run { target c++11 } }
+ // { dg-additional-options "-ffloat-store" { target { m68*-*-* || ia32 } } }
+ 
+ #include <random>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   std::default_random_engine r1, r2;
+   using chi = std::chi_squared_distribution<double>;
+   chi::param_type p(5);
+   chi d1(p);
+   chi d2;
+   d2.param(p);
+   VERIFY( d1(r1) == d2(r2) ); // PR libstdc++/83833
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/26_numerics/valarray/87641.cc gcc-7.4.0/libstdc++-v3/testsuite/26_numerics/valarray/87641.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/26_numerics/valarray/87641.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/26_numerics/valarray/87641.cc	Thu Oct 18 19:38:56 2018
***************
*** 0 ****
--- 1,75 ----
+ // Copyright (C) 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
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <valarray>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   // PR libstdc++/87641
+   std::valarray<int> v1(3);
+   v1[0] = 1;
+   v1[1] = 2;
+   v1[2] = 3;
+   std::valarray< std::valarray<int> > v2(v1, 3);
+   std::valarray<int> v3 = v2.sum();
+   VERIFY( v3.size() == v1.size() );
+   VERIFY( v3[0] == 3 );
+   VERIFY( v3[1] == 6 );
+   VERIFY( v3[2] == 9 );
+ }
+ 
+ struct X
+ {
+   X() : val(1) { }
+ 
+   X& operator+=(const X& x) { val += x.val; return *this; }
+   bool operator==(const X& x) { return val == x.val; }
+ 
+   int val;
+ };
+ 
+ void
+ test02()
+ {
+   std::valarray<X> v1(1);
+   VERIFY( v1.sum() == v1[0] );
+ 
+   std::valarray<X> v2(2);
+   VERIFY( v2.sum().val == 2 );
+ }
+ 
+ struct Y
+ {
+   X& operator+=(const Y&) { throw 1; }
+ };
+ 
+ void
+ test03()
+ {
+   std::valarray<Y> v1(1);
+   (void) v1.sum(); // no addition performed for a single element
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+   test03();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc	Wed Sep 20 22:26:26 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc	Thu Apr 12 19:06:50 2018
*************** void test02()
*** 46,58 ****
    }
  
    {
-     // The library throws the new definition of std::ios::failure
- #if _GLIBCXX_USE_CXX11_ABI
-     typedef std::ios_base::failure exception_type;
- #else
-     typedef std::exception exception_type;
- #endif
- 
      std::ios ios_01(0);
      std::ios ios_02(0);
      ios_01.clear(std::ios_base::eofbit);
--- 46,51 ----
*************** void test02()
*** 62,68 ****
        ios_01.copyfmt(ios_02);
        VERIFY( false );
      }
!     catch(exception_type&) {
        VERIFY( true );
      }
      catch(...) {
--- 55,61 ----
        ios_01.copyfmt(ios_02);
        VERIFY( false );
      }
!     catch(std::ios_base::failure&) {
        VERIFY( true );
      }
      catch(...) {
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc	Wed Sep 20 22:26:26 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc	Thu Apr 12 19:06:50 2018
*************** void test01()
*** 50,69 ****
    }
  
    {
-     // The library throws the new definition of std::ios::failure
- #if _GLIBCXX_USE_CXX11_ABI
-     typedef std::ios_base::failure exception_type;
- #else
-     typedef std::exception exception_type;
- #endif
- 
      std::ios ios_01(0);
      ios_01.clear(std::ios_base::eofbit);
      try {
        ios_01.exceptions(std::ios_base::eofbit);
        VERIFY( false );
      }
!     catch(exception_type&) {
        iostate02 = ios_01.exceptions();
        VERIFY( static_cast<bool>(iostate02 & std::ios_base::eofbit) );
      }
--- 50,62 ----
    }
  
    {
      std::ios ios_01(0);
      ios_01.clear(std::ios_base::eofbit);
      try {
        ios_01.exceptions(std::ios_base::eofbit);
        VERIFY( false );
      }
!     catch(std::ios_base::failure&) {
        iostate02 = ios_01.exceptions();
        VERIFY( static_cast<bool>(iostate02 & std::ios_base::eofbit) );
      }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc	Wed Sep 20 22:26:26 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc	Thu Apr 12 19:06:50 2018
*************** void test_failbit()
*** 27,46 ****
    istringstream stream("jaylib - champion sound");
    stream.exceptions(ios_base::failbit);
  
-   // The library throws the new definition of std::ios::failure
- #if _GLIBCXX_USE_CXX11_ABI
-     typedef std::ios_base::failure exception_type;
- #else
-     typedef std::exception exception_type;
- #endif
- 
    try
      {
        T i;
        stream >> i;
        VERIFY( false );
      }
!   catch (const exception_type&)
      {
        // stream should set failbit and throw ios_base::failure.
        VERIFY( stream.fail() );
--- 27,39 ----
    istringstream stream("jaylib - champion sound");
    stream.exceptions(ios_base::failbit);
  
    try
      {
        T i;
        stream >> i;
        VERIFY( false );
      }
!   catch (const std::ios_base::failure&)
      {
        // stream should set failbit and throw ios_base::failure.
        VERIFY( stream.fail() );
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc	Wed Sep 20 22:26:26 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc	Thu Apr 12 19:06:50 2018
*************** void test_failbit()
*** 27,46 ****
    wistringstream stream(L"jaylib - champion sound");
    stream.exceptions(ios_base::failbit);
  
-   // The library throws the new definition of std::ios::failure
- #if _GLIBCXX_USE_CXX11_ABI
-     typedef std::ios_base::failure exception_type;
- #else
-     typedef std::exception exception_type;
- #endif
- 
    try
      {
        T i;
        stream >> i;
        VERIFY( false );
      }
!   catch (const exception_type&)
      {
        // stream should set failbit and throw ios_base::failure.
        VERIFY( stream.fail() );
--- 27,39 ----
    wistringstream stream(L"jaylib - champion sound");
    stream.exceptions(ios_base::failbit);
  
    try
      {
        T i;
        stream >> i;
        VERIFY( false );
      }
!   catch (const std::ios_base::failure&)
      {
        // stream should set failbit and throw ios_base::failure.
        VERIFY( stream.fail() );
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc	Wed Sep 20 22:26:26 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc	Thu Apr 12 19:06:50 2018
*************** void test4()
*** 35,53 ****
    istringstream stream;
    stream.exceptions(ios_base::failbit);
  
-   // The library throws the new definition of std::ios::failure
- #if _GLIBCXX_USE_CXX11_ABI
-     typedef std::ios_base::failure exception_type;
- #else
-     typedef std::exception exception_type;
- #endif
- 
    try
      {
        stream >> static_cast<streambuf*>(0);
        VERIFY(false);
      }
!   catch (exception_type&)
      {
      }
  
--- 35,46 ----
    istringstream stream;
    stream.exceptions(ios_base::failbit);
  
    try
      {
        stream >> static_cast<streambuf*>(0);
        VERIFY(false);
      }
!   catch (std::ios_base::failure&)
      {
      }
  
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc	Wed Sep 20 22:26:26 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc	Thu Apr 12 19:06:50 2018
*************** void test4()
*** 35,53 ****
    wistringstream stream;
    stream.exceptions(ios_base::failbit);
  
-   // The library throws the new definition of std::ios::failure
- #if _GLIBCXX_USE_CXX11_ABI
-     typedef std::ios_base::failure exception_type;
- #else
-     typedef std::exception exception_type;
- #endif
- 
    try
      {
        stream >> static_cast<wstreambuf*>(0);
        VERIFY( false );
      }
!   catch (exception_type&)
      {
      }
  
--- 35,46 ----
    wistringstream stream;
    stream.exceptions(ios_base::failbit);
  
    try
      {
        stream >> static_cast<wstreambuf*>(0);
        VERIFY( false );
      }
!   catch (std::ios_base::failure&)
      {
      }
  
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc	Wed Sep 20 22:26:26 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc	Thu Apr 12 19:06:50 2018
*************** int main()
*** 26,44 ****
    istringstream stream;
    stream.exceptions(ios_base::eofbit);
  
-   // The library throws the new definition of std::ios::failure
- #if _GLIBCXX_USE_CXX11_ABI
-     typedef std::ios_base::failure exception_type;
- #else
-     typedef std::exception exception_type;
- #endif
- 
    try
      {
        istream::sentry sentry(stream, false);
        VERIFY( false );
      }
!   catch (exception_type&)
      {
        VERIFY( stream.rdstate() == (ios_base::eofbit | ios_base::failbit) );
      }
--- 26,37 ----
    istringstream stream;
    stream.exceptions(ios_base::eofbit);
  
    try
      {
        istream::sentry sentry(stream, false);
        VERIFY( false );
      }
!   catch (std::ios_base::failure&)
      {
        VERIFY( stream.rdstate() == (ios_base::eofbit | ios_base::failbit) );
      }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc	Wed Sep 20 22:26:26 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc	Thu Apr 12 19:06:50 2018
*************** int main()
*** 26,44 ****
    wistringstream stream;
    stream.exceptions(ios_base::eofbit);
  
-   // The library throws the new definition of std::ios::failure
- #if _GLIBCXX_USE_CXX11_ABI
-     typedef std::ios_base::failure exception_type;
- #else
-     typedef std::exception exception_type;
- #endif
- 
    try
      {
        wistream::sentry sentry(stream, false);
        VERIFY( false );
      }
!   catch (exception_type&)
      {
        VERIFY( stream.rdstate() == (ios_base::eofbit | ios_base::failbit) );
      }
--- 26,37 ----
    wistringstream stream;
    stream.exceptions(ios_base::eofbit);
  
    try
      {
        wistream::sentry sentry(stream, false);
        VERIFY( false );
      }
!   catch (std::ios_base::failure&)
      {
        VERIFY( stream.rdstate() == (ios_base::eofbit | ios_base::failbit) );
      }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc	Wed Sep 20 22:26:26 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc	Thu Apr 12 19:06:50 2018
*************** void test3()
*** 37,55 ****
    ostringstream stream;
    stream.exceptions(ios_base::badbit);
  
-   // The library throws the new definition of std::ios::failure
- #if _GLIBCXX_USE_CXX11_ABI
-     typedef std::ios_base::failure exception_type;
- #else
-     typedef std::exception exception_type;
- #endif
- 
    try
      {
        stream << static_cast<streambuf*>(0);
        VERIFY( false );
      }
!   catch (exception_type&)
      {
      }
  
--- 37,48 ----
    ostringstream stream;
    stream.exceptions(ios_base::badbit);
  
    try
      {
        stream << static_cast<streambuf*>(0);
        VERIFY( false );
      }
!   catch (std::ios_base::failure&)
      {
      }
  
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc	Wed Sep 20 22:26:26 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc	Thu Apr 12 19:06:50 2018
*************** void test3()
*** 37,55 ****
    wostringstream stream;
    stream.exceptions(ios_base::badbit);
  
-   // The library throws the new definition of std::ios::failure
- #if _GLIBCXX_USE_CXX11_ABI
-     typedef std::ios_base::failure exception_type;
- #else
-     typedef std::exception exception_type;
- #endif
- 
    try
      {
        stream << static_cast<wstreambuf*>(0);
        VERIFY( false );
      }
!   catch (exception_type&)
      {
      }
  
--- 37,48 ----
    wostringstream stream;
    stream.exceptions(ios_base::badbit);
  
    try
      {
        stream << static_cast<wstreambuf*>(0);
        VERIFY( false );
      }
!   catch (std::ios_base::failure&)
      {
      }
  
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/27_io/ios_base/failure/dual_abi.cc gcc-7.4.0/libstdc++-v3/testsuite/27_io/ios_base/failure/dual_abi.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/27_io/ios_base/failure/dual_abi.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/27_io/ios_base/failure/dual_abi.cc	Thu Apr 12 19:06:50 2018
***************
*** 0 ****
--- 1,99 ----
+ // Copyright (C) 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
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-options "-D_GLIBCXX_USE_CXX11_ABI=0" }
+ // { dg-do run { target c++11 } }
+ 
+ #include <fstream>
+ #include <system_error>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   using std::ios;
+   bool caught_ios_failure = false;
+   bool rethrown = false;
+   bool caught_system_error = false;
+   try {
+     std::ifstream f;
+     f.exceptions(ios::failbit | ios::badbit | ios::eofbit);
+     try {
+       f.get();
+     }
+     catch (const ios::failure&) // catch as old ABI type
+     {
+       caught_ios_failure = true;
+ #if _GLIBCXX_USE_DUAL_ABI || _GLIBCXX_USE_CXX11_ABI == 1
+       rethrown = true;
+       throw; // re-throw, to catch as new ABI type
+ #endif
+     }
+   }
+   catch (const std::system_error& e)
+   {
+     caught_system_error = true;
+   }
+ 
+   VERIFY( caught_ios_failure );
+   if (rethrown)
+     VERIFY( caught_system_error );
+ }
+ 
+ void
+ test02()
+ {
+   using std::ios;
+   const std::exception* p = nullptr;
+   bool caught_ios_failure = false;
+   bool caught_exception = false;
+   try {
+     std::ifstream f;
+     f.exceptions(ios::failbit | ios::badbit | ios::eofbit);
+     try {
+       f.get();
+     }
+     catch (const std::exception& e1)
+     {
+       caught_exception = true;
+       p = &e1;
+       throw;
+     }
+   }
+   catch (const ios::failure& e2)
+   {
+     caught_ios_failure = true;
+ #if _GLIBCXX_USE_DUAL_ABI
+     // If the Dual ABI is active the library throws the new type,
+     // so e1 was an object of that new type and so &e1 != &e2.
+     VERIFY( p != &e2 );
+ #else
+     // Otherwise there's only one type of ios::failure, so &e1 == &e2.
+     VERIFY( p == &e2 );
+ #endif
+   }
+ 
+   VERIFY( caught_exception );
+   VERIFY( caught_ios_failure );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc gcc-7.4.0/libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc	Wed Sep 20 22:26:26 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc	Thu Apr 12 19:06:50 2018
*************** void test02()
*** 50,67 ****
    ios.pword(1) = v;
    VERIFY( ios.pword(1) == v );
  
-   // The library throws the new definition of std::ios::failure
- #if _GLIBCXX_USE_CXX11_ABI
-     typedef std::ios_base::failure exception_type;
- #else
-     typedef std::exception exception_type;
- #endif
- 
    try
      {
        v = ios.pword(max);
      }
!   catch(exception_type&)
      {
        // Ok.
        VERIFY( ios.bad() );
--- 50,60 ----
    ios.pword(1) = v;
    VERIFY( ios.pword(1) == v );
  
    try
      {
        v = ios.pword(max);
      }
!   catch(std::ios_base::failure&)
      {
        // Ok.
        VERIFY( ios.bad() );
*************** void test02()
*** 80,86 ****
      {
        v = ios.pword(std::numeric_limits<int>::max());
      }
!   catch(exception_type&)
      {
        // Ok.
        VERIFY( ios.bad() );
--- 73,79 ----
      {
        v = ios.pword(std::numeric_limits<int>::max());
      }
!   catch(std::ios_base::failure&)
      {
        // Ok.
        VERIFY( ios.bad() );
*************** void test02()
*** 99,105 ****
      {
        l = ios.iword(max);
      }
!   catch(exception_type&)
      {
        // Ok.
        VERIFY( ios.bad() );
--- 92,98 ----
      {
        l = ios.iword(max);
      }
!   catch(std::ios_base::failure&)
      {
        // Ok.
        VERIFY( ios.bad() );
*************** void test02()
*** 118,124 ****
      {
        l = ios.iword(std::numeric_limits<int>::max());
      }
!   catch(exception_type&)
      {
        // Ok.
        VERIFY( ios.bad() );
--- 111,117 ----
      {
        l = ios.iword(std::numeric_limits<int>::max());
      }
!   catch(std::ios_base::failure&)
      {
        // Ok.
        VERIFY( ios.bad() );
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/28_regex/basic_regex/85098.cc gcc-7.4.0/libstdc++-v3/testsuite/28_regex/basic_regex/85098.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/28_regex/basic_regex/85098.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/28_regex/basic_regex/85098.cc	Wed Jul  4 13:59:13 2018
***************
*** 0 ****
--- 1,45 ----
+ // Copyright (C) 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
+ // 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 "-O0" }
+ // { dg-do link { target c++11 } }
+ 
+ #include <regex>
+ 
+ void f(const std::regex_constants::syntax_option_type&) { }
+ 
+ void
+ test01()
+ {
+   f(std::regex::icase);
+   f(std::regex::nosubs);
+   f(std::regex::optimize);
+   f(std::regex::collate);
+   f(std::regex::ECMAScript);
+   f(std::regex::basic);
+   f(std::regex::extended);
+   f(std::regex::awk);
+   f(std::regex::grep);
+   f(std::regex::egrep);
+   // f(std::regex::multiline);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/30_threads/async/84532.cc gcc-7.4.0/libstdc++-v3/testsuite/30_threads/async/84532.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/30_threads/async/84532.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/30_threads/async/84532.cc	Mon Feb 26 17:09:34 2018
***************
*** 0 ****
--- 1,38 ----
+ // { dg-do compile { target c++11 } }
+ // { dg-require-cstdint "" }
+ // { dg-require-gthreads "" }
+ 
+ // Copyright (C) 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
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <future>
+ 
+ // PR libstdc++/84532
+ 
+ struct F
+ {
+   template<typename T, typename U>
+     void operator()(T, U, int&)
+     {
+       using std::is_same;
+       using std::reference_wrapper;
+       static_assert(is_same<T, reference_wrapper<int>>::value, "");
+       static_assert(is_same<U, reference_wrapper<const int>>::value, "");
+     }
+ };
+ int i = 0;
+ auto fut = std::async(F{}, std::ref(i), std::cref(i), std::ref(i));
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/30_threads/condition_variable/members/68519.cc gcc-7.4.0/libstdc++-v3/testsuite/30_threads/condition_variable/members/68519.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/30_threads/condition_variable/members/68519.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/30_threads/condition_variable/members/68519.cc	Tue Aug  7 22:50:40 2018
***************
*** 0 ****
--- 1,51 ----
+ // Copyright (C) 2017 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 }
+ // { dg-options "-pthread"  }
+ // { dg-require-effective-target c++11 }
+ // { dg-require-effective-target pthread }
+ // { dg-require-cstdint "" }
+ // { dg-require-gthreads "" }
+ 
+ #include <condition_variable>
+ #include <testsuite_hooks.h>
+ 
+ // PR libstdc++/68519
+ 
+ bool val = false;
+ std::mutex mx;
+ std::condition_variable cv;
+ 
+ void
+ test01()
+ {
+   for (int i = 0; i < 3; ++i)
+   {
+     std::unique_lock<std::mutex> l(mx);
+     auto start = std::chrono::system_clock::now();
+     cv.wait_for(l, std::chrono::duration<float>(1), [] { return val; });
+     auto t = std::chrono::system_clock::now();
+     VERIFY( (t - start) >= std::chrono::seconds(1) );
+   }
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/30_threads/thread/84532.cc gcc-7.4.0/libstdc++-v3/testsuite/30_threads/thread/84532.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/30_threads/thread/84532.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/30_threads/thread/84532.cc	Mon Feb 26 17:09:34 2018
***************
*** 0 ****
--- 1,38 ----
+ // { dg-do compile { target c++11 } }
+ // { dg-require-cstdint "" }
+ // { dg-require-gthreads "" }
+ 
+ // Copyright (C) 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
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <thread>
+ 
+ // PR libstdc++/84532
+ 
+ struct F
+ {
+   template<typename T, typename U>
+     void operator()(T, U, int&)
+     {
+       using std::is_same;
+       using std::reference_wrapper;
+       static_assert(is_same<T, reference_wrapper<int>>::value, "");
+       static_assert(is_same<U, reference_wrapper<const int>>::value, "");
+     }
+ };
+ int i = 0;
+ std::thread t(F{}, std::ref(i), std::cref(i), std::ref(i));
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc	Mon Oct 22 08:47:52 2018
*************** void test01()
*** 25,29 ****
    using std::experimental::any_cast;
  
    const any y(1);
!   any_cast<int&>(y); // { dg-error "qualifiers" "" { target { *-*-* } } 359 }
  }
--- 25,29 ----
    using std::experimental::any_cast;
  
    const any y(1);
!   any_cast<int&>(y); // { dg-error "qualifiers" "" { target { *-*-* } } 357 }
  }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/array/neg.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/array/neg.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/array/neg.cc	Mon Jan 23 15:56:05 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/array/neg.cc	Mon Oct 22 08:47:52 2018
*************** int main()
*** 24,28 ****
  {
    int dummy;
    auto bad = std::experimental::make_array(std::ref(dummy));
!   // { dg-error "explicit target type" "" { target *-*-* } 78 }
  }
--- 24,28 ----
  {
    int dummy;
    auto bad = std::experimental::make_array(std::ref(dummy));
!   // { dg-error "explicit target type" "" { target *-*-* } 76 }
  }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc	Thu May  3 20:16:29 2018
***************
*** 0 ****
--- 1,57 ----
+ // Copyright (C) 2017-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
+ // 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 "" }
+ 
+ // 30.10.14.3 Permissions [fs.op.space]
+ 
+ #include <experimental/filesystem>
+ #include <testsuite_fs.h>
+ #include <testsuite_hooks.h>
+ 
+ namespace fs = std::experimental::filesystem;
+ 
+ void
+ test01()
+ {
+   fs::space_info s = fs::space("/");
+   std::error_code ec = make_error_code(std::errc::invalid_argument);
+   s = fs::space("/", ec);
+   VERIFY( !ec );
+ 
+   s = fs::space(__gnu_test::nonexistent_path(), ec);
+   VERIFY( ec );
+   VERIFY( s.capacity ==  static_cast<uintmax_t>(-1) );
+   VERIFY( s.free ==  static_cast<uintmax_t>(-1) );
+   VERIFY( s.available ==  static_cast<uintmax_t>(-1) );
+ }
+ 
+ void
+ test02()
+ {
+   fs::space_info s = fs::space(".");
+   VERIFY( s.capacity >= s.free );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/functional/87538.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/functional/87538.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/functional/87538.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/functional/87538.cc	Mon Oct  8 13:13:06 2018
***************
*** 0 ****
--- 1,48 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <experimental/functional>
+ #include <testsuite_hooks.h>
+ 
+ struct N {
+   int operator()(int i) { if (i == 0) throw -1; return i; }
+ };
+ 
+ void
+ test01()
+ {
+   N n;
+   auto not_n = std::experimental::not_fn(n);
+   static_assert( !noexcept(not_n(1)), "can throw" );
+   VERIFY(not_n(1) == 0);
+   int exception = 0;
+   try {
+     not_n(0);
+   }
+   catch (int e) {
+     exception = e;
+   }
+   VERIFY(exception == -1);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/memory_resource/70966.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/memory_resource/70966.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/memory_resource/70966.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/memory_resource/70966.cc	Fri Oct 12 12:51:20 2018
***************
*** 0 ****
--- 1,56 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <experimental/memory_resource>
+ 
+ namespace pmr = std::experimental::pmr;
+ 
+ struct X
+ {
+   pmr::memory_resource* res = nullptr;
+   void* ptr = nullptr;
+   static constexpr std::size_t n = 64;
+ 
+   constexpr X() { }
+ 
+   explicit
+   X(pmr::memory_resource* r) : res(r), ptr(r->allocate(n)) { }
+ 
+   ~X() { if (ptr) res->deallocate(ptr, n); }
+ };
+ 
+ void
+ swap(X& lhs, X& rhs) {
+     std::swap(lhs.res, rhs.res);
+     std::swap(lhs.ptr, rhs.ptr);
+ }
+ 
+ void
+ test01()
+ {
+   static X x1;
+   X x2(pmr::new_delete_resource());
+   swap(x1, x2);
+   // Now x1 will deallocate the memory during destruction of static objects.
+ }
+ 
+ int main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc	Thu Mar 22 17:42:32 2018
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-do run { target c++14 } }
+ // { dg-xfail-run-if "PR libstdc++/77691" { { i?86-*-solaris2.* x86_64-*-solaris2.* } && ilp32 } }
  
  // Copyright (C) 2016-2017 Free Software Foundation, Inc.
  //
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc	Fri Oct 12 12:51:29 2018
***************
*** 0 ****
--- 1,28 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <experimental/deque>
+ 
+ namespace xpmr = std::experimental::pmr;
+ 
+ struct X { };
+ 
+ static_assert(std::is_same<xpmr::deque<X>,
+     std::deque<X, xpmr::polymorphic_allocator<X>>>::value,
+     "pmr::deque");
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_forward_list.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_forward_list.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_forward_list.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_forward_list.cc	Fri Oct 12 12:51:29 2018
***************
*** 0 ****
--- 1,28 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <experimental/forward_list>
+ 
+ namespace xpmr = std::experimental::pmr;
+ 
+ struct X { };
+ 
+ static_assert(std::is_same<xpmr::forward_list<X>,
+     std::forward_list<X, xpmr::polymorphic_allocator<X>>>::value,
+     "pmr::forward_list");
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc	Fri Oct 12 12:51:29 2018
***************
*** 0 ****
--- 1,28 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <experimental/list>
+ 
+ namespace xpmr = std::experimental::pmr;
+ 
+ struct X { };
+ 
+ static_assert(std::is_same<xpmr::list<X>,
+     std::list<X, xpmr::polymorphic_allocator<X>>>::value,
+     "pmr::list");
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc	Fri Oct 12 12:51:29 2018
***************
*** 0 ****
--- 1,35 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <experimental/map>
+ 
+ namespace xpmr = std::experimental::pmr;
+ 
+ struct X { };
+ struct Y { };
+ struct Cmp { bool operator()(X, X) const { return false; } };
+ 
+ static_assert(std::is_same<xpmr::map<X, Y>,
+     std::map<X, Y, std::less<X>,
+ 	     xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
+     "pmr::map");
+ static_assert(std::is_same<xpmr::map<X, Y, Cmp>,
+     std::map<X, Y, Cmp,
+ 	     xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
+     "pmr::map");
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc	Fri Oct 12 12:51:29 2018
***************
*** 0 ****
--- 1,50 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ // { dg-require-effective-target cxx11-abi }
+ 
+ #include <experimental/regex>
+ 
+ namespace xpmr = std::experimental::pmr;
+ 
+ struct X;
+ static_assert(std::is_same<xpmr::match_results<X*>,
+     std::match_results<X*,
+       xpmr::polymorphic_allocator<std::sub_match<X*>>>>::value,
+     "pmr::match_results");
+ 
+ static_assert(std::is_same<xpmr::cmatch,
+     std::match_results<const char*,
+       xpmr::polymorphic_allocator<std::sub_match<const char*>>>>::value,
+     "pmr::cmatch");
+ static_assert(std::is_same<xpmr::smatch,
+     std::match_results<xpmr::string::const_iterator,
+       xpmr::polymorphic_allocator<
+ 	std::sub_match<xpmr::string::const_iterator>>>>::value,
+     "pmr::smatch");
+ #ifdef _GLIBCXX_USE_WCHAR_T
+ static_assert(std::is_same<xpmr::wcmatch,
+     std::match_results<const wchar_t*,
+       xpmr::polymorphic_allocator<std::sub_match<const wchar_t*>>>>::value,
+     "pmr::wcmatch");
+ static_assert(std::is_same<xpmr::wsmatch,
+     std::match_results<xpmr::wstring::const_iterator,
+       xpmr::polymorphic_allocator<
+ 	std::sub_match<xpmr::wstring::const_iterator>>>>::value,
+     "pmr::wsmatch");
+ #endif
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multimap.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multimap.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multimap.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multimap.cc	Fri Oct 12 12:51:29 2018
***************
*** 0 ****
--- 1,35 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <experimental/map>
+ 
+ namespace xpmr = std::experimental::pmr;
+ 
+ struct X { };
+ struct Y { };
+ struct Cmp { bool operator()(X, X) const { return false; } };
+ 
+ static_assert(std::is_same<xpmr::multimap<X, Y>,
+     std::multimap<X, Y, std::less<X>,
+ 		  xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
+     "pmr::multimap");
+ static_assert(std::is_same<xpmr::multimap<X, Y, Cmp>,
+     std::multimap<X, Y, Cmp,
+ 		  xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
+     "pmr::multimap");
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multiset.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multiset.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multiset.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multiset.cc	Fri Oct 12 12:51:29 2018
***************
*** 0 ****
--- 1,32 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <experimental/set>
+ 
+ namespace xpmr = std::experimental::pmr;
+ 
+ struct X { };
+ struct Cmp { bool operator()(X, X) const { return false; } };
+ 
+ static_assert(std::is_same<xpmr::multiset<X>,
+     std::multiset<X, std::less<X>, xpmr::polymorphic_allocator<X>>>::value,
+     "pmr::multiset");
+ static_assert(std::is_same<xpmr::multiset<X, Cmp>,
+     std::multiset<X, Cmp, xpmr::polymorphic_allocator<X>>>::value,
+     "pmr::multiset");
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc	Fri Oct 12 12:51:29 2018
***************
*** 0 ****
--- 1,32 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <experimental/set>
+ 
+ namespace xpmr = std::experimental::pmr;
+ 
+ struct X { };
+ struct Cmp { bool operator()(X, X) const { return false; } };
+ 
+ static_assert(std::is_same<xpmr::set<X>,
+     std::set<X, std::less<X>, xpmr::polymorphic_allocator<X>>>::value,
+     "pmr::set");
+ static_assert(std::is_same<xpmr::set<X, Cmp>,
+     std::set<X, Cmp, xpmr::polymorphic_allocator<X>>>::value,
+     "pmr::set");
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc	Fri Oct 12 12:51:29 2018
***************
*** 0 ****
--- 1,61 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ // { dg-require-effective-target cxx11-abi }
+ 
+ #include <experimental/string>
+ 
+ namespace xpmr = std::experimental::pmr;
+ 
+ struct T : std::char_traits<char> { };
+ 
+ static_assert(std::is_same<xpmr::basic_string<char>,
+     std::basic_string<char, std::char_traits<char>,
+ 		      xpmr::polymorphic_allocator<char>>>::value,
+     "pmr::basic_string");
+ static_assert(std::is_same<xpmr::basic_string<char, T>,
+     std::basic_string<char, T, xpmr::polymorphic_allocator<char>>>::value,
+     "pmr::basic_string");
+ 
+ static_assert(std::is_same<xpmr::string,
+     std::basic_string<char, std::char_traits<char>,
+ 		      xpmr::polymorphic_allocator<char>>>::value,
+     "pmr::string");
+ static_assert(std::is_same<xpmr::u16string,
+     std::basic_string<char16_t, std::char_traits<char16_t>,
+ 		      xpmr::polymorphic_allocator<char16_t>>>::value,
+     "pmr::u16string");
+ static_assert(std::is_same<xpmr::u32string,
+     std::basic_string<char32_t, std::char_traits<char32_t>,
+ 		      xpmr::polymorphic_allocator<char32_t>>>::value,
+     "pmr::u32string");
+ 
+ #ifdef _GLIBCXX_USE_WCHAR_T
+ static_assert(std::is_same<xpmr::basic_string<wchar_t>,
+     std::basic_string<wchar_t, std::char_traits<wchar_t>,
+ 		      xpmr::polymorphic_allocator<wchar_t>>>::value,
+     "pmr::basic_string<wchar_t>");
+ static_assert(std::is_same<xpmr::basic_string<wchar_t, T>,
+     std::basic_string<wchar_t, T, xpmr::polymorphic_allocator<wchar_t>>>::value,
+     "pmr::basic_string<wchar_t>");
+ 
+ static_assert(std::is_same<xpmr::wstring,
+     std::basic_string<wchar_t, std::char_traits<wchar_t>,
+ 		      xpmr::polymorphic_allocator<wchar_t>>>::value,
+     "pmr::wstring");
+ #endif
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_map.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_map.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_map.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_map.cc	Fri Oct 12 12:51:29 2018
***************
*** 0 ****
--- 1,40 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <experimental/unordered_map>
+ 
+ namespace xpmr = std::experimental::pmr;
+ 
+ struct X { };
+ struct Y { };
+ struct Hash { std::size_t operator()(X) const { return 0; } };
+ struct Eq { bool operator()(X, X) const { return true; } };
+ 
+ static_assert(std::is_same<xpmr::unordered_map<X, Y>,
+     std::unordered_map<X, Y, std::hash<X>, std::equal_to<X>,
+       xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
+     "pmr::unordered_map");
+ static_assert(std::is_same<xpmr::unordered_map<X, Y, Hash>,
+     std::unordered_map<X, Y, Hash, std::equal_to<X>,
+       xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
+     "pmr::unordered_map");
+ static_assert(std::is_same<xpmr::unordered_map<X, Y, Hash, Eq>,
+     std::unordered_map<X, Y, Hash, Eq,
+       xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
+     "pmr::unordered_map");
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multimap.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multimap.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multimap.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multimap.cc	Fri Oct 12 12:51:29 2018
***************
*** 0 ****
--- 1,40 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <experimental/unordered_map>
+ 
+ namespace xpmr = std::experimental::pmr;
+ 
+ struct X { };
+ struct Y { };
+ struct Hash { std::size_t operator()(X) const { return 0; } };
+ struct Eq { bool operator()(X, X) const { return true; } };
+ 
+ static_assert(std::is_same<xpmr::unordered_multimap<X, Y>,
+     std::unordered_multimap<X, Y, std::hash<X>, std::equal_to<X>,
+       xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
+     "pmr::unordered_multimap");
+ static_assert(std::is_same<xpmr::unordered_multimap<X, Y, Hash>,
+     std::unordered_multimap<X, Y, Hash, std::equal_to<X>,
+       xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
+     "pmr::unordered_multimap");
+ static_assert(std::is_same<xpmr::unordered_multimap<X, Y, Hash, Eq>,
+     std::unordered_multimap<X, Y, Hash, Eq,
+       xpmr::polymorphic_allocator<std::pair<const X, Y>>>>::value,
+     "pmr::unordered_multimap");
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multiset.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multiset.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multiset.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multiset.cc	Fri Oct 12 12:51:29 2018
***************
*** 0 ****
--- 1,39 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <experimental/unordered_set>
+ 
+ namespace xpmr = std::experimental::pmr;
+ 
+ struct X { };
+ struct Hash { std::size_t operator()(X) const { return 0; } };
+ struct Eq { bool operator()(X, X) const { return true; } };
+ 
+ static_assert(std::is_same<xpmr::unordered_multiset<X>,
+     std::unordered_multiset<X, std::hash<X>, std::equal_to<X>,
+       xpmr::polymorphic_allocator<X>>>::value,
+     "pmr::unordered_multiset");
+ static_assert(std::is_same<xpmr::unordered_multiset<X, Hash>,
+     std::unordered_multiset<X, Hash, std::equal_to<X>,
+       xpmr::polymorphic_allocator<X>>>::value,
+     "pmr::unordered_multiset");
+ static_assert(std::is_same<xpmr::unordered_multiset<X, Hash, Eq>,
+     std::unordered_multiset<X, Hash, Eq,
+       xpmr::polymorphic_allocator<X>>>::value,
+     "pmr::unordered_multiset");
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_set.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_set.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_set.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_set.cc	Fri Oct 12 12:51:29 2018
***************
*** 0 ****
--- 1,39 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <experimental/unordered_set>
+ 
+ namespace xpmr = std::experimental::pmr;
+ 
+ struct X { };
+ struct Hash { std::size_t operator()(X) const { return 0; } };
+ struct Eq { bool operator()(X, X) const { return true; } };
+ 
+ static_assert(std::is_same<xpmr::unordered_set<X>,
+     std::unordered_set<X, std::hash<X>, std::equal_to<X>,
+       xpmr::polymorphic_allocator<X>>>::value,
+     "pmr::unordered_set");
+ static_assert(std::is_same<xpmr::unordered_set<X, Hash>,
+     std::unordered_set<X, Hash, std::equal_to<X>,
+       xpmr::polymorphic_allocator<X>>>::value,
+     "pmr::unordered_set");
+ static_assert(std::is_same<xpmr::unordered_set<X, Hash, Eq>,
+     std::unordered_set<X, Hash, Eq,
+       xpmr::polymorphic_allocator<X>>>::value,
+     "pmr::unordered_set");
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc	Fri Oct 12 12:51:29 2018
***************
*** 0 ****
--- 1,28 ----
+ // Copyright (C) 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
+ // 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++14 } }
+ 
+ #include <experimental/vector>
+ 
+ namespace xpmr = std::experimental::pmr;
+ 
+ struct X { };
+ 
+ static_assert(std::is_same<xpmr::vector<X>,
+     std::vector<X, xpmr::polymorphic_allocator<X>>>::value,
+     "pmr::vector");
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc	Mon Oct 22 08:47:52 2018
***************
*** 25,31 ****
  using std::experimental::propagate_const;
  using std::unique_ptr;
  
! // { dg-error "no type" "" { target *-*-* } 162 }
  
  int main()
  {
--- 25,31 ----
  using std::experimental::propagate_const;
  using std::unique_ptr;
  
! // { dg-error "no type" "" { target *-*-* } 160 }
  
  int main()
  {
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc	Mon Oct 22 08:47:52 2018
***************
*** 25,34 ****
  using std::experimental::propagate_const;
  using std::unique_ptr;
  
! // { dg-error "no type" "" { target *-*-* } 120 }
! // { dg-error "no type" "" { target *-*-* } 127 }
! // { dg-error "no type" "" { target *-*-* } 136 }
! // { dg-error "no type" "" { target *-*-* } 145 }
  
  int main()
  {
--- 25,34 ----
  using std::experimental::propagate_const;
  using std::unique_ptr;
  
! // { dg-error "no type" "" { target *-*-* } 118 }
! // { dg-error "no type" "" { target *-*-* } 125 }
! // { dg-error "no type" "" { target *-*-* } 134 }
! // { dg-error "no type" "" { target *-*-* } 143 }
  
  int main()
  {
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc	Mon Oct 22 08:47:52 2018
***************
*** 21,29 ****
  
  using std::experimental::propagate_const;
  
! // { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 107 }
! // { dg-error "not a pointer-to-object type" "" { target *-*-* } 68 }
! // { dg-error "forming pointer to reference type" "" { target *-*-* } 189 }
! // { dg-error "forming pointer to reference type" "" { target *-*-* } 215 }
  
  propagate_const<void*> test1;
--- 21,29 ----
  
  using std::experimental::propagate_const;
  
! // { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 105 }
! // { dg-error "not a pointer-to-object type" "" { target *-*-* } 66 }
! // { dg-error "forming pointer to reference type" "" { target *-*-* } 187 }
! // { dg-error "forming pointer to reference type" "" { target *-*-* } 213 }
  
  propagate_const<void*> test1;
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc	Mon Oct 22 08:47:52 2018
***************
*** 21,26 ****
  
  using std::experimental::propagate_const;
  
! // { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 107 }
  
  propagate_const<void (*)()> test1;
--- 21,26 ----
  
  using std::experimental::propagate_const;
  
! // { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 105 }
  
  propagate_const<void (*)()> test1;
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc	Mon Oct 22 08:47:52 2018
***************
*** 21,28 ****
  
  using std::experimental::propagate_const;
  
! // { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 107 }
! // { dg-error "invalid type" "" { target *-*-* } 68 }
! // { dg-error "uninitialized reference member" "" { target *-*-* } 114 }
  
  propagate_const<int&> test1; // { dg-error "use of deleted function" }
--- 21,28 ----
  
  using std::experimental::propagate_const;
  
! // { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 105 }
! // { dg-error "invalid type" "" { target *-*-* } 66 }
! // { dg-error "uninitialized reference member" "" { target *-*-* } 112 }
  
  propagate_const<int&> test1; // { dg-error "use of deleted function" }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc gcc-7.4.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc	Mon Oct 22 08:47:52 2018
***************
*** 21,26 ****
  
  using std::experimental::propagate_const;
  
! // { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 107 }
  
  propagate_const<int[1]> test1;
--- 21,26 ----
  
  using std::experimental::propagate_const;
  
! // { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 105 }
  
  propagate_const<int[1]> test1;
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/ext/ext_pointer/1.cc gcc-7.4.0/libstdc++-v3/testsuite/ext/ext_pointer/1.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/ext/ext_pointer/1.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/ext/ext_pointer/1.cc	Fri Oct 12 12:51:34 2018
*************** void test04() {
*** 180,190 ****
--- 180,204 ----
    VERIFY(bPtr3 == aPtr);
  }
  
+ // Check that long long values can be used for pointer arithmetic.
+ void test05()
+ {
+   A a[2] = { 1, 2 };
+   A_pointer p = a;
+   A_pointer q = p + 0ull;
+   VERIFY( p == q );
+   q += 0ll;
+   VERIFY( p == q );
+   q += 1ll;
+   VERIFY( q->i == p[1ll].i );
+ }
+ 
  int main()
  {
    test01();
    test02();
    test03();
    test04();
+   test05();
    return 0;
  }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/lib/libstdc++.exp gcc-7.4.0/libstdc++-v3/testsuite/lib/libstdc++.exp
*** gcc-7.3.0/libstdc++-v3/testsuite/lib/libstdc++.exp	Fri Jan 13 14:57:33 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/lib/libstdc++.exp	Tue Oct  9 11:37:18 2018
*************** proc libstdc++_init { testfile } {
*** 239,245 ****
  
      # Default settings.
      set cxx [transform "g++"]
!     set cxxflags "-fmessage-length=0"
      set cxxpchflags ""
      set cxxvtvflags ""
      set cxxldflags ""
--- 239,245 ----
  
      # Default settings.
      set cxx [transform "g++"]
!     set cxxflags "-fmessage-length=0 -fno-show-column"
      set cxxpchflags ""
      set cxxvtvflags ""
      set cxxldflags ""
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc gcc-7.4.0/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc	Mon Apr 30 19:51:13 2018
***************
*** 1,7 ****
  // { dg-do run { target c++11 } }
  // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
  //
! // Copyright (C) 2016-2017 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,7 ----
  // { dg-do run { target c++11 } }
  // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
  //
! // 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
***************
*** 37,423 ****
  #endif
  #include <specfun_testcase.h>
  
- 
  // Test data for k=-0.90000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 2.6751587294384150e-16
  const testcase_comp_ellint_3<double>
  data001[10] =
  {
    { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000 },
!   { 2.1537868513875287, -0.90000000000000002, 0.10000000000000001 },
!   { 2.0443194576468890, -0.90000000000000002, 0.20000000000000001 },
!   { 1.9486280260314426, -0.90000000000000002, 0.29999999999999999 },
!   { 1.8641114227238349, -0.90000000000000002, 0.40000000000000002 },
!   { 1.7888013241937861, -0.90000000000000002, 0.50000000000000000 },
!   { 1.7211781128919523, -0.90000000000000002, 0.59999999999999998 },
!   { 1.6600480747670940, -0.90000000000000002, 0.69999999999999996 },
!   { 1.6044591960982202, -0.90000000000000002, 0.80000000000000004 },
!   { 1.5536420236310946, -0.90000000000000002, 0.90000000000000002 },
  };
  const double toler001 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 1.5960830388244336e-16
  const testcase_comp_ellint_3<double>
  data002[10] =
  {
!   { 1.9953027776647296, -0.80000000000000004, 0.0000000000000000 },
!   { 1.8910755418379521, -0.80000000000000004, 0.10000000000000001 },
!   { 1.8007226661734588, -0.80000000000000004, 0.20000000000000001 },
!   { 1.7214611048717301, -0.80000000000000004, 0.29999999999999999 },
!   { 1.6512267838651289, -0.80000000000000004, 0.40000000000000002 },
!   { 1.5884528947755532, -0.80000000000000004, 0.50000000000000000 },
!   { 1.5319262547427865, -0.80000000000000004, 0.59999999999999998 },
!   { 1.4806912324625332, -0.80000000000000004, 0.69999999999999996 },
!   { 1.4339837018309471, -0.80000000000000004, 0.80000000000000004 },
!   { 1.3911845406776222, -0.80000000000000004, 0.90000000000000002 },
  };
  const double toler002 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.3074070916136724e-16
  const testcase_comp_ellint_3<double>
  data003[10] =
  {
!   { 1.8456939983747236, -0.69999999999999996, 0.0000000000000000 },
!   { 1.7528050171757608, -0.69999999999999996, 0.10000000000000001 },
!   { 1.6721098780092145, -0.69999999999999996, 0.20000000000000001 },
!   { 1.6011813647733213, -0.69999999999999996, 0.29999999999999999 },
!   { 1.5382162002954762, -0.69999999999999996, 0.40000000000000002 },
!   { 1.4818433192178544, -0.69999999999999996, 0.50000000000000000 },
!   { 1.4309994736080540, -0.69999999999999996, 0.59999999999999998 },
!   { 1.3848459188329196, -0.69999999999999996, 0.69999999999999996 },
!   { 1.3427110650397531, -0.69999999999999996, 0.80000000000000004 },
!   { 1.3040500499695913, -0.69999999999999996, 0.90000000000000002 },
  };
  const double toler003 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1891472451898755e-16
  const testcase_comp_ellint_3<double>
  data004[10] =
  {
    { 1.7507538029157526, -0.59999999999999998, 0.0000000000000000 },
!   { 1.6648615773343014, -0.59999999999999998, 0.10000000000000001 },
!   { 1.5901418016279374, -0.59999999999999998, 0.20000000000000001 },
!   { 1.5243814243493585, -0.59999999999999998, 0.29999999999999999 },
!   { 1.4659345278069984, -0.59999999999999998, 0.40000000000000002 },
!   { 1.4135484285693078, -0.59999999999999998, 0.50000000000000000 },
!   { 1.3662507535812816, -0.59999999999999998, 0.59999999999999998 },
!   { 1.3232737468822813, -0.59999999999999998, 0.69999999999999996 },
!   { 1.2840021261752192, -0.59999999999999998, 0.80000000000000004 },
!   { 1.2479362973851875, -0.59999999999999998, 0.90000000000000002 },
  };
  const double toler004 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 1.7857620325589816e-16
  const testcase_comp_ellint_3<double>
  data005[10] =
  {
!   { 1.6857503548125963, -0.50000000000000000, 0.0000000000000000 },
!   { 1.6045524936084892, -0.50000000000000000, 0.10000000000000001 },
!   { 1.5338490483665983, -0.50000000000000000, 0.20000000000000001 },
!   { 1.4715681939859637, -0.50000000000000000, 0.29999999999999999 },
!   { 1.4161679518465340, -0.50000000000000000, 0.40000000000000002 },
!   { 1.3664739530045971, -0.50000000000000000, 0.50000000000000000 },
!   { 1.3215740290190876, -0.50000000000000000, 0.59999999999999998 },
!   { 1.2807475181182502, -0.50000000000000000, 0.69999999999999996 },
!   { 1.2434165408189539, -0.50000000000000000, 0.80000000000000004 },
!   { 1.2091116095504744, -0.50000000000000000, 0.90000000000000002 },
  };
  const double toler005 = 2.5000000000000020e-13;
  
! // Test data for k=-0.40000000000000002.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.1925080711125793e-16
  const testcase_comp_ellint_3<double>
  data006[10] =
  {
!   { 1.6399998658645112, -0.40000000000000002, 0.0000000000000000 },
!   { 1.5620566886683604, -0.40000000000000002, 0.10000000000000001 },
!   { 1.4941414344266770, -0.40000000000000002, 0.20000000000000001 },
!   { 1.4342789859950078, -0.40000000000000002, 0.29999999999999999 },
!   { 1.3809986210732901, -0.40000000000000002, 0.40000000000000002 },
!   { 1.3331797176377398, -0.40000000000000002, 0.50000000000000000 },
!   { 1.2899514672527024, -0.40000000000000002, 0.59999999999999998 },
!   { 1.2506255923253344, -0.40000000000000002, 0.69999999999999996 },
!   { 1.2146499565727209, -0.40000000000000002, 0.80000000000000004 },
!   { 1.1815758115929846, -0.40000000000000002, 0.90000000000000002 },
  };
  const double toler006 = 2.5000000000000020e-13;
  
! // Test data for k=-0.30000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.8209844149902043e-16
  const testcase_comp_ellint_3<double>
  data007[10] =
  {
!   { 1.6080486199305128, -0.30000000000000004, 0.0000000000000000 },
!   { 1.5323534693557528, -0.30000000000000004, 0.10000000000000001 },
!   { 1.4663658145259877, -0.30000000000000004, 0.20000000000000001 },
!   { 1.4081767433479091, -0.30000000000000004, 0.29999999999999999 },
!   { 1.3563643538969763, -0.30000000000000004, 0.40000000000000002 },
!   { 1.3098448759814962, -0.30000000000000004, 0.50000000000000000 },
!   { 1.2677758800420669, -0.30000000000000004, 0.59999999999999998 },
!   { 1.2294913236274982, -0.30000000000000004, 0.69999999999999996 },
!   { 1.1944567571590048, -0.30000000000000004, 0.80000000000000004 },
!   { 1.1622376896064914, -0.30000000000000004, 0.90000000000000002 },
  };
  const double toler007 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.8637687241174905e-16
  const testcase_comp_ellint_3<double>
  data008[10] =
  {
!   { 1.5868678474541660, -0.19999999999999996, 0.0000000000000000 },
!   { 1.5126513474261087, -0.19999999999999996, 0.10000000000000001 },
!   { 1.4479323932249564, -0.19999999999999996, 0.20000000000000001 },
!   { 1.3908453514752477, -0.19999999999999996, 0.29999999999999999 },
!   { 1.3400002519661005, -0.19999999999999996, 0.40000000000000002 },
!   { 1.2943374404397372, -0.19999999999999996, 0.50000000000000000 },
!   { 1.2530330675914556, -0.19999999999999996, 0.59999999999999998 },
!   { 1.2154356555075863, -0.19999999999999996, 0.69999999999999996 },
!   { 1.1810223448909909, -0.19999999999999996, 0.80000000000000004 },
!   { 1.1493679916141861, -0.19999999999999996, 0.90000000000000002 },
  };
  const double toler008 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.8887517676790089e-16
  const testcase_comp_ellint_3<double>
  data009[10] =
  {
!   { 1.5747455615173562, -0.099999999999999978, 0.0000000000000000 },
!   { 1.5013711111199950, -0.099999999999999978, 0.10000000000000001 },
!   { 1.4373749386463430, -0.099999999999999978, 0.20000000000000001 },
!   { 1.3809159606704959, -0.099999999999999978, 0.29999999999999999 },
!   { 1.3306223265207477, -0.099999999999999978, 0.40000000000000002 },
!   { 1.2854480708580160, -0.099999999999999978, 0.50000000000000000 },
!   { 1.2445798942989255, -0.099999999999999978, 0.59999999999999998 },
!   { 1.2073745911083185, -0.099999999999999978, 0.69999999999999996 },
!   { 1.1733158866987732, -0.099999999999999978, 0.80000000000000004 },
!   { 1.1419839485283374, -0.099999999999999978, 0.90000000000000002 },
  };
  const double toler009 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 1.6725702444488137e-16
  const testcase_comp_ellint_3<double>
  data010[10] =
  {
    { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000 },
!   { 1.4976955329233277, 0.0000000000000000, 0.10000000000000001 },
!   { 1.4339343023863691, 0.0000000000000000, 0.20000000000000001 },
!   { 1.3776795151134889, 0.0000000000000000, 0.29999999999999999 },
!   { 1.3275651989026320, 0.0000000000000000, 0.40000000000000002 },
!   { 1.2825498301618641, 0.0000000000000000, 0.50000000000000000 },
!   { 1.2418235332245127, 0.0000000000000000, 0.59999999999999998 },
!   { 1.2047457872617382, 0.0000000000000000, 0.69999999999999996 },
!   { 1.1708024551734544, 0.0000000000000000, 0.80000000000000004 },
!   { 1.1395754288497419, 0.0000000000000000, 0.90000000000000002 },
  };
  const double toler010 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.8887517676790089e-16
  const testcase_comp_ellint_3<double>
  data011[10] =
  {
!   { 1.5747455615173562, 0.10000000000000009, 0.0000000000000000 },
!   { 1.5013711111199950, 0.10000000000000009, 0.10000000000000001 },
!   { 1.4373749386463430, 0.10000000000000009, 0.20000000000000001 },
!   { 1.3809159606704959, 0.10000000000000009, 0.29999999999999999 },
!   { 1.3306223265207477, 0.10000000000000009, 0.40000000000000002 },
!   { 1.2854480708580160, 0.10000000000000009, 0.50000000000000000 },
!   { 1.2445798942989255, 0.10000000000000009, 0.59999999999999998 },
!   { 1.2073745911083185, 0.10000000000000009, 0.69999999999999996 },
!   { 1.1733158866987732, 0.10000000000000009, 0.80000000000000004 },
!   { 1.1419839485283374, 0.10000000000000009, 0.90000000000000002 },
  };
  const double toler011 = 2.5000000000000020e-13;
  
! // Test data for k=0.19999999999999996.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.8637687241174905e-16
  const testcase_comp_ellint_3<double>
  data012[10] =
  {
!   { 1.5868678474541660, 0.19999999999999996, 0.0000000000000000 },
!   { 1.5126513474261087, 0.19999999999999996, 0.10000000000000001 },
!   { 1.4479323932249564, 0.19999999999999996, 0.20000000000000001 },
!   { 1.3908453514752477, 0.19999999999999996, 0.29999999999999999 },
!   { 1.3400002519661005, 0.19999999999999996, 0.40000000000000002 },
!   { 1.2943374404397372, 0.19999999999999996, 0.50000000000000000 },
!   { 1.2530330675914556, 0.19999999999999996, 0.59999999999999998 },
!   { 1.2154356555075863, 0.19999999999999996, 0.69999999999999996 },
!   { 1.1810223448909909, 0.19999999999999996, 0.80000000000000004 },
!   { 1.1493679916141861, 0.19999999999999996, 0.90000000000000002 },
  };
  const double toler012 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.8209844149902043e-16
  const testcase_comp_ellint_3<double>
  data013[10] =
  {
    { 1.6080486199305128, 0.30000000000000004, 0.0000000000000000 },
!   { 1.5323534693557528, 0.30000000000000004, 0.10000000000000001 },
!   { 1.4663658145259877, 0.30000000000000004, 0.20000000000000001 },
!   { 1.4081767433479091, 0.30000000000000004, 0.29999999999999999 },
!   { 1.3563643538969763, 0.30000000000000004, 0.40000000000000002 },
!   { 1.3098448759814962, 0.30000000000000004, 0.50000000000000000 },
!   { 1.2677758800420669, 0.30000000000000004, 0.59999999999999998 },
!   { 1.2294913236274982, 0.30000000000000004, 0.69999999999999996 },
!   { 1.1944567571590048, 0.30000000000000004, 0.80000000000000004 },
!   { 1.1622376896064914, 0.30000000000000004, 0.90000000000000002 },
  };
  const double toler013 = 2.5000000000000020e-13;
  
! // Test data for k=0.39999999999999991.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.1925080711125793e-16
  const testcase_comp_ellint_3<double>
  data014[10] =
  {
!   { 1.6399998658645112, 0.39999999999999991, 0.0000000000000000 },
!   { 1.5620566886683604, 0.39999999999999991, 0.10000000000000001 },
!   { 1.4941414344266770, 0.39999999999999991, 0.20000000000000001 },
!   { 1.4342789859950078, 0.39999999999999991, 0.29999999999999999 },
!   { 1.3809986210732901, 0.39999999999999991, 0.40000000000000002 },
!   { 1.3331797176377398, 0.39999999999999991, 0.50000000000000000 },
!   { 1.2899514672527024, 0.39999999999999991, 0.59999999999999998 },
!   { 1.2506255923253344, 0.39999999999999991, 0.69999999999999996 },
!   { 1.2146499565727209, 0.39999999999999991, 0.80000000000000004 },
!   { 1.1815758115929846, 0.39999999999999991, 0.90000000000000002 },
  };
  const double toler014 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 1.7857620325589816e-16
  const testcase_comp_ellint_3<double>
  data015[10] =
  {
!   { 1.6857503548125963, 0.50000000000000000, 0.0000000000000000 },
!   { 1.6045524936084892, 0.50000000000000000, 0.10000000000000001 },
!   { 1.5338490483665983, 0.50000000000000000, 0.20000000000000001 },
!   { 1.4715681939859637, 0.50000000000000000, 0.29999999999999999 },
!   { 1.4161679518465340, 0.50000000000000000, 0.40000000000000002 },
!   { 1.3664739530045971, 0.50000000000000000, 0.50000000000000000 },
!   { 1.3215740290190876, 0.50000000000000000, 0.59999999999999998 },
!   { 1.2807475181182502, 0.50000000000000000, 0.69999999999999996 },
!   { 1.2434165408189539, 0.50000000000000000, 0.80000000000000004 },
!   { 1.2091116095504744, 0.50000000000000000, 0.90000000000000002 },
  };
  const double toler015 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 4.7124937590522226e-16
  const testcase_comp_ellint_3<double>
  data016[10] =
  {
    { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000 },
!   { 1.6648615773343014, 0.60000000000000009, 0.10000000000000001 },
!   { 1.5901418016279374, 0.60000000000000009, 0.20000000000000001 },
!   { 1.5243814243493585, 0.60000000000000009, 0.29999999999999999 },
!   { 1.4659345278069984, 0.60000000000000009, 0.40000000000000002 },
!   { 1.4135484285693078, 0.60000000000000009, 0.50000000000000000 },
!   { 1.3662507535812816, 0.60000000000000009, 0.59999999999999998 },
!   { 1.3232737468822813, 0.60000000000000009, 0.69999999999999996 },
!   { 1.2840021261752192, 0.60000000000000009, 0.80000000000000004 },
!   { 1.2479362973851873, 0.60000000000000009, 0.90000000000000002 },
  };
  const double toler016 = 2.5000000000000020e-13;
  
! // Test data for k=0.69999999999999996.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.3074070916136724e-16
  const testcase_comp_ellint_3<double>
  data017[10] =
  {
!   { 1.8456939983747236, 0.69999999999999996, 0.0000000000000000 },
!   { 1.7528050171757608, 0.69999999999999996, 0.10000000000000001 },
!   { 1.6721098780092145, 0.69999999999999996, 0.20000000000000001 },
!   { 1.6011813647733213, 0.69999999999999996, 0.29999999999999999 },
!   { 1.5382162002954762, 0.69999999999999996, 0.40000000000000002 },
!   { 1.4818433192178544, 0.69999999999999996, 0.50000000000000000 },
!   { 1.4309994736080540, 0.69999999999999996, 0.59999999999999998 },
!   { 1.3848459188329196, 0.69999999999999996, 0.69999999999999996 },
!   { 1.3427110650397531, 0.69999999999999996, 0.80000000000000004 },
!   { 1.3040500499695913, 0.69999999999999996, 0.90000000000000002 },
  };
  const double toler017 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 1.5960830388244336e-16
  const testcase_comp_ellint_3<double>
  data018[10] =
  {
!   { 1.9953027776647296, 0.80000000000000004, 0.0000000000000000 },
!   { 1.8910755418379521, 0.80000000000000004, 0.10000000000000001 },
!   { 1.8007226661734588, 0.80000000000000004, 0.20000000000000001 },
!   { 1.7214611048717301, 0.80000000000000004, 0.29999999999999999 },
!   { 1.6512267838651289, 0.80000000000000004, 0.40000000000000002 },
!   { 1.5884528947755532, 0.80000000000000004, 0.50000000000000000 },
!   { 1.5319262547427865, 0.80000000000000004, 0.59999999999999998 },
!   { 1.4806912324625332, 0.80000000000000004, 0.69999999999999996 },
!   { 1.4339837018309471, 0.80000000000000004, 0.80000000000000004 },
!   { 1.3911845406776222, 0.80000000000000004, 0.90000000000000002 },
  };
  const double toler018 = 2.5000000000000020e-13;
  
! // Test data for k=0.89999999999999991.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 2.6751587294384150e-16
  const testcase_comp_ellint_3<double>
  data019[10] =
  {
!   { 2.2805491384227703, 0.89999999999999991, 0.0000000000000000 },
!   { 2.1537868513875287, 0.89999999999999991, 0.10000000000000001 },
!   { 2.0443194576468895, 0.89999999999999991, 0.20000000000000001 },
!   { 1.9486280260314426, 0.89999999999999991, 0.29999999999999999 },
!   { 1.8641114227238351, 0.89999999999999991, 0.40000000000000002 },
!   { 1.7888013241937863, 0.89999999999999991, 0.50000000000000000 },
!   { 1.7211781128919525, 0.89999999999999991, 0.59999999999999998 },
!   { 1.6600480747670940, 0.89999999999999991, 0.69999999999999996 },
!   { 1.6044591960982202, 0.89999999999999991, 0.80000000000000004 },
!   { 1.5536420236310948, 0.89999999999999991, 0.90000000000000002 },
  };
  const double toler019 = 2.5000000000000020e-13;
  
! template<typename Tp, unsigned int Num>
    void
!   test(const testcase_comp_ellint_3<Tp> (&data)[Num], Tp toler)
    {
!     const Tp eps = std::numeric_limits<Tp>::epsilon();
!     Tp max_abs_diff = -Tp(1);
!     Tp max_abs_frac = -Tp(1);
      unsigned int num_datum = Num;
      for (unsigned int i = 0; i < num_datum; ++i)
        {
! 	const Tp f = std::comp_ellint_3(data[i].k, data[i].nu);
! 	const Tp f0 = data[i].f0;
! 	const Tp diff = f - f0;
  	if (std::abs(diff) > max_abs_diff)
  	  max_abs_diff = std::abs(diff);
! 	if (std::abs(f0) > Tp(10) * eps
! 	 && std::abs(f) > Tp(10) * eps)
  	  {
! 	    const Tp frac = diff / f0;
  	    if (std::abs(frac) > max_abs_frac)
  	      max_abs_frac = std::abs(frac);
  	  }
--- 37,480 ----
  #endif
  #include <specfun_testcase.h>
  
  // Test data for k=-0.90000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 5
! // max(|f - f_Boost| / |f_Boost|): 1.2838262090802751e-16
! // mean(f - f_Boost): 4.4408920985006264e-17
! // variance(f - f_Boost): 2.4347558803117648e-34
! // stddev(f - f_Boost): 1.5603704304785339e-17
  const testcase_comp_ellint_3<double>
  data001[10] =
  {
    { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000 },
!   { 2.4295011187834885, -0.90000000000000002, 0.10000000000000001 },
!   { 2.6076835743348412, -0.90000000000000002, 0.20000000000000001 },
!   { 2.8256506968858512, -0.90000000000000002, 0.30000000000000004 },
!   { 3.1000689868578619, -0.90000000000000002, 0.40000000000000002 },
!   { 3.4591069002104677, -0.90000000000000002, 0.50000000000000000 },
!   { 3.9549939883570229, -0.90000000000000002, 0.60000000000000009 },
!   { 4.6985482312992435, -0.90000000000000002, 0.70000000000000007 },
!   { 5.9820740813645710, -0.90000000000000002, 0.80000000000000004 },
!   { 8.9942562031858699, -0.90000000000000002, 0.90000000000000002 },
  };
  const double toler001 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.1949393471095187e-16
! // mean(f - f_Boost): 9.5479180117763459e-16
! // variance(f - f_Boost): 5.4782007307014711e-34
! // stddev(f - f_Boost): 2.3405556457178006e-17
  const testcase_comp_ellint_3<double>
  data002[10] =
  {
!   { 1.9953027776647294, -0.80000000000000004, 0.0000000000000000 },
!   { 2.1172616484005085, -0.80000000000000004, 0.10000000000000001 },
!   { 2.2624789434186798, -0.80000000000000004, 0.20000000000000001 },
!   { 2.4392042002725698, -0.80000000000000004, 0.30000000000000004 },
!   { 2.6604037035529728, -0.80000000000000004, 0.40000000000000002 },
!   { 2.9478781158239751, -0.80000000000000004, 0.50000000000000000 },
!   { 3.3418121892288055, -0.80000000000000004, 0.60000000000000009 },
!   { 3.9268876980046397, -0.80000000000000004, 0.70000000000000007 },
!   { 4.9246422058196071, -0.80000000000000004, 0.80000000000000004 },
!   { 7.2263259298637132, -0.80000000000000004, 0.90000000000000002 },
  };
  const double toler002 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 3
! // max(|f - f_Boost| / |f_Boost|): 1.9832236886714888e-16
! // mean(f - f_Boost): -1.5543122344752191e-16
! // variance(f - f_Boost): 2.9825759533819119e-33
! // stddev(f - f_Boost): 5.4612965066748680e-17
  const testcase_comp_ellint_3<double>
  data003[10] =
  {
!   { 1.8456939983747234, -0.69999999999999996, 0.0000000000000000 },
!   { 1.9541347343119564, -0.69999999999999996, 0.10000000000000001 },
!   { 2.0829290325820202, -0.69999999999999996, 0.20000000000000001 },
!   { 2.2392290510988535, -0.69999999999999996, 0.30000000000000004 },
!   { 2.4342502915307880, -0.69999999999999996, 0.40000000000000002 },
!   { 2.6868019968236996, -0.69999999999999996, 0.50000000000000000 },
!   { 3.0314573496746742, -0.69999999999999996, 0.60000000000000009 },
!   { 3.5408408771788564, -0.69999999999999996, 0.70000000000000007 },
!   { 4.4042405729076961, -0.69999999999999996, 0.80000000000000004 },
!   { 6.3796094177887754, -0.69999999999999996, 0.90000000000000002 },
  };
  const double toler003 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 2
! // max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16
! // mean(f - f_Boost): -1.9984014443252818e-16
! // variance(f - f_Boost): 4.9303806576313241e-33
! // stddev(f - f_Boost): 7.0216669371534022e-17
  const testcase_comp_ellint_3<double>
  data004[10] =
  {
    { 1.7507538029157526, -0.59999999999999998, 0.0000000000000000 },
!   { 1.8508766487100685, -0.59999999999999998, 0.10000000000000001 },
!   { 1.9695980282802217, -0.59999999999999998, 0.20000000000000001 },
!   { 2.1134154405060599, -0.59999999999999998, 0.30000000000000004 },
!   { 2.2925036420985130, -0.59999999999999998, 0.40000000000000002 },
!   { 2.5239007084492711, -0.59999999999999998, 0.50000000000000000 },
!   { 2.8388723099514972, -0.59999999999999998, 0.60000000000000009 },
!   { 3.3029735898397159, -0.59999999999999998, 0.70000000000000007 },
!   { 4.0867036409261832, -0.59999999999999998, 0.80000000000000004 },
!   { 5.8709993116265604, -0.59999999999999998, 0.90000000000000002 },
  };
  const double toler004 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 3
! // max(|f - f_Boost| / |f_Boost|): 2.1900131385114407e-16
! // mean(f - f_Boost): 2.4424906541753446e-16
! // variance(f - f_Boost): 7.3651365379430888e-33
! // stddev(f - f_Boost): 8.5820373676319358e-17
  const testcase_comp_ellint_3<double>
  data005[10] =
  {
!   { 1.6857503548125961, -0.50000000000000000, 0.0000000000000000 },
!   { 1.7803034946545482, -0.50000000000000000, 0.10000000000000001 },
!   { 1.8922947612264021, -0.50000000000000000, 0.20000000000000001 },
!   { 2.0277924458111314, -0.50000000000000000, 0.30000000000000004 },
!   { 2.1962905366178065, -0.50000000000000000, 0.40000000000000002 },
!   { 2.4136715042011945, -0.50000000000000000, 0.50000000000000000 },
!   { 2.7090491861753558, -0.50000000000000000, 0.60000000000000009 },
!   { 3.1433945297859229, -0.50000000000000000, 0.70000000000000007 },
!   { 3.8750701888108070, -0.50000000000000000, 0.80000000000000004 },
!   { 5.5355132096026463, -0.50000000000000000, 0.90000000000000002 },
  };
  const double toler005 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.1718164615986397e-16
! // mean(f - f_Boost): 6.2172489379008762e-16
! // variance(f - f_Boost): 1.6458949750907531e-31
! // stddev(f - f_Boost): 4.0569631192441877e-16
  const testcase_comp_ellint_3<double>
  data006[10] =
  {
!   { 1.6399998658645112, -0.39999999999999991, 0.0000000000000000 },
!   { 1.7306968836847190, -0.39999999999999991, 0.10000000000000001 },
!   { 1.8380358826317627, -0.39999999999999991, 0.20000000000000001 },
!   { 1.9677924132520139, -0.39999999999999991, 0.30000000000000004 },
!   { 2.1289968719280026, -0.39999999999999991, 0.40000000000000002 },
!   { 2.3367461373176512, -0.39999999999999991, 0.50000000000000000 },
!   { 2.6186940209850191, -0.39999999999999991, 0.60000000000000009 },
!   { 3.0327078743873246, -0.39999999999999991, 0.70000000000000007 },
!   { 3.7289548002199902, -0.39999999999999991, 0.80000000000000004 },
!   { 5.3055535102872513, -0.39999999999999991, 0.90000000000000002 },
  };
  const double toler006 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.9274792319434433e-16
! // mean(f - f_Boost): 6.2172489379008762e-16
! // variance(f - f_Boost): 8.7651211691223537e-33
! // stddev(f - f_Boost): 9.3622225828712025e-17
  const testcase_comp_ellint_3<double>
  data007[10] =
  {
!   { 1.6080486199305128, -0.29999999999999993, 0.0000000000000000 },
!   { 1.6960848815118226, -0.29999999999999993, 0.10000000000000001 },
!   { 1.8002173372290500, -0.29999999999999993, 0.20000000000000001 },
!   { 1.9260216862473254, -0.29999999999999993, 0.30000000000000004 },
!   { 2.0822121773175533, -0.29999999999999993, 0.40000000000000002 },
!   { 2.2833505881933971, -0.29999999999999993, 0.50000000000000000 },
!   { 2.5560975528589065, -0.29999999999999993, 0.60000000000000009 },
!   { 2.9562123549913877, -0.29999999999999993, 0.70000000000000007 },
!   { 3.6283050484567170, -0.29999999999999993, 0.80000000000000004 },
!   { 5.1479514944016795, -0.29999999999999993, 0.90000000000000002 },
  };
  const double toler007 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 1.9753938705764407e-16
! // mean(f - f_Boost): 3.1086244689504381e-16
! // variance(f - f_Boost): 4.1147374377268827e-32
! // stddev(f - f_Boost): 2.0284815596220939e-16
  const testcase_comp_ellint_3<double>
  data008[10] =
  {
!   { 1.5868678474541662, -0.19999999999999996, 0.0000000000000000 },
!   { 1.6731552050562593, -0.19999999999999996, 0.10000000000000001 },
!   { 1.7751816279738935, -0.19999999999999996, 0.20000000000000001 },
!   { 1.8983924169967101, -0.19999999999999996, 0.30000000000000004 },
!   { 2.0512956926676806, -0.19999999999999996, 0.40000000000000002 },
!   { 2.2481046259421302, -0.19999999999999996, 0.50000000000000000 },
!   { 2.5148333891629315, -0.19999999999999996, 0.60000000000000009 },
!   { 2.9058704854500967, -0.19999999999999996, 0.70000000000000007 },
!   { 3.5622166386422633, -0.19999999999999996, 0.80000000000000004 },
!   { 5.0448269356200370, -0.19999999999999996, 0.90000000000000002 },
  };
  const double toler008 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 5
! // max(|f - f_Boost| / |f_Boost|): 1.9932308021417639e-16
! // mean(f - f_Boost): 0.0000000000000000
! // variance(f - f_Boost): 6.8368087769470551e-64
! // stddev(f - f_Boost): 2.6147291976315738e-32
  const testcase_comp_ellint_3<double>
  data009[10] =
  {
!   { 1.5747455615173560, -0.099999999999999978, 0.0000000000000000 },
!   { 1.6600374067558428, -0.099999999999999978, 0.10000000000000001 },
!   { 1.7608656115083421, -0.099999999999999978, 0.20000000000000001 },
!   { 1.8826015946315438, -0.099999999999999978, 0.30000000000000004 },
!   { 2.0336367403076760, -0.099999999999999978, 0.40000000000000002 },
!   { 2.2279868912966849, -0.099999999999999978, 0.50000000000000000 },
!   { 2.4913004919173827, -0.099999999999999978, 0.60000000000000009 },
!   { 2.8771910188009744, -0.099999999999999978, 0.70000000000000007 },
!   { 3.5246199613295617, -0.099999999999999978, 0.80000000000000004 },
!   { 4.9862890417305508, -0.099999999999999978, 0.90000000000000002 },
  };
  const double toler009 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 2.1899085000907084e-16
! // mean(f - f_Boost): -2.2204460492503131e-16
! // variance(f - f_Boost): 5.4782007307014711e-32
! // stddev(f - f_Boost): 2.3405556457178008e-16
  const testcase_comp_ellint_3<double>
  data010[10] =
  {
    { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000 },
!   { 1.6557647109660170, 0.0000000000000000, 0.10000000000000001 },
!   { 1.7562036827601817, 0.0000000000000000, 0.20000000000000001 },
!   { 1.8774607092226381, 0.0000000000000000, 0.30000000000000004 },
!   { 2.0278893379868062, 0.0000000000000000, 0.40000000000000002 },
!   { 2.2214414690791831, 0.0000000000000000, 0.50000000000000000 },
!   { 2.4836470664490258, 0.0000000000000000, 0.60000000000000009 },
!   { 2.8678686047727386, 0.0000000000000000, 0.70000000000000007 },
!   { 3.5124073655203634, 0.0000000000000000, 0.80000000000000004 },
!   { 4.9672941328980516, 0.0000000000000000, 0.90000000000000002 },
  };
  const double toler010 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 5
! // max(|f - f_Boost| / |f_Boost|): 1.9932308021417639e-16
! // mean(f - f_Boost): -2.2204460492503132e-17
! // variance(f - f_Boost): 6.0868897007794120e-35
! // stddev(f - f_Boost): 7.8018521523926693e-18
  const testcase_comp_ellint_3<double>
  data011[10] =
  {
!   { 1.5747455615173560, 0.10000000000000009, 0.0000000000000000 },
!   { 1.6600374067558428, 0.10000000000000009, 0.10000000000000001 },
!   { 1.7608656115083421, 0.10000000000000009, 0.20000000000000001 },
!   { 1.8826015946315440, 0.10000000000000009, 0.30000000000000004 },
!   { 2.0336367403076760, 0.10000000000000009, 0.40000000000000002 },
!   { 2.2279868912966849, 0.10000000000000009, 0.50000000000000000 },
!   { 2.4913004919173827, 0.10000000000000009, 0.60000000000000009 },
!   { 2.8771910188009744, 0.10000000000000009, 0.70000000000000007 },
!   { 3.5246199613295617, 0.10000000000000009, 0.80000000000000004 },
!   { 4.9862890417305508, 0.10000000000000009, 0.90000000000000002 },
  };
  const double toler011 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 1.9753938705764407e-16
! // mean(f - f_Boost): 3.1086244689504381e-16
! // variance(f - f_Boost): 4.1147374377268827e-32
! // stddev(f - f_Boost): 2.0284815596220939e-16
  const testcase_comp_ellint_3<double>
  data012[10] =
  {
!   { 1.5868678474541662, 0.20000000000000018, 0.0000000000000000 },
!   { 1.6731552050562593, 0.20000000000000018, 0.10000000000000001 },
!   { 1.7751816279738935, 0.20000000000000018, 0.20000000000000001 },
!   { 1.8983924169967101, 0.20000000000000018, 0.30000000000000004 },
!   { 2.0512956926676806, 0.20000000000000018, 0.40000000000000002 },
!   { 2.2481046259421302, 0.20000000000000018, 0.50000000000000000 },
!   { 2.5148333891629315, 0.20000000000000018, 0.60000000000000009 },
!   { 2.9058704854500967, 0.20000000000000018, 0.70000000000000007 },
!   { 3.5622166386422633, 0.20000000000000018, 0.80000000000000004 },
!   { 5.0448269356200370, 0.20000000000000018, 0.90000000000000002 },
  };
  const double toler012 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.4585997630846713e-16
! // mean(f - f_Boost): 5.1070259132757197e-16
! // variance(f - f_Boost): 1.7591111235252501e-32
! // stddev(f - f_Boost): 1.3263148659067538e-16
  const testcase_comp_ellint_3<double>
  data013[10] =
  {
    { 1.6080486199305128, 0.30000000000000004, 0.0000000000000000 },
!   { 1.6960848815118228, 0.30000000000000004, 0.10000000000000001 },
!   { 1.8002173372290500, 0.30000000000000004, 0.20000000000000001 },
!   { 1.9260216862473254, 0.30000000000000004, 0.30000000000000004 },
!   { 2.0822121773175533, 0.30000000000000004, 0.40000000000000002 },
!   { 2.2833505881933975, 0.30000000000000004, 0.50000000000000000 },
!   { 2.5560975528589065, 0.30000000000000004, 0.60000000000000009 },
!   { 2.9562123549913877, 0.30000000000000004, 0.70000000000000007 },
!   { 3.6283050484567174, 0.30000000000000004, 0.80000000000000004 },
!   { 5.1479514944016795, 0.30000000000000004, 0.90000000000000002 },
  };
  const double toler013 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013.
! // max(|f - f_Boost|): 2.6645352591003757e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.7696531428672557e-16
! // mean(f - f_Boost): 1.1990408665951691e-15
! // variance(f - f_Boost): 2.6514491536595121e-31
! // stddev(f - f_Boost): 5.1492224205791612e-16
  const testcase_comp_ellint_3<double>
  data014[10] =
  {
!   { 1.6399998658645112, 0.40000000000000013, 0.0000000000000000 },
!   { 1.7306968836847190, 0.40000000000000013, 0.10000000000000001 },
!   { 1.8380358826317629, 0.40000000000000013, 0.20000000000000001 },
!   { 1.9677924132520141, 0.40000000000000013, 0.30000000000000004 },
!   { 2.1289968719280030, 0.40000000000000013, 0.40000000000000002 },
!   { 2.3367461373176512, 0.40000000000000013, 0.50000000000000000 },
!   { 2.6186940209850196, 0.40000000000000013, 0.60000000000000009 },
!   { 3.0327078743873246, 0.40000000000000013, 0.70000000000000007 },
!   { 3.7289548002199906, 0.40000000000000013, 0.80000000000000004 },
!   { 5.3055535102872522, 0.40000000000000013, 0.90000000000000002 },
  };
  const double toler014 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 3
! // max(|f - f_Boost| / |f_Boost|): 2.1900131385114407e-16
! // mean(f - f_Boost): 2.4424906541753446e-16
! // variance(f - f_Boost): 7.3651365379430888e-33
! // stddev(f - f_Boost): 8.5820373676319358e-17
  const testcase_comp_ellint_3<double>
  data015[10] =
  {
!   { 1.6857503548125961, 0.50000000000000000, 0.0000000000000000 },
!   { 1.7803034946545482, 0.50000000000000000, 0.10000000000000001 },
!   { 1.8922947612264021, 0.50000000000000000, 0.20000000000000001 },
!   { 2.0277924458111314, 0.50000000000000000, 0.30000000000000004 },
!   { 2.1962905366178065, 0.50000000000000000, 0.40000000000000002 },
!   { 2.4136715042011945, 0.50000000000000000, 0.50000000000000000 },
!   { 2.7090491861753558, 0.50000000000000000, 0.60000000000000009 },
!   { 3.1433945297859229, 0.50000000000000000, 0.70000000000000007 },
!   { 3.8750701888108070, 0.50000000000000000, 0.80000000000000004 },
!   { 5.5355132096026463, 0.50000000000000000, 0.90000000000000002 },
  };
  const double toler015 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 2
! // max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16
! // mean(f - f_Boost): -2.2204460492503131e-16
! // variance(f - f_Boost): 6.0868897007794117e-33
! // stddev(f - f_Boost): 7.8018521523926690e-17
  const testcase_comp_ellint_3<double>
  data016[10] =
  {
    { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000 },
!   { 1.8508766487100687, 0.60000000000000009, 0.10000000000000001 },
!   { 1.9695980282802217, 0.60000000000000009, 0.20000000000000001 },
!   { 2.1134154405060599, 0.60000000000000009, 0.30000000000000004 },
!   { 2.2925036420985130, 0.60000000000000009, 0.40000000000000002 },
!   { 2.5239007084492711, 0.60000000000000009, 0.50000000000000000 },
!   { 2.8388723099514976, 0.60000000000000009, 0.60000000000000009 },
!   { 3.3029735898397159, 0.60000000000000009, 0.70000000000000007 },
!   { 4.0867036409261832, 0.60000000000000009, 0.80000000000000004 },
!   { 5.8709993116265613, 0.60000000000000009, 0.90000000000000002 },
  };
  const double toler016 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 2.9298727220933567e-16
! // mean(f - f_Boost): 4.8849813083506892e-16
! // variance(f - f_Boost): 2.0476296953421943e-31
! // stddev(f - f_Boost): 4.5250742483877478e-16
  const testcase_comp_ellint_3<double>
  data017[10] =
  {
!   { 1.8456939983747238, 0.70000000000000018, 0.0000000000000000 },
!   { 1.9541347343119566, 0.70000000000000018, 0.10000000000000001 },
!   { 2.0829290325820207, 0.70000000000000018, 0.20000000000000001 },
!   { 2.2392290510988540, 0.70000000000000018, 0.30000000000000004 },
!   { 2.4342502915307880, 0.70000000000000018, 0.40000000000000002 },
!   { 2.6868019968237000, 0.70000000000000018, 0.50000000000000000 },
!   { 3.0314573496746746, 0.70000000000000018, 0.60000000000000009 },
!   { 3.5408408771788569, 0.70000000000000018, 0.70000000000000007 },
!   { 4.4042405729076970, 0.70000000000000018, 0.80000000000000004 },
!   { 6.3796094177887763, 0.70000000000000018, 0.90000000000000002 },
  };
  const double toler017 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.1949393471095187e-16
! // mean(f - f_Boost): 9.5479180117763459e-16
! // variance(f - f_Boost): 5.4782007307014711e-34
! // stddev(f - f_Boost): 2.3405556457178006e-17
  const testcase_comp_ellint_3<double>
  data018[10] =
  {
!   { 1.9953027776647294, 0.80000000000000004, 0.0000000000000000 },
!   { 2.1172616484005085, 0.80000000000000004, 0.10000000000000001 },
!   { 2.2624789434186798, 0.80000000000000004, 0.20000000000000001 },
!   { 2.4392042002725698, 0.80000000000000004, 0.30000000000000004 },
!   { 2.6604037035529728, 0.80000000000000004, 0.40000000000000002 },
!   { 2.9478781158239751, 0.80000000000000004, 0.50000000000000000 },
!   { 3.3418121892288055, 0.80000000000000004, 0.60000000000000009 },
!   { 3.9268876980046397, 0.80000000000000004, 0.70000000000000007 },
!   { 4.9246422058196071, 0.80000000000000004, 0.80000000000000004 },
!   { 7.2263259298637132, 0.80000000000000004, 0.90000000000000002 },
  };
  const double toler018 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 3
! // max(|f - f_Boost| / |f_Boost|): 1.5716352001310461e-16
! // mean(f - f_Boost): 4.4408920985006264e-17
! // variance(f - f_Boost): 2.4347558803117648e-34
! // stddev(f - f_Boost): 1.5603704304785339e-17
  const testcase_comp_ellint_3<double>
  data019[10] =
  {
!   { 2.2805491384227707, 0.90000000000000013, 0.0000000000000000 },
!   { 2.4295011187834890, 0.90000000000000013, 0.10000000000000001 },
!   { 2.6076835743348421, 0.90000000000000013, 0.20000000000000001 },
!   { 2.8256506968858521, 0.90000000000000013, 0.30000000000000004 },
!   { 3.1000689868578628, 0.90000000000000013, 0.40000000000000002 },
!   { 3.4591069002104686, 0.90000000000000013, 0.50000000000000000 },
!   { 3.9549939883570242, 0.90000000000000013, 0.60000000000000009 },
!   { 4.6985482312992453, 0.90000000000000013, 0.70000000000000007 },
!   { 5.9820740813645727, 0.90000000000000013, 0.80000000000000004 },
!   { 8.9942562031858735, 0.90000000000000013, 0.90000000000000002 },
  };
  const double toler019 = 2.5000000000000020e-13;
  
! template<typename Ret, unsigned int Num>
    void
!   test(const testcase_comp_ellint_3<Ret> (&data)[Num], Ret toler)
    {
!     bool test __attribute__((unused)) = true;
!     const Ret eps = std::numeric_limits<Ret>::epsilon();
!     Ret max_abs_diff = -Ret(1);
!     Ret max_abs_frac = -Ret(1);
      unsigned int num_datum = Num;
      for (unsigned int i = 0; i < num_datum; ++i)
        {
! 	const Ret f = std::comp_ellint_3(data[i].k, data[i].nu);
! 	const Ret f0 = data[i].f0;
! 	const Ret diff = f - f0;
  	if (std::abs(diff) > max_abs_diff)
  	  max_abs_diff = std::abs(diff);
! 	if (std::abs(f0) > Ret(10) * eps
! 	 && std::abs(f) > Ret(10) * eps)
  	  {
! 	    const Ret frac = diff / f0;
  	    if (std::abs(frac) > max_abs_frac)
  	      max_abs_frac = std::abs(frac);
  	  }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc gcc-7.4.0/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc	Mon Apr 30 19:51:13 2018
***************
*** 0 ****
--- 1,24 ----
+ // { dg-do run { target c++11 } }
+ // { dg-require-c-std "" }
+ // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
+ // { dg-add-options ieee }
+ 
+ #include <cmath>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   double Pi1 = std::comp_ellint_3(0.75, 0.0);
+   VERIFY(std::abs(Pi1 - 1.91099) < 0.00001);
+ 
+   double Pi2 = std::comp_ellint_3(0.75, 0.5);
+   VERIFY(std::abs(Pi2 - 2.80011) < 0.00001);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc gcc-7.4.0/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc	Mon Apr 30 19:51:13 2018
***************
*** 1,7 ****
  // { dg-do run { target c++11 } }
  // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
  //
! // Copyright (C) 2016-2017 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,7 ----
  // { dg-do run { target c++11 } }
  // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
  //
! // 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
***************
*** 37,66 ****
  #endif
  #include <specfun_testcase.h>
  
- 
  // Test data for k=-0.90000000000000002, nu=0.0000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 2.9686139313362077e-16
  const testcase_ellint_3<double>
  data001[10] =
  {
    { 0.0000000000000000, -0.90000000000000002, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17525427376115024, -0.90000000000000002, 0.0000000000000000, 
  	  0.17453292519943295 },
    { 0.35492464591297446, -0.90000000000000002, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.54388221416157112, -0.90000000000000002, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.74797400423532490, -0.90000000000000002, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.97463898451966458, -0.90000000000000002, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.2334463254523440, -0.90000000000000002, 0.0000000000000000, 
  	  1.0471975511965976 },
    { 1.5355247765594913, -0.90000000000000002, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.8882928567775121, -0.90000000000000002, 0.0000000000000000, 
  	  1.3962634015954636 },
    { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000, 
  	  1.5707963267948966 },
--- 37,68 ----
  #endif
  #include <specfun_testcase.h>
  
  // Test data for k=-0.90000000000000002, nu=0.0000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 5.7842011620951154e-16
! // mean(f - f_Boost): 5.8286708792820721e-17
! // variance(f - f_Boost): 4.1942474344433133e-34
! // stddev(f - f_Boost): 2.0479861900030756e-17
  const testcase_ellint_3<double>
  data001[10] =
  {
    { 0.0000000000000000, -0.90000000000000002, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17525427376115027, -0.90000000000000002, 0.0000000000000000, 
  	  0.17453292519943295 },
    { 0.35492464591297446, -0.90000000000000002, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.54388221416157123, -0.90000000000000002, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.74797400423532512, -0.90000000000000002, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.97463898451966446, -0.90000000000000002, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.2334463254523438, -0.90000000000000002, 0.0000000000000000, 
  	  1.0471975511965976 },
    { 1.5355247765594913, -0.90000000000000002, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.8882928567775126, -0.90000000000000002, 0.0000000000000000, 
  	  1.3962634015954636 },
    { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000, 
  	  1.5707963267948966 },
*************** data001[10] =
*** 68,336 ****
  const double toler001 = 2.5000000000000020e-13;
  
  // Test data for k=-0.90000000000000002, nu=0.10000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.0141810743801079e-16
  const testcase_ellint_3<double>
  data002[10] =
  {
    { 0.0000000000000000, -0.90000000000000002, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17507714233254656, -0.90000000000000002, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35350932904326521, -0.90000000000000002, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.53911129989870976, -0.90000000000000002, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.73666644254508395, -0.90000000000000002, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.95250736612100195, -0.90000000000000002, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.1950199550905594, -0.90000000000000002, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.4741687286340850, -0.90000000000000002, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.7968678183506057, -0.90000000000000002, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 2.1537868513875287, -0.90000000000000002, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler002 = 2.5000000000000020e-13;
  
  // Test data for k=-0.90000000000000002, nu=0.20000000000000001.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.0588292817405780e-16
  const testcase_ellint_3<double>
  data003[10] =
  {
    { 0.0000000000000000, -0.90000000000000002, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17490065089140927, -0.90000000000000002, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35211377590661436, -0.90000000000000002, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53448220334204100, -0.90000000000000002, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.72591368943179579, -0.90000000000000002, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.93192539780038763, -0.90000000000000002, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1600809679692683, -0.90000000000000002, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.4195407225882510, -0.90000000000000002, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.7168966476424525, -0.90000000000000002, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 2.0443194576468890, -0.90000000000000002, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler003 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.29999999999999999.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.2403611223075570e-16
  const testcase_ellint_3<double>
  data004[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17472479532647531, -0.90000000000000002, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.35073750187374114, -0.90000000000000002, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.52998766129466957, -0.90000000000000002, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.71566993548699553, -0.90000000000000002, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.91271517762560195, -0.90000000000000002, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 1.1281241199843370, -0.90000000000000002, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.3704929576917451, -0.90000000000000002, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.6461981511487713, -0.90000000000000002, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.9486280260314426, -0.90000000000000002, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler004 = 2.5000000000000020e-13;
  
  // Test data for k=-0.90000000000000002, nu=0.40000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.3487482375512111e-16
  const testcase_ellint_3<double>
  data005[10] =
  {
    { 0.0000000000000000, -0.90000000000000002, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17454957156468837, -0.90000000000000002, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34938003933330430, -0.90000000000000002, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.52562093533067433, -0.90000000000000002, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.70589461324915670, -0.90000000000000002, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.89472658511942849, -0.90000000000000002, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.0987419542323440, -0.90000000000000002, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.3261349565496303, -0.90000000000000002, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.5831293909853765, -0.90000000000000002, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.8641114227238349, -0.90000000000000002, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler005 = 2.5000000000000020e-13;
  
  // Test data for k=-0.90000000000000002, nu=0.50000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.4538944656036724e-16
  const testcase_ellint_3<double>
  data006[10] =
  {
    { 0.0000000000000000, -0.90000000000000002, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17437497557073334, -0.90000000000000002, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34804093691586013, -0.90000000000000002, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.52137576320372891, -0.90000000000000002, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.69655163996912262, -0.90000000000000002, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.87783188683054236, -0.90000000000000002, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.0716015959755185, -0.90000000000000002, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.2857636916026749, -0.90000000000000002, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.5264263913252363, -0.90000000000000002, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.7888013241937861, -0.90000000000000002, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler006 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.59999999999999998.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.5560830683344639e-16
  const testcase_ellint_3<double>
  data007[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17420100334657812, -0.90000000000000002, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34671975876122157, -0.90000000000000002, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.51724631570707946, -0.90000000000000002, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.68760879113743023, -0.90000000000000002, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.86192157779698364, -0.90000000000000002, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 1.0464279696166354, -0.90000000000000002, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.2488156247094007, -0.90000000000000002, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.4750988777188472, -0.90000000000000002, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.7211781128919523, -0.90000000000000002, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler007 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.69999999999999996.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 5.4833366769839281e-16
  const testcase_ellint_3<double>
  data008[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17402765093102207, -0.90000000000000002, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34541608382635131, -0.90000000000000002, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.51322715827061682, -0.90000000000000002, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.67903717872440272, -0.90000000000000002, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.84690113601682671, -0.90000000000000002, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 1.0229914311548418, -0.90000000000000002, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.2148329639709381, -0.90000000000000002, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.4283586501307803, -0.90000000000000002, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.6600480747670940, -0.90000000000000002, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler008 = 2.5000000000000020e-13;
  
  // Test data for k=-0.90000000000000002, nu=0.80000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.7525301941362493e-16
  const testcase_ellint_3<double>
  data009[10] =
  {
    { 0.0000000000000000, -0.90000000000000002, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17385491439925146, -0.90000000000000002, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.34412950523113928, -0.90000000000000002, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.50931321668729590, -0.90000000000000002, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.67081081392296327, -0.90000000000000002, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.83268846097293259, -0.90000000000000002, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.0010985015814027, -0.90000000000000002, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.1834394045489680, -0.90000000000000002, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.3855695891683186, -0.90000000000000002, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.6044591960982202, -0.90000000000000002, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler009 = 2.5000000000000020e-13;
  
  // Test data for k=-0.90000000000000002, nu=0.90000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.8471853989694167e-16
  const testcase_ellint_3<double>
  data010[10] =
  {
    { 0.0000000000000000, -0.90000000000000002, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17368278986240135, -0.90000000000000002, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.34285962963961397, -0.90000000000000002, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.50549974644993312, -0.90000000000000002, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.66290623857720876, -0.90000000000000002, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.81921183128847175, -0.90000000000000002, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.98058481956066390, -0.90000000000000002, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 1.1543223520473569, -0.90000000000000002, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.3462119782292938, -0.90000000000000002, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.5536420236310946, -0.90000000000000002, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler010 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004, nu=0.0000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1175183168766718e-16
  const testcase_ellint_3<double>
  data011[10] =
  {
--- 70,368 ----
  const double toler001 = 2.5000000000000020e-13;
  
  // Test data for k=-0.90000000000000002, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.1500594295134815e-16
! // mean(f - f_Boost): 1.0269562977782698e-16
! // variance(f - f_Boost): 1.4388836606733082e-32
! // stddev(f - f_Boost): 1.1995347684303728e-16
  const testcase_ellint_3<double>
  data002[10] =
  {
    { 0.0000000000000000, -0.90000000000000002, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17543204932716244, -0.90000000000000002, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35636022898551184, -0.90000000000000002, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.54880278898382584, -0.90000000000000002, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.75988834774529268, -0.90000000000000002, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.99853303003568117, -0.90000000000000002, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.2759958823999022, -0.90000000000000002, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.6051187364639401, -0.90000000000000002, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.9941406879519472, -0.90000000000000002, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 2.4295011187834881, -0.90000000000000002, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler002 = 2.5000000000000020e-13;
  
  // Test data for k=-0.90000000000000002, nu=0.20000000000000001.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 5.2711357908578066e-16
! // mean(f - f_Boost): 8.0491169285323847e-17
! // variance(f - f_Boost): 7.9985534974304465e-34
! // stddev(f - f_Boost): 2.8281714052423424e-17
  const testcase_ellint_3<double>
  data003[10] =
  {
    { 0.0000000000000000, -0.90000000000000002, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17561047321968409, -0.90000000000000002, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35781659944356109, -0.90000000000000002, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.55388150905215283, -0.90000000000000002, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.77246874123251441, -0.90000000000000002, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 1.0244466254771925, -0.90000000000000002, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.3234824077640801, -0.90000000000000002, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.6849848968804237, -0.90000000000000002, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 2.1185749045502273, -0.90000000000000002, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 2.6076835743348412, -0.90000000000000002, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler003 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.9955372494296814e-16
! // mean(f - f_Boost): 5.8286708792820721e-17
! // variance(f - f_Boost): 4.1942474344433133e-34
! // stddev(f - f_Boost): 2.0479861900030756e-17
  const testcase_ellint_3<double>
  data004[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17578954966746221, -0.90000000000000002, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35929429810867447, -0.90000000000000002, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.55912757154240811, -0.90000000000000002, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.78578314722025389, -0.90000000000000002, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 1.0526941001131365, -0.90000000000000002, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.3769682234538601, -0.90000000000000002, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.7779437432911238, -0.90000000000000002, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 2.2676509341813631, -0.90000000000000002, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 2.8256506968858512, -0.90000000000000002, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler004 = 2.5000000000000020e-13;
  
  // Test data for k=-0.90000000000000002, nu=0.40000000000000002.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.7042235432234642e-16
! // mean(f - f_Boost): 2.0261570199409106e-16
! // variance(f - f_Boost): 5.8024227149195491e-32
! // stddev(f - f_Boost): 2.4088218520512364e-16
  const testcase_ellint_3<double>
  data005[10] =
  {
    { 0.0000000000000000, -0.90000000000000002, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17596928293938452, -0.90000000000000002, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.36079388642472821, -0.90000000000000002, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.56455096667115612, -0.90000000000000002, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.79990996997869435, -0.90000000000000002, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 1.0836647913872215, -0.90000000000000002, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.4378726836091849, -0.90000000000000002, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.8880446720682853, -0.90000000000000002, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 2.4505848932025227, -0.90000000000000002, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 3.1000689868578615, -0.90000000000000002, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler005 = 2.5000000000000020e-13;
  
  // Test data for k=-0.90000000000000002, nu=0.50000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 3.8944086593755267e-16
! // mean(f - f_Boost): 6.9388939039072284e-17
! // variance(f - f_Boost): 1.7333369499485123e-32
! // stddev(f - f_Boost): 1.3165625507162629e-16
  const testcase_ellint_3<double>
  data006[10] =
  {
    { 0.0000000000000000, -0.90000000000000002, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17614967734498183, -0.90000000000000002, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.36231594750319435, -0.90000000000000002, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.57016256984349567, -0.90000000000000002, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.81494025918293422, -0.90000000000000002, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 1.1178482279283477, -0.90000000000000002, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.5081455873012106, -0.90000000000000002, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 2.0213599730863998, -0.90000000000000002, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 2.6822467012926827, -0.90000000000000002, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 3.4591069002104677, -0.90000000000000002, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler006 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.60000000000000009.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.0602096790645418e-16
! // mean(f - f_Boost): 1.0269562977782698e-16
! // variance(f - f_Boost): 1.4388836606733082e-32
! // stddev(f - f_Boost): 1.1995347684303728e-16
  const testcase_ellint_3<double>
  data007[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17633073723493825, -0.90000000000000002, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.36386108723492810, -0.90000000000000002, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.57597424744716241, -0.90000000000000002, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.83098051948501150, -0.90000000000000002, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.1558706545698916, -0.90000000000000002, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.5905576379415669, -0.90000000000000002, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 2.1875186010215080, -0.90000000000000002, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.9885767771316849, -0.90000000000000002, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 3.9549939883570224, -0.90000000000000002, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler007 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.70000000000000007.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 5.1938610791060186e-16
! // mean(f - f_Boost): 3.0253577421035517e-16
! // variance(f - f_Boost): 4.2342877557562532e-32
! // stddev(f - f_Boost): 2.0577385051935665e-16
  const testcase_ellint_3<double>
  data008[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17651246700160939, -0.90000000000000002, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.36542993547358982, -0.90000000000000002, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.58199897877674867, -0.90000000000000002, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.84815633587352857, -0.90000000000000002, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.1985495623872375, -0.90000000000000002, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.6892158134027688, -0.90000000000000002, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 2.4029722191094236, -0.90000000000000002, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 3.4201084941340052, -0.90000000000000002, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 4.6985482312992435, -0.90000000000000002, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler008 = 2.5000000000000020e-13;
  
  // Test data for k=-0.90000000000000002, nu=0.80000000000000004.
! // max(|f - f_Boost|): 2.6645352591003757e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 6.5091520146032660e-16
! // mean(f - f_Boost): 2.8310687127941490e-16
! // variance(f - f_Boost): 9.8950000698295322e-33
! // stddev(f - f_Boost): 9.9473614943006532e-17
  const testcase_ellint_3<double>
  data009[10] =
  {
    { 0.0000000000000000, -0.90000000000000002, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17669487107954862, -0.90000000000000002, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36702314729628421, -0.90000000000000002, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.58825099711365492, -0.90000000000000002, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.86661711422209031, -0.90000000000000002, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.2469779109884802, -0.90000000000000002, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.8105469760531578, -0.90000000000000002, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.6989505165893752, -0.90000000000000002, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 4.0935213267757424, -0.90000000000000002, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 5.9820740813645710, -0.90000000000000002, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler009 = 2.5000000000000020e-13;
  
  // Test data for k=-0.90000000000000002, nu=0.90000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 8.2628580104449673e-16
! // mean(f - f_Boost): 8.5764728652293339e-16
! // variance(f - f_Boost): 8.9671393318321280e-31
! // stddev(f - f_Boost): 9.4694980499666013e-16
  const testcase_ellint_3<double>
  data010[10] =
  {
    { 0.0000000000000000, -0.90000000000000002, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17687795394604169, -0.90000000000000002, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36864140434751286, -0.90000000000000002, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.59474595366817051, -0.90000000000000002, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.88654237226056665, -0.90000000000000002, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.3026595810616726, -0.90000000000000002, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.9653635459278078, -0.90000000000000002, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 3.1451407527189463, -0.90000000000000002, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 5.3745230680316114, -0.90000000000000002, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 8.9942562031858682, -0.90000000000000002, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler010 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004, nu=0.0000000000000000.
! // max(|f - f_Boost|): 1.5543122344752192e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.7898565163847540e-16
! // mean(f - f_Boost): 2.3869795029440865e-16
! // variance(f - f_Boost): 2.1368406725192426e-31
! // stddev(f - f_Boost): 4.6225974002926564e-16
  const testcase_ellint_3<double>
  data011[10] =
  {
*************** data011[10] =
*** 338,626 ****
  	  0.0000000000000000 },
    { 0.17510154241338899, -0.80000000000000004, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35365068839779390, -0.80000000000000004, 0.0000000000000000, 
  	  0.34906585039886590 },
    { 0.53926804409084550, -0.80000000000000004, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.73587926028070361, -0.80000000000000004, 0.0000000000000000, 
  	  0.69813170079773179 },
    { 0.94770942970071170, -0.80000000000000004, 0.0000000000000000, 
  	  0.87266462599716477 },
    { 1.1789022995388236, -0.80000000000000004, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.4323027881876009, -0.80000000000000004, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.7069629739121674, -0.80000000000000004, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.9953027776647296, -0.80000000000000004, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler011 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004, nu=0.10000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1537164503193145e-16
  const testcase_ellint_3<double>
  data012[10] =
  {
    { 0.0000000000000000, -0.80000000000000004, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17492468824017163, -0.80000000000000004, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35224443521476911, -0.80000000000000004, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.53456851853226950, -0.80000000000000004, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.72488875602364922, -0.80000000000000004, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.92661354274638952, -0.80000000000000004, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.1432651144499075, -0.80000000000000004, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.3774479927211429, -0.80000000000000004, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.6287092337196041, -0.80000000000000004, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.8910755418379521, -0.80000000000000004, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler012 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004, nu=0.20000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1894552974436829e-16
  const testcase_ellint_3<double>
  data013[10] =
  {
    { 0.0000000000000000, -0.80000000000000004, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17474847286224940, -0.80000000000000004, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35085779529084682, -0.80000000000000004, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53000829263059146, -0.80000000000000004, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.71443466027453384, -0.80000000000000004, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.90698196872715420, -0.80000000000000004, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1108198200558579, -0.80000000000000004, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.3284988909963957, -0.80000000000000004, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.5600369318140328, -0.80000000000000004, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.8007226661734588, -0.80000000000000004, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler013 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.29999999999999999.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.2247517409029886e-16
  const testcase_ellint_3<double>
  data014[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17457289217669889, -0.80000000000000004, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34949028801501258, -0.80000000000000004, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.52558024362769307, -0.80000000000000004, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.70447281740094891, -0.80000000000000004, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.88864745641528986, -0.80000000000000004, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 1.0811075819341462, -0.80000000000000004, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.2844589654082377, -0.80000000000000004, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.4991461361277847, -0.80000000000000004, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.7214611048717301, -0.80000000000000004, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler014 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004, nu=0.40000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.2596216594752862e-16
  const testcase_ellint_3<double>
  data015[10] =
  {
    { 0.0000000000000000, -0.80000000000000004, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17439794211872175, -0.80000000000000004, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34814144964568972, -0.80000000000000004, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.52127776285273064, -0.80000000000000004, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.69496411438966588, -0.80000000000000004, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.87146878427509589, -0.80000000000000004, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.0537579024937762, -0.80000000000000004, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.2445534387922637, -0.80000000000000004, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.4446769766361993, -0.80000000000000004, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.6512267838651289, -0.80000000000000004, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler015 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004, nu=0.50000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.2940800093915668e-16
  const testcase_ellint_3<double>
  data016[10] =
  {
    { 0.0000000000000000, -0.80000000000000004, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17422361866118044, -0.80000000000000004, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34681083254170475, -0.80000000000000004, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.51709470815494440, -0.80000000000000004, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.68587375344080237, -0.80000000000000004, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.85532571852810624, -0.80000000000000004, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.0284677391874903, -0.80000000000000004, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.2081693942686225, -0.80000000000000004, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.3955803006426311, -0.80000000000000004, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.5884528947755532, -0.80000000000000004, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler016 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.59999999999999998.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.3281408974056389e-16
  const testcase_ellint_3<double>
  data017[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17404991781414089, -0.80000000000000004, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34549800443625167, -0.80000000000000004, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.51302536167001545, -0.80000000000000004, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.67717065003912236, -0.80000000000000004, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.84011512421134416, -0.80000000000000004, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 1.0049863847088740, -0.80000000000000004, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.1748145941898920, -0.80000000000000004, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.3510319699755071, -0.80000000000000004, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.5319262547427865, -0.80000000000000004, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler017 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.69999999999999996.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 4.3618176466061808e-16
  const testcase_ellint_3<double>
  data018[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17387683562442199, -0.80000000000000004, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34420254775101611, -0.80000000000000004, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.50906439222143673, -0.80000000000000004, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.66882693152688422, -0.80000000000000004, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.82574792844091316, -0.80000000000000004, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.98310431309490931, -0.80000000000000004, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.1440884535113258, -0.80000000000000004, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.3103743938952537, -0.80000000000000004, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.4806912324625332, -0.80000000000000004, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler018 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004, nu=0.80000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.3951228558314112e-16
  const testcase_ellint_3<double>
  data019[10] =
  {
    { 0.0000000000000000, -0.80000000000000004, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17370436817515203, -0.80000000000000004, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.34292405894783395, -0.80000000000000004, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.50520682176250076, -0.80000000000000004, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.66081751679736178, -0.80000000000000004, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.81214672249355102, -0.80000000000000004, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.96264481387685552, -0.80000000000000004, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.1156611352656258, -0.80000000000000004, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.2730756225143889, -0.80000000000000004, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.4339837018309471, -0.80000000000000004, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler019 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004, nu=0.90000000000000002.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 4.4280684534289690e-16
  const testcase_ellint_3<double>
  data020[10] =
  {
    { 0.0000000000000000, -0.80000000000000004, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17353251158533151, -0.80000000000000004, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.34166214791545768, -0.80000000000000004, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.50144799535130569, -0.80000000000000004, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.65311976193814425, -0.80000000000000004, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.79924384892320866, -0.80000000000000004, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.94345762353365603, -0.80000000000000004, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 1.0892582069219161, -0.80000000000000004, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.2387000876610268, -0.80000000000000004, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.3911845406776222, -0.80000000000000004, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler020 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996, nu=0.0000000000000000.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 3.5930208052157665e-16
  const testcase_ellint_3<double>
  data021[10] =
  {
--- 370,688 ----
  	  0.0000000000000000 },
    { 0.17510154241338899, -0.80000000000000004, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35365068839779396, -0.80000000000000004, 0.0000000000000000, 
  	  0.34906585039886590 },
    { 0.53926804409084550, -0.80000000000000004, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.73587926028070372, -0.80000000000000004, 0.0000000000000000, 
  	  0.69813170079773179 },
    { 0.94770942970071170, -0.80000000000000004, 0.0000000000000000, 
  	  0.87266462599716477 },
    { 1.1789022995388236, -0.80000000000000004, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.4323027881876012, -0.80000000000000004, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.7069629739121677, -0.80000000000000004, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.9953027776647294, -0.80000000000000004, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler011 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004, nu=0.10000000000000001.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 8.3898786942190374e-16
! // mean(f - f_Boost): 2.3869795029440865e-16
! // variance(f - f_Boost): 2.9190059990693968e-31
! // stddev(f - f_Boost): 5.4027826155319237e-16
  const testcase_ellint_3<double>
  data012[10] =
  {
    { 0.0000000000000000, -0.80000000000000004, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17527903952342144, -0.80000000000000004, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35507705313548549, -0.80000000000000004, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.54411455987643553, -0.80000000000000004, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.74745625666804383, -0.80000000000000004, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.97046953684238557, -0.80000000000000004, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.2183080025184605, -0.80000000000000004, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.4943711151994405, -0.80000000000000004, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.7972401309544201, -0.80000000000000004, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 2.1172616484005085, -0.80000000000000004, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler012 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004, nu=0.20000000000000001.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.8513740186068518e-16
! // mean(f - f_Boost): 2.8310687127941490e-16
! // variance(f - f_Boost): 2.7528339102381189e-31
! // stddev(f - f_Boost): 5.2467455724840699e-16
  const testcase_ellint_3<double>
  data013[10] =
  {
    { 0.0000000000000000, -0.80000000000000004, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17545718375086419, -0.80000000000000004, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35652404627248163, -0.80000000000000004, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.54911638512920913, -0.80000000000000004, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.75967684282131176, -0.80000000000000004, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.99513526893543769, -0.80000000000000004, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.2622192109995993, -0.80000000000000004, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.5654106676347741, -0.80000000000000004, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.9029531718534984, -0.80000000000000004, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 2.2624789434186798, -0.80000000000000004, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler013 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.30000000000000004.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.2825261583337354e-16
! // mean(f - f_Boost): 2.6367796834847468e-16
! // variance(f - f_Boost): 2.8249350208968825e-31
! // stddev(f - f_Boost): 5.3150117788175054e-16
  const testcase_ellint_3<double>
  data014[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17563597931587369, -0.80000000000000004, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35799220412005128, -0.80000000000000004, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.55428253691111318, -0.80000000000000004, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.77260647376977365, -0.80000000000000004, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 1.0220015271210958, -0.80000000000000004, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.3115965312302671, -0.80000000000000004, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.6478518468813512, -0.80000000000000004, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 2.0290458414203481, -0.80000000000000004, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 2.4392042002725693, -0.80000000000000004, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler014 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004, nu=0.40000000000000002.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 8.3462748389836647e-16
! // mean(f - f_Boost): 3.3861802251067273e-16
! // variance(f - f_Boost): 4.3719465706454422e-31
! // stddev(f - f_Boost): 6.6120696991527871e-16
  const testcase_ellint_3<double>
  data015[10] =
  {
    { 0.0000000000000000, -0.80000000000000004, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17581543047866136, -0.80000000000000004, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35948208343061633, -0.80000000000000004, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.55962280893702021, -0.80000000000000004, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.78632063889234116, -0.80000000000000004, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 1.0514333069550323, -0.80000000000000004, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.3677213138838757, -0.80000000000000004, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.7451736773665165, -0.80000000000000004, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 2.1830100424586831, -0.80000000000000004, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.6604037035529724, -0.80000000000000004, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler015 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004, nu=0.50000000000000000.
! // max(|f - f_Boost|): 2.6645352591003757e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 9.0388243828581744e-16
! // mean(f - f_Boost): 3.8580250105724191e-16
! // variance(f - f_Boost): 6.4106456575047741e-31
! // stddev(f - f_Boost): 8.0066507713929764e-16
  const testcase_ellint_3<double>
  data016[10] =
  {
    { 0.0000000000000000, -0.80000000000000004, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17599554153999472, -0.80000000000000004, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.36099426243351540, -0.80000000000000004, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.56514786174780673, -0.80000000000000004, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.80090697622371010, -0.80000000000000004, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 1.0838891627679339, -0.80000000000000004, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.4323506654466280, -0.80000000000000004, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.8625761085390575, -0.80000000000000004, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 2.3768757305654766, -0.80000000000000004, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.9478781158239746, -0.80000000000000004, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler016 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.60000000000000009.
! // max(|f - f_Boost|): 3.5527136788005009e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 1.0631099169042069e-15
! // mean(f - f_Boost): 4.8294701571194306e-16
! // variance(f - f_Boost): 1.1633910328160319e-30
! // stddev(f - f_Boost): 1.0786060600682865e-15
  const testcase_ellint_3<double>
  data017[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17617631684170665, -0.80000000000000004, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.36252934193666231, -0.80000000000000004, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.57086932622945163, -0.80000000000000004, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.81646796740150973, -0.80000000000000004, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.1199552158519064, -0.80000000000000004, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.5079766673336394, -0.80000000000000004, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 2.0082747447038165, -0.80000000000000004, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.6315146066775523, -0.80000000000000004, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 3.3418121892288051, -0.80000000000000004, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler017 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.70000000000000007.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.6544679145741375e-16
! // mean(f - f_Boost): 3.2751579226442120e-16
! // variance(f - f_Boost): 4.4236851331020672e-31
! // stddev(f - f_Boost): 6.6510789599147505e-16
  const testcase_ellint_3<double>
  data018[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17635776076721221, -0.80000000000000004, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.36408794649916976, -0.80000000000000004, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.57679992290624138, -0.80000000000000004, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.83312441418142813, -0.80000000000000004, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.1603958891464856, -0.80000000000000004, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.5982855143796213, -0.80000000000000004, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 2.1962484408371821, -0.80000000000000004, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.9873281786111869, -0.80000000000000004, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 3.9268876980046397, -0.80000000000000004, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler018 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004, nu=0.80000000000000004.
! // max(|f - f_Boost|): 4.4408920985006262e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 9.0176949165011079e-16
! // mean(f - f_Boost): 7.0499162063697436e-16
! // variance(f - f_Boost): 1.7230805408026989e-30
! // stddev(f - f_Boost): 1.3126616246400665e-15
  const testcase_ellint_3<double>
  data019[10] =
  {
    { 0.0000000000000000, -0.80000000000000004, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17653987774203392, -0.80000000000000004, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36567072568046877, -0.80000000000000004, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.58295359996558616, -0.80000000000000004, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.85101998309176108, -0.80000000000000004, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.2062322059736537, -0.80000000000000004, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.7090321420917429, -0.80000000000000004, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.4529058049405066, -0.80000000000000004, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 3.5368893360106948, -0.80000000000000004, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 4.9246422058196062, -0.80000000000000004, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler019 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004, nu=0.90000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.7782721357365268e-16
! // mean(f - f_Boost): 8.9928064994637676e-16
! // variance(f - f_Boost): 1.5485199571025344e-30
! // stddev(f - f_Boost): 1.2443954183066307e-15
  const testcase_ellint_3<double>
  data020[10] =
  {
    { 0.0000000000000000, -0.80000000000000004, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17672267223433513, -0.80000000000000004, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36727835537196063, -0.80000000000000004, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.58934569363716649, -0.80000000000000004, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.87032723471138851, -0.80000000000000004, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.2588676111323349, -0.80000000000000004, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.8498731900660019, -0.80000000000000004, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.8368381299300420, -0.80000000000000004, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 4.5674844191654058, -0.80000000000000004, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 7.2263259298637115, -0.80000000000000004, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler020 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996, nu=0.0000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 5.5425633303580569e-16
! // mean(f - f_Boost): 7.7715611723760953e-17
! // variance(f - f_Boost): 7.4564398834547797e-34
! // stddev(f - f_Boost): 2.7306482533374340e-17
  const testcase_ellint_3<double>
  data021[10] =
  {
*************** data021[10] =
*** 628,916 ****
  	  0.0000000000000000 },
    { 0.17496737466916723, -0.69999999999999996, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35254687535677925, -0.69999999999999996, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.53536740275997119, -0.69999999999999996, 0.0000000000000000, 
  	  0.52359877559829882 },
    { 0.72603797651684454, -0.69999999999999996, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.92698296348313458, -0.69999999999999996, 0.0000000000000000, 
  	  0.87266462599716477 },
    { 1.1400447527693316, -0.69999999999999996, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.3657668117194073, -0.69999999999999996, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.6024686895959159, -0.69999999999999996, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.8456939983747236, -0.69999999999999996, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler021 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996, nu=0.10000000000000001.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 3.6735282577377367e-16
  const testcase_ellint_3<double>
  data022[10] =
  {
    { 0.0000000000000000, -0.69999999999999996, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17479076384884684, -0.69999999999999996, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35114844900396364, -0.69999999999999996, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.53072776947527001, -0.69999999999999996, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.71530198262386235, -0.69999999999999996, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.90666760677828306, -0.69999999999999996, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.1063366517438080, -0.69999999999999996, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.3149477243092149, -0.69999999999999996, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.5314886725038925, -0.69999999999999996, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.7528050171757608, -0.69999999999999996, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler022 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996, nu=0.20000000000000001.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 3.7517969287516802e-16
  const testcase_ellint_3<double>
  data023[10] =
  {
    { 0.0000000000000000, -0.69999999999999996, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17461479077791475, -0.69999999999999996, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34976950621407538, -0.69999999999999996, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.52622533231350177, -0.69999999999999996, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.70508774017895215, -0.69999999999999996, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.88775302531730294, -0.69999999999999996, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.0756195476149006, -0.69999999999999996, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.2695349716654374, -0.69999999999999996, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.4690814617070540, -0.69999999999999996, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.6721098780092145, -0.69999999999999996, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler023 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.29999999999999999.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.8280039841080712e-16
  const testcase_ellint_3<double>
  data024[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17443945136076175, -0.69999999999999996, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34840956983535287, -0.69999999999999996, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.52185308551329168, -0.69999999999999996, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.69535240431168255, -0.69999999999999996, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.87007983473964923, -0.69999999999999996, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 1.0474657975577066, -0.69999999999999996, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.2286225419931891, -0.69999999999999996, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.4136490671013271, -0.69999999999999996, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.6011813647733213, -0.69999999999999996, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler024 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996, nu=0.40000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.3472957053482092e-16
  const testcase_ellint_3<double>
  data025[10] =
  {
    { 0.0000000000000000, -0.69999999999999996, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17426474153983229, -0.69999999999999996, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34706817945773732, -0.69999999999999996, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.51760452851738148, -0.69999999999999996, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.68605801534722755, -0.69999999999999996, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.85351339387296532, -0.69999999999999996, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.0215297967969539, -0.69999999999999996, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.1915051074460530, -0.69999999999999996, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.3639821911744707, -0.69999999999999996, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.5382162002954762, -0.69999999999999996, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler025 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996, nu=0.50000000000000000.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 3.9748346743390620e-16
  const testcase_ellint_3<double>
  data026[10] =
  {
    { 0.0000000000000000, -0.69999999999999996, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17409065729516096, -0.69999999999999996, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34574489064986091, -0.69999999999999996, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.51347361925579782, -0.69999999999999996, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.67717079489579279, -0.69999999999999996, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.83793902055292280, -0.69999999999999996, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.99752863545289705, -0.69999999999999996, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.1576240080401501, -0.69999999999999996, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.3191464023923762, -0.69999999999999996, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.4818433192178544, -0.69999999999999996, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler026 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.59999999999999998.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 4.0457157538295173e-16
  const testcase_ellint_3<double>
  data027[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17391719464391614, -0.69999999999999996, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34443927423869031, -0.69999999999999996, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.50945473266486063, -0.69999999999999996, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.66866056326513812, -0.69999999999999996, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.82325830002337352, -0.69999999999999996, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.97522808245669368, -0.69999999999999996, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.1265300613705285, -0.69999999999999996, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.2784066076152001, -0.69999999999999996, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.4309994736080540, -0.69999999999999996, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler027 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.69999999999999996.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 5.4867405596732161e-16
  const testcase_ellint_3<double>
  data028[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17374434963995031, -0.69999999999999996, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34315091562900674, -0.69999999999999996, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.50554262375653347, -0.69999999999999996, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.66050025406305801, -0.69999999999999996, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.80938620118847404, -0.69999999999999996, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.95443223855852144, -0.69999999999999996, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.0978573207128304, -0.69999999999999996, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.2411754575007123, -0.69999999999999996, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.3848459188329196, -0.69999999999999996, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler028 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996, nu=0.80000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1829502028913879e-16
  const testcase_ellint_3<double>
  data029[10] =
  {
    { 0.0000000000000000, -0.69999999999999996, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17357211837335740, -0.69999999999999996, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.34187941416012108, -0.69999999999999996, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.50173239465478259, -0.69999999999999996, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.65266550725988315, -0.69999999999999996, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.79624879865249298, -0.69999999999999996, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.93497577043296920, -0.69999999999999996, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.0713041566930750, -0.69999999999999996, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.2069772023255654, -0.69999999999999996, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.3427110650397531, -0.69999999999999996, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler029 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996, nu=0.90000000000000002.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 4.2494869624129105e-16
  const testcase_ellint_3<double>
  data030[10] =
  {
    { 0.0000000000000000, -0.69999999999999996, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17340049697003637, -0.69999999999999996, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.34062438249741556, -0.69999999999999996, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.49801946510076867, -0.69999999999999996, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.64513432604750476, -0.69999999999999996, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.78378145487573758, -0.69999999999999996, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.91671799500854623, -0.69999999999999996, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 1.0466193579463123, -0.69999999999999996, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.1754218079199146, -0.69999999999999996, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.3040500499695913, -0.69999999999999996, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler030 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998, nu=0.0000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 2.8964816695821429e-16
  const testcase_ellint_3<double>
  data031[10] =
  {
--- 690,1008 ----
  	  0.0000000000000000 },
    { 0.17496737466916723, -0.69999999999999996, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35254687535677931, -0.69999999999999996, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.53536740275997130, -0.69999999999999996, 0.0000000000000000, 
  	  0.52359877559829882 },
    { 0.72603797651684454, -0.69999999999999996, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.92698296348313447, -0.69999999999999996, 0.0000000000000000, 
  	  0.87266462599716477 },
    { 1.1400447527693316, -0.69999999999999996, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.3657668117194071, -0.69999999999999996, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.6024686895959162, -0.69999999999999996, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.8456939983747234, -0.69999999999999996, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler021 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996, nu=0.10000000000000001.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 5.2736371663370261e-16
! // mean(f - f_Boost): 8.8817841970012528e-17
! // variance(f - f_Boost): 9.7390235212470591e-34
! // stddev(f - f_Boost): 3.1207408609570677e-17
  const testcase_ellint_3<double>
  data022[10] =
  {
    { 0.0000000000000000, -0.69999999999999996, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17514462737300920, -0.69999999999999996, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35396527997470451, -0.69999999999999996, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.54015179589433981, -0.69999999999999996, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.73734430854477728, -0.69999999999999996, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.94888950796697047, -0.69999999999999996, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.1772807959736322, -0.69999999999999996, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.4231796401075831, -0.69999999999999996, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.6841856799887469, -0.69999999999999996, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.9541347343119562, -0.69999999999999996, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler022 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996, nu=0.20000000000000001.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.9907249355047774e-16
! // mean(f - f_Boost): 3.3306690738754695e-17
! // variance(f - f_Boost): 1.3695501826753678e-34
! // stddev(f - f_Boost): 1.1702778228589003e-17
  const testcase_ellint_3<double>
  data023[10] =
  {
    { 0.0000000000000000, -0.69999999999999996, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17532252613350796, -0.69999999999999996, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35540417596807522, -0.69999999999999996, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.54508913033361928, -0.69999999999999996, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.74927635777718415, -0.69999999999999996, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.97261706337936338, -0.69999999999999996, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.2187303976209327, -0.69999999999999996, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.4887796709222487, -0.69999999999999996, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.7796581281839212, -0.69999999999999996, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 2.0829290325820202, -0.69999999999999996, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler023 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.6912897610535316e-16
! // mean(f - f_Boost): 1.6653345369377347e-17
! // variance(f - f_Boost): 2.6207864467918357e-32
! // stddev(f - f_Boost): 1.6188843216214787e-16
  const testcase_ellint_3<double>
  data024[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17550107516328570, -0.69999999999999996, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35686409576571959, -0.69999999999999996, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.55018827316513352, -0.69999999999999996, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.76189759494390275, -0.69999999999999996, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.99844623430885615, -0.69999999999999996, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.2652862989039833, -0.69999999999999996, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.5647666808691361, -0.69999999999999996, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.8932499694938163, -0.69999999999999996, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 2.2392290510988535, -0.69999999999999996, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler024 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996, nu=0.40000000000000002.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 6.5578567644745380e-16
! // mean(f - f_Boost): 1.4710455076283324e-16
! // variance(f - f_Boost): 2.6715739327327140e-33
! // stddev(f - f_Boost): 5.1687270509601433e-17
  const testcase_ellint_3<double>
  data025[10] =
  {
    { 0.0000000000000000, -0.69999999999999996, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17568027871494424, -0.69999999999999996, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35834559208180261, -0.69999999999999996, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.55545885451190613, -0.69999999999999996, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.77528120402568101, -0.69999999999999996, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 1.0267241287600319, -0.69999999999999996, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.3181380338980246, -0.69999999999999996, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.6542840785132085, -0.69999999999999996, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 2.0315595131131818, -0.69999999999999996, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.4342502915307875, -0.69999999999999996, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler025 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996, nu=0.50000000000000000.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 6.0416041815443256e-16
! // mean(f - f_Boost): 1.9151347174783951e-16
! // variance(f - f_Boost): 7.8758646268991113e-33
! // stddev(f - f_Boost): 8.8746068233466605e-17
  const testcase_ellint_3<double>
  data026[10] =
  {
    { 0.0000000000000000, -0.69999999999999996, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17586014108156545, -0.69999999999999996, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35984923894341653, -0.69999999999999996, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.56091135606739995, -0.69999999999999996, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.78951212635197054, -0.69999999999999996, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 1.0578865732938729, -0.69999999999999996, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.3789149005151722, -0.69999999999999996, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.7620212286086225, -0.69999999999999996, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 2.2051554347435585, -0.69999999999999996, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.6868019968236991, -0.69999999999999996, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler026 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.60000000000000009.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.6515644573247170e-16
! // mean(f - f_Boost): 9.9920072216264091e-17
! // variance(f - f_Boost): 1.2325951644078310e-33
! // stddev(f - f_Boost): 3.5108334685767011e-17
  const testcase_ellint_3<double>
  data027[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17604066659721918, -0.69999999999999996, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.36137563278353424, -0.69999999999999996, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.56655721272747606, -0.69999999999999996, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.80468966552978305, -0.69999999999999996, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0924902943683852, -0.69999999999999996, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.4499247992499797, -0.69999999999999996, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.8953714382113815, -0.69999999999999996, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.4323229949248670, -0.69999999999999996, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 3.0314573496746742, -0.69999999999999996, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler027 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.70000000000000007.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.8475278552871384e-16
! // mean(f - f_Boost): 9.9920072216264091e-17
! // variance(f - f_Boost): 1.2325951644078310e-33
! // stddev(f - f_Boost): 3.5108334685767011e-17
  const testcase_ellint_3<double>
  data028[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17622185963747933, -0.69999999999999996, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.36292539360435261, -0.69999999999999996, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.57240892970150015, -0.69999999999999996, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.82093084713182629, -0.69999999999999996, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.1312609022179871, -0.69999999999999996, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.5345768067715795, -0.69999999999999996, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 2.0668847445934420, -0.69999999999999996, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.7483444537551240, -0.69999999999999996, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 3.5408408771788560, -0.69999999999999996, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler028 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996, nu=0.80000000000000004.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 6.8664526853112274e-16
! // mean(f - f_Boost): 1.6930901125533636e-16
! // variance(f - f_Boost): 3.5389557150937801e-33
! // stddev(f - f_Boost): 5.9489122661994095e-17
  const testcase_ellint_3<double>
  data029[10] =
  {
    { 0.0000000000000000, -0.69999999999999996, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17640372461994805, -0.69999999999999996, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36449916621651091, -0.69999999999999996, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.57848021800372573, -0.69999999999999996, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.83837480968392586, -0.69999999999999996, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.1751669030061143, -0.69999999999999996, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.6381851899173601, -0.69999999999999996, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.3002065924302197, -0.69999999999999996, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 3.2337600665337862, -0.69999999999999996, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 4.4042405729076961, -0.69999999999999996, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler029 = 2.5000000000000020e-13;
  
  // Test data for k=-0.69999999999999996, nu=0.90000000000000002.
! // max(|f - f_Boost|): 3.5527136788005009e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 8.5869439826269878e-16
! // mean(f - f_Boost): 6.7723604502134545e-16
! // variance(f - f_Boost): 4.8757508225668289e-31
! // stddev(f - f_Boost): 6.9826576763914390e-16
  const testcase_ellint_3<double>
  data030[10] =
  {
    { 0.0000000000000000, -0.69999999999999996, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17658626600478800, -0.69999999999999996, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36609762156017206, -0.69999999999999996, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.58478615187842409, -0.69999999999999996, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.85718862878291846, -0.69999999999999996, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.2255385617397643, -0.69999999999999996, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.7696521899992939, -0.69999999999999996, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.6476314987883502, -0.69999999999999996, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 4.1373434902898083, -0.69999999999999996, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 6.3796094177887746, -0.69999999999999996, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler030 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.3664899092028927e-16
! // mean(f - f_Boost): 5.2735593669694933e-17
! // variance(f - f_Boost): 3.4333862218458872e-34
! // stddev(f - f_Boost): 1.8529398861932589e-17
  const testcase_ellint_3<double>
  data031[10] =
  {
*************** data031[10] =
*** 918,1206 ****
  	  0.0000000000000000 },
    { 0.17485154362988359, -0.59999999999999998, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35160509865544326, -0.59999999999999998, 0.0000000000000000, 
  	  0.34906585039886590 },
    { 0.53210652578446138, -0.59999999999999998, 0.0000000000000000, 
  	  0.52359877559829882 },
    { 0.71805304664485659, -0.59999999999999998, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.91082759030195970, -0.59999999999999998, 0.0000000000000000, 
  	  0.87266462599716477 },
    { 1.1112333229323361, -0.59999999999999998, 0.0000000000000000, 
  	  1.0471975511965976 },
    { 1.3191461190365270, -0.59999999999999998, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.5332022105084773, -0.59999999999999998, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.7507538029157526, -0.59999999999999998, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler031 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998, nu=0.10000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 2.6674242225057385e-16
  const testcase_ellint_3<double>
  data032[10] =
  {
    { 0.0000000000000000, -0.59999999999999998, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17467514275022011, -0.59999999999999998, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35021333086258255, -0.59999999999999998, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52751664092962691, -0.59999999999999998, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.70752126971957874, -0.59999999999999998, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.89111058756112871, -0.59999999999999998, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0789241202877768, -0.59999999999999998, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.2710800210399946, -0.59999999999999998, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.4669060574440276, -0.59999999999999998, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.6648615773343014, -0.59999999999999998, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler032 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998, nu=0.20000000000000001.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1891472451898755e-16
  const testcase_ellint_3<double>
  data033[10] =
  {
    { 0.0000000000000000, -0.59999999999999998, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17449937871800650, -0.59999999999999998, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34884093647346553, -0.59999999999999998, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.52306221119844087, -0.59999999999999998, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.69749955678982223, -0.59999999999999998, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.87274610682416853, -0.59999999999999998, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.0494620540750792, -0.59999999999999998, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.2280847305507339, -0.59999999999999998, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.4085436279696886, -0.59999999999999998, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.5901418016279374, -0.59999999999999998, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler033 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.29999999999999999.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 2.9132420715478757e-16
  const testcase_ellint_3<double>
  data034[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17432424744393932, -0.59999999999999998, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34748744127146447, -0.59999999999999998, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.51873632743924825, -0.59999999999999998, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.68794610396313116, -0.59999999999999998, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.85558070175468726, -0.59999999999999998, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 1.0224416343605653, -0.59999999999999998, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.1893144457936788, -0.59999999999999998, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.3566435377982575, -0.59999999999999998, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.5243814243493585, -0.59999999999999998, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler034 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998, nu=0.40000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.3897581541285558e-16
  const testcase_ellint_3<double>
  data035[10] =
  {
    { 0.0000000000000000, -0.59999999999999998, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17414974487670717, -0.59999999999999998, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34615238767335027, -0.59999999999999998, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.51453257838108557, -0.59999999999999998, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.67882386787534399, -0.59999999999999998, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.83948470233173578, -0.59999999999999998, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 0.99753496200073977, -0.59999999999999998, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.1541101404388487, -0.59999999999999998, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.3100911323398814, -0.59999999999999998, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.4659345278069984, -0.59999999999999998, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler035 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998, nu=0.50000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.5022138270566200e-16
  const testcase_ellint_3<double>
  data036[10] =
  {
    { 0.0000000000000000, -0.59999999999999998, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17397586700252807, -0.59999999999999998, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34483533397138516, -0.59999999999999998, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.51044500461706477, -0.59999999999999998, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.67009988034712664, -0.59999999999999998, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.82434762375735193, -0.59999999999999998, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.97447346702798998, -0.59999999999999998, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.1219494000522143, -0.59999999999999998, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.2680242605954484, -0.59999999999999998, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.4135484285693078, -0.59999999999999998, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler036 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.59999999999999998.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.2504224329684343e-16
  const testcase_ellint_3<double>
  data037[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17380260984469353, -0.59999999999999998, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34353585361777839, -0.59999999999999998, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.50646805774321380, -0.59999999999999998, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.66174468108625506, -0.59999999999999998, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.81007462280278408, -0.59999999999999998, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.95303466945718729, -0.59999999999999998, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.0924118588677505, -0.59999999999999998, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.2297640574847937, -0.59999999999999998, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.3662507535812816, -0.59999999999999998, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler037 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.69999999999999996.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.3559889697529752e-16
  const testcase_ellint_3<double>
  data038[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17362996946312007, -0.59999999999999998, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34225353454870588, -0.59999999999999998, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.50259656397799524, -0.59999999999999998, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.65373184496628933, -0.59999999999999998, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.79658372884056439, -0.59999999999999998, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.93303240100245421, -0.59999999999999998, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.0651547944716557, -0.59999999999999998, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.1947676204853441, -0.59999999999999998, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.3232737468822813, -0.59999999999999998, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler038 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998, nu=0.80000000000000004.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 5.1879494682720725e-16
  const testcase_ellint_3<double>
  data039[10] =
  {
    { 0.0000000000000000, -0.59999999999999998, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17345794195390685, -0.59999999999999998, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.34098797854531027, -0.59999999999999998, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.49882569168826213, -0.59999999999999998, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.64603758566475511, -0.59999999999999998, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.78380365594769730, -0.59999999999999998, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.91430946255611190, -0.59999999999999998, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.0398955217270607, -0.59999999999999998, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.1625948314277679, -0.59999999999999998, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.2840021261752192, -0.59999999999999998, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler039 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998, nu=0.90000000000000002.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.4768329326726447e-16
  const testcase_ellint_3<double>
  data040[10] =
  {
    { 0.0000000000000000, -0.59999999999999998, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17328652344890030, -0.59999999999999998, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.33973880062929018, -0.59999999999999998, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.49515092233122743, -0.59999999999999998, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.63864042139737043, -0.59999999999999998, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.77167205646538850, -0.59999999999999998, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.89673202848034383, -0.59999999999999998, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 1.0163984492661304, -0.59999999999999998, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.1328845785162431, -0.59999999999999998, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.2479362973851875, -0.59999999999999998, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler040 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000, nu=0.0000000000000000.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.1201497220602069e-16
  const testcase_ellint_3<double>
  data041[10] =
  {
--- 1010,1328 ----
  	  0.0000000000000000 },
    { 0.17485154362988359, -0.59999999999999998, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35160509865544320, -0.59999999999999998, 0.0000000000000000, 
  	  0.34906585039886590 },
    { 0.53210652578446138, -0.59999999999999998, 0.0000000000000000, 
  	  0.52359877559829882 },
    { 0.71805304664485659, -0.59999999999999998, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.91082759030195981, -0.59999999999999998, 0.0000000000000000, 
  	  0.87266462599716477 },
    { 1.1112333229323361, -0.59999999999999998, 0.0000000000000000, 
  	  1.0471975511965976 },
    { 1.3191461190365270, -0.59999999999999998, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.5332022105084779, -0.59999999999999998, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.7507538029157523, -0.59999999999999998, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler031 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998, nu=0.10000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.2335247010355137e-16
! // mean(f - f_Boost): 8.6042284408449634e-17
! // variance(f - f_Boost): 2.2835347143080263e-33
! // stddev(f - f_Boost): 4.7786344433405099e-17
  const testcase_ellint_3<double>
  data032[10] =
  {
    { 0.0000000000000000, -0.59999999999999998, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17502858548476194, -0.59999999999999998, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35301673150537388, -0.59999999999999998, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.53683932476326812, -0.59999999999999998, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.72914228589586771, -0.59999999999999998, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.93208036718354692, -0.59999999999999998, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.1468984688863377, -0.59999999999999998, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.3733904977062528, -0.59999999999999998, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.6094225663372157, -0.59999999999999998, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.8508766487100685, -0.59999999999999998, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler032 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998, nu=0.20000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.0940560416437693e-16
! // mean(f - f_Boost): 4.1633363423443370e-17
! // variance(f - f_Boost): 8.5834655546147173e-33
! // stddev(f - f_Boost): 9.2646994309662939e-17
  const testcase_ellint_3<double>
  data033[10] =
  {
    { 0.0000000000000000, -0.59999999999999998, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17520627248155893, -0.59999999999999998, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35444873935437748, -0.59999999999999998, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.54172310557682524, -0.59999999999999998, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.74084300280734672, -0.59999999999999998, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.95509001527006121, -0.59999999999999998, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1865688084431796, -0.59999999999999998, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.4352978868932598, -0.59999999999999998, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.6983400371331816, -0.59999999999999998, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.9695980282802215, -0.59999999999999998, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler033 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.30000000000000004.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.9470074709717020e-16
! // mean(f - f_Boost): 7.4940054162198071e-17
! // variance(f - f_Boost): 1.6823592487044846e-32
! // stddev(f - f_Boost): 1.2970579203352812e-16
  const testcase_ellint_3<double>
  data034[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17538460882640122, -0.59999999999999998, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35590165133735557, -0.59999999999999998, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.54676661152254535, -0.59999999999999998, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.75321709418305305, -0.59999999999999998, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.98012637808992920, -0.59999999999999998, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.2310891277158875, -0.59999999999999998, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.5069157924585623, -0.59999999999999998, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.8039583598337940, -0.59999999999999998, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 2.1134154405060599, -0.59999999999999998, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler034 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998, nu=0.40000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.7909659715991921e-16
! // mean(f - f_Boost): -2.7755575615628915e-18
! // variance(f - f_Boost): 2.4044165394594425e-32
! // stddev(f - f_Boost): 1.5506181152880429e-16
  const testcase_ellint_3<double>
  data035[10] =
  {
    { 0.0000000000000000, -0.59999999999999998, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17556359876533037, -0.59999999999999998, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35737601674244679, -0.59999999999999998, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.55197933771320218, -0.59999999999999998, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.76633591620002894, -0.59999999999999998, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 1.0075231136019616, -0.59999999999999998, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.2815842073813450, -0.59999999999999998, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.5911666941449827, -0.59999999999999998, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.9323227566025762, -0.59999999999999998, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.2925036420985130, -0.59999999999999998, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler035 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998, nu=0.50000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.6240126899196213e-16
! // mean(f - f_Boost): 9.1593399531575410e-17
! // variance(f - f_Boost): 1.0357223256482469e-33
! // stddev(f - f_Boost): 3.2182640128619758e-17
  const testcase_ellint_3<double>
  data036[10] =
  {
    { 0.0000000000000000, -0.59999999999999998, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17574324658480217, -0.59999999999999998, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35887240603169313, -0.59999999999999998, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.55737161826345261, -0.59999999999999998, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.78028227313077458, -0.59999999999999998, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 1.0376989776486290, -0.59999999999999998, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.3395933991042925, -0.59999999999999998, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.6924049626591782, -0.59999999999999998, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 2.0931011856518920, -0.59999999999999998, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.5239007084492706, -0.59999999999999998, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler036 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.60000000000000009.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.6651378277398083e-16
! // mean(f - f_Boost): 1.1934897514720432e-16
! // variance(f - f_Boost): 1.7585404776158019e-33
! // stddev(f - f_Boost): 4.1934955319110598e-17
  const testcase_ellint_3<double>
  data037[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17592355661219386, -0.59999999999999998, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.36039141192661606, -0.59999999999999998, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.56295472636903854, -0.59999999999999998, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.79515295130165986, -0.59999999999999998, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0711886441942242, -0.59999999999999998, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.4072952835139891, -0.59999999999999998, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.8174863977376825, -0.59999999999999998, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.3029921578542232, -0.59999999999999998, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 2.8388723099514972, -0.59999999999999998, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler037 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.70000000000000007.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.2451074234797436e-16
! // mean(f - f_Boost): 5.2735593669694933e-17
! // variance(f - f_Boost): 3.4333862218458872e-34
! // stddev(f - f_Boost): 1.8529398861932589e-17
  const testcase_ellint_3<double>
  data038[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17610453321631936, -0.59999999999999998, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.36193365056369764, -0.59999999999999998, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.56874098962268527, -0.59999999999999998, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.81106198671477181, -0.59999999999999998, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.1086886419010082, -0.59999999999999998, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.4879048567239257, -0.59999999999999998, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 1.9780310073615923, -0.59999999999999998, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.5941545586772712, -0.59999999999999998, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 3.3029735898397155, -0.59999999999999998, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler038 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.3826960061025914e-16
! // mean(f - f_Boost): 2.7478019859472625e-16
! // variance(f - f_Boost): 4.6451528105588637e-32
! // stddev(f - f_Boost): 2.1552616570984749e-16
  const testcase_ellint_3<double>
  data039[10] =
  {
    { 0.0000000000000000, -0.59999999999999998, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17628618080795252, -0.59999999999999998, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36349976272521012, -0.59999999999999998, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.57474392342151914, -0.59999999999999998, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.82814493499158159, -0.59999999999999998, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.1511281795998280, -0.59999999999999998, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.5864286332503075, -0.59999999999999998, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.1958944866494527, -0.59999999999999998, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 3.0398358172574604, -0.59999999999999998, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 4.0867036409261832, -0.59999999999999998, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler039 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998, nu=0.90000000000000002.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 5.7440178400898422e-16
! // mean(f - f_Boost): 5.0792703376600914e-16
! // variance(f - f_Boost): 1.9863137923719990e-31
! // stddev(f - f_Boost): 4.4568080420543122e-16
  const testcase_ellint_3<double>
  data040[10] =
  {
    { 0.0000000000000000, -0.59999999999999998, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17646850384035848, -0.59999999999999998, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36509041515134105, -0.59999999999999998, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.58097838596260631, -0.59999999999999998, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.84656453396163722, -0.59999999999999998, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.1997828426963724, -0.59999999999999998, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.7112436789225605, -0.59999999999999998, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.5193168553672312, -0.59999999999999998, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 3.8656670488606686, -0.59999999999999998, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 5.8709993116265595, -0.59999999999999998, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler040 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.4551389361831220e-16
! // mean(f - f_Boost): -1.3877787807814457e-17
! // variance(f - f_Boost): 2.5893058141206173e-32
! // stddev(f - f_Boost): 1.6091320064309879e-16
  const testcase_ellint_3<double>
  data041[10] =
  {
*************** data041[10] =
*** 1208,2676 ****
  	  0.0000000000000000 },
    { 0.17475385514035785, -0.50000000000000000, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35081868470101585, -0.50000000000000000, 0.0000000000000000, 
  	  0.34906585039886590 },
    { 0.52942862705190574, -0.50000000000000000, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.71164727562630314, -0.50000000000000000, 0.0000000000000000, 
  	  0.69813170079773179 },
    { 0.89824523594227768, -0.50000000000000000, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0895506700518851, -0.50000000000000000, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2853005857432931, -0.50000000000000000, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.4845545520549484, -0.50000000000000000, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.6857503548125963, -0.50000000000000000, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler041 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000, nu=0.10000000000000001.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.1662857256911530e-16
  const testcase_ellint_3<double>
  data042[10] =
  {
    { 0.0000000000000000, -0.50000000000000000, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17457763120814676, -0.50000000000000000, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.34943246340849154, -0.50000000000000000, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52487937869610790, -0.50000000000000000, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.70127785096388384, -0.50000000000000000, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.87898815988624479, -0.50000000000000000, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0582764576094172, -0.50000000000000000, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.2391936844060205, -0.50000000000000000, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.4214793542995841, -0.50000000000000000, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.6045524936084892, -0.50000000000000000, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler042 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000, nu=0.20000000000000001.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.2114786773102175e-16
  const testcase_ellint_3<double>
  data043[10] =
  {
    { 0.0000000000000000, -0.50000000000000000, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17440204336345433, -0.50000000000000000, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34806552388338824, -0.50000000000000000, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.52046416757129810, -0.50000000000000000, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.69140924550993865, -0.50000000000000000, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.86104678636125520, -0.50000000000000000, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.0297439459053981, -0.50000000000000000, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.1979214112912033, -0.50000000000000000, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.3659033858648930, -0.50000000000000000, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.5338490483665983, -0.50000000000000000, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler043 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.29999999999999999.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.2557837230041312e-16
  const testcase_ellint_3<double>
  data044[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17422708752228896, -0.50000000000000000, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34671739434855858, -0.50000000000000000, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.51617616305641878, -0.50000000000000000, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.68200047612545167, -0.50000000000000000, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.84427217869498372, -0.50000000000000000, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 1.0035637821389782, -0.50000000000000000, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.1606800483933111, -0.50000000000000000, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.3164407134643459, -0.50000000000000000, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.4715681939859637, -0.50000000000000000, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler044 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000, nu=0.40000000000000002.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.2992508582900068e-16
  const testcase_ellint_3<double>
  data045[10] =
  {
    { 0.0000000000000000, -0.50000000000000000, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17405275963859917, -0.50000000000000000, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34538761957029329, -0.50000000000000000, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.51200902646603907, -0.50000000000000000, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.67301522212868792, -0.50000000000000000, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.82853844466313320, -0.50000000000000000, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 0.97942097862681488, -0.50000000000000000, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.1268429801220614, -0.50000000000000000, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.2720406704533922, -0.50000000000000000, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.4161679518465340, -0.50000000000000000, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler045 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000, nu=0.50000000000000000.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.3419255755184137e-16
  const testcase_ellint_3<double>
  data046[10] =
  {
    { 0.0000000000000000, -0.50000000000000000, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17387905570381157, -0.50000000000000000, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34407576010465207, -0.50000000000000000, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.50795686560160824, -0.50000000000000000, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.66442115453330164, -0.50000000000000000, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.81373829119355345, -0.50000000000000000, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.95705743313235825, -0.50000000000000000, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.0959131991362554, -0.50000000000000000, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.2318900529754597, -0.50000000000000000, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.3664739530045971, -0.50000000000000000, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler046 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.59999999999999998.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.3838494104749599e-16
  const testcase_ellint_3<double>
  data047[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17370597174637581, -0.50000000000000000, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34278139158591414, -0.50000000000000000, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.50401419439302708, -0.50000000000000000, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.65618938076167210, -0.50000000000000000, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.79977959248855424, -0.50000000000000000, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.93625925190753545, -0.50000000000000000, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.0674905658379708, -0.50000000000000000, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.1953481298023050, -0.50000000000000000, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.3215740290190876, -0.50000000000000000, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler047 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.69999999999999996.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.4250604066951477e-16
  const testcase_ellint_3<double>
  data048[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17353350383131641, -0.50000000000000000, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34150410405436771, -0.50000000000000000, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.50017589696443487, -0.50000000000000000, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.64829398188419951, -0.50000000000000000, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.78658270782402073, -0.50000000000000000, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.91684738336675053, -0.50000000000000000, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.0412486789555935, -0.50000000000000000, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.1619021847612001, -0.50000000000000000, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.2807475181182502, -0.50000000000000000, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler048 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000, nu=0.80000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.5715240651179632e-16
  const testcase_ellint_3<double>
  data049[10] =
  {
    { 0.0000000000000000, -0.50000000000000000, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17336164805979126, -0.50000000000000000, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.34024350132086773, -0.50000000000000000, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.49643719555734073, -0.50000000000000000, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.64071162456976150, -0.50000000000000000, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.77407836177211908, -0.50000000000000000, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.89867058251905652, -0.50000000000000000, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.0169181822134910, -0.50000000000000000, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.1311363312779448, -0.50000000000000000, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.2434165408189539, -0.50000000000000000, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler049 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000, nu=0.90000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.4664649039489274e-16
  const testcase_ellint_3<double>
  data050[10] =
  {
    { 0.0000000000000000, -0.50000000000000000, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17319040056865681, -0.50000000000000000, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.33899920036578557, -0.50000000000000000, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.49279362182695174, -0.50000000000000000, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.63342123379746151, -0.50000000000000000, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.76220595179550321, -0.50000000000000000, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.88160004743532294, -0.50000000000000000, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 0.99427448642310123, -0.50000000000000000, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.1027091512470095, -0.50000000000000000, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.2091116095504744, -0.50000000000000000, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler050 = 2.5000000000000020e-13;
  
! // Test data for k=-0.40000000000000002, nu=0.0000000000000000.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 4.0617918857203532e-16
  const testcase_ellint_3<double>
  data051[10] =
  {
!   { 0.0000000000000000, -0.40000000000000002, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17467414669441528, -0.40000000000000002, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35018222772483443, -0.40000000000000002, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52729015917508737, -0.40000000000000002, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.70662374407341244, -0.40000000000000002, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.88859210497602170, -0.40000000000000002, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0733136290471379, -0.40000000000000002, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2605612170157061, -0.40000000000000002, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.4497513956433439, -0.40000000000000002, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.6399998658645112, -0.40000000000000002, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler051 = 2.5000000000000020e-13;
  
! // Test data for k=-0.40000000000000002, nu=0.10000000000000001.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 4.2644663257577874e-16
  const testcase_ellint_3<double>
  data052[10] =
  {
!   { 0.0000000000000000, -0.40000000000000002, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17449806706684670, -0.40000000000000002, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.34880048623856075, -0.40000000000000002, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52277322065757392, -0.40000000000000002, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.69638072056918365, -0.40000000000000002, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.86968426619831540, -0.40000000000000002, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0428044206578095, -0.40000000000000002, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.2158651158274378, -0.40000000000000002, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.3889447129893324, -0.40000000000000002, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.5620566886683604, -0.40000000000000002, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler052 = 2.5000000000000020e-13;
  
! // Test data for k=-0.40000000000000002, nu=0.20000000000000001.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 4.4583049464169287e-16
  const testcase_ellint_3<double>
  data053[10] =
  {
!   { 0.0000000000000000, -0.40000000000000002, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17432262290723397, -0.40000000000000002, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34743795258968596, -0.40000000000000002, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.51838919472805101, -0.40000000000000002, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.68663134739057907, -0.40000000000000002, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.85206432981833979, -0.40000000000000002, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.0149595349004430, -0.40000000000000002, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.1758349405464676, -0.40000000000000002, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.3353337673882637, -0.40000000000000002, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.4941414344266770, -0.40000000000000002, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler053 = 2.5000000000000020e-13;
  
! // Test data for k=-0.40000000000000002, nu=0.29999999999999999.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.1925080711125793e-16
  const testcase_ellint_3<double>
  data054[10] =
  {
!   { 0.0000000000000000, -0.40000000000000002, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17414781013591540, -0.40000000000000002, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34609415696777285, -0.40000000000000002, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.51413131295862535, -0.40000000000000002, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.67733527622935630, -0.40000000000000002, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.83558675182733266, -0.40000000000000002, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 0.98940140808865906, -0.40000000000000002, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.1396968797728058, -0.40000000000000002, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.2875920037865090, -0.40000000000000002, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.4342789859950078, -0.40000000000000002, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler054 = 2.5000000000000020e-13;
  
! // Test data for k=-0.40000000000000002, nu=0.40000000000000002.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 4.8235661108581362e-16
  const testcase_ellint_3<double>
  data055[10] =
  {
!   { 0.0000000000000000, -0.40000000000000002, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17397362471112707, -0.40000000000000002, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34476864603333196, -0.40000000000000002, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.50999329415379346, -0.40000000000000002, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.66845674551396006, -0.40000000000000002, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.82012848346231748, -0.40000000000000002, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 0.96582449258349057, -0.40000000000000002, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.1068473749476286, -0.40000000000000002, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.2447132729159989, -0.40000000000000002, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.3809986210732901, -0.40000000000000002, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler055 = 2.5000000000000020e-13;
  
! // Test data for k=-0.40000000000000002, nu=0.50000000000000000.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 4.9965792755639576e-16
  const testcase_ellint_3<double>
  data056[10] =
  {
!   { 0.0000000000000000, -0.40000000000000002, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17380006262854136, -0.40000000000000002, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34346098216756610, -0.40000000000000002, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.50596929935059420, -0.40000000000000002, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.65996392089131251, -0.40000000000000002, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.80558463511364786, -0.40000000000000002, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.94397834522857704, -0.40000000000000002, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.0768075114108115, -0.40000000000000002, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.2059184624251333, -0.40000000000000002, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.3331797176377398, -0.40000000000000002, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler056 = 2.5000000000000020e-13;
  
! // Test data for k=-0.40000000000000002, nu=0.59999999999999998.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 5.1640223038298069e-16
  const testcase_ellint_3<double>
  data057[10] =
  {
!   { 0.0000000000000000, -0.40000000000000002, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17362711992081245, -0.40000000000000002, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34217074276403953, -0.40000000000000002, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.50205389185761606, -0.40000000000000002, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.65182834920372734, -0.40000000000000002, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.79186512820565136, -0.40000000000000002, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.92365535916287134, -0.40000000000000002, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.0491915663957907, -0.40000000000000002, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.1705934291745106, -0.40000000000000002, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.2899514672527024, -0.40000000000000002, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler057 = 2.5000000000000020e-13;
  
! // Test data for k=-0.40000000000000002, nu=0.69999999999999996.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 5.3264047918332349e-16
  const testcase_ellint_3<double>
  data058[10] =
  {
!   { 0.0000000000000000, -0.40000000000000002, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17345479265712868, -0.40000000000000002, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34089751955950354, -0.40000000000000002, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.49824200167361332, -0.40000000000000002, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.64402450341199402, -0.40000000000000002, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.77889207804122873, -0.40000000000000002, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.90468169720957992, -0.40000000000000002, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.0236847823692916, -0.40000000000000002, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.1382465247425166, -0.40000000000000002, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.2506255923253344, -0.40000000000000002, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler058 = 2.5000000000000020e-13;
  
! // Test data for k=-0.40000000000000002, nu=0.80000000000000004.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 6.6611561645571024e-16
  const testcase_ellint_3<double>
  data059[10] =
  {
!   { 0.0000000000000000, -0.40000000000000002, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17328307694277154, -0.40000000000000002, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.33964091800132007, -0.40000000000000002, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.49452889372467440, -0.40000000000000002, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.63652940095937316, -0.40000000000000002, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.76659772511159097, -0.40000000000000002, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.88691047977338111, -0.40000000000000002, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.0000273200611638, -0.40000000000000002, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.1084787902188009, -0.40000000000000002, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.2146499565727209, -0.40000000000000002, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler059 = 2.5000000000000020e-13;
  
! // Test data for k=-0.40000000000000002, nu=0.90000000000000002.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 5.6376730823308004e-16
  const testcase_ellint_3<double>
  data060[10] =
  {
!   { 0.0000000000000000, -0.40000000000000002, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17311196891868127, -0.40000000000000002, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.33840055664911906, -0.40000000000000002, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.49091013944075329, -0.40000000000000002, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.62932228186809580, -0.40000000000000002, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.75492278323019801, -0.40000000000000002, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.87021659043854294, -0.40000000000000002, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 0.97800245228239246, -0.40000000000000002, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.0809625773173697, -0.40000000000000002, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.1815758115929846, -0.40000000000000002, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler060 = 2.5000000000000020e-13;
  
! // Test data for k=-0.30000000000000004, nu=0.0000000000000000.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.3361874537309281e-16
  const testcase_ellint_3<double>
  data061[10] =
  {
!   { 0.0000000000000000, -0.30000000000000004, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17461228653000099, -0.30000000000000004, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.34969146102798415, -0.30000000000000004, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52565822873726320, -0.30000000000000004, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.70284226512408532, -0.30000000000000004, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.88144139195111182, -0.30000000000000004, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0614897067260520, -0.30000000000000004, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2428416824174218, -0.30000000000000004, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.4251795877015927, -0.30000000000000004, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.6080486199305128, -0.30000000000000004, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler061 = 2.5000000000000020e-13;
  
! // Test data for k=-0.30000000000000004, nu=0.10000000000000001.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.3908043711907203e-16
  const testcase_ellint_3<double>
  data062[10] =
  {
!   { 0.0000000000000000, -0.30000000000000004, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17443631884814376, -0.30000000000000004, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.34831316835124926, -0.30000000000000004, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52116586276523857, -0.30000000000000004, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.69269385837910036, -0.30000000000000004, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.86279023163070856, -0.30000000000000004, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0315321461438263, -0.30000000000000004, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.1991449111869024, -0.30000000000000004, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.3659561780923213, -0.30000000000000004, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.5323534693557528, -0.30000000000000004, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler062 = 2.5000000000000020e-13;
  
! // Test data for k=-0.30000000000000004, nu=0.20000000000000001.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.4447238179454079e-16
  const testcase_ellint_3<double>
  data063[10] =
  {
!   { 0.0000000000000000, -0.30000000000000004, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17426098615372088, -0.30000000000000004, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34695402664689923, -0.30000000000000004, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.51680555567038933, -0.30000000000000004, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.68303375225260210, -0.30000000000000004, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.84540662891295026, -0.30000000000000004, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.0041834051646927, -0.30000000000000004, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.1599952702345711, -0.30000000000000004, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.3137179520499165, -0.30000000000000004, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.4663658145259877, -0.30000000000000004, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler063 = 2.5000000000000020e-13;
  
! // Test data for k=-0.30000000000000004, nu=0.29999999999999999.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.4979715256503266e-16
  const testcase_ellint_3<double>
  data064[10] =
  {
!   { 0.0000000000000000, -0.30000000000000004, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17408628437042842, -0.30000000000000004, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34561356761638401, -0.30000000000000004, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.51257058617875850, -0.30000000000000004, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.67382207124602878, -0.30000000000000004, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.82914751587825131, -0.30000000000000004, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 0.97907434814374938, -0.30000000000000004, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.1246399297351584, -0.30000000000000004, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.2671793970398149, -0.30000000000000004, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.4081767433479091, -0.30000000000000004, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler064 = 2.5000000000000020e-13;
  
! // Test data for k=-0.30000000000000004, nu=0.40000000000000002.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.5505716921759864e-16
  const testcase_ellint_3<double>
  data065[10] =
  {
!   { 0.0000000000000000, -0.30000000000000004, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17391220945982727, -0.30000000000000004, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34429133937639689, -0.30000000000000004, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.50845471668581632, -0.30000000000000004, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.66502347027873854, -0.30000000000000004, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.81389191978012254, -0.30000000000000004, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 0.95590618002140570, -0.30000000000000004, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.0924915195213121, -0.30000000000000004, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.2253651604038061, -0.30000000000000004, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.3563643538969763, -0.30000000000000004, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler065 = 2.5000000000000020e-13;
  
! // Test data for k=-0.30000000000000004, nu=0.50000000000000000.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.7807908859023716e-16
  const testcase_ellint_3<double>
  data066[10] =
  {
!   { 0.0000000000000000, -0.30000000000000004, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17373875742088232, -0.30000000000000004, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34298690571124157, -0.30000000000000004, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.50445214859646936, -0.30000000000000004, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.65660648352418516, -0.30000000000000004, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.79953670639287289, -0.30000000000000004, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.93443393926588536, -0.30000000000000004, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.0630838369016911, -0.30000000000000004, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.1875197325653029, -0.30000000000000004, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.3098448759814962, -0.30000000000000004, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler066 = 2.5000000000000020e-13;
  
! // Test data for k=-0.30000000000000004, nu=0.59999999999999998.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 7.0057999499931649e-16
  const testcase_ellint_3<double>
  data067[10] =
  {
!   { 0.0000000000000000, -0.30000000000000004, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17356592428950823, -0.30000000000000004, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34169984536697379, -0.30000000000000004, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.50055748266498457, -0.30000000000000004, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.64854298527106768, -0.30000000000000004, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.78599329284207431, -0.30000000000000004, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.91445452089128199, -0.30000000000000004, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.0360412952290587, -0.30000000000000004, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.1530473919778641, -0.30000000000000004, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.2677758800420669, -0.30000000000000004, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler067 = 2.5000000000000020e-13;
  
! // Test data for k=-0.30000000000000004, nu=0.69999999999999996.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 7.2239502844122443e-16
  const testcase_ellint_3<double>
  data068[10] =
  {
!   { 0.0000000000000000, -0.30000000000000004, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17339370613812224, -0.30000000000000004, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34042975138455933, -0.30000000000000004, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.49676568368075985, -0.30000000000000004, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.64080774055753720, -0.30000000000000004, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.77318507779667278, -0.30000000000000004, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.89579782346548609, -0.30000000000000004, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.0110573286052202, -0.30000000000000004, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.1214710972949635, -0.30000000000000004, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.2294913236274982, -0.30000000000000004, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler068 = 2.5000000000000020e-13;
  
! // Test data for k=-0.30000000000000004, nu=0.80000000000000004.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 7.4358357000101250e-16
  const testcase_ellint_3<double>
  data069[10] =
  {
!   { 0.0000000000000000, -0.30000000000000004, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17322209907520358, -0.30000000000000004, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.33917623046949996, -0.30000000000000004, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.49307204894329176, -0.30000000000000004, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.63337802830291734, -0.30000000000000004, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.76104540997689407, -0.30000000000000004, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.87832009635450714, -0.30000000000000004, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 0.98787879723171790, -0.30000000000000004, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.0924036340069339, -0.30000000000000004, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.1944567571590048, -0.30000000000000004, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler069 = 2.5000000000000020e-13;
  
! // Test data for k=-0.30000000000000004, nu=0.90000000000000002.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 7.6419688299804087e-16
  const testcase_ellint_3<double>
  data070[10] =
  {
!   { 0.0000000000000000, -0.30000000000000004, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17305109924485945, -0.30000000000000004, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.33793890239556984, -0.30000000000000004, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.48947218005089738, -0.30000000000000004, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.62623332340775151, -0.30000000000000004, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.74951596581511148, -0.30000000000000004, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.86189886597755994, -0.30000000000000004, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 0.96629451153092005, -0.30000000000000004, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.0655269133492682, -0.30000000000000004, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.1622376896064914, -0.30000000000000004, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler070 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996, nu=0.0000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.2156475739151676e-16
  const testcase_ellint_3<double>
  data071[10] =
  {
    { 0.0000000000000000, -0.19999999999999996, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17456817290292809, -0.19999999999999996, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.34934315932086801, -0.19999999999999996, 0.0000000000000000, 
  	  0.34906585039886590 },
    { 0.52450880529443988, -0.19999999999999996, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.70020491009844876, -0.19999999999999996, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.87651006649967955, -0.19999999999999996, 0.0000000000000000, 
  	  0.87266462599716477 },
    { 1.0534305870298994, -0.19999999999999996, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2308975521670784, -0.19999999999999996, 0.0000000000000000, 
  	  1.2217304763960306 },
    { 1.4087733584990738, -0.19999999999999996, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.5868678474541660, -0.19999999999999996, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler071 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996, nu=0.10000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.3374593253183472e-16
  const testcase_ellint_3<double>
  data072[10] =
  {
    { 0.0000000000000000, -0.19999999999999996, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17439228502691748, -0.19999999999999996, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.34796731137565740, -0.19999999999999996, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52003370294544848, -0.19999999999999996, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.69012222258631462, -0.19999999999999996, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.85803491465566772, -0.19999999999999996, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0238463961099364, -0.19999999999999996, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.1878691059202153, -0.19999999999999996, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.3505985031831940, -0.19999999999999996, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.5126513474261087, -0.19999999999999996, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler072 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996, nu=0.20000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.4549984059502760e-16
  const testcase_ellint_3<double>
  data073[10] =
  {
    { 0.0000000000000000, -0.19999999999999996, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17421703179583747, -0.19999999999999996, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34661057411998791, -0.19999999999999996, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.51569006052647393, -0.19999999999999996, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.68052412821107244, -0.19999999999999996, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.84081341263313825, -0.19999999999999996, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 0.99683359988842890, -0.19999999999999996, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.1493086715118852, -0.19999999999999996, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.2992699693957541, -0.19999999999999996, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.4479323932249564, -0.19999999999999996, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler073 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.29999999999999999.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 5.3140668101543467e-16
  const testcase_ellint_3<double>
  data074[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17404240913577704, -0.19999999999999996, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34527248032587193, -0.19999999999999996, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.51147118981668416, -0.19999999999999996, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.67137107867777601, -0.19999999999999996, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.82470418188668893, -0.19999999999999996, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 0.97202873223594299, -0.19999999999999996, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.1144773569375266, -0.19999999999999996, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.2535292433701000, -0.19999999999999996, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.3908453514752477, -0.19999999999999996, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler074 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996, nu=0.40000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.6788709752760483e-16
  const testcase_ellint_3<double>
  data075[10] =
  {
    { 0.0000000000000000, -0.19999999999999996, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17386841301066674, -0.19999999999999996, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34395257914113253, -0.19999999999999996, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.50737088376869466, -0.19999999999999996, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.66262801717277631, -0.19999999999999996, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.80958766645079094, -0.19999999999999996, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 0.94913754236162040, -0.19999999999999996, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.0827985514222997, -0.19999999999999996, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.2124212429050478, -0.19999999999999996, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.3400002519661005, -0.19999999999999996, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler075 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996, nu=0.50000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.7788201301356829e-16
  const testcase_ellint_3<double>
  data076[10] =
  {
    { 0.0000000000000000, -0.19999999999999996, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17369503942181799, -0.19999999999999996, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34265043534362660, -0.19999999999999996, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.50338337208655415, -0.19999999999999996, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.65426373297163609, -0.19999999999999996, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.79536193036145808, -0.19999999999999996, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.92791875910061605, -0.19999999999999996, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.0538145052725829, -0.19999999999999996, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.1752060022875899, -0.19999999999999996, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.2943374404397372, -0.19999999999999996, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler076 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.59999999999999998.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.8899223779598256e-16
  const testcase_ellint_3<double>
  data077[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17352228440746925, -0.19999999999999996, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34136562863713626, -0.19999999999999996, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.49950328177638481, -0.19999999999999996, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.64625032705690799, -0.19999999999999996, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.78193941198403083, -0.19999999999999996, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.90817230934317128, -0.19999999999999996, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.0271563751276462, -0.19999999999999996, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.1412999379040518, -0.19999999999999996, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.2530330675914556, -0.19999999999999996, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler077 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.69999999999999996.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 5.9999318361775115e-16
  const testcase_ellint_3<double>
  data078[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17335014404233895, -0.19999999999999996, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34009775298617811, -0.19999999999999996, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.49572560201923810, -0.19999999999999996, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.63856276669886503, -0.19999999999999996, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.76924438644867565, -0.19999999999999996, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.88973060843856466, -0.19999999999999996, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.0025230471636377, -0.19999999999999996, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.1102356376093103, -0.19999999999999996, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.2154356555075863, -0.19999999999999996, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler078 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996, nu=0.80000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 5.0901276230707249e-16
  const testcase_ellint_3<double>
  data079[10] =
  {
    { 0.0000000000000000, -0.19999999999999996, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17317861443718538, -0.19999999999999996, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.33884641598718701, -0.19999999999999996, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.49204565281259494, -0.19999999999999996, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.63117851188220320, -0.19999999999999996, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.75721095949544170, -0.19999999999999996, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.87245201443919118, -0.19999999999999996, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 0.97966584238831089, -0.19999999999999996, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.0816336325174360, -0.19999999999999996, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.1810223448909909, -0.19999999999999996, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler079 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996, nu=0.90000000000000002.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 6.4833128442756722e-16
  const testcase_ellint_3<double>
  data080[10] =
  {
    { 0.0000000000000000, -0.19999999999999996, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17300769173837277, -0.19999999999999996, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.33761123827372508, -0.19999999999999996, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.48845905690769426, -0.19999999999999996, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.62407720017324952, -0.19999999999999996, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.74578146525124289, -0.19999999999999996, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.85621583540073076, -0.19999999999999996, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 0.95837725988001199, -0.19999999999999996, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.0551821412633928, -0.19999999999999996, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.1493679916141861, -0.19999999999999996, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler080 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978, nu=0.0000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.1735566504509650e-16
  const testcase_ellint_3<double>
  data081[10] =
  {
    { 0.0000000000000000, -0.099999999999999978, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17454173353063659, -0.099999999999999978, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.34913506721468091, -0.099999999999999978, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52382550016538942, -0.099999999999999978, 0.0000000000000000, 
  	  0.52359877559829882 },
    { 0.69864700854177020, -0.099999999999999978, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.87361792586964870, -0.099999999999999978, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0487386319621683, -0.099999999999999978, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2239913752078757, -0.099999999999999978, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.3993423113684049, -0.099999999999999978, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.5747455615173562, -0.099999999999999978, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler081 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978, nu=0.10000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.3097339877269682e-16
  const testcase_ellint_3<double>
  data082[10] =
  {
    { 0.0000000000000000, -0.099999999999999978, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17436589347616613, -0.099999999999999978, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.34776067871237359, -0.099999999999999978, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.51936064354727796, -0.099999999999999978, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.68860303749364349, -0.099999999999999978, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.85524561882332051, -0.099999999999999978, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0193708301908335, -0.099999999999999978, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.1813474067123044, -0.099999999999999978, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.3417670770424983, -0.099999999999999978, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.5013711111199950, -0.099999999999999978, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler082 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978, nu=0.20000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.4399947764827574e-16
  const testcase_ellint_3<double>
  data083[10] =
  {
    { 0.0000000000000000, -0.099999999999999978, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17419068786141340, -0.099999999999999978, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34640537686230133, -0.099999999999999978, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.51502689171753946, -0.099999999999999978, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.67904147863672715, -0.099999999999999978, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.83811885126105179, -0.099999999999999978, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 0.99255278555742787, -0.099999999999999978, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.1431260546194930, -0.099999999999999978, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.2909589656532101, -0.099999999999999978, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.4373749386463430, -0.099999999999999978, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler083 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.29999999999999999.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.5650492137236872e-16
  const testcase_ellint_3<double>
  data084[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17401611261390104, -0.099999999999999978, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34506869507511773, -0.099999999999999978, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.51081757604259859, -0.099999999999999978, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.66992297597712303, -0.099999999999999978, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.82209722856174228, -0.099999999999999978, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 0.96792430487669590, -0.099999999999999978, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.1085964108954092, -0.099999999999999978, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.2456748370836999, -0.099999999999999978, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.3809159606704959, -0.099999999999999978, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler084 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978, nu=0.40000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.6854758534459740e-16
  const testcase_ellint_3<double>
  data085[10] =
  {
    { 0.0000000000000000, -0.099999999999999978, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17384216369897931, -0.099999999999999978, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34375018311376787, -0.099999999999999978, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.50672650758380455, -0.099999999999999978, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.66121264213337616, -0.099999999999999978, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.80706202005774441, -0.099999999999999978, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 0.94519376138245870, -0.099999999999999978, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.0771880300759584, -0.099999999999999978, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.2049711557188272, -0.099999999999999978, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.3306223265207477, -0.099999999999999978, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler085 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978, nu=0.50000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.8017534281650347e-16
  const testcase_ellint_3<double>
  data086[10] =
  {
    { 0.0000000000000000, -0.099999999999999978, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17366883711936548, -0.099999999999999978, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34244940634881882, -0.099999999999999978, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.50274793281634367, -0.099999999999999978, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.65287941633275082, -0.099999999999999978, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.79291198790315398, -0.099999999999999978, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.92412201537880323, -0.099999999999999978, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.0484480076799372, -0.099999999999999978, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.1681168130475206, -0.099999999999999978, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.2854480708580160, -0.099999999999999978, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler086 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.59999999999999998.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.9142834151672032e-16
  const testcase_ellint_3<double>
  data087[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17349612891469013, -0.099999999999999978, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34116594505539444, -0.099999999999999978, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.49887649430466674, -0.099999999999999978, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.64489553282165146, -0.099999999999999978, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.77956016553782437, -0.099999999999999978, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.90451074530096287, -0.099999999999999978, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.0220113666961632, -0.099999999999999978, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.1345351441065563, -0.099999999999999978, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.2445798942989255, -0.099999999999999978, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler087 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.69999999999999996.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 5.5172091551439012e-16
  const testcase_ellint_3<double>
  data088[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17332403516105047, -0.099999999999999978, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.33989939374896883, -0.099999999999999978, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.49510719568614070, -0.099999999999999978, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.63723607776354974, -0.099999999999999978, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.76693133887935327, -0.099999999999999978, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.88619382078823805, -0.099999999999999978, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 0.99758012018676490, -0.099999999999999978, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.1037642270814410, -0.099999999999999978, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.2073745911083185, -0.099999999999999978, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler088 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978, nu=0.80000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1294144515772258e-16
  const testcase_ellint_3<double>
  data089[10] =
  {
    { 0.0000000000000000, -0.099999999999999978, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17315255197057014, -0.099999999999999978, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.33864936055747991, -0.099999999999999978, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.49143537041117613, -0.099999999999999978, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.62987861760047492, -0.099999999999999978, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.75496005490917517, -0.099999999999999978, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.86903081862701881, -0.099999999999999978, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 0.97490814820725591, -0.099999999999999978, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.0754290107171083, -0.099999999999999978, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.1733158866987732, -0.099999999999999978, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler089 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978, nu=0.90000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.2325599449457852e-16
  const testcase_ellint_3<double>
  data090[10] =
  {
    { 0.0000000000000000, -0.099999999999999978, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17298167549096563, -0.099999999999999978, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.33741546662741589, -0.099999999999999978, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.48785665376856868, -0.099999999999999978, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.62280288554518959, -0.099999999999999978, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.74358903115455188, -0.099999999999999978, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.85290207679298335, -0.099999999999999978, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 0.95379006645397379, -0.099999999999999978, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.0492213119872327, -0.099999999999999978, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.1419839485283374, -0.099999999999999978, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler090 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000, nu=0.0000000000000000.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 2.1203697876423452e-16
  const testcase_ellint_3<double>
  data091[10] =
  {
    { 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17453292519943292, 0.0000000000000000, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.34906585039886584, 0.0000000000000000, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52359877559829870, 0.0000000000000000, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.69813170079773168, 0.0000000000000000, 0.0000000000000000, 
  	  0.69813170079773179 },
    { 0.87266462599716477, 0.0000000000000000, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0471975511965974, 0.0000000000000000, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2217304763960304, 0.0000000000000000, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.3962634015954631, 0.0000000000000000, 0.0000000000000000, 
  	  1.3962634015954636 },
    { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000, 
  	  1.5707963267948966 },
--- 1330,2948 ----
  	  0.0000000000000000 },
    { 0.17475385514035785, -0.50000000000000000, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35081868470101579, -0.50000000000000000, 0.0000000000000000, 
  	  0.34906585039886590 },
    { 0.52942862705190574, -0.50000000000000000, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.71164727562630326, -0.50000000000000000, 0.0000000000000000, 
  	  0.69813170079773179 },
    { 0.89824523594227768, -0.50000000000000000, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0895506700518853, -0.50000000000000000, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2853005857432933, -0.50000000000000000, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.4845545520549488, -0.50000000000000000, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.6857503548125961, -0.50000000000000000, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler041 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.7416868347177582e-16
! // mean(f - f_Boost): 2.7755575615628915e-18
! // variance(f - f_Boost): 5.4326441655972001e-32
! // stddev(f - f_Boost): 2.3308033305273100e-16
  const testcase_ellint_3<double>
  data042[10] =
  {
    { 0.0000000000000000, -0.50000000000000000, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17493071928248824, -0.50000000000000000, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35222467688034798, -0.50000000000000000, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.53411928652008112, -0.50000000000000000, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.72256398117177589, -0.50000000000000000, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.91899583232771009, -0.50000000000000000, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.1240549163055360, -0.50000000000000000, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.3372938086286021, -0.50000000000000000, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.5570024469132429, -0.50000000000000000, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.7803034946545480, -0.50000000000000000, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler042 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000, nu=0.20000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.1198767993730867e-16
! // mean(f - f_Boost): 2.7755575615628914e-17
! // variance(f - f_Boost): 5.0311947683004831e-32
! // stddev(f - f_Boost): 2.2430324938128922e-16
  const testcase_ellint_3<double>
  data043[10] =
  {
    { 0.0000000000000000, -0.50000000000000000, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17510822779582402, -0.50000000000000000, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35365094725531487, -0.50000000000000000, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53895933237328697, -0.50000000000000000, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.73408090840070794, -0.50000000000000000, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.94145442818535396, -0.50000000000000000, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1624120186296487, -0.50000000000000000, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.3965823372867114, -0.50000000000000000, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.6414308440430099, -0.50000000000000000, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.8922947612264018, -0.50000000000000000, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler043 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.3800262770228813e-16
! // mean(f - f_Boost): 5.8286708792820721e-17
! // variance(f - f_Boost): 8.5027191584278157e-32
! // stddev(f - f_Boost): 2.9159422419567599e-16
  const testcase_ellint_3<double>
  data044[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17528638488102041, -0.50000000000000000, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35509802222332720, -0.50000000000000000, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.54395740731866193, -0.50000000000000000, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.74625871438752667, -0.50000000000000000, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.96588271186092023, -0.50000000000000000, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.2054319584357329, -0.50000000000000000, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.4651077994832871, -0.50000000000000000, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.7416018368052644, -0.50000000000000000, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 2.0277924458111314, -0.50000000000000000, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler044 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000, nu=0.40000000000000002.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.0439932918341581e-16
! // mean(f - f_Boost): 3.0531133177191807e-17
! // variance(f - f_Boost): 9.0809736800018602e-32
! // stddev(f - f_Boost): 3.0134653938616686e-16
  const testcase_ellint_3<double>
  data045[10] =
  {
    { 0.0000000000000000, -0.50000000000000000, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17546519477859268, -0.50000000000000000, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35656644822531680, -0.50000000000000000, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.54912289677411319, -0.50000000000000000, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.75916731611690047, -0.50000000000000000, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.99260415631328214, -0.50000000000000000, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.2541925856918670, -0.50000000000000000, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.5456393705347609, -0.50000000000000000, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.8631904972952076, -0.50000000000000000, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.1962905366178065, -0.50000000000000000, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler045 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.6797816859260978e-16
! // mean(f - f_Boost): 9.4368957093138303e-17
! // variance(f - f_Boost): 7.7794254682023874e-32
! // stddev(f - f_Boost): 2.7891621444803792e-16
  const testcase_ellint_3<double>
  data046[10] =
  {
    { 0.0000000000000000, -0.50000000000000000, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17564466176941509, -0.50000000000000000, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35805679276065394, -0.50000000000000000, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.55446601496200032, -0.50000000000000000, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.77288783578259013, -0.50000000000000000, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 1.0220246013918972, -0.50000000000000000, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.3101681612463965, -0.50000000000000000, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.6422994881851025, -0.50000000000000000, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 2.0152636030998816, -0.50000000000000000, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.4136715042011945, -0.50000000000000000, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler046 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.60000000000000009.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.9178421578645735e-16
! // mean(f - f_Boost): 1.3322676295501878e-16
! // variance(f - f_Boost): 1.7749370367472766e-31
! // stddev(f - f_Boost): 4.2130001622920411e-16
  const testcase_ellint_3<double>
  data047[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17582479017522740, -0.50000000000000000, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.35956964546660036, -0.50000000000000000, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.55999790372984193, -0.50000000000000000, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.78751507911209895, -0.50000000000000000, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0546620505035220, -0.50000000000000000, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.3754438357425935, -0.50000000000000000, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.7615727400820127, -0.50000000000000000, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.2134638067565242, -0.50000000000000000, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 2.7090491861753558, -0.50000000000000000, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler047 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.70000000000000007.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.0745105182189226e-16
! // mean(f - f_Boost): 4.1633363423443370e-17
! // variance(f - f_Boost): 1.9996383743576116e-32
! // stddev(f - f_Boost): 1.4140857026211713e-16
  const testcase_ellint_3<double>
  data048[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17600558435914915, -0.50000000000000000, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.36110561926726259, -0.50000000000000000, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.56573074641137111, -0.50000000000000000, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.80316073084237205, -0.50000000000000000, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.0911910688131461, -0.50000000000000000, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.4530946406380640, -0.50000000000000000, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 1.9144386536785372, -0.50000000000000000, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.4878788958234970, -0.50000000000000000, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 3.1433945297859225, -0.50000000000000000, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler048 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.4380477375534667e-16
! // mean(f - f_Boost): 2.3037127760972000e-16
! // variance(f - f_Boost): 1.4989821857033475e-31
! // stddev(f - f_Boost): 3.8716691306248618e-16
  const testcase_ellint_3<double>
  data049[10] =
  {
    { 0.0000000000000000, -0.50000000000000000, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17618704872620228, -0.50000000000000000, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36266535159745827, -0.50000000000000000, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.57167789954529158, -0.50000000000000000, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.81995752984315018, -0.50000000000000000, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.1325112162158122, -0.50000000000000000, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.5479055930718042, -0.50000000000000000, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.1215243941010486, -0.50000000000000000, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 2.9069405767650132, -0.50000000000000000, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 3.8750701888108066, -0.50000000000000000, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler049 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.6192315188521289e-16
! // mean(f - f_Boost): 3.5249581031848718e-16
! // variance(f - f_Boost): 2.5029385557256515e-31
! // stddev(f - f_Boost): 5.0029376927217987e-16
  const testcase_ellint_3<double>
  data050[10] =
  {
    { 0.0000000000000000, -0.50000000000000000, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17636918772384180, -0.50000000000000000, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36424950570740700, -0.50000000000000000, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.57785404590231426, -0.50000000000000000, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.83806480521716531, -0.50000000000000000, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.1798568683069752, -0.50000000000000000, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.6678766243739607, -0.50000000000000000, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.4282976450693483, -0.50000000000000000, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 3.6810787666126656, -0.50000000000000000, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 5.5355132096026454, -0.50000000000000000, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler050 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.1423314994346225e-16
! // mean(f - f_Boost): 1.9428902930940238e-17
! // variance(f - f_Boost): 2.2263750157116445e-32
! // stddev(f - f_Boost): 1.4921042241450980e-16
  const testcase_ellint_3<double>
  data051[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17467414669441528, -0.39999999999999991, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35018222772483443, -0.39999999999999991, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52729015917508748, -0.39999999999999991, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.70662374407341244, -0.39999999999999991, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.88859210497602159, -0.39999999999999991, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0733136290471381, -0.39999999999999991, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2605612170157066, -0.39999999999999991, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.4497513956433439, -0.39999999999999991, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.6399998658645112, -0.39999999999999991, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler051 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.8489340395463703e-16
! // mean(f - f_Boost): 6.3837823915946496e-17
! // variance(f - f_Boost): 4.4785242050000272e-32
! // stddev(f - f_Boost): 2.1162523963365114e-16
  const testcase_ellint_3<double>
  data052[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17485086590796767, -0.39999999999999991, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35158366412506992, -0.39999999999999991, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.53194731675711726, -0.39999999999999991, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.71740615528010931, -0.39999999999999991, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.90896157773487030, -0.39999999999999991, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.1069605483834348, -0.39999999999999991, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.3109353428823001, -0.39999999999999991, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.5195460789903448, -0.39999999999999991, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.7306968836847187, -0.39999999999999991, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler052 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.20000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.0467985583872730e-16
! // mean(f - f_Boost): 8.6042284408449634e-17
! // variance(f - f_Boost): 1.5826864298542218e-32
! // stddev(f - f_Boost): 1.2580486595733180e-16
  const testcase_ellint_3<double>
  data053[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17502822886437389, -0.39999999999999991, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35300530062530805, -0.39999999999999991, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53675259548210896, -0.39999999999999991, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.72878006428676934, -0.39999999999999991, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.93100219010583563, -0.39999999999999991, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1443487271187609, -0.39999999999999991, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.3683427764108813, -0.39999999999999991, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.6008221459300933, -0.39999999999999991, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.8380358826317627, -0.39999999999999991, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler053 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.30000000000000004.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 2.9973414591826100e-16
! // mean(f - f_Boost): 8.6042284408449634e-17
! // variance(f - f_Boost): 1.5826864298542218e-32
! // stddev(f - f_Boost): 1.2580486595733180e-16
  const testcase_ellint_3<double>
  data054[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17520623975982899, -0.39999999999999991, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35444766141612105, -0.39999999999999991, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.54171455841536009, -0.39999999999999991, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.74080517001084012, -0.39999999999999991, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.95496950509296563, -0.39999999999999991, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.1862627879844718, -0.39999999999999991, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.4346501803799458, -0.39999999999999991, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.6971744798077697, -0.39999999999999991, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 1.9677924132520139, -0.39999999999999991, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler054 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.40000000000000002.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.2577246923979600e-16
! // mean(f - f_Boost): 1.8596235662471373e-16
! // variance(f - f_Boost): 1.6222417021441306e-31
! // stddev(f - f_Boost): 4.0277061736727151e-16
  const testcase_ellint_3<double>
  data055[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17538490283034375, -0.39999999999999991, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35591129064319948, -0.39999999999999991, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.54684250413264535, -0.39999999999999991, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.75355027742668290, -0.39999999999999991, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.98117935026780634, -0.39999999999999991, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.2337464222030734, -0.39999999999999991, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.5125183419289221, -0.39999999999999991, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.8140224451130311, -0.39999999999999991, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.1289968719280026, -0.39999999999999991, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler055 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.8009196014748294e-16
! // mean(f - f_Boost): 1.6375789613221060e-16
! // variance(f - f_Boost): 6.4788283329186610e-32
! // stddev(f - f_Boost): 2.5453542647181080e-16
  const testcase_ellint_3<double>
  data056[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17556422235224273, -0.39999999999999991, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35739675341763921, -0.39999999999999991, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.55214655195037188, -0.39999999999999991, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.76709520942047438, -0.39999999999999991, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 1.0100278761577499, -0.39999999999999991, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.2882265661384342, -0.39999999999999991, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.6059059780051874, -0.39999999999999991, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.9600182740224081, -0.39999999999999991, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.3367461373176508, -0.39999999999999991, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler056 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.60000000000000009.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 2.8411408870840790e-16
! // mean(f - f_Boost): 9.7144514654701197e-17
! // variance(f - f_Boost): 1.4860570558543486e-32
! // stddev(f - f_Boost): 1.2190393988113545e-16
  const testcase_ellint_3<double>
  data057[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17574420264267029, -0.39999999999999991, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.35890463689046265, -0.39999999999999991, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.55763773975194486, -0.39999999999999991, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.78153324227761267, -0.39999999999999991, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0420205885765887, -0.39999999999999991, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.3517205230381770, -0.39999999999999991, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.7210360970313896, -0.39999999999999991, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.1500780510169242, -0.39999999999999991, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 2.6186940209850191, -0.39999999999999991, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler057 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.70000000000000007.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.1553900340611668e-16
! // mean(f - f_Boost): 1.1657341758564144e-16
! // variance(f - f_Boost): 1.3242789405258207e-32
! // stddev(f - f_Boost): 1.1507731924779187e-16
  const testcase_ellint_3<double>
  data058[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17592484806010436, -0.39999999999999991, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.36043555139631439, -0.39999999999999991, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.56332813669944881, -0.39999999999999991, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.79697424562157548, -0.39999999999999991, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.0778155987523672, -0.39999999999999991, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.4272018169896268, -0.39999999999999991, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 1.8684377907453380, -0.39999999999999991, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.4128677409207469, -0.39999999999999991, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 3.0327078743873241, -0.39999999999999991, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler058 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.5727642219519274e-16
! // mean(f - f_Boost): 2.1926904736346843e-16
! // variance(f - f_Boost): 1.5293405480859847e-31
! // stddev(f - f_Boost): 3.9106783913868252e-16
  const testcase_ellint_3<double>
  data059[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17610616300487833, -0.39999999999999991, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36199013167171978, -0.39999999999999991, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.56923097361842423, -0.39999999999999991, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.81354878456624347, -0.39999999999999991, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.1182902719261825, -0.39999999999999991, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.5192950589409022, -0.39999999999999991, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.0678761710223981, -0.39999999999999991, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 2.8135222249879783, -0.39999999999999991, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 3.7289548002199902, -0.39999999999999991, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler059 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.90000000000000002.
! // max(|f - f_Boost|): 2.6645352591003757e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.0221626338023938e-16
! // mean(f - f_Boost): 4.1910919179599658e-16
! // variance(f - f_Boost): 6.2246150910247033e-31
! // stddev(f - f_Boost): 7.8896229891070860e-16
  const testcase_ellint_3<double>
  data060[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17628815191971123, -0.39999999999999991, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36356903815378772, -0.39999999999999991, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.57536079447000310, -0.39999999999999991, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.83141355850172571, -0.39999999999999991, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.1646481598721361, -0.39999999999999991, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.6357275034001995, -0.39999999999999991, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.3628787566572398, -0.39999999999999991, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 3.5521010369134958, -0.39999999999999991, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 5.3055535102872513, -0.39999999999999991, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler060 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.0000000000000000.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.2241249691539529e-16
! // mean(f - f_Boost): 4.9960036108132046e-17
! // variance(f - f_Boost): 4.6872855002064458e-32
! // stddev(f - f_Boost): 2.1650139722889657e-16
  const testcase_ellint_3<double>
  data061[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17461228653000099, -0.29999999999999993, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.34969146102798421, -0.29999999999999993, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52565822873726309, -0.29999999999999993, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.70284226512408543, -0.29999999999999993, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.88144139195111171, -0.29999999999999993, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0614897067260520, -0.29999999999999993, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2428416824174220, -0.29999999999999993, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.4251795877015929, -0.29999999999999993, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.6080486199305126, -0.29999999999999993, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler061 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.1872304407982844e-16
! // mean(f - f_Boost): 9.4368957093138303e-17
! // variance(f - f_Boost): 4.0359883022230488e-32
! // stddev(f - f_Boost): 2.0089769292411121e-16
  const testcase_ellint_3<double>
  data062[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17478889331392972, -0.29999999999999993, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35108939018329183, -0.29999999999999993, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.53028990896115835, -0.29999999999999993, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.71352417052371409, -0.29999999999999993, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.90153086032405894, -0.29999999999999993, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0945187977283313, -0.29999999999999993, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.2920699268385680, -0.29999999999999993, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.4931243665896394, -0.29999999999999993, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.6960848815118226, -0.29999999999999993, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler062 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.20000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.2247497610332889e-16
! // mean(f - f_Boost): 1.1102230246251565e-16
! // variance(f - f_Boost): 3.8043060629871325e-32
! // stddev(f - f_Boost): 1.9504630380981672e-16
  const testcase_ellint_3<double>
  data063[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17496614335337535, -0.29999999999999993, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35250745937139372, -0.29999999999999993, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53506875002836884, -0.29999999999999993, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.72479106622248191, -0.29999999999999993, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.92326451535891607, -0.29999999999999993, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1312092060698349, -0.29999999999999993, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.3481473154592321, -0.29999999999999993, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.5722049569662748, -0.29999999999999993, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.8002173372290498, -0.29999999999999993, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler063 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.1678685180047551e-16
! // mean(f - f_Boost): 1.0547118733938987e-16
! // variance(f - f_Boost): 7.5633408838247182e-32
! // stddev(f - f_Boost): 2.7501528837184157e-16
  const testcase_ellint_3<double>
  data064[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17514404084107435, -0.29999999999999993, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35394619108645647, -0.29999999999999993, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.54000325463372689, -0.29999999999999993, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.73670193794067651, -0.29999999999999993, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.94689345491722177, -0.29999999999999993, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.1723274608389140, -0.29999999999999993, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.4128880552936287, -0.29999999999999993, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.6659010047449661, -0.29999999999999993, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 1.9260216862473254, -0.29999999999999993, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler064 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.40000000000000002.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.3983279132797385e-16
! // mean(f - f_Boost): 1.1657341758564144e-16
! // variance(f - f_Boost): 1.8245832308692586e-31
! // stddev(f - f_Boost): 4.2715140534349863e-16
  const testcase_ellint_3<double>
  data065[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17532259000954434, -0.29999999999999993, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35540612770983693, -0.29999999999999993, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.54510265552938919, -0.29999999999999993, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.74932476310965057, -0.29999999999999993, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.97272793583093109, -0.29999999999999993, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.2188928987074241, -0.29999999999999993, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.4888771674085941, -0.29999999999999993, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.7794558498219191, -0.29999999999999993, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.0822121773175528, -0.29999999999999993, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler065 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.50000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.0516138451673425e-16
! // mean(f - f_Boost): 4.7184478546569152e-17
! // variance(f - f_Boost): 1.9448563670505968e-32
! // stddev(f - f_Boost): 1.3945810722401896e-16
  const testcase_ellint_3<double>
  data066[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17550179513158179, -0.29999999999999993, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35688783251681200, -0.29999999999999993, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.55037700010142798, -0.29999999999999993, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.76273839789895992, -0.29999999999999993, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 1.0011570518830419, -0.29999999999999993, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.2722987414055109, -0.29999999999999993, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.5799590511080066, -0.29999999999999993, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.9212367220124293, -0.29999999999999993, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.2833505881933971, -0.29999999999999993, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler066 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.60000000000000009.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.2121157428443725e-16
! // mean(f - f_Boost): 1.9428902930940239e-16
! // variance(f - f_Boost): 1.5987596229703424e-31
! // stddev(f - f_Boost): 3.9984492281012430e-16
  const testcase_ellint_3<double>
  data067[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17568166052076745, -0.29999999999999993, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.35839189074731181, -0.29999999999999993, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.55583724744367558, -0.29999999999999993, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.77703498090888223, -0.29999999999999993, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0326772113675962, -0.29999999999999993, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.3345139983717369, -0.29999999999999993, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.6921742922838403, -0.29999999999999993, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.1056608968472186, -0.29999999999999993, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 2.5560975528589061, -0.29999999999999993, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler067 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.70000000000000007.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.0088945789059381e-16
! // mean(f - f_Boost): 1.6653345369377348e-16
! // variance(f - f_Boost): 3.1994213989721786e-31
! // stddev(f - f_Boost): 5.6563428104846852e-16
  const testcase_ellint_3<double>
  data068[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17586219053197988, -0.29999999999999993, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.35991891074557669, -0.29999999999999993, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.56149538019961731, -0.29999999999999993, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.79232303189667685, -0.29999999999999993, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.0679345542878826, -0.29999999999999993, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.4084400085913955, -0.29999999999999993, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 1.8357382859296454, -0.29999999999999993, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.3604197996171519, -0.29999999999999993, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 2.9562123549913872, -0.29999999999999993, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler068 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.80000000000000004.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.1197887707781618e-16
! // mean(f - f_Boost): 3.4416913763379854e-16
! // variance(f - f_Boost): 4.3461914185990199e-31
! // stddev(f - f_Boost): 6.5925650687718054e-16
  const testcase_ellint_3<double>
  data069[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17604338956191670, -0.29999999999999993, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36146952517410791, -0.29999999999999993, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.56736453393774644, -0.29999999999999993, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.80873149979001091, -0.29999999999999993, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.1077903069860620, -0.29999999999999993, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.4985874311132998, -0.29999999999999993, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.0298167266724954, -0.29999999999999993, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 2.7483929054985432, -0.29999999999999993, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 3.6283050484567170, -0.29999999999999993, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler069 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 5.1301806687926828e-16
! // mean(f - f_Boost): 4.1633363423443370e-16
! // variance(f - f_Boost): 2.2835347143080263e-31
! // stddev(f - f_Boost): 4.7786344433405093e-16
  const testcase_ellint_3<double>
  data070[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17622526204962433, -0.29999999999999993, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36304439230777141, -0.29999999999999993, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.57345914744719195, -0.29999999999999993, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.82641512928845162, -0.29999999999999993, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.1534256210757743, -0.29999999999999993, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.6124900353411677, -0.29999999999999993, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.3165905514845089, -0.29999999999999993, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 3.4625619526539824, -0.29999999999999993, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 5.1479514944016787, -0.29999999999999993, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler070 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 4.2156475739151676e-16
! // mean(f - f_Boost): -5.2735593669694933e-17
! // variance(f - f_Boost): 3.0473442641042680e-32
! // stddev(f - f_Boost): 1.7456644190978597e-16
  const testcase_ellint_3<double>
  data071[10] =
  {
    { 0.0000000000000000, -0.19999999999999996, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17456817290292806, -0.19999999999999996, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.34934315932086796, -0.19999999999999996, 0.0000000000000000, 
  	  0.34906585039886590 },
    { 0.52450880529443988, -0.19999999999999996, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.70020491009844887, -0.19999999999999996, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.87651006649967977, -0.19999999999999996, 0.0000000000000000, 
  	  0.87266462599716477 },
    { 1.0534305870298994, -0.19999999999999996, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2308975521670789, -0.19999999999999996, 0.0000000000000000, 
  	  1.2217304763960306 },
    { 1.4087733584990738, -0.19999999999999996, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.5868678474541662, -0.19999999999999996, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler071 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996, nu=0.10000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 4.0890622182605400e-16
! // mean(f - f_Boost): -3.8857805861880476e-17
! // variance(f - f_Boost): 2.8794792590749608e-32
! // stddev(f - f_Boost): 1.6969028431454054e-16
  const testcase_ellint_3<double>
  data072[10] =
  {
    { 0.0000000000000000, -0.19999999999999996, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17474469953608965, -0.19999999999999996, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35073860234984255, -0.19999999999999996, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52912258712951521, -0.19999999999999996, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.71081701558898069, -0.19999999999999996, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.89640758521169384, -0.19999999999999996, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0860417038089853, -0.19999999999999996, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.2793599255528623, -0.19999999999999996, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.4754938544089076, -0.19999999999999996, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.6731552050562593, -0.19999999999999996, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler072 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996, nu=0.20000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 3.9570963716579749e-16
! // mean(f - f_Boost): -5.8286708792820721e-17
! // variance(f - f_Boost): 3.1158217732380362e-32
! // stddev(f - f_Boost): 1.7651690494788412e-16
  const testcase_ellint_3<double>
  data073[10] =
  {
    { 0.0000000000000000, -0.19999999999999996, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17492186907740698, -0.19999999999999996, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35215414286134267, -0.19999999999999996, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53388285615182440, -0.19999999999999996, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.72200960282688265, -0.19999999999999996, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.91793087614428526, -0.19999999999999996, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1222602841587976, -0.19999999999999996, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.3345489407496247, -0.19999999999999996, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.5531225705475502, -0.19999999999999996, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.7751816279738935, -0.19999999999999996, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler073 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.6785817924053817e-16
! // mean(f - f_Boost): -1.1102230246251566e-17
! // variance(f - f_Boost): 9.9840208317034302e-32
! // stddev(f - f_Boost): 3.1597501217190311e-16
  const testcase_ellint_3<double>
  data074[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17509968571715159, -0.19999999999999996, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35359030214835629, -0.19999999999999996, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.53879807274537084, -0.19999999999999996, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.73384116418059731, -0.19999999999999996, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.94132799329524031, -0.19999999999999996, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.1628407021801439, -0.19999999999999996, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.3982440216739438, -0.19999999999999996, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.6450634983653640, -0.19999999999999996, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 1.8983924169967099, -0.19999999999999996, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler074 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996, nu=0.40000000000000002.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.3298410018355870e-16
! // mean(f - f_Boost): 1.3877787807814457e-17
! // variance(f - f_Boost): 9.4370567274974557e-32
! // stddev(f - f_Boost): 3.0719792850046133e-16
  const testcase_ellint_3<double>
  data075[10] =
  {
    { 0.0000000000000000, -0.19999999999999996, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17527815368535152, -0.19999999999999996, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35504762134297801, -0.19999999999999996, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.54387742353211344, -0.19999999999999996, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.74637910471804259, -0.19999999999999996, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.96690539714174639, -0.19999999999999996, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.2087859420184757, -0.19999999999999996, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.4729799844168852, -0.19999999999999996, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.7564445064596661, -0.19999999999999996, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.0512956926676802, -0.19999999999999996, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler075 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.3841806057292116e-16
! // mean(f - f_Boost): 8.0491169285323847e-17
! // variance(f - f_Boost): 8.0538110429953348e-32
! // stddev(f - f_Boost): 2.8379237204328335e-16
  const testcase_ellint_3<double>
  data076[10] =
  {
    { 0.0000000000000000, -0.19999999999999996, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17545727725228877, -0.19999999999999996, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35652666242062175, -0.19999999999999996, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.54913090549102406, -0.19999999999999996, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.75970161209211551, -0.19999999999999996, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.99504737401590326, -0.19999999999999996, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.2614666007124373, -0.19999999999999996, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.5625255355205496, -0.19999999999999996, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.8954460255613343, -0.19999999999999996, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.2481046259421302, -0.19999999999999996, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler076 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.60000000000000009.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.5317584994994743e-16
! // mean(f - f_Boost): -1.3877787807814457e-17
! // variance(f - f_Boost): 1.0045745697575397e-31
! // stddev(f - f_Boost): 3.1695024369095219e-16
  const testcase_ellint_3<double>
  data077[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17563706072900442, -0.19999999999999996, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.35802800926807238, -0.19999999999999996, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.55456942250515051, -0.19999999999999996, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.77390003828438203, -0.19999999999999996, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0262441366366397, -0.19999999999999996, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.3228192988439669, -0.19999999999999996, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.6728005754680795, -0.19999999999999996, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.0761587107468511, -0.19999999999999996, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 2.5148333891629315, -0.19999999999999996, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler077 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.70000000000000007.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.1818454249546518e-16
! // mean(f - f_Boost): 3.6082248300317589e-17
! // variance(f - f_Boost): 8.9638010532618564e-32
! // stddev(f - f_Boost): 2.9939607634806868e-16
  const testcase_ellint_3<double>
  data078[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17581750846781172, -0.19999999999999996, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.35955226882028513, -0.19999999999999996, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.56020489659466499, -0.19999999999999996, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.78908196988531487, -0.19999999999999996, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.0611336754143517, -0.19999999999999996, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.3956969951058884, -0.19999999999999996, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 1.8138131612209609, -0.19999999999999996, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.3256365528879561, -0.19999999999999996, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 2.9058704854500963, -0.19999999999999996, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler078 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.9866614515542431e-16
! // mean(f - f_Boost): 1.8318679906315082e-16
! // variance(f - f_Boost): 3.1335688610218711e-31
! // stddev(f - f_Boost): 5.5978289193417400e-16
  const testcase_ellint_3<double>
  data079[10] =
  {
    { 0.0000000000000000, -0.19999999999999996, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17599862486281712, -0.19999999999999996, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36110007227128776, -0.19999999999999996, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.56605039658567224, -0.19999999999999996, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.80537523874517691, -0.19999999999999996, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.1005662342414086, -0.19999999999999996, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.4845340298105778, -0.19999999999999996, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.0043332244969392, -0.19999999999999996, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 2.7052856676744761, -0.19999999999999996, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 3.5622166386422629, -0.19999999999999996, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler079 = 2.5000000000000020e-13;
  
  // Test data for k=-0.19999999999999996, nu=0.90000000000000002.
! // max(|f - f_Boost|): 2.6645352591003757e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.2817178727913890e-16
! // mean(f - f_Boost): 3.4694469519536142e-16
! // variance(f - f_Boost): 6.6311432369155086e-31
! // stddev(f - f_Boost): 8.1431831840598485e-16
  const testcase_ellint_3<double>
  data080[10] =
  {
    { 0.0000000000000000, -0.19999999999999996, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17618041435044951, -0.19999999999999996, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36267207636502929, -0.19999999999999996, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.57212028758237743, -0.19999999999999996, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.82293323876704483, -0.19999999999999996, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.1457077279880385, -0.19999999999999996, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.5967346899325681, -0.19999999999999996, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.2856537353421724, -0.19999999999999996, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 3.4034714304613902, -0.19999999999999996, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 5.0448269356200361, -0.19999999999999996, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler080 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.1735566504509645e-16
! // mean(f - f_Boost): -3.6082248300317589e-17
! // variance(f - f_Boost): 8.2258607846939269e-33
! // stddev(f - f_Boost): 9.0696531271564778e-17
  const testcase_ellint_3<double>
  data081[10] =
  {
    { 0.0000000000000000, -0.099999999999999978, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17454173353063662, -0.099999999999999978, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.34913506721468096, -0.099999999999999978, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52382550016538953, -0.099999999999999978, 0.0000000000000000, 
  	  0.52359877559829882 },
    { 0.69864700854177020, -0.099999999999999978, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.87361792586964859, -0.099999999999999978, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0487386319621685, -0.099999999999999978, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2239913752078759, -0.099999999999999978, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.3993423113684051, -0.099999999999999978, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.5747455615173558, -0.099999999999999978, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler081 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978, nu=0.10000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.0305747373482148e-16
! // mean(f - f_Boost): -3.0531133177191807e-17
! // variance(f - f_Boost): 1.1508025840536076e-34
! // stddev(f - f_Boost): 1.0727546709539920e-17
  const testcase_ellint_3<double>
  data082[10] =
  {
    { 0.0000000000000000, -0.099999999999999978, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17471821213559732, -0.099999999999999978, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35052902610011138, -0.099999999999999978, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52842865990255727, -0.099999999999999978, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.70921799731166713, -0.099999999999999978, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.89340330535868662, -0.099999999999999978, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0811075784236857, -0.099999999999999978, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.2720133232666426, -0.099999999999999978, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.4653630031861395, -0.099999999999999978, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.6600374067558428, -0.099999999999999978, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler082 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978, nu=0.20000000000000001.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 1.6736714959992433e-16
! // mean(f - f_Boost): 5.5511151231257830e-18
! // variance(f - f_Boost): 3.8043060629871325e-36
! // stddev(f - f_Boost): 1.9504630380981673e-18
  const testcase_ellint_3<double>
  data083[10] =
  {
    { 0.0000000000000000, -0.099999999999999978, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17489533344059083, -0.099999999999999978, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35194305707815038, -0.099999999999999978, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53317790741512527, -0.099999999999999978, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.72036681615081222, -0.099999999999999978, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.91480372268244303, -0.099999999999999978, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1170528708071514, -0.099999999999999978, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.3266916802718358, -0.099999999999999978, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.5421622241831547, -0.099999999999999978, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.7608656115083421, -0.099999999999999978, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler083 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.30000000000000004.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 1.9186071760326645e-16
! // mean(f - f_Boost): -1.6653345369377347e-17
! // variance(f - f_Boost): 3.4238754566884194e-35
! // stddev(f - f_Boost): 5.8513891142945016e-18
  const testcase_ellint_3<double>
  data084[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17507310163441189, -0.099999999999999978, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35337768072524217, -0.099999999999999978, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.53808167801629170, -0.099999999999999978, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.73215166755955019, -0.099999999999999978, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.93806546000201219, -0.099999999999999978, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.1573218723395986, -0.099999999999999978, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.3897859679542097, -0.099999999999999978, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.6331009404328622, -0.099999999999999978, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 1.8826015946315438, -0.099999999999999978, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler084 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978, nu=0.40000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.0338059536914377e-16
! // mean(f - f_Boost): 2.7755575615628914e-17
! // variance(f - f_Boost): 9.5107651574678308e-35
! // stddev(f - f_Boost): 9.7523151904908362e-18
  const testcase_ellint_3<double>
  data085[10] =
  {
    { 0.0000000000000000, -0.099999999999999978, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17525152094559704, -0.099999999999999978, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35483343742825979, -0.099999999999999978, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.54314913099505446, -0.099999999999999978, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.74463962034766862, -0.099999999999999978, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.96349276837570441, -0.099999999999999978, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.2029081382746343, -0.099999999999999978, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.4638022887050806, -0.099999999999999978, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.7432413830105224, -0.099999999999999978, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.0336367403076760, -0.099999999999999978, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler085 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.9864616042835278e-16
! // mean(f - f_Boost): 1.0547118733938987e-16
! // variance(f - f_Boost): 7.5633408838247182e-32
! // stddev(f - f_Boost): 2.7501528837184157e-16
  const testcase_ellint_3<double>
  data086[10] =
  {
    { 0.0000000000000000, -0.099999999999999978, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17543059564292182, -0.099999999999999978, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35631088838721664, -0.099999999999999978, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.54839023346436444, -0.099999999999999978, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.75790846946088830, -0.099999999999999978, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.99146713686720678, -0.099999999999999978, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.2551692247937198, -0.099999999999999978, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.5524660788146873, -0.099999999999999978, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.8806578570830670, -0.099999999999999978, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.2279868912966849, -0.099999999999999978, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler086 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.60000000000000009.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.6726146516228014e-16
! // mean(f - f_Boost): -3.6082248300317589e-17
! // variance(f - f_Boost): 1.6073193116120635e-34
! // stddev(f - f_Boost): 1.2678009747638087e-17
  const testcase_ellint_3<double>
  data087[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17561033003590576, -0.099999999999999978, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.35781061668171932, -0.099999999999999978, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.55381585659629196, -0.099999999999999978, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.77204910484575640, -0.099999999999999978, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0224751740393108, -0.099999999999999978, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.3160230906351114, -0.099999999999999978, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.6616282844233206, -0.099999999999999978, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.0592555664850392, -0.099999999999999978, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 2.4913004919173822, -0.099999999999999978, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler087 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.70000000000000007.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 5
! // max(|f - f_Boost| / |f_Boost|): 2.1004074871280821e-16
! // mean(f - f_Boost): 3.3306690738754695e-17
! // variance(f - f_Boost): 1.3695501826753678e-34
! // stddev(f - f_Boost): 1.1702778228589003e-17
  const testcase_ellint_3<double>
  data088[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17579072847532518, -0.099999999999999978, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.35933322840606297, -0.099999999999999978, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.55943788649460324, -0.099999999999999978, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.78716856504031707, -0.099999999999999978, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.0571501305617423, -0.099999999999999978, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.3882948301743525, -0.099999999999999978, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 1.8011785680114223, -0.099999999999999978, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.3057268183616464, -0.099999999999999978, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 2.8771910188009739, -0.099999999999999978, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler088 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978, nu=0.80000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.3133043868392355e-16
! // mean(f - f_Boost): 1.8041124150158794e-16
! // variance(f - f_Boost): 6.1843750436434569e-32
! // stddev(f - f_Boost): 2.4868403735751633e-16
  const testcase_ellint_3<double>
  data089[10] =
  {
    { 0.0000000000000000, -0.099999999999999978, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17597179535373417, -0.099999999999999978, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36087935387831499, -0.099999999999999978, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.56526935244526444, -0.099999999999999978, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.80339402590612397, -0.099999999999999978, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.0963358646374459, -0.099999999999999978, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.4763748483246868, -0.099999999999999978, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.9896610222794102, -0.099999999999999978, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 2.6806423920122024, -0.099999999999999978, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 3.5246199613295612, -0.099999999999999978, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler089 = 2.5000000000000020e-13;
  
  // Test data for k=-0.099999999999999978, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.5624826890976725e-16
! // mean(f - f_Boost): 2.3314683517128288e-16
! // variance(f - f_Boost): 2.9401198977189756e-31
! // stddev(f - f_Boost): 5.4222872459129045e-16
  const testcase_ellint_3<double>
  data090[10] =
  {
    { 0.0000000000000000, -0.099999999999999978, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17615353510599349, -0.099999999999999978, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36244964892922371, -0.099999999999999978, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.57132457590110530, -0.099999999999999978, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.82087808820385000, -0.099999999999999978, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.1411894342144451, -0.099999999999999978, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.5875929286844597, -0.099999999999999978, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.2678622986596659, -0.099999999999999978, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 3.3697528941897903, -0.099999999999999978, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 4.9862890417305499, -0.099999999999999978, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler090 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000, nu=0.0000000000000000.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.1203697876423447e-16
! // mean(f - f_Boost): -1.9428902930940238e-17
! // variance(f - f_Boost): 4.6602749271592373e-35
! // stddev(f - f_Boost): 6.8266206333435850e-18
  const testcase_ellint_3<double>
  data091[10] =
  {
    { 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17453292519943295, 0.0000000000000000, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.34906585039886590, 0.0000000000000000, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52359877559829882, 0.0000000000000000, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.69813170079773179, 0.0000000000000000, 0.0000000000000000, 
  	  0.69813170079773179 },
    { 0.87266462599716477, 0.0000000000000000, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0471975511965976, 0.0000000000000000, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2217304763960306, 0.0000000000000000, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.3962634015954636, 0.0000000000000000, 0.0000000000000000, 
  	  1.3962634015954636 },
    { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000, 
  	  1.5707963267948966 },
*************** data091[10] =
*** 2678,3526 ****
  const double toler091 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000, nu=0.10000000000000001.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 2.1813975824747021e-16
  const testcase_ellint_3<double>
  data092[10] =
  {
    { 0.0000000000000000, 0.0000000000000000, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17435710107516605, 0.0000000000000000, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.34769194715329604, 0.0000000000000000, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.51913731575866107, 0.0000000000000000, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.68810051897078450, 0.0000000000000000, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.85432615661706823, 0.0000000000000000, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0179006647340794, 0.0000000000000000, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.1792120640746322, 0.0000000000000000, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.3388834245070498, 0.0000000000000000, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.4976955329233277, 0.0000000000000000, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler092 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000, nu=0.20000000000000001.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 2.2402804784409065e-16
  const testcase_ellint_3<double>
  data093[10] =
  {
    { 0.0000000000000000, 0.0000000000000000, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17418191132226074, 0.0000000000000000, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34633712256943405, 0.0000000000000000, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.51480684302043700, 0.0000000000000000, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.67855102942481937, 0.0000000000000000, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.83723056090326253, 0.0000000000000000, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 0.99114645269578161, 0.0000000000000000, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.1411014627915537, 0.0000000000000000, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.2882448138013969, 0.0000000000000000, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.4339343023863691, 0.0000000000000000, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler093 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.29999999999999999.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 2.2972291118632678e-16
  const testcase_ellint_3<double>
  data094[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17400735186871724, 0.0000000000000000, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34500091027020219, 0.0000000000000000, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.51060069523901530, 0.0000000000000000, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.66944393961375448, 0.0000000000000000, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.82123776744538157, 0.0000000000000000, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 0.96657579245516501, 0.0000000000000000, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.1066703663542414, 0.0000000000000000, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.2431094251944901, 0.0000000000000000, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.3776795151134889, 0.0000000000000000, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler094 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000, nu=0.40000000000000002.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 2.3524218164111537e-16
  const testcase_ellint_3<double>
  data095[10] =
  {
    { 0.0000000000000000, 0.0000000000000000, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17383341868035862, 0.0000000000000000, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34368286022299821, 0.0000000000000000, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.50651268947499395, 0.0000000000000000, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.66074441806097539, 0.0000000000000000, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.80622931670113474, 0.0000000000000000, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 0.94389791565435210, 0.0000000000000000, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.0753503387899728, 0.0000000000000000, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.2025374759127518, 0.0000000000000000, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.3275651989026320, 0.0000000000000000, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler095 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000, nu=0.50000000000000000.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 3.6090167266677240e-16
  const testcase_ellint_3<double>
  data096[10] =
  {
    { 0.0000000000000000, 0.0000000000000000, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17366010776037044, 0.0000000000000000, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34238253799539309, 0.0000000000000000, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.50253707775976397, 0.0000000000000000, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.65242145347295766, 0.0000000000000000, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.79210420018698058, 0.0000000000000000, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.92287437995632171, 0.0000000000000000, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.0466900550798659, 0.0000000000000000, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.1658007366618623, 0.0000000000000000, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.2825498301618641, 0.0000000000000000, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler096 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.59999999999999998.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 2.4581288258006758e-16
  const testcase_ellint_3<double>
  data097[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17348741514884700, 0.0000000000000000, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34109952405241289, 0.0000000000000000, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.49866850781226285, 0.0000000000000000, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.64444732407062499, 0.0000000000000000, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.77877564686544720, 0.0000000000000000, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.90330743691883475, 0.0000000000000000, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.0203257987604104, 0.0000000000000000, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.1323247918768629, 0.0000000000000000, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.2418235332245127, 0.0000000000000000, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler097 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.69999999999999996.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 2.5088894797856263e-16
  const testcase_ellint_3<double>
  data098[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17331533692234474, 0.0000000000000000, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.33983341309265935, 0.0000000000000000, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.49490198805931979, 0.0000000000000000, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.63679715525145297, 0.0000000000000000, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.76616861049481944, 0.0000000000000000, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.88503143209004198, 0.0000000000000000, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 0.99596060249112173, 0.0000000000000000, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.1016495050260424, 0.0000000000000000, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.2047457872617382, 0.0000000000000000, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler098 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000, nu=0.80000000000000004.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 3.8375904358197891e-16
  const testcase_ellint_3<double>
  data099[10] =
  {
    { 0.0000000000000000, 0.0000000000000000, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17314386919344210, 0.0000000000000000, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.33858381342073240, 0.0000000000000000, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.49123285640844727, 0.0000000000000000, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.62944854858904509, 0.0000000000000000, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.75421778305499343, 0.0000000000000000, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.86790634112156617, 0.0000000000000000, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 0.97334918087427558, 0.0000000000000000, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.0734012615283985, 0.0000000000000000, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.1708024551734544, 0.0000000000000000, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler099 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000, nu=0.90000000000000002.
! // max(|f - f_GSL|): 1.1102230246251565e-16
! // max(|f - f_GSL| / |f_GSL|): 1.7838310376154469e-16
  const testcase_ellint_3<double>
  data100[10] =
  {
    { 0.0000000000000000, 0.0000000000000000, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17297300811030597, 0.0000000000000000, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.33735034635360817, 0.0000000000000000, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.48765675230233130, 0.0000000000000000, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.62238126886123568, 0.0000000000000000, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.74286600807269243, 0.0000000000000000, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.85181283909264949, 0.0000000000000000, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 0.95228683995371133, 0.0000000000000000, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.0472730487412552, 0.0000000000000000, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.1395754288497419, 0.0000000000000000, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler100 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009, nu=0.0000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.1735566504509650e-16
  const testcase_ellint_3<double>
  data101[10] =
  {
    { 0.0000000000000000, 0.10000000000000009, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17454173353063659, 0.10000000000000009, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.34913506721468091, 0.10000000000000009, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52382550016538942, 0.10000000000000009, 0.0000000000000000, 
  	  0.52359877559829882 },
    { 0.69864700854177020, 0.10000000000000009, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.87361792586964870, 0.10000000000000009, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0487386319621683, 0.10000000000000009, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2239913752078757, 0.10000000000000009, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.3993423113684049, 0.10000000000000009, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.5747455615173562, 0.10000000000000009, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler101 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009, nu=0.10000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.3097339877269682e-16
  const testcase_ellint_3<double>
  data102[10] =
  {
    { 0.0000000000000000, 0.10000000000000009, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17436589347616613, 0.10000000000000009, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.34776067871237359, 0.10000000000000009, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.51936064354727796, 0.10000000000000009, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.68860303749364349, 0.10000000000000009, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.85524561882332051, 0.10000000000000009, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0193708301908335, 0.10000000000000009, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.1813474067123044, 0.10000000000000009, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.3417670770424983, 0.10000000000000009, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.5013711111199950, 0.10000000000000009, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler102 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009, nu=0.20000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.4399947764827574e-16
  const testcase_ellint_3<double>
  data103[10] =
  {
    { 0.0000000000000000, 0.10000000000000009, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17419068786141340, 0.10000000000000009, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34640537686230133, 0.10000000000000009, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.51502689171753946, 0.10000000000000009, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.67904147863672715, 0.10000000000000009, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.83811885126105179, 0.10000000000000009, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 0.99255278555742787, 0.10000000000000009, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.1431260546194930, 0.10000000000000009, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.2909589656532101, 0.10000000000000009, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.4373749386463430, 0.10000000000000009, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler103 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.29999999999999999.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.5650492137236872e-16
  const testcase_ellint_3<double>
  data104[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17401611261390104, 0.10000000000000009, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34506869507511773, 0.10000000000000009, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.51081757604259859, 0.10000000000000009, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.66992297597712303, 0.10000000000000009, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.82209722856174228, 0.10000000000000009, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 0.96792430487669590, 0.10000000000000009, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.1085964108954092, 0.10000000000000009, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.2456748370836999, 0.10000000000000009, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.3809159606704959, 0.10000000000000009, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler104 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009, nu=0.40000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.6854758534459740e-16
  const testcase_ellint_3<double>
  data105[10] =
  {
    { 0.0000000000000000, 0.10000000000000009, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17384216369897931, 0.10000000000000009, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34375018311376787, 0.10000000000000009, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.50672650758380455, 0.10000000000000009, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.66121264213337616, 0.10000000000000009, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.80706202005774441, 0.10000000000000009, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 0.94519376138245870, 0.10000000000000009, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.0771880300759584, 0.10000000000000009, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.2049711557188272, 0.10000000000000009, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.3306223265207477, 0.10000000000000009, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler105 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009, nu=0.50000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.8017534281650347e-16
  const testcase_ellint_3<double>
  data106[10] =
  {
    { 0.0000000000000000, 0.10000000000000009, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17366883711936548, 0.10000000000000009, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34244940634881882, 0.10000000000000009, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.50274793281634367, 0.10000000000000009, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.65287941633275082, 0.10000000000000009, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.79291198790315398, 0.10000000000000009, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.92412201537880323, 0.10000000000000009, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.0484480076799372, 0.10000000000000009, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.1681168130475206, 0.10000000000000009, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.2854480708580160, 0.10000000000000009, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler106 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.59999999999999998.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.9142834151672032e-16
  const testcase_ellint_3<double>
  data107[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17349612891469013, 0.10000000000000009, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34116594505539444, 0.10000000000000009, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.49887649430466674, 0.10000000000000009, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.64489553282165146, 0.10000000000000009, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.77956016553782437, 0.10000000000000009, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.90451074530096287, 0.10000000000000009, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.0220113666961632, 0.10000000000000009, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.1345351441065563, 0.10000000000000009, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.2445798942989255, 0.10000000000000009, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler107 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.69999999999999996.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 5.5172091551439012e-16
  const testcase_ellint_3<double>
  data108[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17332403516105047, 0.10000000000000009, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.33989939374896883, 0.10000000000000009, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.49510719568614070, 0.10000000000000009, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.63723607776354974, 0.10000000000000009, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.76693133887935327, 0.10000000000000009, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.88619382078823805, 0.10000000000000009, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 0.99758012018676490, 0.10000000000000009, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.1037642270814410, 0.10000000000000009, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.2073745911083185, 0.10000000000000009, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler108 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009, nu=0.80000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1294144515772258e-16
  const testcase_ellint_3<double>
  data109[10] =
  {
    { 0.0000000000000000, 0.10000000000000009, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17315255197057014, 0.10000000000000009, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.33864936055747991, 0.10000000000000009, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.49143537041117613, 0.10000000000000009, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.62987861760047492, 0.10000000000000009, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.75496005490917517, 0.10000000000000009, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.86903081862701881, 0.10000000000000009, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 0.97490814820725591, 0.10000000000000009, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.0754290107171083, 0.10000000000000009, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.1733158866987732, 0.10000000000000009, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler109 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009, nu=0.90000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.2325599449457852e-16
  const testcase_ellint_3<double>
  data110[10] =
  {
    { 0.0000000000000000, 0.10000000000000009, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17298167549096563, 0.10000000000000009, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.33741546662741589, 0.10000000000000009, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.48785665376856868, 0.10000000000000009, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.62280288554518959, 0.10000000000000009, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.74358903115455188, 0.10000000000000009, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.85290207679298335, 0.10000000000000009, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 0.95379006645397379, 0.10000000000000009, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.0492213119872327, 0.10000000000000009, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.1419839485283374, 0.10000000000000009, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler110 = 2.5000000000000020e-13;
  
! // Test data for k=0.19999999999999996, nu=0.0000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.2156475739151676e-16
  const testcase_ellint_3<double>
  data111[10] =
  {
!   { 0.0000000000000000, 0.19999999999999996, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17456817290292809, 0.19999999999999996, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.34934315932086801, 0.19999999999999996, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52450880529443988, 0.19999999999999996, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.70020491009844876, 0.19999999999999996, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.87651006649967955, 0.19999999999999996, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0534305870298994, 0.19999999999999996, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2308975521670784, 0.19999999999999996, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.4087733584990738, 0.19999999999999996, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.5868678474541660, 0.19999999999999996, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler111 = 2.5000000000000020e-13;
  
! // Test data for k=0.19999999999999996, nu=0.10000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.3374593253183472e-16
  const testcase_ellint_3<double>
  data112[10] =
  {
!   { 0.0000000000000000, 0.19999999999999996, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17439228502691748, 0.19999999999999996, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.34796731137565740, 0.19999999999999996, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52003370294544848, 0.19999999999999996, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.69012222258631462, 0.19999999999999996, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.85803491465566772, 0.19999999999999996, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0238463961099364, 0.19999999999999996, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.1878691059202153, 0.19999999999999996, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.3505985031831940, 0.19999999999999996, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.5126513474261087, 0.19999999999999996, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler112 = 2.5000000000000020e-13;
  
! // Test data for k=0.19999999999999996, nu=0.20000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.4549984059502760e-16
  const testcase_ellint_3<double>
  data113[10] =
  {
!   { 0.0000000000000000, 0.19999999999999996, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17421703179583747, 0.19999999999999996, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34661057411998791, 0.19999999999999996, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.51569006052647393, 0.19999999999999996, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.68052412821107244, 0.19999999999999996, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.84081341263313825, 0.19999999999999996, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 0.99683359988842890, 0.19999999999999996, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.1493086715118852, 0.19999999999999996, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.2992699693957541, 0.19999999999999996, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.4479323932249564, 0.19999999999999996, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler113 = 2.5000000000000020e-13;
  
! // Test data for k=0.19999999999999996, nu=0.29999999999999999.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 5.3140668101543467e-16
  const testcase_ellint_3<double>
  data114[10] =
  {
!   { 0.0000000000000000, 0.19999999999999996, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17404240913577704, 0.19999999999999996, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34527248032587193, 0.19999999999999996, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.51147118981668416, 0.19999999999999996, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.67137107867777601, 0.19999999999999996, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.82470418188668893, 0.19999999999999996, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 0.97202873223594299, 0.19999999999999996, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.1144773569375266, 0.19999999999999996, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.2535292433701000, 0.19999999999999996, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.3908453514752477, 0.19999999999999996, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler114 = 2.5000000000000020e-13;
  
! // Test data for k=0.19999999999999996, nu=0.40000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.6788709752760483e-16
  const testcase_ellint_3<double>
  data115[10] =
  {
!   { 0.0000000000000000, 0.19999999999999996, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17386841301066674, 0.19999999999999996, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34395257914113253, 0.19999999999999996, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.50737088376869466, 0.19999999999999996, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.66262801717277631, 0.19999999999999996, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.80958766645079094, 0.19999999999999996, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 0.94913754236162040, 0.19999999999999996, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.0827985514222997, 0.19999999999999996, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.2124212429050478, 0.19999999999999996, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.3400002519661005, 0.19999999999999996, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler115 = 2.5000000000000020e-13;
  
! // Test data for k=0.19999999999999996, nu=0.50000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.7788201301356829e-16
  const testcase_ellint_3<double>
  data116[10] =
  {
!   { 0.0000000000000000, 0.19999999999999996, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17369503942181799, 0.19999999999999996, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34265043534362660, 0.19999999999999996, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.50338337208655415, 0.19999999999999996, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.65426373297163609, 0.19999999999999996, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.79536193036145808, 0.19999999999999996, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.92791875910061605, 0.19999999999999996, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.0538145052725829, 0.19999999999999996, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.1752060022875899, 0.19999999999999996, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.2943374404397372, 0.19999999999999996, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler116 = 2.5000000000000020e-13;
  
! // Test data for k=0.19999999999999996, nu=0.59999999999999998.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.8899223779598256e-16
  const testcase_ellint_3<double>
  data117[10] =
  {
!   { 0.0000000000000000, 0.19999999999999996, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17352228440746925, 0.19999999999999996, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34136562863713626, 0.19999999999999996, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.49950328177638481, 0.19999999999999996, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.64625032705690799, 0.19999999999999996, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.78193941198403083, 0.19999999999999996, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.90817230934317128, 0.19999999999999996, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.0271563751276462, 0.19999999999999996, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.1412999379040518, 0.19999999999999996, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.2530330675914556, 0.19999999999999996, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler117 = 2.5000000000000020e-13;
  
! // Test data for k=0.19999999999999996, nu=0.69999999999999996.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 5.9999318361775115e-16
  const testcase_ellint_3<double>
  data118[10] =
  {
!   { 0.0000000000000000, 0.19999999999999996, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17335014404233895, 0.19999999999999996, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34009775298617811, 0.19999999999999996, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.49572560201923810, 0.19999999999999996, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.63856276669886503, 0.19999999999999996, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.76924438644867565, 0.19999999999999996, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.88973060843856466, 0.19999999999999996, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.0025230471636377, 0.19999999999999996, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.1102356376093103, 0.19999999999999996, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.2154356555075863, 0.19999999999999996, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler118 = 2.5000000000000020e-13;
  
! // Test data for k=0.19999999999999996, nu=0.80000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 5.0901276230707249e-16
  const testcase_ellint_3<double>
  data119[10] =
  {
!   { 0.0000000000000000, 0.19999999999999996, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17317861443718538, 0.19999999999999996, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.33884641598718701, 0.19999999999999996, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.49204565281259494, 0.19999999999999996, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.63117851188220320, 0.19999999999999996, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.75721095949544170, 0.19999999999999996, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.87245201443919118, 0.19999999999999996, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 0.97966584238831089, 0.19999999999999996, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.0816336325174360, 0.19999999999999996, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.1810223448909909, 0.19999999999999996, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler119 = 2.5000000000000020e-13;
  
! // Test data for k=0.19999999999999996, nu=0.90000000000000002.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 6.4833128442756722e-16
  const testcase_ellint_3<double>
  data120[10] =
  {
!   { 0.0000000000000000, 0.19999999999999996, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17300769173837277, 0.19999999999999996, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.33761123827372508, 0.19999999999999996, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.48845905690769426, 0.19999999999999996, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.62407720017324952, 0.19999999999999996, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.74578146525124289, 0.19999999999999996, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.85621583540073076, 0.19999999999999996, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 0.95837725988001199, 0.19999999999999996, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.0551821412633928, 0.19999999999999996, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.1493679916141861, 0.19999999999999996, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler120 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004, nu=0.0000000000000000.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.3361874537309281e-16
  const testcase_ellint_3<double>
  data121[10] =
  {
--- 2950,3888 ----
  const double toler091 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000, nu=0.10000000000000001.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.1019052604815601e-16
! // mean(f - f_Boost): 2.7755575615628915e-18
! // variance(f - f_Boost): 9.5107651574678312e-37
! // stddev(f - f_Boost): 9.7523151904908366e-19
  const testcase_ellint_3<double>
  data092[10] =
  {
    { 0.0000000000000000, 0.0000000000000000, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17470938780535167, 0.0000000000000000, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35045931581655582, 0.0000000000000000, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52819841383849875, 0.0000000000000000, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.70868910807992958, 0.0000000000000000, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.89241311307249638, 0.0000000000000000, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0794871444666669, 0.0000000000000000, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.2696086247356864, 0.0000000000000000, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.4620562617494721, 0.0000000000000000, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.6557647109660167, 0.0000000000000000, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler092 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000, nu=0.20000000000000001.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.0831888697465320e-16
! // mean(f - f_Boost): -1.9428902930940238e-17
! // variance(f - f_Boost): 4.6602749271592373e-35
! // stddev(f - f_Boost): 6.8266206333435850e-18
  const testcase_ellint_3<double>
  data093[10] =
  {
    { 0.0000000000000000, 0.0000000000000000, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17488649304197776, 0.0000000000000000, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35187284488675424, 0.0000000000000000, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53294400750146131, 0.0000000000000000, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.71982347021822823, 0.0000000000000000, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.91377311030258745, 0.0000000000000000, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1153429007215137, 0.0000000000000000, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.3241202847784086, 0.0000000000000000, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.5385854914338242, 0.0000000000000000, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.7562036827601815, 0.0000000000000000, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler093 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.30000000000000004.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.0642101770923591e-16
! // mean(f - f_Boost): -1.9428902930940238e-17
! // variance(f - f_Boost): 4.6602749271592373e-35
! // stddev(f - f_Boost): 6.8266206333435850e-18
  const testcase_ellint_3<double>
  data094[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17506424509761404, 0.0000000000000000, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35330695794774630, 0.0000000000000000, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.53784398359522367, 0.0000000000000000, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.73159289408687844, 0.0000000000000000, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.93699031797084975, 0.0000000000000000, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.1555098909390267, 0.0000000000000000, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.3870184960144325, 0.0000000000000000, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.6291980835772994, 0.0000000000000000, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 1.8774607092226381, 0.0000000000000000, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler094 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000, nu=0.40000000000000002.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.0449580089795878e-16
! // mean(f - f_Boost): -1.9428902930940238e-17
! // variance(f - f_Boost): 4.6602749271592373e-35
! // stddev(f - f_Boost): 6.8266206333435850e-18
  const testcase_ellint_3<double>
  data095[10] =
  {
    { 0.0000000000000000, 0.0000000000000000, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17524264820030025, 0.0000000000000000, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35476219513871499, 0.0000000000000000, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.54290749235440094, 0.0000000000000000, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.74406433757109913, 0.0000000000000000, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.96236826162553313, 0.0000000000000000, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.2009785880262487, 0.0000000000000000, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.4608000106167567, 0.0000000000000000, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.7389349574753439, 0.0000000000000000, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.0278893379868057, 0.0000000000000000, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler095 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000, nu=0.50000000000000000.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.0254203825026289e-16
! // mean(f - f_Boost): -1.9428902930940238e-17
! // variance(f - f_Boost): 4.6602749271592373e-35
! // stddev(f - f_Boost): 6.8266206333435850e-18
  const testcase_ellint_3<double>
  data096[10] =
  {
    { 0.0000000000000000, 0.0000000000000000, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17542170661831016, 0.0000000000000000, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35623911740195419, 0.0000000000000000, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.54814449099863127, 0.0000000000000000, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.75731546607718081, 0.0000000000000000, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.99028751188233310, 0.0000000000000000, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.2531022857760581, 0.0000000000000000, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.5491761777615785, 0.0000000000000000, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.8758359693666533, 0.0000000000000000, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.2214414690791831, 0.0000000000000000, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler096 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.60000000000000009.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 2.1742785192400269e-16
! // mean(f - f_Boost): 1.3877787807814457e-17
! // variance(f - f_Boost): 2.3776912893669577e-35
! // stddev(f - f_Boost): 4.8761575952454181e-18
  const testcase_ellint_3<double>
  data097[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17560142466065651, 0.0000000000000000, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.35773830754879005, 0.0000000000000000, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.55356583986445973, 0.0000000000000000, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.77143701715151514, 0.0000000000000000, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0212334940541210, 0.0000000000000000, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.3137928444460387, 0.0000000000000000, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.6579755004159076, 0.0000000000000000, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.0537461418295506, 0.0000000000000000, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 2.4836470664490253, 0.0000000000000000, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler097 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.70000000000000007.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 4
! // max(|f - f_Boost| / |f_Boost|): 3.0903019454022601e-16
! // mean(f - f_Boost): -6.9388939039072284e-17
! // variance(f - f_Boost): 5.9442282234173945e-34
! // stddev(f - f_Boost): 2.4380787976227090e-17
  const testcase_ellint_3<double>
  data098[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17578180667760368, 0.0000000000000000, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.35926037139410999, 0.0000000000000000, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.55918341315855080, 0.0000000000000000, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.78653584856932546, 0.0000000000000000, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.0558379029273324, 0.0000000000000000, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.3858662544850615, 0.0000000000000000, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 1.7970491170359040, 0.0000000000000000, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.2992404490153917, 0.0000000000000000, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 2.8678686047727382, 0.0000000000000000, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler098 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000, nu=0.80000000000000004.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.2373744057922657e-16
! // mean(f - f_Boost): 1.0269562977782698e-16
! // variance(f - f_Boost): 1.4388836606733082e-32
! // stddev(f - f_Boost): 1.1995347684303728e-16
  const testcase_ellint_3<double>
  data099[10] =
  {
    { 0.0000000000000000, 0.0000000000000000, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17596285706118869, 0.0000000000000000, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36080593896484231, 0.0000000000000000, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.56501022706967863, 0.0000000000000000, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.80273891984116930, 0.0000000000000000, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.0949425007763358, 0.0000000000000000, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.4736985692253419, 0.0000000000000000, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.9848676587180696, 0.0000000000000000, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 2.6726187823193546, 0.0000000000000000, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 3.5124073655203634, 0.0000000000000000, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler099 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000, nu=0.90000000000000002.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 6.6108624815885066e-16
! // mean(f - f_Boost): 2.1371793224034264e-16
! // variance(f - f_Boost): 5.6389326618626776e-33
! // stddev(f - f_Boost): 7.5092826966779442e-17
  const testcase_ellint_3<double>
  data100[10] =
  {
    { 0.0000000000000000, 0.0000000000000000, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17614458024574997, 0.0000000000000000, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36237566578821978, 0.0000000000000000, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.57106058859196640, 0.0000000000000000, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.82019857015755915, 0.0000000000000000, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.1397014388908147, 0.0000000000000000, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.5845952415154960, 0.0000000000000000, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.2620531413370775, 0.0000000000000000, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 3.3587842061975066, 0.0000000000000000, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 4.9672941328980507, 0.0000000000000000, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler100 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.1735566504509645e-16
! // mean(f - f_Boost): -5.8286708792820721e-17
! // variance(f - f_Boost): 4.1942474344433133e-34
! // stddev(f - f_Boost): 2.0479861900030756e-17
  const testcase_ellint_3<double>
  data101[10] =
  {
    { 0.0000000000000000, 0.10000000000000009, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17454173353063662, 0.10000000000000009, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.34913506721468096, 0.10000000000000009, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52382550016538953, 0.10000000000000009, 0.0000000000000000, 
  	  0.52359877559829882 },
    { 0.69864700854177020, 0.10000000000000009, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.87361792586964859, 0.10000000000000009, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0487386319621685, 0.10000000000000009, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2239913752078759, 0.10000000000000009, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.3993423113684051, 0.10000000000000009, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.5747455615173560, 0.10000000000000009, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler101 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009, nu=0.10000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.0305747373482148e-16
! // mean(f - f_Boost): -3.0531133177191807e-17
! // variance(f - f_Boost): 1.1508025840536076e-34
! // stddev(f - f_Boost): 1.0727546709539920e-17
  const testcase_ellint_3<double>
  data102[10] =
  {
    { 0.0000000000000000, 0.10000000000000009, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17471821213559732, 0.10000000000000009, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35052902610011138, 0.10000000000000009, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52842865990255727, 0.10000000000000009, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.70921799731166713, 0.10000000000000009, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.89340330535868662, 0.10000000000000009, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0811075784236857, 0.10000000000000009, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.2720133232666426, 0.10000000000000009, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.4653630031861395, 0.10000000000000009, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.6600374067558428, 0.10000000000000009, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler102 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009, nu=0.20000000000000001.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 1.6736714959992433e-16
! // mean(f - f_Boost): 5.5511151231257830e-18
! // variance(f - f_Boost): 3.8043060629871325e-36
! // stddev(f - f_Boost): 1.9504630380981673e-18
  const testcase_ellint_3<double>
  data103[10] =
  {
    { 0.0000000000000000, 0.10000000000000009, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17489533344059083, 0.10000000000000009, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35194305707815038, 0.10000000000000009, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53317790741512527, 0.10000000000000009, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.72036681615081222, 0.10000000000000009, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.91480372268244303, 0.10000000000000009, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1170528708071514, 0.10000000000000009, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.3266916802718358, 0.10000000000000009, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.5421622241831547, 0.10000000000000009, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.7608656115083421, 0.10000000000000009, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler103 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.30000000000000004.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 1.9186071760326645e-16
! // mean(f - f_Boost): -1.6653345369377347e-17
! // variance(f - f_Boost): 3.4238754566884194e-35
! // stddev(f - f_Boost): 5.8513891142945016e-18
  const testcase_ellint_3<double>
  data104[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17507310163441189, 0.10000000000000009, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35337768072524217, 0.10000000000000009, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.53808167801629170, 0.10000000000000009, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.73215166755955019, 0.10000000000000009, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.93806546000201219, 0.10000000000000009, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.1573218723395986, 0.10000000000000009, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.3897859679542097, 0.10000000000000009, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.6331009404328622, 0.10000000000000009, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 1.8826015946315438, 0.10000000000000009, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler104 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009, nu=0.40000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.0338059536914377e-16
! // mean(f - f_Boost): 2.7755575615628914e-17
! // variance(f - f_Boost): 9.5107651574678308e-35
! // stddev(f - f_Boost): 9.7523151904908362e-18
  const testcase_ellint_3<double>
  data105[10] =
  {
    { 0.0000000000000000, 0.10000000000000009, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17525152094559704, 0.10000000000000009, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35483343742825979, 0.10000000000000009, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.54314913099505446, 0.10000000000000009, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.74463962034766862, 0.10000000000000009, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.96349276837570441, 0.10000000000000009, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.2029081382746343, 0.10000000000000009, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.4638022887050806, 0.10000000000000009, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.7432413830105224, 0.10000000000000009, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.0336367403076760, 0.10000000000000009, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler105 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.9864616042835278e-16
! // mean(f - f_Boost): 9.4368957093138303e-17
! // variance(f - f_Boost): 7.7794254682023874e-32
! // stddev(f - f_Boost): 2.7891621444803792e-16
  const testcase_ellint_3<double>
  data106[10] =
  {
    { 0.0000000000000000, 0.10000000000000009, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17543059564292182, 0.10000000000000009, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35631088838721664, 0.10000000000000009, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.54839023346436455, 0.10000000000000009, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.75790846946088830, 0.10000000000000009, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.99146713686720678, 0.10000000000000009, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.2551692247937198, 0.10000000000000009, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.5524660788146873, 0.10000000000000009, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.8806578570830670, 0.10000000000000009, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.2279868912966849, 0.10000000000000009, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler106 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.60000000000000009.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.6726146516228014e-16
! // mean(f - f_Boost): -3.6082248300317589e-17
! // variance(f - f_Boost): 1.6073193116120635e-34
! // stddev(f - f_Boost): 1.2678009747638087e-17
  const testcase_ellint_3<double>
  data107[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17561033003590576, 0.10000000000000009, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.35781061668171932, 0.10000000000000009, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.55381585659629196, 0.10000000000000009, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.77204910484575640, 0.10000000000000009, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0224751740393108, 0.10000000000000009, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.3160230906351114, 0.10000000000000009, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.6616282844233206, 0.10000000000000009, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.0592555664850392, 0.10000000000000009, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 2.4913004919173822, 0.10000000000000009, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler107 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.70000000000000007.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 5
! // max(|f - f_Boost| / |f_Boost|): 2.1004074871280821e-16
! // mean(f - f_Boost): 3.3306690738754695e-17
! // variance(f - f_Boost): 1.3695501826753678e-34
! // stddev(f - f_Boost): 1.1702778228589003e-17
  const testcase_ellint_3<double>
  data108[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17579072847532518, 0.10000000000000009, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.35933322840606297, 0.10000000000000009, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.55943788649460324, 0.10000000000000009, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.78716856504031707, 0.10000000000000009, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.0571501305617423, 0.10000000000000009, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.3882948301743525, 0.10000000000000009, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 1.8011785680114223, 0.10000000000000009, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.3057268183616464, 0.10000000000000009, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 2.8771910188009739, 0.10000000000000009, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler108 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009, nu=0.80000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.3133043868392355e-16
! // mean(f - f_Boost): 1.8041124150158794e-16
! // variance(f - f_Boost): 6.1843750436434569e-32
! // stddev(f - f_Boost): 2.4868403735751633e-16
  const testcase_ellint_3<double>
  data109[10] =
  {
    { 0.0000000000000000, 0.10000000000000009, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17597179535373417, 0.10000000000000009, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36087935387831499, 0.10000000000000009, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.56526935244526444, 0.10000000000000009, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.80339402590612397, 0.10000000000000009, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.0963358646374459, 0.10000000000000009, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.4763748483246868, 0.10000000000000009, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.9896610222794102, 0.10000000000000009, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 2.6806423920122024, 0.10000000000000009, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 3.5246199613295612, 0.10000000000000009, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler109 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.5624826890976725e-16
! // mean(f - f_Boost): 2.3314683517128288e-16
! // variance(f - f_Boost): 2.9401198977189756e-31
! // stddev(f - f_Boost): 5.4222872459129045e-16
  const testcase_ellint_3<double>
  data110[10] =
  {
    { 0.0000000000000000, 0.10000000000000009, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17615353510599349, 0.10000000000000009, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36244964892922371, 0.10000000000000009, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.57132457590110530, 0.10000000000000009, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.82087808820385000, 0.10000000000000009, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.1411894342144451, 0.10000000000000009, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.5875929286844597, 0.10000000000000009, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.2678622986596659, 0.10000000000000009, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 3.3697528941897903, 0.10000000000000009, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 4.9862890417305499, 0.10000000000000009, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler110 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 4.2156475739151676e-16
! // mean(f - f_Boost): -5.2735593669694933e-17
! // variance(f - f_Boost): 3.0473442641042680e-32
! // stddev(f - f_Boost): 1.7456644190978597e-16
  const testcase_ellint_3<double>
  data111[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17456817290292806, 0.20000000000000018, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.34934315932086796, 0.20000000000000018, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52450880529443988, 0.20000000000000018, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.70020491009844887, 0.20000000000000018, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.87651006649967977, 0.20000000000000018, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0534305870298994, 0.20000000000000018, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2308975521670789, 0.20000000000000018, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.4087733584990738, 0.20000000000000018, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.5868678474541662, 0.20000000000000018, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler111 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.10000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 4.0890622182605400e-16
! // mean(f - f_Boost): -3.8857805861880476e-17
! // variance(f - f_Boost): 2.8794792590749608e-32
! // stddev(f - f_Boost): 1.6969028431454054e-16
  const testcase_ellint_3<double>
  data112[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17474469953608965, 0.20000000000000018, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35073860234984255, 0.20000000000000018, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52912258712951521, 0.20000000000000018, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.71081701558898069, 0.20000000000000018, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.89640758521169384, 0.20000000000000018, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0860417038089853, 0.20000000000000018, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.2793599255528623, 0.20000000000000018, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.4754938544089076, 0.20000000000000018, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.6731552050562593, 0.20000000000000018, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler112 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.20000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 3.9570963716579749e-16
! // mean(f - f_Boost): -5.8286708792820721e-17
! // variance(f - f_Boost): 3.1158217732380362e-32
! // stddev(f - f_Boost): 1.7651690494788412e-16
  const testcase_ellint_3<double>
  data113[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17492186907740698, 0.20000000000000018, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35215414286134267, 0.20000000000000018, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53388285615182440, 0.20000000000000018, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.72200960282688265, 0.20000000000000018, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.91793087614428526, 0.20000000000000018, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1222602841587976, 0.20000000000000018, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.3345489407496247, 0.20000000000000018, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.5531225705475502, 0.20000000000000018, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.7751816279738935, 0.20000000000000018, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler113 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.6785817924053817e-16
! // mean(f - f_Boost): -1.1102230246251566e-17
! // variance(f - f_Boost): 9.9840208317034302e-32
! // stddev(f - f_Boost): 3.1597501217190311e-16
  const testcase_ellint_3<double>
  data114[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17509968571715159, 0.20000000000000018, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35359030214835629, 0.20000000000000018, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.53879807274537084, 0.20000000000000018, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.73384116418059731, 0.20000000000000018, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.94132799329524031, 0.20000000000000018, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.1628407021801439, 0.20000000000000018, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.3982440216739438, 0.20000000000000018, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.6450634983653640, 0.20000000000000018, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 1.8983924169967099, 0.20000000000000018, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler114 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.40000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 3.6738449250038925e-16
! // mean(f - f_Boost): -3.0531133177191807e-17
! // variance(f - f_Boost): 2.7810428396951687e-32
! // stddev(f - f_Boost): 1.6676458975739331e-16
  const testcase_ellint_3<double>
  data115[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17527815368535152, 0.20000000000000018, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35504762134297801, 0.20000000000000018, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.54387742353211344, 0.20000000000000018, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.74637910471804259, 0.20000000000000018, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.96690539714174639, 0.20000000000000018, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.2087859420184757, 0.20000000000000018, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.4729799844168852, 0.20000000000000018, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.7564445064596661, 0.20000000000000018, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.0512956926676806, 0.20000000000000018, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler115 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.3841806057292116e-16
! // mean(f - f_Boost): 3.6082248300317589e-17
! // variance(f - f_Boost): 8.9638010532618564e-32
! // stddev(f - f_Boost): 2.9939607634806868e-16
  const testcase_ellint_3<double>
  data116[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17545727725228877, 0.20000000000000018, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35652666242062175, 0.20000000000000018, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.54913090549102406, 0.20000000000000018, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.75970161209211551, 0.20000000000000018, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.99504737401590326, 0.20000000000000018, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.2614666007124373, 0.20000000000000018, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.5625255355205498, 0.20000000000000018, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.8954460255613346, 0.20000000000000018, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.2481046259421302, 0.20000000000000018, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler116 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.60000000000000009.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.5317584994994743e-16
! // mean(f - f_Boost): -1.3877787807814457e-17
! // variance(f - f_Boost): 1.0045745697575397e-31
! // stddev(f - f_Boost): 3.1695024369095219e-16
  const testcase_ellint_3<double>
  data117[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17563706072900442, 0.20000000000000018, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.35802800926807238, 0.20000000000000018, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.55456942250515051, 0.20000000000000018, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.77390003828438203, 0.20000000000000018, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0262441366366397, 0.20000000000000018, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.3228192988439669, 0.20000000000000018, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.6728005754680795, 0.20000000000000018, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.0761587107468511, 0.20000000000000018, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 2.5148333891629315, 0.20000000000000018, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler117 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.70000000000000007.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.2209418045118284e-16
! // mean(f - f_Boost): 2.4980018054066023e-17
! // variance(f - f_Boost): 9.1989071679544611e-32
! // stddev(f - f_Boost): 3.0329700242426498e-16
  const testcase_ellint_3<double>
  data118[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17581750846781172, 0.20000000000000018, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.35955226882028513, 0.20000000000000018, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.56020489659466499, 0.20000000000000018, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.78908196988531498, 0.20000000000000018, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.0611336754143517, 0.20000000000000018, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.3956969951058884, 0.20000000000000018, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 1.8138131612209609, 0.20000000000000018, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.3256365528879561, 0.20000000000000018, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 2.9058704854500963, 0.20000000000000018, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler118 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.7399960886656824e-16
! // mean(f - f_Boost): 1.3877787807814457e-16
! // variance(f - f_Boost): 1.7585404776158019e-31
! // stddev(f - f_Boost): 4.1934955319110593e-16
  const testcase_ellint_3<double>
  data119[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17599862486281712, 0.20000000000000018, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36110007227128776, 0.20000000000000018, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.56605039658567224, 0.20000000000000018, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.80537523874517691, 0.20000000000000018, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.1005662342414086, 0.20000000000000018, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.4845340298105778, 0.20000000000000018, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.0043332244969392, 0.20000000000000018, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 2.7052856676744761, 0.20000000000000018, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 3.5622166386422633, 0.20000000000000018, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler119 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.1718503329017390e-16
! // mean(f - f_Boost): 2.3592239273284576e-16
! // variance(f - f_Boost): 2.9295534376290287e-31
! // stddev(f - f_Boost): 5.4125349307224141e-16
  const testcase_ellint_3<double>
  data120[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17618041435044951, 0.20000000000000018, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36267207636502929, 0.20000000000000018, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.57212028758237743, 0.20000000000000018, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.82293323876704483, 0.20000000000000018, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.1457077279880388, 0.20000000000000018, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.5967346899325681, 0.20000000000000018, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.2856537353421724, 0.20000000000000018, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 3.4034714304613902, 0.20000000000000018, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 5.0448269356200370, 0.20000000000000018, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler120 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.2241249691539529e-16
! // mean(f - f_Boost): 2.7755575615628914e-17
! // variance(f - f_Boost): 2.1399221604302621e-32
! // stddev(f - f_Boost): 1.4628472785736254e-16
  const testcase_ellint_3<double>
  data121[10] =
  {
*************** data121[10] =
*** 3528,3546 ****
  	  0.0000000000000000 },
    { 0.17461228653000099, 0.30000000000000004, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.34969146102798415, 0.30000000000000004, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52565822873726320, 0.30000000000000004, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.70284226512408532, 0.30000000000000004, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.88144139195111182, 0.30000000000000004, 0.0000000000000000, 
  	  0.87266462599716477 },
    { 1.0614897067260520, 0.30000000000000004, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2428416824174218, 0.30000000000000004, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.4251795877015927, 0.30000000000000004, 0.0000000000000000, 
  	  1.3962634015954636 },
    { 1.6080486199305128, 0.30000000000000004, 0.0000000000000000, 
  	  1.5707963267948966 },
--- 3890,3908 ----
  	  0.0000000000000000 },
    { 0.17461228653000099, 0.30000000000000004, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.34969146102798421, 0.30000000000000004, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52565822873726309, 0.30000000000000004, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.70284226512408543, 0.30000000000000004, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.88144139195111171, 0.30000000000000004, 0.0000000000000000, 
  	  0.87266462599716477 },
    { 1.0614897067260520, 0.30000000000000004, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2428416824174220, 0.30000000000000004, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.4251795877015929, 0.30000000000000004, 0.0000000000000000, 
  	  1.3962634015954636 },
    { 1.6080486199305128, 0.30000000000000004, 0.0000000000000000, 
  	  1.5707963267948966 },
*************** data121[10] =
*** 3548,4106 ****
  const double toler121 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004, nu=0.10000000000000001.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.3908043711907203e-16
  const testcase_ellint_3<double>
  data122[10] =
  {
    { 0.0000000000000000, 0.30000000000000004, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17443631884814376, 0.30000000000000004, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.34831316835124926, 0.30000000000000004, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52116586276523857, 0.30000000000000004, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.69269385837910036, 0.30000000000000004, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.86279023163070856, 0.30000000000000004, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0315321461438263, 0.30000000000000004, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.1991449111869024, 0.30000000000000004, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.3659561780923213, 0.30000000000000004, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.5323534693557528, 0.30000000000000004, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler122 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004, nu=0.20000000000000001.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.4447238179454079e-16
  const testcase_ellint_3<double>
  data123[10] =
  {
    { 0.0000000000000000, 0.30000000000000004, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17426098615372088, 0.30000000000000004, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34695402664689923, 0.30000000000000004, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.51680555567038933, 0.30000000000000004, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.68303375225260210, 0.30000000000000004, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.84540662891295026, 0.30000000000000004, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.0041834051646927, 0.30000000000000004, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.1599952702345711, 0.30000000000000004, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.3137179520499165, 0.30000000000000004, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.4663658145259877, 0.30000000000000004, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler123 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.29999999999999999.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.4979715256503266e-16
  const testcase_ellint_3<double>
  data124[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17408628437042842, 0.30000000000000004, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34561356761638401, 0.30000000000000004, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.51257058617875850, 0.30000000000000004, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.67382207124602878, 0.30000000000000004, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.82914751587825131, 0.30000000000000004, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 0.97907434814374938, 0.30000000000000004, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.1246399297351584, 0.30000000000000004, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.2671793970398149, 0.30000000000000004, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.4081767433479091, 0.30000000000000004, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler124 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004, nu=0.40000000000000002.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.5505716921759864e-16
  const testcase_ellint_3<double>
  data125[10] =
  {
    { 0.0000000000000000, 0.30000000000000004, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17391220945982727, 0.30000000000000004, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34429133937639689, 0.30000000000000004, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.50845471668581632, 0.30000000000000004, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.66502347027873854, 0.30000000000000004, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.81389191978012254, 0.30000000000000004, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 0.95590618002140570, 0.30000000000000004, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.0924915195213121, 0.30000000000000004, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.2253651604038061, 0.30000000000000004, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.3563643538969763, 0.30000000000000004, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler125 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004, nu=0.50000000000000000.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.7807908859023716e-16
  const testcase_ellint_3<double>
  data126[10] =
  {
    { 0.0000000000000000, 0.30000000000000004, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17373875742088232, 0.30000000000000004, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34298690571124157, 0.30000000000000004, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.50445214859646936, 0.30000000000000004, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.65660648352418516, 0.30000000000000004, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.79953670639287289, 0.30000000000000004, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.93443393926588536, 0.30000000000000004, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.0630838369016911, 0.30000000000000004, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.1875197325653029, 0.30000000000000004, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.3098448759814962, 0.30000000000000004, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler126 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.59999999999999998.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 7.0057999499931649e-16
  const testcase_ellint_3<double>
  data127[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17356592428950823, 0.30000000000000004, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34169984536697379, 0.30000000000000004, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.50055748266498457, 0.30000000000000004, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.64854298527106768, 0.30000000000000004, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.78599329284207431, 0.30000000000000004, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.91445452089128199, 0.30000000000000004, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.0360412952290587, 0.30000000000000004, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.1530473919778641, 0.30000000000000004, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.2677758800420669, 0.30000000000000004, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler127 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.69999999999999996.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 7.2239502844122443e-16
  const testcase_ellint_3<double>
  data128[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17339370613812224, 0.30000000000000004, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34042975138455933, 0.30000000000000004, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.49676568368075985, 0.30000000000000004, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.64080774055753720, 0.30000000000000004, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.77318507779667278, 0.30000000000000004, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.89579782346548609, 0.30000000000000004, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.0110573286052202, 0.30000000000000004, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.1214710972949635, 0.30000000000000004, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.2294913236274982, 0.30000000000000004, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler128 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004, nu=0.80000000000000004.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 7.4358357000101250e-16
  const testcase_ellint_3<double>
  data129[10] =
  {
    { 0.0000000000000000, 0.30000000000000004, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17322209907520358, 0.30000000000000004, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.33917623046949996, 0.30000000000000004, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.49307204894329176, 0.30000000000000004, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.63337802830291734, 0.30000000000000004, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.76104540997689407, 0.30000000000000004, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.87832009635450714, 0.30000000000000004, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 0.98787879723171790, 0.30000000000000004, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.0924036340069339, 0.30000000000000004, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.1944567571590048, 0.30000000000000004, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler129 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004, nu=0.90000000000000002.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 7.6419688299804087e-16
  const testcase_ellint_3<double>
  data130[10] =
  {
    { 0.0000000000000000, 0.30000000000000004, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17305109924485945, 0.30000000000000004, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.33793890239556984, 0.30000000000000004, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.48947218005089738, 0.30000000000000004, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.62623332340775151, 0.30000000000000004, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.74951596581511148, 0.30000000000000004, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.86189886597755994, 0.30000000000000004, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 0.96629451153092005, 0.30000000000000004, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.0655269133492682, 0.30000000000000004, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.1622376896064914, 0.30000000000000004, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler130 = 2.5000000000000020e-13;
  
! // Test data for k=0.39999999999999991, nu=0.0000000000000000.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 5.4157225142938039e-16
  const testcase_ellint_3<double>
  data131[10] =
  {
!   { 0.0000000000000000, 0.39999999999999991, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17467414669441528, 0.39999999999999991, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35018222772483443, 0.39999999999999991, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52729015917508737, 0.39999999999999991, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.70662374407341244, 0.39999999999999991, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.88859210497602170, 0.39999999999999991, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0733136290471379, 0.39999999999999991, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2605612170157061, 0.39999999999999991, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.4497513956433439, 0.39999999999999991, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.6399998658645112, 0.39999999999999991, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler131 = 2.5000000000000020e-13;
  
! // Test data for k=0.39999999999999991, nu=0.10000000000000001.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 5.6859551010103832e-16
  const testcase_ellint_3<double>
  data132[10] =
  {
!   { 0.0000000000000000, 0.39999999999999991, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17449806706684670, 0.39999999999999991, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.34880048623856075, 0.39999999999999991, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52277322065757392, 0.39999999999999991, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.69638072056918365, 0.39999999999999991, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.86968426619831540, 0.39999999999999991, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0428044206578095, 0.39999999999999991, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.2158651158274378, 0.39999999999999991, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.3889447129893324, 0.39999999999999991, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.5620566886683604, 0.39999999999999991, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler132 = 2.5000000000000020e-13;
  
! // Test data for k=0.39999999999999991, nu=0.20000000000000001.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 5.9444065952225719e-16
  const testcase_ellint_3<double>
  data133[10] =
  {
!   { 0.0000000000000000, 0.39999999999999991, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17432262290723397, 0.39999999999999991, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34743795258968596, 0.39999999999999991, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.51838919472805112, 0.39999999999999991, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.68663134739057907, 0.39999999999999991, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.85206432981833979, 0.39999999999999991, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.0149595349004430, 0.39999999999999991, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.1758349405464676, 0.39999999999999991, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.3353337673882637, 0.39999999999999991, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.4941414344266770, 0.39999999999999991, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler133 = 2.5000000000000020e-13;
  
! // Test data for k=0.39999999999999991, nu=0.29999999999999999.
! // max(|f - f_GSL|): 1.1102230246251565e-15
! // max(|f - f_GSL| / |f_GSL|): 7.7406350888907249e-16
  const testcase_ellint_3<double>
  data134[10] =
  {
!   { 0.0000000000000000, 0.39999999999999991, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17414781013591540, 0.39999999999999991, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34609415696777285, 0.39999999999999991, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.51413131295862535, 0.39999999999999991, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.67733527622935630, 0.39999999999999991, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.83558675182733266, 0.39999999999999991, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 0.98940140808865906, 0.39999999999999991, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.1396968797728058, 0.39999999999999991, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.2875920037865090, 0.39999999999999991, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.4342789859950078, 0.39999999999999991, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler134 = 2.5000000000000020e-13;
  
! // Test data for k=0.39999999999999991, nu=0.40000000000000002.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.4314214811441816e-16
  const testcase_ellint_3<double>
  data135[10] =
  {
!   { 0.0000000000000000, 0.39999999999999991, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17397362471112707, 0.39999999999999991, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34476864603333196, 0.39999999999999991, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.50999329415379346, 0.39999999999999991, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.66845674551396006, 0.39999999999999991, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.82012848346231748, 0.39999999999999991, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 0.96582449258349057, 0.39999999999999991, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.1068473749476286, 0.39999999999999991, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.2447132729159989, 0.39999999999999991, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.3809986210732901, 0.39999999999999991, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler135 = 2.5000000000000020e-13;
  
! // Test data for k=0.39999999999999991, nu=0.50000000000000000.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.6621057007519435e-16
  const testcase_ellint_3<double>
  data136[10] =
  {
!   { 0.0000000000000000, 0.39999999999999991, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17380006262854136, 0.39999999999999991, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34346098216756610, 0.39999999999999991, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.50596929935059420, 0.39999999999999991, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.65996392089131251, 0.39999999999999991, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.80558463511364786, 0.39999999999999991, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.94397834522857704, 0.39999999999999991, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.0768075114108115, 0.39999999999999991, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.2059184624251333, 0.39999999999999991, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.3331797176377398, 0.39999999999999991, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler136 = 2.5000000000000020e-13;
  
! // Test data for k=0.39999999999999991, nu=0.59999999999999998.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 6.8853630717730749e-16
  const testcase_ellint_3<double>
  data137[10] =
  {
!   { 0.0000000000000000, 0.39999999999999991, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17362711992081245, 0.39999999999999991, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34217074276403953, 0.39999999999999991, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.50205389185761606, 0.39999999999999991, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.65182834920372734, 0.39999999999999991, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.79186512820565136, 0.39999999999999991, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.92365535916287134, 0.39999999999999991, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.0491915663957907, 0.39999999999999991, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.1705934291745106, 0.39999999999999991, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.2899514672527024, 0.39999999999999991, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler137 = 2.5000000000000020e-13;
  
! // Test data for k=0.39999999999999991, nu=0.69999999999999996.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 7.1018730557776469e-16
  const testcase_ellint_3<double>
  data138[10] =
  {
!   { 0.0000000000000000, 0.39999999999999991, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17345479265712868, 0.39999999999999991, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34089751955950354, 0.39999999999999991, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.49824200167361332, 0.39999999999999991, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.64402450341199402, 0.39999999999999991, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.77889207804122873, 0.39999999999999991, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.90468169720957992, 0.39999999999999991, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.0236847823692916, 0.39999999999999991, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.1382465247425166, 0.39999999999999991, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.2506255923253344, 0.39999999999999991, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler138 = 2.5000000000000020e-13;
  
! // Test data for k=0.39999999999999991, nu=0.80000000000000004.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 7.3122171115555478e-16
  const testcase_ellint_3<double>
  data139[10] =
  {
!   { 0.0000000000000000, 0.39999999999999991, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17328307694277154, 0.39999999999999991, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.33964091800132007, 0.39999999999999991, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.49452889372467440, 0.39999999999999991, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.63652940095937316, 0.39999999999999991, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.76659772511159097, 0.39999999999999991, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.88691047977338111, 0.39999999999999991, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.0000273200611638, 0.39999999999999991, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.1084787902188009, 0.39999999999999991, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.2146499565727209, 0.39999999999999991, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler139 = 2.5000000000000020e-13;
  
! // Test data for k=0.39999999999999991, nu=0.90000000000000002.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 7.5168974431077345e-16
  const testcase_ellint_3<double>
  data140[10] =
  {
!   { 0.0000000000000000, 0.39999999999999991, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17311196891868127, 0.39999999999999991, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.33840055664911906, 0.39999999999999991, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.49091013944075329, 0.39999999999999991, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.62932228186809580, 0.39999999999999991, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.75492278323019801, 0.39999999999999991, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.87021659043854294, 0.39999999999999991, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 0.97800245228239246, 0.39999999999999991, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.0809625773173697, 0.39999999999999991, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.1815758115929846, 0.39999999999999991, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler140 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000, nu=0.0000000000000000.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.1201497220602069e-16
  const testcase_ellint_3<double>
  data141[10] =
  {
--- 3910,4528 ----
  const double toler121 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.1872304407982844e-16
! // mean(f - f_Boost): 7.2164496600635178e-17
! // variance(f - f_Boost): 4.3555500115139682e-32
! // stddev(f - f_Boost): 2.0869954507650391e-16
  const testcase_ellint_3<double>
  data122[10] =
  {
    { 0.0000000000000000, 0.30000000000000004, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17478889331392972, 0.30000000000000004, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35108939018329183, 0.30000000000000004, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.53028990896115835, 0.30000000000000004, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.71352417052371409, 0.30000000000000004, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.90153086032405894, 0.30000000000000004, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0945187977283313, 0.30000000000000004, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.2920699268385683, 0.30000000000000004, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.4931243665896394, 0.30000000000000004, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.6960848815118226, 0.30000000000000004, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler122 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004, nu=0.20000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.2247497610332889e-16
! // mean(f - f_Boost): 6.6613381477509390e-17
! // variance(f - f_Boost): 1.7591111235252501e-32
! // stddev(f - f_Boost): 1.3263148659067538e-16
  const testcase_ellint_3<double>
  data123[10] =
  {
    { 0.0000000000000000, 0.30000000000000004, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17496614335337535, 0.30000000000000004, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35250745937139372, 0.30000000000000004, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53506875002836884, 0.30000000000000004, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.72479106622248191, 0.30000000000000004, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.92326451535891607, 0.30000000000000004, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1312092060698349, 0.30000000000000004, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.3481473154592321, 0.30000000000000004, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.5722049569662750, 0.30000000000000004, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.8002173372290500, 0.30000000000000004, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler123 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.1678685180047551e-16
! // mean(f - f_Boost): 1.0547118733938987e-16
! // variance(f - f_Boost): 7.5633408838247182e-32
! // stddev(f - f_Boost): 2.7501528837184157e-16
  const testcase_ellint_3<double>
  data124[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17514404084107435, 0.30000000000000004, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35394619108645647, 0.30000000000000004, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.54000325463372689, 0.30000000000000004, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.73670193794067651, 0.30000000000000004, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.94689345491722177, 0.30000000000000004, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.1723274608389140, 0.30000000000000004, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.4128880552936287, 0.30000000000000004, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.6659010047449661, 0.30000000000000004, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 1.9260216862473254, 0.30000000000000004, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler124 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004, nu=0.40000000000000002.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.3983279132797385e-16
! // mean(f - f_Boost): 1.1657341758564144e-16
! // variance(f - f_Boost): 1.8245832308692586e-31
! // stddev(f - f_Boost): 4.2715140534349863e-16
  const testcase_ellint_3<double>
  data125[10] =
  {
    { 0.0000000000000000, 0.30000000000000004, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17532259000954434, 0.30000000000000004, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35540612770983693, 0.30000000000000004, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.54510265552938919, 0.30000000000000004, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.74932476310965057, 0.30000000000000004, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.97272793583093109, 0.30000000000000004, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.2188928987074241, 0.30000000000000004, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.4888771674085941, 0.30000000000000004, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.7794558498219191, 0.30000000000000004, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.0822121773175528, 0.30000000000000004, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler125 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004, nu=0.50000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.0516138451673425e-16
! // mean(f - f_Boost): 4.7184478546569152e-17
! // variance(f - f_Boost): 1.9448563670505968e-32
! // stddev(f - f_Boost): 1.3945810722401896e-16
  const testcase_ellint_3<double>
  data126[10] =
  {
    { 0.0000000000000000, 0.30000000000000004, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17550179513158179, 0.30000000000000004, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35688783251681200, 0.30000000000000004, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.55037700010142798, 0.30000000000000004, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.76273839789895992, 0.30000000000000004, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 1.0011570518830419, 0.30000000000000004, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.2722987414055109, 0.30000000000000004, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.5799590511080066, 0.30000000000000004, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.9212367220124293, 0.30000000000000004, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.2833505881933971, 0.30000000000000004, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler126 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.60000000000000009.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.2121157428443725e-16
! // mean(f - f_Boost): 1.9428902930940239e-16
! // variance(f - f_Boost): 1.5987596229703424e-31
! // stddev(f - f_Boost): 3.9984492281012430e-16
  const testcase_ellint_3<double>
  data127[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17568166052076745, 0.30000000000000004, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.35839189074731181, 0.30000000000000004, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.55583724744367558, 0.30000000000000004, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.77703498090888223, 0.30000000000000004, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0326772113675962, 0.30000000000000004, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.3345139983717369, 0.30000000000000004, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.6921742922838403, 0.30000000000000004, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.1056608968472186, 0.30000000000000004, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 2.5560975528589061, 0.30000000000000004, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler127 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.70000000000000007.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.0088945789059381e-16
! // mean(f - f_Boost): 2.1094237467877973e-16
! // variance(f - f_Boost): 3.0253363535298873e-31
! // stddev(f - f_Boost): 5.5003057674368314e-16
  const testcase_ellint_3<double>
  data128[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17586219053197988, 0.30000000000000004, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.35991891074557669, 0.30000000000000004, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.56149538019961731, 0.30000000000000004, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.79232303189667685, 0.30000000000000004, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.0679345542878826, 0.30000000000000004, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.4084400085913955, 0.30000000000000004, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 1.8357382859296454, 0.30000000000000004, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.3604197996171519, 0.30000000000000004, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 2.9562123549913872, 0.30000000000000004, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler128 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004, nu=0.80000000000000004.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.1197887707781618e-16
! // mean(f - f_Boost): 3.4416913763379854e-16
! // variance(f - f_Boost): 4.3461914185990199e-31
! // stddev(f - f_Boost): 6.5925650687718054e-16
  const testcase_ellint_3<double>
  data129[10] =
  {
    { 0.0000000000000000, 0.30000000000000004, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17604338956191670, 0.30000000000000004, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36146952517410791, 0.30000000000000004, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.56736453393774644, 0.30000000000000004, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.80873149979001091, 0.30000000000000004, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.1077903069860620, 0.30000000000000004, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.4985874311132998, 0.30000000000000004, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.0298167266724954, 0.30000000000000004, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 2.7483929054985432, 0.30000000000000004, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 3.6283050484567170, 0.30000000000000004, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler129 = 2.5000000000000020e-13;
  
  // Test data for k=0.30000000000000004, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 5.1301806687926828e-16
! // mean(f - f_Boost): 4.1633363423443370e-16
! // variance(f - f_Boost): 2.2835347143080263e-31
! // stddev(f - f_Boost): 4.7786344433405093e-16
  const testcase_ellint_3<double>
  data130[10] =
  {
    { 0.0000000000000000, 0.30000000000000004, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17622526204962433, 0.30000000000000004, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36304439230777141, 0.30000000000000004, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.57345914744719195, 0.30000000000000004, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.82641512928845162, 0.30000000000000004, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.1534256210757743, 0.30000000000000004, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.6124900353411677, 0.30000000000000004, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.3165905514845089, 0.30000000000000004, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 3.4625619526539824, 0.30000000000000004, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 5.1479514944016787, 0.30000000000000004, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler130 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.0000000000000000.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 1.0831445028587608e-15
! // mean(f - f_Boost): 1.7486012637846215e-16
! // variance(f - f_Boost): 3.1664095331106078e-31
! // stddev(f - f_Boost): 5.6270858649132121e-16
  const testcase_ellint_3<double>
  data131[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17467414669441528, 0.40000000000000013, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35018222772483443, 0.40000000000000013, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.52729015917508748, 0.40000000000000013, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.70662374407341244, 0.40000000000000013, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.88859210497602159, 0.40000000000000013, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0733136290471381, 0.40000000000000013, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2605612170157066, 0.40000000000000013, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.4497513956433439, 0.40000000000000013, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.6399998658645112, 0.40000000000000013, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler131 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.10000000000000001.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 1.0263824105456986e-15
! // mean(f - f_Boost): 1.7486012637846215e-16
! // variance(f - f_Boost): 3.1664095331106078e-31
! // stddev(f - f_Boost): 5.6270858649132121e-16
  const testcase_ellint_3<double>
  data132[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17485086590796767, 0.40000000000000013, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35158366412506992, 0.40000000000000013, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.53194731675711726, 0.40000000000000013, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.71740615528010931, 0.40000000000000013, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.90896157773487030, 0.40000000000000013, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.1069605483834348, 0.40000000000000013, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.3109353428823001, 0.40000000000000013, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.5195460789903450, 0.40000000000000013, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.7306968836847190, 0.40000000000000013, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler132 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.20000000000000001.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 9.6644296021947179e-16
! // mean(f - f_Boost): 2.0816681711721685e-16
! // variance(f - f_Boost): 3.0360740073926687e-31
! // stddev(f - f_Boost): 5.5100580826273227e-16
  const testcase_ellint_3<double>
  data133[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17502822886437389, 0.40000000000000013, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35300530062530805, 0.40000000000000013, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53675259548210896, 0.40000000000000013, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.72878006428676934, 0.40000000000000013, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.93100219010583574, 0.40000000000000013, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1443487271187611, 0.40000000000000013, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.3683427764108813, 0.40000000000000013, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.6008221459300933, 0.40000000000000013, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.8380358826317627, 0.40000000000000013, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler133 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.30000000000000004.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 9.0271556462838835e-16
! // mean(f - f_Boost): 2.0816681711721685e-16
! // variance(f - f_Boost): 3.0360740073926687e-31
! // stddev(f - f_Boost): 5.5100580826273227e-16
  const testcase_ellint_3<double>
  data134[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17520623975982899, 0.40000000000000013, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35444766141612105, 0.40000000000000013, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.54171455841536009, 0.40000000000000013, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.74080517001084012, 0.40000000000000013, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.95496950509296574, 0.40000000000000013, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.1862627879844718, 0.40000000000000013, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.4346501803799458, 0.40000000000000013, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.6971744798077699, 0.40000000000000013, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 1.9677924132520139, 0.40000000000000013, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler134 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.40000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 8.3436329231972794e-16
! // mean(f - f_Boost): 2.3037127760972000e-16
! // variance(f - f_Boost): 2.9507053793392374e-31
! // stddev(f - f_Boost): 5.4320395611033958e-16
  const testcase_ellint_3<double>
  data135[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17538490283034375, 0.40000000000000013, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35591129064319948, 0.40000000000000013, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.54684250413264535, 0.40000000000000013, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.75355027742668290, 0.40000000000000013, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.98117935026780634, 0.40000000000000013, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.2337464222030736, 0.40000000000000013, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.5125183419289221, 0.40000000000000013, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.8140224451130313, 0.40000000000000013, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.1289968719280026, 0.40000000000000013, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler135 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.50000000000000000.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.7013794022122431e-16
! // mean(f - f_Boost): 2.3037127760972000e-16
! // variance(f - f_Boost): 1.4989821857033475e-31
! // stddev(f - f_Boost): 3.8716691306248618e-16
  const testcase_ellint_3<double>
  data136[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17556422235224273, 0.40000000000000013, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35739675341763921, 0.40000000000000013, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.55214655195037188, 0.40000000000000013, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.76709520942047438, 0.40000000000000013, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 1.0100278761577499, 0.40000000000000013, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.2882265661384342, 0.40000000000000013, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.6059059780051876, 0.40000000000000013, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.9600182740224081, 0.40000000000000013, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.3367461373176512, 0.40000000000000013, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler136 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.60000000000000009.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 8.4792115132836117e-16
! // mean(f - f_Boost): 2.3037127760972000e-16
! // variance(f - f_Boost): 4.8893797490374802e-31
! // stddev(f - f_Boost): 6.9924099915819294e-16
  const testcase_ellint_3<double>
  data137[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17574420264267029, 0.40000000000000013, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.35890463689046265, 0.40000000000000013, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.55763773975194486, 0.40000000000000013, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.78153324227761267, 0.40000000000000013, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0420205885765887, 0.40000000000000013, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.3517205230381770, 0.40000000000000013, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.7210360970313896, 0.40000000000000013, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.1500780510169246, 0.40000000000000013, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 2.6186940209850191, 0.40000000000000013, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler137 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.70000000000000007.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.8573292020719759e-16
! // mean(f - f_Boost): 2.2759572004815707e-16
! // variance(f - f_Boost): 2.9613098824898137e-31
! // stddev(f - f_Boost): 5.4417918762938862e-16
  const testcase_ellint_3<double>
  data138[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17592484806010436, 0.40000000000000013, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.36043555139631439, 0.40000000000000013, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.56332813669944881, 0.40000000000000013, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.79697424562157548, 0.40000000000000013, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.0778155987523672, 0.40000000000000013, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.4272018169896268, 0.40000000000000013, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 1.8684377907453382, 0.40000000000000013, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.4128677409207473, 0.40000000000000013, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 3.0327078743873246, 0.40000000000000013, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler138 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.80000000000000004.
! // max(|f - f_Boost|): 3.5527136788005009e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 9.5273712585384737e-16
! // mean(f - f_Boost): 4.5241588253475131e-16
! // variance(f - f_Boost): 1.1866477068555882e-30
! // stddev(f - f_Boost): 1.0893336067778265e-15
  const testcase_ellint_3<double>
  data139[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17610616300487833, 0.40000000000000013, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36199013167171978, 0.40000000000000013, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.56923097361842434, 0.40000000000000013, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.81354878456624347, 0.40000000000000013, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.1182902719261825, 0.40000000000000013, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.5192950589409022, 0.40000000000000013, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.0678761710223981, 0.40000000000000013, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 2.8135222249879788, 0.40000000000000013, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 3.7289548002199902, 0.40000000000000013, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler139 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.90000000000000002.
! // max(|f - f_Boost|): 6.2172489379008766e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 1.1718379478872251e-15
! // mean(f - f_Boost): 8.4099394115355610e-16
! // variance(f - f_Boost): 3.5684096037099424e-30
! // stddev(f - f_Boost): 1.8890234523980751e-15
  const testcase_ellint_3<double>
  data140[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17628815191971123, 0.40000000000000013, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36356903815378772, 0.40000000000000013, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.57536079447000310, 0.40000000000000013, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.83141355850172571, 0.40000000000000013, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.1646481598721361, 0.40000000000000013, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.6357275034001995, 0.40000000000000013, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.3628787566572402, 0.40000000000000013, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 3.5521010369134962, 0.40000000000000013, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 5.3055535102872513, 0.40000000000000013, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler140 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.4551389361831220e-16
! // mean(f - f_Boost): -1.3877787807814457e-17
! // variance(f - f_Boost): 2.5893058141206173e-32
! // stddev(f - f_Boost): 1.6091320064309879e-16
  const testcase_ellint_3<double>
  data141[10] =
  {
*************** data141[10] =
*** 4108,4396 ****
  	  0.0000000000000000 },
    { 0.17475385514035785, 0.50000000000000000, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35081868470101585, 0.50000000000000000, 0.0000000000000000, 
  	  0.34906585039886590 },
    { 0.52942862705190574, 0.50000000000000000, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.71164727562630314, 0.50000000000000000, 0.0000000000000000, 
  	  0.69813170079773179 },
    { 0.89824523594227768, 0.50000000000000000, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0895506700518851, 0.50000000000000000, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2853005857432931, 0.50000000000000000, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.4845545520549484, 0.50000000000000000, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.6857503548125963, 0.50000000000000000, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler141 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000, nu=0.10000000000000001.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.1662857256911530e-16
  const testcase_ellint_3<double>
  data142[10] =
  {
    { 0.0000000000000000, 0.50000000000000000, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17457763120814676, 0.50000000000000000, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.34943246340849154, 0.50000000000000000, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52487937869610790, 0.50000000000000000, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.70127785096388384, 0.50000000000000000, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.87898815988624479, 0.50000000000000000, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0582764576094172, 0.50000000000000000, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.2391936844060205, 0.50000000000000000, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.4214793542995841, 0.50000000000000000, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.6045524936084892, 0.50000000000000000, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler142 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000, nu=0.20000000000000001.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.2114786773102175e-16
  const testcase_ellint_3<double>
  data143[10] =
  {
    { 0.0000000000000000, 0.50000000000000000, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17440204336345433, 0.50000000000000000, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34806552388338824, 0.50000000000000000, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.52046416757129810, 0.50000000000000000, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.69140924550993865, 0.50000000000000000, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.86104678636125520, 0.50000000000000000, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.0297439459053981, 0.50000000000000000, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.1979214112912033, 0.50000000000000000, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.3659033858648930, 0.50000000000000000, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.5338490483665983, 0.50000000000000000, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler143 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.29999999999999999.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.2557837230041312e-16
  const testcase_ellint_3<double>
  data144[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17422708752228896, 0.50000000000000000, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34671739434855858, 0.50000000000000000, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.51617616305641878, 0.50000000000000000, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.68200047612545167, 0.50000000000000000, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.84427217869498372, 0.50000000000000000, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 1.0035637821389782, 0.50000000000000000, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.1606800483933111, 0.50000000000000000, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.3164407134643459, 0.50000000000000000, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.4715681939859637, 0.50000000000000000, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler144 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000, nu=0.40000000000000002.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.2992508582900068e-16
  const testcase_ellint_3<double>
  data145[10] =
  {
    { 0.0000000000000000, 0.50000000000000000, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17405275963859917, 0.50000000000000000, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34538761957029329, 0.50000000000000000, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.51200902646603907, 0.50000000000000000, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.67301522212868792, 0.50000000000000000, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.82853844466313320, 0.50000000000000000, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 0.97942097862681488, 0.50000000000000000, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.1268429801220614, 0.50000000000000000, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.2720406704533922, 0.50000000000000000, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.4161679518465340, 0.50000000000000000, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler145 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000, nu=0.50000000000000000.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.3419255755184137e-16
  const testcase_ellint_3<double>
  data146[10] =
  {
    { 0.0000000000000000, 0.50000000000000000, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17387905570381157, 0.50000000000000000, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34407576010465207, 0.50000000000000000, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.50795686560160824, 0.50000000000000000, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.66442115453330164, 0.50000000000000000, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.81373829119355345, 0.50000000000000000, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.95705743313235825, 0.50000000000000000, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.0959131991362554, 0.50000000000000000, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.2318900529754597, 0.50000000000000000, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.3664739530045971, 0.50000000000000000, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler146 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.59999999999999998.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.3838494104749599e-16
  const testcase_ellint_3<double>
  data147[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17370597174637581, 0.50000000000000000, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34278139158591414, 0.50000000000000000, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.50401419439302708, 0.50000000000000000, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.65618938076167210, 0.50000000000000000, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.79977959248855424, 0.50000000000000000, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.93625925190753545, 0.50000000000000000, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.0674905658379708, 0.50000000000000000, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.1953481298023050, 0.50000000000000000, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.3215740290190876, 0.50000000000000000, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler147 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.69999999999999996.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 3.4250604066951477e-16
  const testcase_ellint_3<double>
  data148[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17353350383131641, 0.50000000000000000, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34150410405436771, 0.50000000000000000, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.50017589696443487, 0.50000000000000000, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.64829398188419951, 0.50000000000000000, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.78658270782402073, 0.50000000000000000, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.91684738336675053, 0.50000000000000000, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.0412486789555935, 0.50000000000000000, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.1619021847612001, 0.50000000000000000, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.2807475181182502, 0.50000000000000000, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler148 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000, nu=0.80000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.5715240651179632e-16
  const testcase_ellint_3<double>
  data149[10] =
  {
    { 0.0000000000000000, 0.50000000000000000, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17336164805979126, 0.50000000000000000, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.34024350132086773, 0.50000000000000000, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.49643719555734073, 0.50000000000000000, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.64071162456976150, 0.50000000000000000, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.77407836177211908, 0.50000000000000000, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.89867058251905652, 0.50000000000000000, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.0169181822134910, 0.50000000000000000, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.1311363312779448, 0.50000000000000000, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.2434165408189539, 0.50000000000000000, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler149 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000, nu=0.90000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.4664649039489274e-16
  const testcase_ellint_3<double>
  data150[10] =
  {
    { 0.0000000000000000, 0.50000000000000000, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17319040056865681, 0.50000000000000000, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.33899920036578557, 0.50000000000000000, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.49279362182695174, 0.50000000000000000, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.63342123379746151, 0.50000000000000000, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.76220595179550321, 0.50000000000000000, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.88160004743532294, 0.50000000000000000, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 0.99427448642310123, 0.50000000000000000, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.1027091512470095, 0.50000000000000000, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.2091116095504744, 0.50000000000000000, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler150 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009, nu=0.0000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.3664899092028927e-16
  const testcase_ellint_3<double>
  data151[10] =
  {
--- 4530,4848 ----
  	  0.0000000000000000 },
    { 0.17475385514035785, 0.50000000000000000, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35081868470101579, 0.50000000000000000, 0.0000000000000000, 
  	  0.34906585039886590 },
    { 0.52942862705190574, 0.50000000000000000, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.71164727562630326, 0.50000000000000000, 0.0000000000000000, 
  	  0.69813170079773179 },
    { 0.89824523594227768, 0.50000000000000000, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.0895506700518853, 0.50000000000000000, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.2853005857432933, 0.50000000000000000, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.4845545520549488, 0.50000000000000000, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.6857503548125961, 0.50000000000000000, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler141 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.7416868347177582e-16
! // mean(f - f_Boost): 2.7755575615628915e-18
! // variance(f - f_Boost): 5.4326441655972001e-32
! // stddev(f - f_Boost): 2.3308033305273100e-16
  const testcase_ellint_3<double>
  data142[10] =
  {
    { 0.0000000000000000, 0.50000000000000000, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17493071928248824, 0.50000000000000000, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35222467688034798, 0.50000000000000000, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.53411928652008112, 0.50000000000000000, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.72256398117177589, 0.50000000000000000, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.91899583232771009, 0.50000000000000000, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.1240549163055360, 0.50000000000000000, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.3372938086286021, 0.50000000000000000, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.5570024469132429, 0.50000000000000000, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.7803034946545480, 0.50000000000000000, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler142 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000, nu=0.20000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.1198767993730867e-16
! // mean(f - f_Boost): 2.7755575615628914e-17
! // variance(f - f_Boost): 5.0311947683004831e-32
! // stddev(f - f_Boost): 2.2430324938128922e-16
  const testcase_ellint_3<double>
  data143[10] =
  {
    { 0.0000000000000000, 0.50000000000000000, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17510822779582402, 0.50000000000000000, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35365094725531487, 0.50000000000000000, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53895933237328697, 0.50000000000000000, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.73408090840070794, 0.50000000000000000, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.94145442818535396, 0.50000000000000000, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1624120186296487, 0.50000000000000000, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.3965823372867114, 0.50000000000000000, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.6414308440430099, 0.50000000000000000, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.8922947612264018, 0.50000000000000000, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler143 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.3800262770228813e-16
! // mean(f - f_Boost): 5.8286708792820721e-17
! // variance(f - f_Boost): 8.5027191584278157e-32
! // stddev(f - f_Boost): 2.9159422419567599e-16
  const testcase_ellint_3<double>
  data144[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17528638488102041, 0.50000000000000000, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35509802222332720, 0.50000000000000000, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.54395740731866193, 0.50000000000000000, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.74625871438752667, 0.50000000000000000, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.96588271186092023, 0.50000000000000000, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.2054319584357329, 0.50000000000000000, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.4651077994832871, 0.50000000000000000, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.7416018368052644, 0.50000000000000000, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 2.0277924458111314, 0.50000000000000000, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler144 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000, nu=0.40000000000000002.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.0439932918341581e-16
! // mean(f - f_Boost): 3.0531133177191807e-17
! // variance(f - f_Boost): 9.0809736800018602e-32
! // stddev(f - f_Boost): 3.0134653938616686e-16
  const testcase_ellint_3<double>
  data145[10] =
  {
    { 0.0000000000000000, 0.50000000000000000, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17546519477859268, 0.50000000000000000, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35656644822531680, 0.50000000000000000, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.54912289677411319, 0.50000000000000000, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.75916731611690047, 0.50000000000000000, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.99260415631328214, 0.50000000000000000, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.2541925856918670, 0.50000000000000000, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.5456393705347609, 0.50000000000000000, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.8631904972952076, 0.50000000000000000, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.1962905366178065, 0.50000000000000000, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler145 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.6797816859260978e-16
! // mean(f - f_Boost): 9.4368957093138303e-17
! // variance(f - f_Boost): 7.7794254682023874e-32
! // stddev(f - f_Boost): 2.7891621444803792e-16
  const testcase_ellint_3<double>
  data146[10] =
  {
    { 0.0000000000000000, 0.50000000000000000, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17564466176941509, 0.50000000000000000, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35805679276065394, 0.50000000000000000, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.55446601496200032, 0.50000000000000000, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.77288783578259013, 0.50000000000000000, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 1.0220246013918972, 0.50000000000000000, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.3101681612463965, 0.50000000000000000, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.6422994881851025, 0.50000000000000000, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 2.0152636030998816, 0.50000000000000000, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.4136715042011945, 0.50000000000000000, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler146 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.60000000000000009.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.9178421578645735e-16
! // mean(f - f_Boost): 1.3322676295501878e-16
! // variance(f - f_Boost): 1.7749370367472766e-31
! // stddev(f - f_Boost): 4.2130001622920411e-16
  const testcase_ellint_3<double>
  data147[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17582479017522740, 0.50000000000000000, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.35956964546660036, 0.50000000000000000, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.55999790372984193, 0.50000000000000000, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.78751507911209895, 0.50000000000000000, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0546620505035220, 0.50000000000000000, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.3754438357425935, 0.50000000000000000, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.7615727400820127, 0.50000000000000000, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.2134638067565242, 0.50000000000000000, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 2.7090491861753558, 0.50000000000000000, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler147 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.70000000000000007.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.0745105182189226e-16
! // mean(f - f_Boost): 4.1633363423443370e-17
! // variance(f - f_Boost): 1.9996383743576116e-32
! // stddev(f - f_Boost): 1.4140857026211713e-16
  const testcase_ellint_3<double>
  data148[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17600558435914915, 0.50000000000000000, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.36110561926726259, 0.50000000000000000, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.56573074641137111, 0.50000000000000000, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.80316073084237205, 0.50000000000000000, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.0911910688131461, 0.50000000000000000, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.4530946406380640, 0.50000000000000000, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 1.9144386536785372, 0.50000000000000000, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.4878788958234970, 0.50000000000000000, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 3.1433945297859225, 0.50000000000000000, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler148 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.4380477375534667e-16
! // mean(f - f_Boost): 2.3037127760972000e-16
! // variance(f - f_Boost): 1.4989821857033475e-31
! // stddev(f - f_Boost): 3.8716691306248618e-16
  const testcase_ellint_3<double>
  data149[10] =
  {
    { 0.0000000000000000, 0.50000000000000000, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17618704872620228, 0.50000000000000000, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36266535159745827, 0.50000000000000000, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.57167789954529158, 0.50000000000000000, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.81995752984315018, 0.50000000000000000, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.1325112162158122, 0.50000000000000000, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.5479055930718042, 0.50000000000000000, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.1215243941010486, 0.50000000000000000, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 2.9069405767650132, 0.50000000000000000, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 3.8750701888108066, 0.50000000000000000, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler149 = 2.5000000000000020e-13;
  
  // Test data for k=0.50000000000000000, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.6192315188521289e-16
! // mean(f - f_Boost): 3.5249581031848718e-16
! // variance(f - f_Boost): 2.5029385557256515e-31
! // stddev(f - f_Boost): 5.0029376927217987e-16
  const testcase_ellint_3<double>
  data150[10] =
  {
    { 0.0000000000000000, 0.50000000000000000, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17636918772384180, 0.50000000000000000, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36424950570740700, 0.50000000000000000, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.57785404590231426, 0.50000000000000000, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.83806480521716531, 0.50000000000000000, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.1798568683069752, 0.50000000000000000, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.6678766243739607, 0.50000000000000000, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.4282976450693483, 0.50000000000000000, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 3.6810787666126656, 0.50000000000000000, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 5.5355132096026454, 0.50000000000000000, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler150 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.3664899092028927e-16
! // mean(f - f_Boost): 3.0531133177191807e-17
! // variance(f - f_Boost): 7.8758646268991113e-33
! // stddev(f - f_Boost): 8.8746068233466605e-17
  const testcase_ellint_3<double>
  data151[10] =
  {
*************** data151[10] =
*** 4398,4416 ****
  	  0.0000000000000000 },
    { 0.17485154362988359, 0.60000000000000009, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35160509865544326, 0.60000000000000009, 0.0000000000000000, 
  	  0.34906585039886590 },
    { 0.53210652578446138, 0.60000000000000009, 0.0000000000000000, 
  	  0.52359877559829882 },
    { 0.71805304664485659, 0.60000000000000009, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.91082759030195970, 0.60000000000000009, 0.0000000000000000, 
  	  0.87266462599716477 },
    { 1.1112333229323361, 0.60000000000000009, 0.0000000000000000, 
  	  1.0471975511965976 },
    { 1.3191461190365270, 0.60000000000000009, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.5332022105084775, 0.60000000000000009, 0.0000000000000000, 
  	  1.3962634015954636 },
    { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000, 
  	  1.5707963267948966 },
--- 4850,4868 ----
  	  0.0000000000000000 },
    { 0.17485154362988359, 0.60000000000000009, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35160509865544320, 0.60000000000000009, 0.0000000000000000, 
  	  0.34906585039886590 },
    { 0.53210652578446138, 0.60000000000000009, 0.0000000000000000, 
  	  0.52359877559829882 },
    { 0.71805304664485659, 0.60000000000000009, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.91082759030195981, 0.60000000000000009, 0.0000000000000000, 
  	  0.87266462599716477 },
    { 1.1112333229323361, 0.60000000000000009, 0.0000000000000000, 
  	  1.0471975511965976 },
    { 1.3191461190365270, 0.60000000000000009, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.5332022105084779, 0.60000000000000009, 0.0000000000000000, 
  	  1.3962634015954636 },
    { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000, 
  	  1.5707963267948966 },
*************** data151[10] =
*** 4418,4976 ****
  const double toler151 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009, nu=0.10000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.4937942733669112e-16
  const testcase_ellint_3<double>
  data152[10] =
  {
    { 0.0000000000000000, 0.60000000000000009, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17467514275022011, 0.60000000000000009, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35021333086258255, 0.60000000000000009, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.52751664092962691, 0.60000000000000009, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.70752126971957874, 0.60000000000000009, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.89111058756112871, 0.60000000000000009, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.0789241202877768, 0.60000000000000009, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.2710800210399946, 0.60000000000000009, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.4669060574440276, 0.60000000000000009, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.6648615773343014, 0.60000000000000009, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler152 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009, nu=0.20000000000000001.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1891472451898755e-16
  const testcase_ellint_3<double>
  data153[10] =
  {
    { 0.0000000000000000, 0.60000000000000009, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17449937871800650, 0.60000000000000009, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34884093647346553, 0.60000000000000009, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.52306221119844087, 0.60000000000000009, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.69749955678982223, 0.60000000000000009, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.87274610682416853, 0.60000000000000009, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.0494620540750792, 0.60000000000000009, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.2280847305507339, 0.60000000000000009, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.4085436279696888, 0.60000000000000009, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.5901418016279374, 0.60000000000000009, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler153 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.29999999999999999.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.7339932380431439e-16
  const testcase_ellint_3<double>
  data154[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17432424744393932, 0.60000000000000009, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34748744127146447, 0.60000000000000009, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.51873632743924825, 0.60000000000000009, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.68794610396313116, 0.60000000000000009, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.85558070175468726, 0.60000000000000009, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 1.0224416343605653, 0.60000000000000009, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.1893144457936788, 0.60000000000000009, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.3566435377982575, 0.60000000000000009, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.5243814243493585, 0.60000000000000009, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler154 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009, nu=0.40000000000000002.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 4.5440898085101625e-16
  const testcase_ellint_3<double>
  data155[10] =
  {
    { 0.0000000000000000, 0.60000000000000009, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17414974487670717, 0.60000000000000009, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34615238767335027, 0.60000000000000009, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.51453257838108557, 0.60000000000000009, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.67882386787534399, 0.60000000000000009, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.83948470233173578, 0.60000000000000009, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 0.99753496200073977, 0.60000000000000009, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.1541101404388487, 0.60000000000000009, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.3100911323398816, 0.60000000000000009, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.4659345278069984, 0.60000000000000009, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler155 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009, nu=0.50000000000000000.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 4.7124937590522226e-16
  const testcase_ellint_3<double>
  data156[10] =
  {
    { 0.0000000000000000, 0.60000000000000009, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17397586700252807, 0.60000000000000009, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34483533397138516, 0.60000000000000009, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.51044500461706477, 0.60000000000000009, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.67009988034712664, 0.60000000000000009, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.82434762375735193, 0.60000000000000009, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.97447346702798998, 0.60000000000000009, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.1219494000522143, 0.60000000000000009, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.2680242605954486, 0.60000000000000009, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.4135484285693078, 0.60000000000000009, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler156 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.59999999999999998.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.0652177678695900e-16
  const testcase_ellint_3<double>
  data157[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17380260984469353, 0.60000000000000009, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34353585361777839, 0.60000000000000009, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.50646805774321380, 0.60000000000000009, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.66174468108625506, 0.60000000000000009, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.81007462280278408, 0.60000000000000009, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.95303466945718729, 0.60000000000000009, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.0924118588677505, 0.60000000000000009, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.2297640574847937, 0.60000000000000009, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.3662507535812816, 0.60000000000000009, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler157 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.69999999999999996.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1692457486457856e-16
  const testcase_ellint_3<double>
  data158[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17362996946312007, 0.60000000000000009, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34225353454870588, 0.60000000000000009, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.50259656397799524, 0.60000000000000009, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.65373184496628933, 0.60000000000000009, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.79658372884056439, 0.60000000000000009, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.93303240100245421, 0.60000000000000009, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.0651547944716557, 0.60000000000000009, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.1947676204853441, 0.60000000000000009, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.3232737468822813, 0.60000000000000009, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler158 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009, nu=0.80000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.2705175719241326e-16
  const testcase_ellint_3<double>
  data159[10] =
  {
    { 0.0000000000000000, 0.60000000000000009, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17345794195390685, 0.60000000000000009, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.34098797854531027, 0.60000000000000009, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.49882569168826213, 0.60000000000000009, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.64603758566475511, 0.60000000000000009, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.78380365594769730, 0.60000000000000009, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.91430946255611190, 0.60000000000000009, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.0398955217270607, 0.60000000000000009, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.1625948314277679, 0.60000000000000009, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.2840021261752192, 0.60000000000000009, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler159 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009, nu=0.90000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.5585887739668036e-16
  const testcase_ellint_3<double>
  data160[10] =
  {
    { 0.0000000000000000, 0.60000000000000009, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17328652344890030, 0.60000000000000009, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.33973880062929018, 0.60000000000000009, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.49515092233122743, 0.60000000000000009, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.63864042139737043, 0.60000000000000009, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.77167205646538850, 0.60000000000000009, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.89673202848034383, 0.60000000000000009, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 1.0163984492661304, 0.60000000000000009, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.1328845785162431, 0.60000000000000009, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.2479362973851873, 0.60000000000000009, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler160 = 2.5000000000000020e-13;
  
! // Test data for k=0.69999999999999996, nu=0.0000000000000000.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 3.5930208052157665e-16
  const testcase_ellint_3<double>
  data161[10] =
  {
!   { 0.0000000000000000, 0.69999999999999996, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17496737466916723, 0.69999999999999996, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35254687535677925, 0.69999999999999996, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.53536740275997119, 0.69999999999999996, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.72603797651684454, 0.69999999999999996, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.92698296348313458, 0.69999999999999996, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.1400447527693316, 0.69999999999999996, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.3657668117194073, 0.69999999999999996, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.6024686895959159, 0.69999999999999996, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.8456939983747236, 0.69999999999999996, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler161 = 2.5000000000000020e-13;
  
! // Test data for k=0.69999999999999996, nu=0.10000000000000001.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 3.6735282577377367e-16
  const testcase_ellint_3<double>
  data162[10] =
  {
!   { 0.0000000000000000, 0.69999999999999996, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17479076384884684, 0.69999999999999996, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35114844900396364, 0.69999999999999996, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.53072776947527001, 0.69999999999999996, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.71530198262386235, 0.69999999999999996, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.90666760677828306, 0.69999999999999996, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.1063366517438080, 0.69999999999999996, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.3149477243092149, 0.69999999999999996, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.5314886725038925, 0.69999999999999996, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.7528050171757608, 0.69999999999999996, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler162 = 2.5000000000000020e-13;
  
! // Test data for k=0.69999999999999996, nu=0.20000000000000001.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 3.7517969287516802e-16
  const testcase_ellint_3<double>
  data163[10] =
  {
!   { 0.0000000000000000, 0.69999999999999996, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17461479077791475, 0.69999999999999996, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.34976950621407538, 0.69999999999999996, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.52622533231350177, 0.69999999999999996, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.70508774017895215, 0.69999999999999996, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.88775302531730294, 0.69999999999999996, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.0756195476149006, 0.69999999999999996, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.2695349716654374, 0.69999999999999996, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.4690814617070540, 0.69999999999999996, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.6721098780092145, 0.69999999999999996, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler163 = 2.5000000000000020e-13;
  
! // Test data for k=0.69999999999999996, nu=0.29999999999999999.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.8280039841080712e-16
  const testcase_ellint_3<double>
  data164[10] =
  {
!   { 0.0000000000000000, 0.69999999999999996, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17443945136076175, 0.69999999999999996, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34840956983535287, 0.69999999999999996, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.52185308551329168, 0.69999999999999996, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.69535240431168255, 0.69999999999999996, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.87007983473964923, 0.69999999999999996, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 1.0474657975577066, 0.69999999999999996, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.2286225419931891, 0.69999999999999996, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.4136490671013271, 0.69999999999999996, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.6011813647733213, 0.69999999999999996, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler164 = 2.5000000000000020e-13;
  
! // Test data for k=0.69999999999999996, nu=0.40000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.3472957053482092e-16
  const testcase_ellint_3<double>
  data165[10] =
  {
!   { 0.0000000000000000, 0.69999999999999996, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17426474153983229, 0.69999999999999996, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34706817945773732, 0.69999999999999996, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.51760452851738148, 0.69999999999999996, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.68605801534722755, 0.69999999999999996, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.85351339387296532, 0.69999999999999996, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.0215297967969539, 0.69999999999999996, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.1915051074460530, 0.69999999999999996, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.3639821911744707, 0.69999999999999996, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.5382162002954762, 0.69999999999999996, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler165 = 2.5000000000000020e-13;
  
! // Test data for k=0.69999999999999996, nu=0.50000000000000000.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 3.9748346743390620e-16
  const testcase_ellint_3<double>
  data166[10] =
  {
!   { 0.0000000000000000, 0.69999999999999996, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17409065729516096, 0.69999999999999996, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34574489064986091, 0.69999999999999996, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.51347361925579782, 0.69999999999999996, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.67717079489579279, 0.69999999999999996, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.83793902055292280, 0.69999999999999996, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 0.99752863545289705, 0.69999999999999996, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.1576240080401501, 0.69999999999999996, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.3191464023923762, 0.69999999999999996, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.4818433192178544, 0.69999999999999996, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler166 = 2.5000000000000020e-13;
  
! // Test data for k=0.69999999999999996, nu=0.59999999999999998.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 4.0457157538295173e-16
  const testcase_ellint_3<double>
  data167[10] =
  {
!   { 0.0000000000000000, 0.69999999999999996, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17391719464391614, 0.69999999999999996, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34443927423869031, 0.69999999999999996, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.50945473266486063, 0.69999999999999996, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.66866056326513812, 0.69999999999999996, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.82325830002337352, 0.69999999999999996, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 0.97522808245669368, 0.69999999999999996, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.1265300613705285, 0.69999999999999996, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.2784066076152001, 0.69999999999999996, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.4309994736080540, 0.69999999999999996, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler167 = 2.5000000000000020e-13;
  
! // Test data for k=0.69999999999999996, nu=0.69999999999999996.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 5.4867405596732161e-16
  const testcase_ellint_3<double>
  data168[10] =
  {
!   { 0.0000000000000000, 0.69999999999999996, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17374434963995031, 0.69999999999999996, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34315091562900674, 0.69999999999999996, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.50554262375653347, 0.69999999999999996, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.66050025406305801, 0.69999999999999996, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.80938620118847404, 0.69999999999999996, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.95443223855852144, 0.69999999999999996, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.0978573207128304, 0.69999999999999996, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.2411754575007123, 0.69999999999999996, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.3848459188329196, 0.69999999999999996, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler168 = 2.5000000000000020e-13;
  
! // Test data for k=0.69999999999999996, nu=0.80000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1829502028913879e-16
  const testcase_ellint_3<double>
  data169[10] =
  {
!   { 0.0000000000000000, 0.69999999999999996, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17357211837335740, 0.69999999999999996, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.34187941416012108, 0.69999999999999996, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.50173239465478259, 0.69999999999999996, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.65266550725988315, 0.69999999999999996, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.79624879865249298, 0.69999999999999996, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.93497577043296920, 0.69999999999999996, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.0713041566930750, 0.69999999999999996, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.2069772023255654, 0.69999999999999996, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.3427110650397531, 0.69999999999999996, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler169 = 2.5000000000000020e-13;
  
! // Test data for k=0.69999999999999996, nu=0.90000000000000002.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 4.2494869624129105e-16
  const testcase_ellint_3<double>
  data170[10] =
  {
!   { 0.0000000000000000, 0.69999999999999996, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17340049697003637, 0.69999999999999996, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.34062438249741556, 0.69999999999999996, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.49801946510076867, 0.69999999999999996, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.64513432604750476, 0.69999999999999996, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.78378145487573758, 0.69999999999999996, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.91671799500854623, 0.69999999999999996, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 1.0466193579463123, 0.69999999999999996, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.1754218079199146, 0.69999999999999996, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.3040500499695913, 0.69999999999999996, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler170 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.0000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1175183168766718e-16
  const testcase_ellint_3<double>
  data171[10] =
  {
--- 4870,5488 ----
  const double toler151 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009, nu=0.10000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.2335247010355137e-16
! // mean(f - f_Boost): 8.6042284408449634e-17
! // variance(f - f_Boost): 2.2835347143080263e-33
! // stddev(f - f_Boost): 4.7786344433405099e-17
  const testcase_ellint_3<double>
  data152[10] =
  {
    { 0.0000000000000000, 0.60000000000000009, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17502858548476194, 0.60000000000000009, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35301673150537388, 0.60000000000000009, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.53683932476326812, 0.60000000000000009, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.72914228589586771, 0.60000000000000009, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.93208036718354692, 0.60000000000000009, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.1468984688863377, 0.60000000000000009, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.3733904977062528, 0.60000000000000009, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.6094225663372157, 0.60000000000000009, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.8508766487100685, 0.60000000000000009, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler152 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009, nu=0.20000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16
! // mean(f - f_Boost): -2.4980018054066023e-17
! // variance(f - f_Boost): 2.1685495635542404e-32
! // stddev(f - f_Boost): 1.4725995937641163e-16
  const testcase_ellint_3<double>
  data153[10] =
  {
    { 0.0000000000000000, 0.60000000000000009, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17520627248155893, 0.60000000000000009, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35444873935437748, 0.60000000000000009, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.54172310557682524, 0.60000000000000009, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.74084300280734672, 0.60000000000000009, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.95509001527006121, 0.60000000000000009, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1865688084431796, 0.60000000000000009, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.4352978868932600, 0.60000000000000009, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.6983400371331818, 0.60000000000000009, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.9695980282802217, 0.60000000000000009, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler153 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.30000000000000004.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.9470074709717020e-16
! // mean(f - f_Boost): 3.0531133177191807e-17
! // variance(f - f_Boost): 1.1508025840536076e-34
! // stddev(f - f_Boost): 1.0727546709539920e-17
  const testcase_ellint_3<double>
  data154[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17538460882640122, 0.60000000000000009, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35590165133735557, 0.60000000000000009, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.54676661152254535, 0.60000000000000009, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.75321709418305305, 0.60000000000000009, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.98012637808992920, 0.60000000000000009, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.2310891277158875, 0.60000000000000009, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.5069157924585623, 0.60000000000000009, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.8039583598337940, 0.60000000000000009, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 2.1134154405060599, 0.60000000000000009, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler154 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009, nu=0.40000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.8974839914337670e-16
! // mean(f - f_Boost): -1.3877787807814457e-17
! // variance(f - f_Boost): 2.2849613290816465e-32
! // stddev(f - f_Boost): 1.5116088545260797e-16
  const testcase_ellint_3<double>
  data155[10] =
  {
    { 0.0000000000000000, 0.60000000000000009, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17556359876533037, 0.60000000000000009, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35737601674244679, 0.60000000000000009, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.55197933771320218, 0.60000000000000009, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.76633591620002905, 0.60000000000000009, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 1.0075231136019616, 0.60000000000000009, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.2815842073813450, 0.60000000000000009, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.5911666941449827, 0.60000000000000009, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.9323227566025762, 0.60000000000000009, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.2925036420985130, 0.60000000000000009, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler155 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009, nu=0.50000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 2.1397785842303966e-16
! // mean(f - f_Boost): 9.1593399531575410e-17
! // variance(f - f_Boost): 1.5339913122479866e-32
! // stddev(f - f_Boost): 1.2385440291923362e-16
  const testcase_ellint_3<double>
  data156[10] =
  {
    { 0.0000000000000000, 0.60000000000000009, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17574324658480217, 0.60000000000000009, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35887240603169313, 0.60000000000000009, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.55737161826345261, 0.60000000000000009, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.78028227313077458, 0.60000000000000009, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 1.0376989776486290, 0.60000000000000009, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.3395933991042928, 0.60000000000000009, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.6924049626591784, 0.60000000000000009, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 2.0931011856518920, 0.60000000000000009, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.5239007084492711, 0.60000000000000009, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler156 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.60000000000000009.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.6651378277398083e-16
! // mean(f - f_Boost): 1.1934897514720432e-16
! // variance(f - f_Boost): 1.7585404776158019e-33
! // stddev(f - f_Boost): 4.1934955319110598e-17
  const testcase_ellint_3<double>
  data157[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17592355661219386, 0.60000000000000009, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.36039141192661606, 0.60000000000000009, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.56295472636903854, 0.60000000000000009, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.79515295130165986, 0.60000000000000009, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0711886441942242, 0.60000000000000009, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.4072952835139891, 0.60000000000000009, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.8174863977376825, 0.60000000000000009, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.3029921578542232, 0.60000000000000009, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 2.8388723099514972, 0.60000000000000009, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler157 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.70000000000000007.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 2.0027679235921772e-16
! // mean(f - f_Boost): -1.3877787807814457e-17
! // variance(f - f_Boost): 2.2849613290816465e-32
! // stddev(f - f_Boost): 1.5116088545260797e-16
  const testcase_ellint_3<double>
  data158[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17610453321631936, 0.60000000000000009, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.36193365056369764, 0.60000000000000009, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.56874098962268527, 0.60000000000000009, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.81106198671477181, 0.60000000000000009, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.1086886419010082, 0.60000000000000009, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.4879048567239257, 0.60000000000000009, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 1.9780310073615925, 0.60000000000000009, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.5941545586772712, 0.60000000000000009, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 3.3029735898397159, 0.60000000000000009, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler158 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009, nu=0.80000000000000004.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 7.3044933435043190e-16
! // mean(f - f_Boost): 2.6367796834847468e-16
! // variance(f - f_Boost): 8.5834655546147173e-33
! // stddev(f - f_Boost): 9.2646994309662939e-17
  const testcase_ellint_3<double>
  data159[10] =
  {
    { 0.0000000000000000, 0.60000000000000009, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17628618080795252, 0.60000000000000009, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36349976272521012, 0.60000000000000009, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.57474392342151914, 0.60000000000000009, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.82814493499158170, 0.60000000000000009, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.1511281795998280, 0.60000000000000009, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.5864286332503075, 0.60000000000000009, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.1958944866494527, 0.60000000000000009, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 3.0398358172574604, 0.60000000000000009, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 4.0867036409261832, 0.60000000000000009, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler159 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.5952142720718732e-16
! // mean(f - f_Boost): 4.6351811278100284e-16
! // variance(f - f_Boost): 2.1278339779151204e-31
! // stddev(f - f_Boost): 4.6128450851021651e-16
  const testcase_ellint_3<double>
  data160[10] =
  {
    { 0.0000000000000000, 0.60000000000000009, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17646850384035848, 0.60000000000000009, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36509041515134105, 0.60000000000000009, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.58097838596260631, 0.60000000000000009, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.84656453396163722, 0.60000000000000009, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.1997828426963724, 0.60000000000000009, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.7112436789225605, 0.60000000000000009, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.5193168553672312, 0.60000000000000009, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 3.8656670488606690, 0.60000000000000009, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 5.8709993116265604, 0.60000000000000009, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler160 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.0000000000000000.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.1569224977685422e-16
! // mean(f - f_Boost): 7.7715611723760953e-17
! // variance(f - f_Boost): 1.6571557210371951e-32
! // stddev(f - f_Boost): 1.2873056051447903e-16
  const testcase_ellint_3<double>
  data161[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17496737466916723, 0.70000000000000018, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35254687535677931, 0.70000000000000018, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.53536740275997130, 0.70000000000000018, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.72603797651684454, 0.70000000000000018, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.92698296348313447, 0.70000000000000018, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.1400447527693318, 0.70000000000000018, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.3657668117194073, 0.70000000000000018, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.6024686895959164, 0.70000000000000018, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.8456939983747236, 0.70000000000000018, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler161 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.9552278747527691e-16
! // mean(f - f_Boost): 1.1102230246251565e-16
! // variance(f - f_Boost): 1.3695501826753678e-32
! // stddev(f - f_Boost): 1.1702778228589004e-16
  const testcase_ellint_3<double>
  data162[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17514462737300920, 0.70000000000000018, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35396527997470451, 0.70000000000000018, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.54015179589433981, 0.70000000000000018, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.73734430854477728, 0.70000000000000018, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.94888950796697047, 0.70000000000000018, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.1772807959736322, 0.70000000000000018, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.4231796401075834, 0.70000000000000018, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.6841856799887471, 0.70000000000000018, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.9541347343119564, 0.70000000000000018, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler162 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.20000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.7430437016285820e-16
! // mean(f - f_Boost): 3.3306690738754695e-17
! // variance(f - f_Boost): 1.3695501826753678e-34
! // stddev(f - f_Boost): 1.1702778228589003e-17
  const testcase_ellint_3<double>
  data163[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17532252613350796, 0.70000000000000018, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35540417596807522, 0.70000000000000018, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.54508913033361928, 0.70000000000000018, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.74927635777718415, 0.70000000000000018, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.97261706337936338, 0.70000000000000018, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.2187303976209327, 0.70000000000000018, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.4887796709222487, 0.70000000000000018, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.7796581281839214, 0.70000000000000018, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 2.0829290325820207, 0.70000000000000018, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler163 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.30000000000000004.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.2570807706941696e-16
! // mean(f - f_Boost): 8.8817841970012528e-17
! // variance(f - f_Boost): 1.5582437633995295e-32
! // stddev(f - f_Boost): 1.2482963443828271e-16
  const testcase_ellint_3<double>
  data164[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17550107516328570, 0.70000000000000018, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35686409576571965, 0.70000000000000018, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.55018827316513352, 0.70000000000000018, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.76189759494390275, 0.70000000000000018, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 0.99844623430885626, 0.70000000000000018, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.2652862989039833, 0.70000000000000018, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.5647666808691361, 0.70000000000000018, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 1.8932499694938165, 0.70000000000000018, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 2.2392290510988535, 0.70000000000000018, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler164 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.40000000000000002.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.3719045096496910e-16
! // mean(f - f_Boost): 1.3600232051658169e-16
! // variance(f - f_Boost): 1.1718213750516114e-32
! // stddev(f - f_Boost): 1.0825069861444829e-16
  const testcase_ellint_3<double>
  data165[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17568027871494424, 0.70000000000000018, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35834559208180261, 0.70000000000000018, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.55545885451190613, 0.70000000000000018, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.77528120402568113, 0.70000000000000018, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 1.0267241287600322, 0.70000000000000018, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.3181380338980246, 0.70000000000000018, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.6542840785132087, 0.70000000000000018, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 2.0315595131131823, 0.70000000000000018, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.4342502915307880, 0.70000000000000018, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler165 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.0277361210295499e-16
! // mean(f - f_Boost): 1.6930901125533636e-16
! // variance(f - f_Boost): 6.3799163752809956e-32
! // stddev(f - f_Boost): 2.5258496343371268e-16
  const testcase_ellint_3<double>
  data166[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17586014108156545, 0.70000000000000018, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.35984923894341653, 0.70000000000000018, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.56091135606739995, 0.70000000000000018, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.78951212635197054, 0.70000000000000018, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 1.0578865732938731, 0.70000000000000018, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.3789149005151722, 0.70000000000000018, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.7620212286086228, 0.70000000000000018, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 2.2051554347435589, 0.70000000000000018, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.6868019968236996, 0.70000000000000018, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler166 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.60000000000000009.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.8597454441867134e-16
! // mean(f - f_Boost): 2.5535129566378598e-16
! // variance(f - f_Boost): 2.8561208198482198e-31
! // stddev(f - f_Boost): 5.3442687243889785e-16
  const testcase_ellint_3<double>
  data167[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17604066659721918, 0.70000000000000018, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.36137563278353424, 0.70000000000000018, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.56655721272747606, 0.70000000000000018, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.80468966552978305, 0.70000000000000018, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.0924902943683852, 0.70000000000000018, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.4499247992499800, 0.70000000000000018, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 1.8953714382113818, 0.70000000000000018, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.4323229949248670, 0.70000000000000018, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 3.0314573496746746, 0.70000000000000018, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler167 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.70000000000000007.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.2316852368580916e-16
! // mean(f - f_Boost): 7.7715611723760953e-17
! // variance(f - f_Boost): 7.4564398834547797e-34
! // stddev(f - f_Boost): 2.7306482533374340e-17
  const testcase_ellint_3<double>
  data168[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17622185963747933, 0.70000000000000018, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.36292539360435261, 0.70000000000000018, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.57240892970150015, 0.70000000000000018, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.82093084713182629, 0.70000000000000018, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.1312609022179871, 0.70000000000000018, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.5345768067715795, 0.70000000000000018, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 2.0668847445934424, 0.70000000000000018, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.7483444537551245, 0.70000000000000018, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 3.5408408771788569, 0.70000000000000018, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler168 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.1198716111867353e-16
! // mean(f - f_Boost): 2.2482016248659419e-16
! // variance(f - f_Boost): 5.4326441655972001e-32
! // stddev(f - f_Boost): 2.3308033305273100e-16
  const testcase_ellint_3<double>
  data169[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17640372461994805, 0.70000000000000018, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36449916621651091, 0.70000000000000018, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.57848021800372584, 0.70000000000000018, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.83837480968392586, 0.70000000000000018, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.1751669030061143, 0.70000000000000018, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.6381851899173603, 0.70000000000000018, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.3002065924302197, 0.70000000000000018, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 3.2337600665337871, 0.70000000000000018, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 4.4042405729076970, 0.70000000000000018, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler169 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.90000000000000002.
! // max(|f - f_Boost|): 3.5527136788005009e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 8.5869439826269878e-16
! // mean(f - f_Boost): 7.4384942649885490e-16
! // variance(f - f_Boost): 9.7403930714297352e-31
! // stddev(f - f_Boost): 9.8693429727767263e-16
  const testcase_ellint_3<double>
  data170[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17658626600478800, 0.70000000000000018, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36609762156017206, 0.70000000000000018, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.58478615187842409, 0.70000000000000018, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.85718862878291846, 0.70000000000000018, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.2255385617397643, 0.70000000000000018, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.7696521899992941, 0.70000000000000018, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.6476314987883507, 0.70000000000000018, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 4.1373434902898083, 0.70000000000000018, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 6.3796094177887763, 0.70000000000000018, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler170 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.0000000000000000.
! // max(|f - f_Boost|): 1.5543122344752192e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.7898565163847540e-16
! // mean(f - f_Boost): 2.3869795029440865e-16
! // variance(f - f_Boost): 2.1368406725192426e-31
! // stddev(f - f_Boost): 4.6225974002926564e-16
  const testcase_ellint_3<double>
  data171[10] =
  {
*************** data171[10] =
*** 4978,5573 ****
  	  0.0000000000000000 },
    { 0.17510154241338899, 0.80000000000000004, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35365068839779390, 0.80000000000000004, 0.0000000000000000, 
  	  0.34906585039886590 },
    { 0.53926804409084550, 0.80000000000000004, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.73587926028070361, 0.80000000000000004, 0.0000000000000000, 
  	  0.69813170079773179 },
    { 0.94770942970071170, 0.80000000000000004, 0.0000000000000000, 
  	  0.87266462599716477 },
    { 1.1789022995388236, 0.80000000000000004, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.4323027881876009, 0.80000000000000004, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.7069629739121674, 0.80000000000000004, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.9953027776647296, 0.80000000000000004, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler171 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.10000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1537164503193145e-16
  const testcase_ellint_3<double>
  data172[10] =
  {
    { 0.0000000000000000, 0.80000000000000004, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17492468824017163, 0.80000000000000004, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35224443521476911, 0.80000000000000004, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.53456851853226950, 0.80000000000000004, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.72488875602364922, 0.80000000000000004, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.92661354274638952, 0.80000000000000004, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.1432651144499075, 0.80000000000000004, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.3774479927211429, 0.80000000000000004, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.6287092337196041, 0.80000000000000004, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 1.8910755418379521, 0.80000000000000004, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler172 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.20000000000000001.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1894552974436829e-16
  const testcase_ellint_3<double>
  data173[10] =
  {
    { 0.0000000000000000, 0.80000000000000004, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17474847286224940, 0.80000000000000004, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35085779529084682, 0.80000000000000004, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53000829263059146, 0.80000000000000004, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.71443466027453384, 0.80000000000000004, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.90698196872715420, 0.80000000000000004, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1108198200558579, 0.80000000000000004, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.3284988909963957, 0.80000000000000004, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.5600369318140328, 0.80000000000000004, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 1.8007226661734588, 0.80000000000000004, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler173 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.29999999999999999.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.2247517409029886e-16
  const testcase_ellint_3<double>
  data174[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17457289217669889, 0.80000000000000004, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.34949028801501258, 0.80000000000000004, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.52558024362769307, 0.80000000000000004, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.70447281740094891, 0.80000000000000004, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.88864745641528986, 0.80000000000000004, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 1.0811075819341462, 0.80000000000000004, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.2844589654082377, 0.80000000000000004, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.4991461361277847, 0.80000000000000004, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.7214611048717301, 0.80000000000000004, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler174 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.40000000000000002.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.2596216594752862e-16
  const testcase_ellint_3<double>
  data175[10] =
  {
    { 0.0000000000000000, 0.80000000000000004, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17439794211872175, 0.80000000000000004, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34814144964568972, 0.80000000000000004, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.52127776285273064, 0.80000000000000004, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.69496411438966588, 0.80000000000000004, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.87146878427509589, 0.80000000000000004, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.0537579024937762, 0.80000000000000004, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.2445534387922637, 0.80000000000000004, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.4446769766361993, 0.80000000000000004, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.6512267838651289, 0.80000000000000004, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler175 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.50000000000000000.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.2940800093915668e-16
  const testcase_ellint_3<double>
  data176[10] =
  {
    { 0.0000000000000000, 0.80000000000000004, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17422361866118044, 0.80000000000000004, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34681083254170475, 0.80000000000000004, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.51709470815494440, 0.80000000000000004, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.68587375344080237, 0.80000000000000004, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.85532571852810624, 0.80000000000000004, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.0284677391874903, 0.80000000000000004, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.2081693942686225, 0.80000000000000004, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.3955803006426311, 0.80000000000000004, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.5884528947755532, 0.80000000000000004, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler176 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.59999999999999998.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.3281408974056389e-16
  const testcase_ellint_3<double>
  data177[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17404991781414089, 0.80000000000000004, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34549800443625167, 0.80000000000000004, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.51302536167001545, 0.80000000000000004, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.67717065003912236, 0.80000000000000004, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.84011512421134416, 0.80000000000000004, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 1.0049863847088740, 0.80000000000000004, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.1748145941898920, 0.80000000000000004, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.3510319699755071, 0.80000000000000004, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.5319262547427865, 0.80000000000000004, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler177 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.69999999999999996.
! // max(|f - f_GSL|): 2.2204460492503131e-16
! // max(|f - f_GSL| / |f_GSL|): 4.3618176466061808e-16
  const testcase_ellint_3<double>
  data178[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17387683562442199, 0.80000000000000004, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34420254775101611, 0.80000000000000004, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.50906439222143673, 0.80000000000000004, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.66882693152688422, 0.80000000000000004, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.82574792844091316, 0.80000000000000004, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 0.98310431309490931, 0.80000000000000004, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.1440884535113258, 0.80000000000000004, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.3103743938952537, 0.80000000000000004, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.4806912324625332, 0.80000000000000004, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler178 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.80000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.3951228558314112e-16
  const testcase_ellint_3<double>
  data179[10] =
  {
    { 0.0000000000000000, 0.80000000000000004, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17370436817515203, 0.80000000000000004, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.34292405894783395, 0.80000000000000004, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.50520682176250076, 0.80000000000000004, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.66081751679736178, 0.80000000000000004, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.81214672249355102, 0.80000000000000004, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 0.96264481387685552, 0.80000000000000004, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.1156611352656258, 0.80000000000000004, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.2730756225143889, 0.80000000000000004, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.4339837018309471, 0.80000000000000004, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler179 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.90000000000000002.
! // max(|f - f_GSL|): 3.3306690738754696e-16
! // max(|f - f_GSL| / |f_GSL|): 4.4280684534289690e-16
  const testcase_ellint_3<double>
  data180[10] =
  {
    { 0.0000000000000000, 0.80000000000000004, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17353251158533151, 0.80000000000000004, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.34166214791545768, 0.80000000000000004, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.50144799535130569, 0.80000000000000004, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.65311976193814425, 0.80000000000000004, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.79924384892320866, 0.80000000000000004, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.94345762353365603, 0.80000000000000004, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 1.0892582069219161, 0.80000000000000004, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.2387000876610268, 0.80000000000000004, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.3911845406776222, 0.80000000000000004, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler180 = 2.5000000000000020e-13;
  
! // Test data for k=0.89999999999999991, nu=0.0000000000000000.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 3.8945813740035884e-16
  const testcase_ellint_3<double>
  data181[10] =
  {
!   { 0.0000000000000000, 0.89999999999999991, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17525427376115024, 0.89999999999999991, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35492464591297446, 0.89999999999999991, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.54388221416157112, 0.89999999999999991, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.74797400423532490, 0.89999999999999991, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.97463898451966458, 0.89999999999999991, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.2334463254523440, 0.89999999999999991, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.5355247765594910, 0.89999999999999991, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.8882928567775117, 0.89999999999999991, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 2.2805491384227703, 0.89999999999999991, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler181 = 2.5000000000000020e-13;
  
! // Test data for k=0.89999999999999991, nu=0.10000000000000001.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 4.1237990617685137e-16
  const testcase_ellint_3<double>
  data182[10] =
  {
!   { 0.0000000000000000, 0.89999999999999991, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17507714233254656, 0.89999999999999991, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35350932904326521, 0.89999999999999991, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.53911129989870976, 0.89999999999999991, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.73666644254508395, 0.89999999999999991, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.95250736612100195, 0.89999999999999991, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.1950199550905594, 0.89999999999999991, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.4741687286340848, 0.89999999999999991, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.7968678183506053, 0.89999999999999991, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 2.1537868513875287, 0.89999999999999991, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler182 = 2.5000000000000020e-13;
  
! // Test data for k=0.89999999999999991, nu=0.20000000000000001.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 4.3446165733924066e-16
  const testcase_ellint_3<double>
  data183[10] =
  {
!   { 0.0000000000000000, 0.89999999999999991, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17490065089140927, 0.89999999999999991, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35211377590661436, 0.89999999999999991, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.53448220334204100, 0.89999999999999991, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.72591368943179579, 0.89999999999999991, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.93192539780038763, 0.89999999999999991, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.1600809679692683, 0.89999999999999991, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.4195407225882508, 0.89999999999999991, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.7168966476424521, 0.89999999999999991, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 2.0443194576468895, 0.89999999999999991, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler183 = 2.5000000000000020e-13;
  
! // Test data for k=0.89999999999999991, nu=0.29999999999999999.
! // max(|f - f_GSL|): 1.1102230246251565e-15
! // max(|f - f_GSL| / |f_GSL|): 5.6974600067013622e-16
  const testcase_ellint_3<double>
  data184[10] =
  {
!   { 0.0000000000000000, 0.89999999999999991, 0.29999999999999999, 
  	  0.0000000000000000 },
!   { 0.17472479532647531, 0.89999999999999991, 0.29999999999999999, 
  	  0.17453292519943295 },
!   { 0.35073750187374114, 0.89999999999999991, 0.29999999999999999, 
  	  0.34906585039886590 },
!   { 0.52998766129466957, 0.89999999999999991, 0.29999999999999999, 
  	  0.52359877559829882 },
!   { 0.71566993548699553, 0.89999999999999991, 0.29999999999999999, 
  	  0.69813170079773179 },
!   { 0.91271517762560195, 0.89999999999999991, 0.29999999999999999, 
  	  0.87266462599716477 },
!   { 1.1281241199843370, 0.89999999999999991, 0.29999999999999999, 
  	  1.0471975511965976 },
!   { 1.3704929576917448, 0.89999999999999991, 0.29999999999999999, 
  	  1.2217304763960306 },
!   { 1.6461981511487711, 0.89999999999999991, 0.29999999999999999, 
  	  1.3962634015954636 },
!   { 1.9486280260314426, 0.89999999999999991, 0.29999999999999999, 
  	  1.5707963267948966 },
  };
  const double toler184 = 2.5000000000000020e-13;
  
! // Test data for k=0.89999999999999991, nu=0.40000000000000002.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 4.7646208744449464e-16
  const testcase_ellint_3<double>
  data185[10] =
  {
!   { 0.0000000000000000, 0.89999999999999991, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17454957156468837, 0.89999999999999991, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.34938003933330430, 0.89999999999999991, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.52562093533067433, 0.89999999999999991, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.70589461324915670, 0.89999999999999991, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 0.89472658511942849, 0.89999999999999991, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.0987419542323440, 0.89999999999999991, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.3261349565496301, 0.89999999999999991, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 1.5831293909853763, 0.89999999999999991, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 1.8641114227238351, 0.89999999999999991, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler185 = 2.5000000000000020e-13;
  
! // Test data for k=0.89999999999999991, nu=0.50000000000000000.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 4.9652155758573562e-16
  const testcase_ellint_3<double>
  data186[10] =
  {
!   { 0.0000000000000000, 0.89999999999999991, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17437497557073334, 0.89999999999999991, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.34804093691586013, 0.89999999999999991, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.52137576320372891, 0.89999999999999991, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.69655163996912262, 0.89999999999999991, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 0.87783188683054236, 0.89999999999999991, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.0716015959755185, 0.89999999999999991, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.2857636916026749, 0.89999999999999991, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 1.5264263913252358, 0.89999999999999991, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 1.7888013241937863, 0.89999999999999991, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler186 = 2.5000000000000020e-13;
  
! // Test data for k=0.89999999999999991, nu=0.59999999999999998.
! // max(|f - f_GSL|): 6.6613381477509392e-16
! // max(|f - f_GSL| / |f_GSL|): 3.8702201113622378e-16
  const testcase_ellint_3<double>
  data187[10] =
  {
!   { 0.0000000000000000, 0.89999999999999991, 0.59999999999999998, 
  	  0.0000000000000000 },
!   { 0.17420100334657812, 0.89999999999999991, 0.59999999999999998, 
  	  0.17453292519943295 },
!   { 0.34671975876122157, 0.89999999999999991, 0.59999999999999998, 
  	  0.34906585039886590 },
!   { 0.51724631570707946, 0.89999999999999991, 0.59999999999999998, 
  	  0.52359877559829882 },
!   { 0.68760879113743023, 0.89999999999999991, 0.59999999999999998, 
  	  0.69813170079773179 },
!   { 0.86192157779698364, 0.89999999999999991, 0.59999999999999998, 
  	  0.87266462599716477 },
!   { 1.0464279696166354, 0.89999999999999991, 0.59999999999999998, 
  	  1.0471975511965976 },
!   { 1.2488156247094004, 0.89999999999999991, 0.59999999999999998, 
  	  1.2217304763960306 },
!   { 1.4750988777188470, 0.89999999999999991, 0.59999999999999998, 
  	  1.3962634015954636 },
!   { 1.7211781128919525, 0.89999999999999991, 0.59999999999999998, 
  	  1.5707963267948966 },
  };
  const double toler187 = 2.5000000000000020e-13;
  
! // Test data for k=0.89999999999999991, nu=0.69999999999999996.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 4.3410843563834748e-16
  const testcase_ellint_3<double>
  data188[10] =
  {
!   { 0.0000000000000000, 0.89999999999999991, 0.69999999999999996, 
  	  0.0000000000000000 },
!   { 0.17402765093102207, 0.89999999999999991, 0.69999999999999996, 
  	  0.17453292519943295 },
!   { 0.34541608382635131, 0.89999999999999991, 0.69999999999999996, 
  	  0.34906585039886590 },
!   { 0.51322715827061682, 0.89999999999999991, 0.69999999999999996, 
  	  0.52359877559829882 },
!   { 0.67903717872440272, 0.89999999999999991, 0.69999999999999996, 
  	  0.69813170079773179 },
!   { 0.84690113601682671, 0.89999999999999991, 0.69999999999999996, 
  	  0.87266462599716477 },
!   { 1.0229914311548418, 0.89999999999999991, 0.69999999999999996, 
  	  1.0471975511965976 },
!   { 1.2148329639709381, 0.89999999999999991, 0.69999999999999996, 
  	  1.2217304763960306 },
!   { 1.4283586501307799, 0.89999999999999991, 0.69999999999999996, 
  	  1.3962634015954636 },
!   { 1.6600480747670940, 0.89999999999999991, 0.69999999999999996, 
  	  1.5707963267948966 },
  };
  const double toler188 = 2.5000000000000020e-13;
  
! // Test data for k=0.89999999999999991, nu=0.80000000000000004.
! // max(|f - f_GSL|): 4.4408920985006262e-16
! // max(|f - f_GSL| / |f_GSL|): 3.3100928058463168e-16
  const testcase_ellint_3<double>
  data189[10] =
  {
!   { 0.0000000000000000, 0.89999999999999991, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17385491439925146, 0.89999999999999991, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.34412950523113928, 0.89999999999999991, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.50931321668729590, 0.89999999999999991, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.67081081392296327, 0.89999999999999991, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 0.83268846097293259, 0.89999999999999991, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.0010985015814027, 0.89999999999999991, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 1.1834394045489678, 0.89999999999999991, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 1.3855695891683182, 0.89999999999999991, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 1.6044591960982202, 0.89999999999999991, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler189 = 2.5000000000000020e-13;
  
! // Test data for k=0.89999999999999991, nu=0.90000000000000002.
! // max(|f - f_GSL|): 8.8817841970012523e-16
! // max(|f - f_GSL| / |f_GSL|): 5.7167507456081732e-16
  const testcase_ellint_3<double>
  data190[10] =
  {
!   { 0.0000000000000000, 0.89999999999999991, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17368278986240135, 0.89999999999999991, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.34285962963961397, 0.89999999999999991, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.50549974644993312, 0.89999999999999991, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.66290623857720876, 0.89999999999999991, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 0.81921183128847175, 0.89999999999999991, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 0.98058481956066390, 0.89999999999999991, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 1.1543223520473569, 0.89999999999999991, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 1.3462119782292934, 0.89999999999999991, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 1.5536420236310948, 0.89999999999999991, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler190 = 2.5000000000000020e-13;
  
! template<typename Tp, unsigned int Num>
    void
!   test(const testcase_ellint_3<Tp> (&data)[Num], Tp toler)
    {
!     const Tp eps = std::numeric_limits<Tp>::epsilon();
!     Tp max_abs_diff = -Tp(1);
!     Tp max_abs_frac = -Tp(1);
      unsigned int num_datum = Num;
      for (unsigned int i = 0; i < num_datum; ++i)
    	 {
! 	const Tp f = std::ellint_3(data[i].k, data[i].nu,
  		     data[i].phi);
! 	const Tp f0 = data[i].f0;
! 	const Tp diff = f - f0;
  	if (std::abs(diff) > max_abs_diff)
  	  max_abs_diff = std::abs(diff);
! 	if (std::abs(f0) > Tp(10) * eps
! 	 && std::abs(f) > Tp(10) * eps)
  	  {
! 	    const Tp frac = diff / f0;
  	    if (std::abs(frac) > max_abs_frac)
  	      max_abs_frac = std::abs(frac);
  	  }
--- 5490,6143 ----
  	  0.0000000000000000 },
    { 0.17510154241338899, 0.80000000000000004, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35365068839779396, 0.80000000000000004, 0.0000000000000000, 
  	  0.34906585039886590 },
    { 0.53926804409084550, 0.80000000000000004, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.73587926028070372, 0.80000000000000004, 0.0000000000000000, 
  	  0.69813170079773179 },
    { 0.94770942970071170, 0.80000000000000004, 0.0000000000000000, 
  	  0.87266462599716477 },
    { 1.1789022995388236, 0.80000000000000004, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.4323027881876012, 0.80000000000000004, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.7069629739121677, 0.80000000000000004, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 1.9953027776647294, 0.80000000000000004, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler171 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.10000000000000001.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 8.3898786942190374e-16
! // mean(f - f_Boost): 2.3869795029440865e-16
! // variance(f - f_Boost): 2.9190059990693968e-31
! // stddev(f - f_Boost): 5.4027826155319237e-16
  const testcase_ellint_3<double>
  data172[10] =
  {
    { 0.0000000000000000, 0.80000000000000004, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17527903952342144, 0.80000000000000004, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35507705313548549, 0.80000000000000004, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.54411455987643553, 0.80000000000000004, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.74745625666804383, 0.80000000000000004, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.97046953684238557, 0.80000000000000004, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.2183080025184605, 0.80000000000000004, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.4943711151994405, 0.80000000000000004, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.7972401309544201, 0.80000000000000004, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 2.1172616484005085, 0.80000000000000004, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler172 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.20000000000000001.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.8513740186068518e-16
! // mean(f - f_Boost): 2.8310687127941490e-16
! // variance(f - f_Boost): 2.7528339102381189e-31
! // stddev(f - f_Boost): 5.2467455724840699e-16
  const testcase_ellint_3<double>
  data173[10] =
  {
    { 0.0000000000000000, 0.80000000000000004, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17545718375086419, 0.80000000000000004, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35652404627248163, 0.80000000000000004, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.54911638512920913, 0.80000000000000004, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.75967684282131176, 0.80000000000000004, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 0.99513526893543769, 0.80000000000000004, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.2622192109995993, 0.80000000000000004, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.5654106676347741, 0.80000000000000004, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 1.9029531718534984, 0.80000000000000004, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 2.2624789434186798, 0.80000000000000004, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler173 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.30000000000000004.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.2825261583337354e-16
! // mean(f - f_Boost): 2.6367796834847468e-16
! // variance(f - f_Boost): 2.8249350208968825e-31
! // stddev(f - f_Boost): 5.3150117788175054e-16
  const testcase_ellint_3<double>
  data174[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17563597931587369, 0.80000000000000004, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35799220412005128, 0.80000000000000004, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.55428253691111318, 0.80000000000000004, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.77260647376977365, 0.80000000000000004, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 1.0220015271210958, 0.80000000000000004, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.3115965312302671, 0.80000000000000004, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.6478518468813512, 0.80000000000000004, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 2.0290458414203481, 0.80000000000000004, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 2.4392042002725693, 0.80000000000000004, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler174 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.40000000000000002.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 8.3462748389836647e-16
! // mean(f - f_Boost): 3.3861802251067273e-16
! // variance(f - f_Boost): 4.3719465706454422e-31
! // stddev(f - f_Boost): 6.6120696991527871e-16
  const testcase_ellint_3<double>
  data175[10] =
  {
    { 0.0000000000000000, 0.80000000000000004, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17581543047866136, 0.80000000000000004, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.35948208343061633, 0.80000000000000004, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.55962280893702021, 0.80000000000000004, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.78632063889234116, 0.80000000000000004, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 1.0514333069550323, 0.80000000000000004, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.3677213138838757, 0.80000000000000004, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.7451736773665165, 0.80000000000000004, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 2.1830100424586831, 0.80000000000000004, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 2.6604037035529724, 0.80000000000000004, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler175 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.50000000000000000.
! // max(|f - f_Boost|): 2.6645352591003757e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 9.0388243828581744e-16
! // mean(f - f_Boost): 3.8580250105724191e-16
! // variance(f - f_Boost): 6.4106456575047741e-31
! // stddev(f - f_Boost): 8.0066507713929764e-16
  const testcase_ellint_3<double>
  data176[10] =
  {
    { 0.0000000000000000, 0.80000000000000004, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17599554153999472, 0.80000000000000004, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.36099426243351540, 0.80000000000000004, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.56514786174780673, 0.80000000000000004, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.80090697622371010, 0.80000000000000004, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 1.0838891627679339, 0.80000000000000004, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.4323506654466280, 0.80000000000000004, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 1.8625761085390575, 0.80000000000000004, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 2.3768757305654766, 0.80000000000000004, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 2.9478781158239746, 0.80000000000000004, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler176 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.60000000000000009.
! // max(|f - f_Boost|): 3.5527136788005009e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 1.0631099169042069e-15
! // mean(f - f_Boost): 4.8294701571194306e-16
! // variance(f - f_Boost): 1.1633910328160319e-30
! // stddev(f - f_Boost): 1.0786060600682865e-15
  const testcase_ellint_3<double>
  data177[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17617631684170665, 0.80000000000000004, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.36252934193666231, 0.80000000000000004, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.57086932622945163, 0.80000000000000004, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.81646796740150973, 0.80000000000000004, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.1199552158519064, 0.80000000000000004, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.5079766673336394, 0.80000000000000004, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 2.0082747447038165, 0.80000000000000004, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.6315146066775523, 0.80000000000000004, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 3.3418121892288051, 0.80000000000000004, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler177 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.70000000000000007.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.6544679145741375e-16
! // mean(f - f_Boost): 3.2751579226442120e-16
! // variance(f - f_Boost): 4.4236851331020672e-31
! // stddev(f - f_Boost): 6.6510789599147505e-16
  const testcase_ellint_3<double>
  data178[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17635776076721221, 0.80000000000000004, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.36408794649916976, 0.80000000000000004, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.57679992290624138, 0.80000000000000004, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.83312441418142813, 0.80000000000000004, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.1603958891464856, 0.80000000000000004, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.5982855143796213, 0.80000000000000004, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 2.1962484408371821, 0.80000000000000004, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 2.9873281786111869, 0.80000000000000004, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 3.9268876980046397, 0.80000000000000004, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler178 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.80000000000000004.
! // max(|f - f_Boost|): 4.4408920985006262e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 9.0176949165011079e-16
! // mean(f - f_Boost): 7.0499162063697436e-16
! // variance(f - f_Boost): 1.7230805408026989e-30
! // stddev(f - f_Boost): 1.3126616246400665e-15
  const testcase_ellint_3<double>
  data179[10] =
  {
    { 0.0000000000000000, 0.80000000000000004, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17653987774203392, 0.80000000000000004, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36567072568046877, 0.80000000000000004, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.58295359996558616, 0.80000000000000004, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.85101998309176108, 0.80000000000000004, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.2062322059736537, 0.80000000000000004, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.7090321420917429, 0.80000000000000004, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.4529058049405066, 0.80000000000000004, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 3.5368893360106948, 0.80000000000000004, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 4.9246422058196062, 0.80000000000000004, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler179 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.90000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.7782721357365268e-16
! // mean(f - f_Boost): 8.9928064994637676e-16
! // variance(f - f_Boost): 1.5485199571025344e-30
! // stddev(f - f_Boost): 1.2443954183066307e-15
  const testcase_ellint_3<double>
  data180[10] =
  {
    { 0.0000000000000000, 0.80000000000000004, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17672267223433513, 0.80000000000000004, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36727835537196063, 0.80000000000000004, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.58934569363716649, 0.80000000000000004, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.87032723471138851, 0.80000000000000004, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.2588676111323349, 0.80000000000000004, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.8498731900660019, 0.80000000000000004, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 2.8368381299300420, 0.80000000000000004, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 4.5674844191654058, 0.80000000000000004, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 7.2263259298637115, 0.80000000000000004, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler180 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.0000000000000000.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.3381508715713360e-16
! // mean(f - f_Boost): 5.8286708792820721e-17
! // variance(f - f_Boost): 4.1942474344433133e-34
! // stddev(f - f_Boost): 2.0479861900030756e-17
  const testcase_ellint_3<double>
  data181[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.0000000000000000, 
  	  0.0000000000000000 },
!   { 0.17525427376115027, 0.90000000000000013, 0.0000000000000000, 
  	  0.17453292519943295 },
!   { 0.35492464591297446, 0.90000000000000013, 0.0000000000000000, 
  	  0.34906585039886590 },
!   { 0.54388221416157123, 0.90000000000000013, 0.0000000000000000, 
  	  0.52359877559829882 },
!   { 0.74797400423532512, 0.90000000000000013, 0.0000000000000000, 
  	  0.69813170079773179 },
!   { 0.97463898451966446, 0.90000000000000013, 0.0000000000000000, 
  	  0.87266462599716477 },
!   { 1.2334463254523440, 0.90000000000000013, 0.0000000000000000, 
  	  1.0471975511965976 },
!   { 1.5355247765594915, 0.90000000000000013, 0.0000000000000000, 
  	  1.2217304763960306 },
!   { 1.8882928567775128, 0.90000000000000013, 0.0000000000000000, 
  	  1.3962634015954636 },
!   { 2.2805491384227707, 0.90000000000000013, 0.0000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler181 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.1500594295134815e-16
! // mean(f - f_Boost): 9.1593399531575410e-17
! // variance(f - f_Boost): 1.0357223256482469e-33
! // stddev(f - f_Boost): 3.2182640128619758e-17
  const testcase_ellint_3<double>
  data182[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.10000000000000001, 
  	  0.0000000000000000 },
!   { 0.17543204932716244, 0.90000000000000013, 0.10000000000000001, 
  	  0.17453292519943295 },
!   { 0.35636022898551184, 0.90000000000000013, 0.10000000000000001, 
  	  0.34906585039886590 },
!   { 0.54880278898382595, 0.90000000000000013, 0.10000000000000001, 
  	  0.52359877559829882 },
!   { 0.75988834774529268, 0.90000000000000013, 0.10000000000000001, 
  	  0.69813170079773179 },
!   { 0.99853303003568117, 0.90000000000000013, 0.10000000000000001, 
  	  0.87266462599716477 },
!   { 1.2759958823999022, 0.90000000000000013, 0.10000000000000001, 
  	  1.0471975511965976 },
!   { 1.6051187364639401, 0.90000000000000013, 0.10000000000000001, 
  	  1.2217304763960306 },
!   { 1.9941406879519474, 0.90000000000000013, 0.10000000000000001, 
  	  1.3962634015954636 },
!   { 2.4295011187834890, 0.90000000000000013, 0.10000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler182 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.20000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.9533518431433547e-16
! // mean(f - f_Boost): 1.0269562977782698e-16
! // variance(f - f_Boost): 1.4388836606733082e-32
! // stddev(f - f_Boost): 1.1995347684303728e-16
  const testcase_ellint_3<double>
  data183[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.20000000000000001, 
  	  0.0000000000000000 },
!   { 0.17561047321968409, 0.90000000000000013, 0.20000000000000001, 
  	  0.17453292519943295 },
!   { 0.35781659944356109, 0.90000000000000013, 0.20000000000000001, 
  	  0.34906585039886590 },
!   { 0.55388150905215283, 0.90000000000000013, 0.20000000000000001, 
  	  0.52359877559829882 },
!   { 0.77246874123251441, 0.90000000000000013, 0.20000000000000001, 
  	  0.69813170079773179 },
!   { 1.0244466254771925, 0.90000000000000013, 0.20000000000000001, 
  	  0.87266462599716477 },
!   { 1.3234824077640801, 0.90000000000000013, 0.20000000000000001, 
  	  1.0471975511965976 },
!   { 1.6849848968804240, 0.90000000000000013, 0.20000000000000001, 
  	  1.2217304763960306 },
!   { 2.1185749045502278, 0.90000000000000013, 0.20000000000000001, 
  	  1.3962634015954636 },
!   { 2.6076835743348417, 0.90000000000000013, 0.20000000000000001, 
  	  1.5707963267948966 },
  };
  const double toler183 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.30000000000000004.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.9712691025502371e-16
! // mean(f - f_Boost): 6.9388939039072284e-17
! // variance(f - f_Boost): 5.9442282234173945e-34
! // stddev(f - f_Boost): 2.4380787976227090e-17
  const testcase_ellint_3<double>
  data184[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.30000000000000004, 
  	  0.0000000000000000 },
!   { 0.17578954966746221, 0.90000000000000013, 0.30000000000000004, 
  	  0.17453292519943295 },
!   { 0.35929429810867447, 0.90000000000000013, 0.30000000000000004, 
  	  0.34906585039886590 },
!   { 0.55912757154240822, 0.90000000000000013, 0.30000000000000004, 
  	  0.52359877559829882 },
!   { 0.78578314722025389, 0.90000000000000013, 0.30000000000000004, 
  	  0.69813170079773179 },
!   { 1.0526941001131365, 0.90000000000000013, 0.30000000000000004, 
  	  0.87266462599716477 },
!   { 1.3769682234538601, 0.90000000000000013, 0.30000000000000004, 
  	  1.0471975511965976 },
!   { 1.7779437432911240, 0.90000000000000013, 0.30000000000000004, 
  	  1.2217304763960306 },
!   { 2.2676509341813635, 0.90000000000000013, 0.30000000000000004, 
  	  1.3962634015954636 },
!   { 2.8256506968858517, 0.90000000000000013, 0.30000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler184 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.40000000000000002.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.7042235432234642e-16
! // mean(f - f_Boost): 1.8041124150158794e-16
! // variance(f - f_Boost): 8.5834655546147173e-33
! // stddev(f - f_Boost): 9.2646994309662939e-17
  const testcase_ellint_3<double>
  data185[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.40000000000000002, 
  	  0.0000000000000000 },
!   { 0.17596928293938452, 0.90000000000000013, 0.40000000000000002, 
  	  0.17453292519943295 },
!   { 0.36079388642472821, 0.90000000000000013, 0.40000000000000002, 
  	  0.34906585039886590 },
!   { 0.56455096667115612, 0.90000000000000013, 0.40000000000000002, 
  	  0.52359877559829882 },
!   { 0.79990996997869435, 0.90000000000000013, 0.40000000000000002, 
  	  0.69813170079773179 },
!   { 1.0836647913872215, 0.90000000000000013, 0.40000000000000002, 
  	  0.87266462599716477 },
!   { 1.4378726836091849, 0.90000000000000013, 0.40000000000000002, 
  	  1.0471975511965976 },
!   { 1.8880446720682853, 0.90000000000000013, 0.40000000000000002, 
  	  1.2217304763960306 },
!   { 2.4505848932025232, 0.90000000000000013, 0.40000000000000002, 
  	  1.3962634015954636 },
!   { 3.1000689868578624, 0.90000000000000013, 0.40000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler185 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.3939646155354115e-16
! // mean(f - f_Boost): 1.5820678100908481e-16
! // variance(f - f_Boost): 1.0089970755557622e-32
! // stddev(f - f_Boost): 1.0044884646205561e-16
  const testcase_ellint_3<double>
  data186[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.50000000000000000, 
  	  0.0000000000000000 },
!   { 0.17614967734498183, 0.90000000000000013, 0.50000000000000000, 
  	  0.17453292519943295 },
!   { 0.36231594750319435, 0.90000000000000013, 0.50000000000000000, 
  	  0.34906585039886590 },
!   { 0.57016256984349567, 0.90000000000000013, 0.50000000000000000, 
  	  0.52359877559829882 },
!   { 0.81494025918293422, 0.90000000000000013, 0.50000000000000000, 
  	  0.69813170079773179 },
!   { 1.1178482279283477, 0.90000000000000013, 0.50000000000000000, 
  	  0.87266462599716477 },
!   { 1.5081455873012106, 0.90000000000000013, 0.50000000000000000, 
  	  1.0471975511965976 },
!   { 2.0213599730863998, 0.90000000000000013, 0.50000000000000000, 
  	  1.2217304763960306 },
!   { 2.6822467012926832, 0.90000000000000013, 0.50000000000000000, 
  	  1.3962634015954636 },
!   { 3.4591069002104686, 0.90000000000000013, 0.50000000000000000, 
  	  1.5707963267948966 },
  };
  const double toler186 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.60000000000000009.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.4914274070443813e-16
! // mean(f - f_Boost): 3.4694469519536142e-16
! // variance(f - f_Boost): 2.5224926888894056e-31
! // stddev(f - f_Boost): 5.0224423231027804e-16
  const testcase_ellint_3<double>
  data187[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.60000000000000009, 
  	  0.0000000000000000 },
!   { 0.17633073723493825, 0.90000000000000013, 0.60000000000000009, 
  	  0.17453292519943295 },
!   { 0.36386108723492810, 0.90000000000000013, 0.60000000000000009, 
  	  0.34906585039886590 },
!   { 0.57597424744716241, 0.90000000000000013, 0.60000000000000009, 
  	  0.52359877559829882 },
!   { 0.83098051948501150, 0.90000000000000013, 0.60000000000000009, 
  	  0.69813170079773179 },
!   { 1.1558706545698916, 0.90000000000000013, 0.60000000000000009, 
  	  0.87266462599716477 },
!   { 1.5905576379415669, 0.90000000000000013, 0.60000000000000009, 
  	  1.0471975511965976 },
!   { 2.1875186010215084, 0.90000000000000013, 0.60000000000000009, 
  	  1.2217304763960306 },
!   { 2.9885767771316853, 0.90000000000000013, 0.60000000000000009, 
  	  1.3962634015954636 },
!   { 3.9549939883570238, 0.90000000000000013, 0.60000000000000009, 
  	  1.5707963267948966 },
  };
  const double toler187 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.70000000000000007.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.5442489886293633e-16
! // mean(f - f_Boost): 4.3576253716537392e-16
! // variance(f - f_Boost): 2.2187568928205130e-31
! // stddev(f - f_Boost): 4.7103682370070737e-16
  const testcase_ellint_3<double>
  data188[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.70000000000000007, 
  	  0.0000000000000000 },
!   { 0.17651246700160939, 0.90000000000000013, 0.70000000000000007, 
  	  0.17453292519943295 },
!   { 0.36542993547358982, 0.90000000000000013, 0.70000000000000007, 
  	  0.34906585039886590 },
!   { 0.58199897877674867, 0.90000000000000013, 0.70000000000000007, 
  	  0.52359877559829882 },
!   { 0.84815633587352857, 0.90000000000000013, 0.70000000000000007, 
  	  0.69813170079773179 },
!   { 1.1985495623872375, 0.90000000000000013, 0.70000000000000007, 
  	  0.87266462599716477 },
!   { 1.6892158134027691, 0.90000000000000013, 0.70000000000000007, 
  	  1.0471975511965976 },
!   { 2.4029722191094236, 0.90000000000000013, 0.70000000000000007, 
  	  1.2217304763960306 },
!   { 3.4201084941340061, 0.90000000000000013, 0.70000000000000007, 
  	  1.3962634015954636 },
!   { 4.6985482312992444, 0.90000000000000013, 0.70000000000000007, 
  	  1.5707963267948966 },
  };
  const double toler188 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.9362432595976420e-16
! // mean(f - f_Boost): 3.0531133177191805e-16
! // variance(f - f_Boost): 1.1508025840536076e-32
! // stddev(f - f_Boost): 1.0727546709539920e-16
  const testcase_ellint_3<double>
  data189[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.80000000000000004, 
  	  0.0000000000000000 },
!   { 0.17669487107954862, 0.90000000000000013, 0.80000000000000004, 
  	  0.17453292519943295 },
!   { 0.36702314729628421, 0.90000000000000013, 0.80000000000000004, 
  	  0.34906585039886590 },
!   { 0.58825099711365492, 0.90000000000000013, 0.80000000000000004, 
  	  0.52359877559829882 },
!   { 0.86661711422209031, 0.90000000000000013, 0.80000000000000004, 
  	  0.69813170079773179 },
!   { 1.2469779109884802, 0.90000000000000013, 0.80000000000000004, 
  	  0.87266462599716477 },
!   { 1.8105469760531578, 0.90000000000000013, 0.80000000000000004, 
  	  1.0471975511965976 },
!   { 2.6989505165893752, 0.90000000000000013, 0.80000000000000004, 
  	  1.2217304763960306 },
!   { 4.0935213267757433, 0.90000000000000013, 0.80000000000000004, 
  	  1.3962634015954636 },
!   { 5.9820740813645727, 0.90000000000000013, 0.80000000000000004, 
  	  1.5707963267948966 },
  };
  const double toler189 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.90000000000000002.
! // max(|f - f_Boost|): 2.6645352591003757e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.9577148062669782e-16
! // mean(f - f_Boost): 5.9119376061289588e-16
! // variance(f - f_Boost): 1.7340883003959522e-31
! // stddev(f - f_Boost): 4.1642385863395872e-16
  const testcase_ellint_3<double>
  data190[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.90000000000000002, 
  	  0.0000000000000000 },
!   { 0.17687795394604169, 0.90000000000000013, 0.90000000000000002, 
  	  0.17453292519943295 },
!   { 0.36864140434751286, 0.90000000000000013, 0.90000000000000002, 
  	  0.34906585039886590 },
!   { 0.59474595366817051, 0.90000000000000013, 0.90000000000000002, 
  	  0.52359877559829882 },
!   { 0.88654237226056665, 0.90000000000000013, 0.90000000000000002, 
  	  0.69813170079773179 },
!   { 1.3026595810616726, 0.90000000000000013, 0.90000000000000002, 
  	  0.87266462599716477 },
!   { 1.9653635459278080, 0.90000000000000013, 0.90000000000000002, 
  	  1.0471975511965976 },
!   { 3.1451407527189468, 0.90000000000000013, 0.90000000000000002, 
  	  1.2217304763960306 },
!   { 5.3745230680316132, 0.90000000000000013, 0.90000000000000002, 
  	  1.3962634015954636 },
!   { 8.9942562031858717, 0.90000000000000013, 0.90000000000000002, 
  	  1.5707963267948966 },
  };
  const double toler190 = 2.5000000000000020e-13;
  
! template<typename Ret, unsigned int Num>
    void
!   test(const testcase_ellint_3<Ret> (&data)[Num], Ret toler)
    {
!     bool test __attribute__((unused)) = true;
!     const Ret eps = std::numeric_limits<Ret>::epsilon();
!     Ret max_abs_diff = -Ret(1);
!     Ret max_abs_frac = -Ret(1);
      unsigned int num_datum = Num;
      for (unsigned int i = 0; i < num_datum; ++i)
    	 {
! 	const Ret f = std::ellint_3(data[i].k, data[i].nu,
  		     data[i].phi);
! 	const Ret f0 = data[i].f0;
! 	const Ret diff = f - f0;
  	if (std::abs(diff) > max_abs_diff)
  	  max_abs_diff = std::abs(diff);
! 	if (std::abs(f0) > Ret(10) * eps
! 	 && std::abs(f) > Ret(10) * eps)
  	  {
! 	    const Ret frac = diff / f0;
  	    if (std::abs(frac) > max_abs_frac)
  	      max_abs_frac = std::abs(frac);
  	  }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc gcc-7.4.0/libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc	Mon Apr 30 19:51:13 2018
***************
*** 0 ****
--- 1,26 ----
+ // { dg-do run { target c++11 } }
+ // { dg-require-c-std "" }
+ // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
+ // { dg-add-options ieee }
+ 
+ #include <cmath>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   const double pi = 3.141592654;
+ 
+   double Pi1 = std::ellint_3(0.75, 0.0, pi / 2.0);
+   VERIFY(std::abs(Pi1 - 1.91099) < 0.00001);
+ 
+   double Pi2 = std::ellint_3(0.75, 0.5, pi / 2.0);
+   VERIFY(std::abs(Pi2 - 2.80011) < 0.00001);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc gcc-7.4.0/libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc	Mon Apr 30 19:51:13 2018
***************
*** 0 ****
--- 1,47 ----
+ // { dg-do run { target c++11 } }
+ // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
+ // Copyright (C) 2017 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/>.
+ 
+ // PR libstdc++/68397 -  std::tr1::expint fails in __expint_En_cont_frac
+ // for some long double arguments due to low __max_iter value
+ 
+ #include <cmath>
+ #include <testsuite_hooks.h>
+ 
+ int
+ test01()
+ {
+   // Answers from Wolfram Alpha.
+   long double ans_ok = -0.10001943365331651406888645149537315243646135979573L;
+   long double ans_bomb = -0.10777727809650077516264612749163100483995270163783L;
+ 
+   auto Ei_ok = std::expint(-1.500001L);
+   auto diff_ok = Ei_ok - ans_ok;
+   VERIFY(std::abs(diff_ok) < 1.0e-15);
+ 
+   auto Ei_bomb = std::expint(-1.450001L);
+   auto diff_bomb = Ei_bomb - ans_bomb;
+   VERIFY(std::abs(diff_bomb) < 1.0e-15);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc gcc-7.4.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc	Mon Apr 30 19:51:13 2018
***************
*** 1,6 ****
! // 2007-02-04  Edward Smith-Rowland <3dw4rd@verizon.net>
  //
! // Copyright (C) 2007-2017 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,7 ----
! // { dg-do run { target c++11 } }
! // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
  //
! // 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
***************
*** 18,843 ****
  // <http://www.gnu.org/licenses/>.
  
  //  comp_ellint_3
- 
- 
  //  Compare against values generated by the GNU Scientific Library.
  //  The GSL can be found on the web: http://www.gnu.org/software/gsl/
! 
  #include <tr1/cmath>
  #if defined(__TEST_DEBUG)
! #include <iostream>
! #define VERIFY(A) \
! if (!(A)) \
!   { \
!     std::cout << "line " << __LINE__ \
!       << "  max_abs_frac = " << max_abs_frac \
!       << std::endl; \
!   }
  #else
! #include <testsuite_hooks.h>
  #endif
! #include "../testcase.h"
! 
  
  // Test data for k=-0.90000000000000002.
! testcase_comp_ellint_3<double> data001[] = {
    { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000 },
!   { 2.1537868513875287, -0.90000000000000002, 0.10000000000000001 },
!   { 2.0443194576468890, -0.90000000000000002, 0.20000000000000001 },
!   { 1.9486280260314426, -0.90000000000000002, 0.29999999999999999 },
!   { 1.8641114227238349, -0.90000000000000002, 0.40000000000000002 },
!   { 1.7888013241937861, -0.90000000000000002, 0.50000000000000000 },
!   { 1.7211781128919523, -0.90000000000000002, 0.59999999999999998 },
!   { 1.6600480747670938, -0.90000000000000002, 0.69999999999999996 },
!   { 1.6044591960982204, -0.90000000000000002, 0.80000000000000004 },
!   { 1.5536420236310946, -0.90000000000000002, 0.90000000000000002 },
  };
! 
! // Test function for k=-0.90000000000000002.
! template <typename Tp>
! void test001()
! {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data001)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data001[i].k), Tp(data001[i].nu));
!       const Tp f0 = data001[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
  
  // Test data for k=-0.80000000000000004.
! testcase_comp_ellint_3<double> data002[] = {
!   { 1.9953027776647296, -0.80000000000000004, 0.0000000000000000 },
!   { 1.8910755418379521, -0.80000000000000004, 0.10000000000000001 },
!   { 1.8007226661734588, -0.80000000000000004, 0.20000000000000001 },
!   { 1.7214611048717301, -0.80000000000000004, 0.29999999999999999 },
!   { 1.6512267838651289, -0.80000000000000004, 0.40000000000000002 },
!   { 1.5884528947755532, -0.80000000000000004, 0.50000000000000000 },
!   { 1.5319262547427865, -0.80000000000000004, 0.59999999999999998 },
!   { 1.4806912324625332, -0.80000000000000004, 0.69999999999999996 },
!   { 1.4339837018309474, -0.80000000000000004, 0.80000000000000004 },
!   { 1.3911845406776222, -0.80000000000000004, 0.90000000000000002 },
! };
! 
! // Test function for k=-0.80000000000000004.
! template <typename Tp>
! void test002()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data002)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data002[i].k), Tp(data002[i].nu));
!       const Tp f0 = data002[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.69999999999999996.
! testcase_comp_ellint_3<double> data003[] = {
!   { 1.8456939983747236, -0.69999999999999996, 0.0000000000000000 },
!   { 1.7528050171757608, -0.69999999999999996, 0.10000000000000001 },
!   { 1.6721098780092147, -0.69999999999999996, 0.20000000000000001 },
!   { 1.6011813647733213, -0.69999999999999996, 0.29999999999999999 },
!   { 1.5382162002954762, -0.69999999999999996, 0.40000000000000002 },
!   { 1.4818433192178544, -0.69999999999999996, 0.50000000000000000 },
!   { 1.4309994736080540, -0.69999999999999996, 0.59999999999999998 },
!   { 1.3848459188329196, -0.69999999999999996, 0.69999999999999996 },
!   { 1.3427110650397533, -0.69999999999999996, 0.80000000000000004 },
!   { 1.3040500499695911, -0.69999999999999996, 0.90000000000000002 },
  };
  
! // Test function for k=-0.69999999999999996.
! template <typename Tp>
! void test003()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data003)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data003[i].k), Tp(data003[i].nu));
!       const Tp f0 = data003[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
  
  // Test data for k=-0.59999999999999998.
! testcase_comp_ellint_3<double> data004[] = {
    { 1.7507538029157526, -0.59999999999999998, 0.0000000000000000 },
!   { 1.6648615773343014, -0.59999999999999998, 0.10000000000000001 },
!   { 1.5901418016279374, -0.59999999999999998, 0.20000000000000001 },
!   { 1.5243814243493585, -0.59999999999999998, 0.29999999999999999 },
!   { 1.4659345278069984, -0.59999999999999998, 0.40000000000000002 },
!   { 1.4135484285693078, -0.59999999999999998, 0.50000000000000000 },
!   { 1.3662507535812816, -0.59999999999999998, 0.59999999999999998 },
!   { 1.3232737468822811, -0.59999999999999998, 0.69999999999999996 },
!   { 1.2840021261752192, -0.59999999999999998, 0.80000000000000004 },
!   { 1.2479362973851875, -0.59999999999999998, 0.90000000000000002 },
  };
! 
! // Test function for k=-0.59999999999999998.
! template <typename Tp>
! void test004()
! {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data004)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data004[i].k), Tp(data004[i].nu));
!       const Tp f0 = data004[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
  
  // Test data for k=-0.50000000000000000.
! testcase_comp_ellint_3<double> data005[] = {
!   { 1.6857503548125963, -0.50000000000000000, 0.0000000000000000 },
!   { 1.6045524936084892, -0.50000000000000000, 0.10000000000000001 },
!   { 1.5338490483665983, -0.50000000000000000, 0.20000000000000001 },
!   { 1.4715681939859637, -0.50000000000000000, 0.29999999999999999 },
!   { 1.4161679518465340, -0.50000000000000000, 0.40000000000000002 },
!   { 1.3664739530045971, -0.50000000000000000, 0.50000000000000000 },
!   { 1.3215740290190876, -0.50000000000000000, 0.59999999999999998 },
!   { 1.2807475181182502, -0.50000000000000000, 0.69999999999999996 },
!   { 1.2434165408189539, -0.50000000000000000, 0.80000000000000004 },
!   { 1.2091116095504744, -0.50000000000000000, 0.90000000000000002 },
! };
! 
! // Test function for k=-0.50000000000000000.
! template <typename Tp>
! void test005()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data005)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data005[i].k), Tp(data005[i].nu));
!       const Tp f0 = data005[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.40000000000000002.
! testcase_comp_ellint_3<double> data006[] = {
!   { 1.6399998658645112, -0.40000000000000002, 0.0000000000000000 },
!   { 1.5620566886683604, -0.40000000000000002, 0.10000000000000001 },
!   { 1.4941414344266770, -0.40000000000000002, 0.20000000000000001 },
!   { 1.4342789859950078, -0.40000000000000002, 0.29999999999999999 },
!   { 1.3809986210732901, -0.40000000000000002, 0.40000000000000002 },
!   { 1.3331797176377398, -0.40000000000000002, 0.50000000000000000 },
!   { 1.2899514672527024, -0.40000000000000002, 0.59999999999999998 },
!   { 1.2506255923253344, -0.40000000000000002, 0.69999999999999996 },
!   { 1.2146499565727209, -0.40000000000000002, 0.80000000000000004 },
!   { 1.1815758115929846, -0.40000000000000002, 0.90000000000000002 },
  };
  
! // Test function for k=-0.40000000000000002.
! template <typename Tp>
! void test006()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data006)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data006[i].k), Tp(data006[i].nu));
!       const Tp f0 = data006[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.30000000000000004.
! testcase_comp_ellint_3<double> data007[] = {
!   { 1.6080486199305126, -0.30000000000000004, 0.0000000000000000 },
!   { 1.5323534693557526, -0.30000000000000004, 0.10000000000000001 },
!   { 1.4663658145259875, -0.30000000000000004, 0.20000000000000001 },
!   { 1.4081767433479089, -0.30000000000000004, 0.29999999999999999 },
!   { 1.3563643538969761, -0.30000000000000004, 0.40000000000000002 },
!   { 1.3098448759814960, -0.30000000000000004, 0.50000000000000000 },
!   { 1.2677758800420666, -0.30000000000000004, 0.59999999999999998 },
!   { 1.2294913236274980, -0.30000000000000004, 0.69999999999999996 },
!   { 1.1944567571590046, -0.30000000000000004, 0.80000000000000004 },
!   { 1.1622376896064912, -0.30000000000000004, 0.90000000000000002 },
  };
  
! // Test function for k=-0.30000000000000004.
! template <typename Tp>
! void test007()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data007)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data007[i].k), Tp(data007[i].nu));
!       const Tp f0 = data007[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.19999999999999996.
! testcase_comp_ellint_3<double> data008[] = {
!   { 1.5868678474541664, -0.19999999999999996, 0.0000000000000000 },
!   { 1.5126513474261092, -0.19999999999999996, 0.10000000000000001 },
!   { 1.4479323932249568, -0.19999999999999996, 0.20000000000000001 },
!   { 1.3908453514752481, -0.19999999999999996, 0.29999999999999999 },
!   { 1.3400002519661010, -0.19999999999999996, 0.40000000000000002 },
!   { 1.2943374404397376, -0.19999999999999996, 0.50000000000000000 },
!   { 1.2530330675914561, -0.19999999999999996, 0.59999999999999998 },
!   { 1.2154356555075867, -0.19999999999999996, 0.69999999999999996 },
!   { 1.1810223448909913, -0.19999999999999996, 0.80000000000000004 },
!   { 1.1493679916141863, -0.19999999999999996, 0.90000000000000002 },
  };
  
! // Test function for k=-0.19999999999999996.
! template <typename Tp>
! void test008()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data008)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data008[i].k), Tp(data008[i].nu));
!       const Tp f0 = data008[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.099999999999999978.
! testcase_comp_ellint_3<double> data009[] = {
!   { 1.5747455615173562, -0.099999999999999978, 0.0000000000000000 },
!   { 1.5013711111199950, -0.099999999999999978, 0.10000000000000001 },
!   { 1.4373749386463430, -0.099999999999999978, 0.20000000000000001 },
!   { 1.3809159606704959, -0.099999999999999978, 0.29999999999999999 },
!   { 1.3306223265207477, -0.099999999999999978, 0.40000000000000002 },
!   { 1.2854480708580160, -0.099999999999999978, 0.50000000000000000 },
!   { 1.2445798942989255, -0.099999999999999978, 0.59999999999999998 },
!   { 1.2073745911083187, -0.099999999999999978, 0.69999999999999996 },
!   { 1.1733158866987732, -0.099999999999999978, 0.80000000000000004 },
!   { 1.1419839485283374, -0.099999999999999978, 0.90000000000000002 },
  };
  
! // Test function for k=-0.099999999999999978.
! template <typename Tp>
! void test009()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data009)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data009[i].k), Tp(data009[i].nu));
!       const Tp f0 = data009[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
  
  // Test data for k=0.0000000000000000.
! testcase_comp_ellint_3<double> data010[] = {
    { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000 },
!   { 1.4976955329233277, 0.0000000000000000, 0.10000000000000001 },
!   { 1.4339343023863691, 0.0000000000000000, 0.20000000000000001 },
!   { 1.3776795151134889, 0.0000000000000000, 0.29999999999999999 },
!   { 1.3275651989026322, 0.0000000000000000, 0.40000000000000002 },
!   { 1.2825498301618641, 0.0000000000000000, 0.50000000000000000 },
!   { 1.2418235332245127, 0.0000000000000000, 0.59999999999999998 },
!   { 1.2047457872617382, 0.0000000000000000, 0.69999999999999996 },
!   { 1.1708024551734544, 0.0000000000000000, 0.80000000000000004 },
!   { 1.1395754288497419, 0.0000000000000000, 0.90000000000000002 },
  };
! 
! // Test function for k=0.0000000000000000.
! template <typename Tp>
! void test010()
! {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data010)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data010[i].k), Tp(data010[i].nu));
!       const Tp f0 = data010[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
  
  // Test data for k=0.10000000000000009.
! testcase_comp_ellint_3<double> data011[] = {
!   { 1.5747455615173562, 0.10000000000000009, 0.0000000000000000 },
!   { 1.5013711111199950, 0.10000000000000009, 0.10000000000000001 },
!   { 1.4373749386463430, 0.10000000000000009, 0.20000000000000001 },
!   { 1.3809159606704959, 0.10000000000000009, 0.29999999999999999 },
!   { 1.3306223265207477, 0.10000000000000009, 0.40000000000000002 },
!   { 1.2854480708580160, 0.10000000000000009, 0.50000000000000000 },
!   { 1.2445798942989255, 0.10000000000000009, 0.59999999999999998 },
!   { 1.2073745911083187, 0.10000000000000009, 0.69999999999999996 },
!   { 1.1733158866987732, 0.10000000000000009, 0.80000000000000004 },
!   { 1.1419839485283374, 0.10000000000000009, 0.90000000000000002 },
! };
! 
! // Test function for k=0.10000000000000009.
! template <typename Tp>
! void test011()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data011)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data011[i].k), Tp(data011[i].nu));
!       const Tp f0 = data011[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.19999999999999996.
! testcase_comp_ellint_3<double> data012[] = {
!   { 1.5868678474541664, 0.19999999999999996, 0.0000000000000000 },
!   { 1.5126513474261092, 0.19999999999999996, 0.10000000000000001 },
!   { 1.4479323932249568, 0.19999999999999996, 0.20000000000000001 },
!   { 1.3908453514752481, 0.19999999999999996, 0.29999999999999999 },
!   { 1.3400002519661010, 0.19999999999999996, 0.40000000000000002 },
!   { 1.2943374404397376, 0.19999999999999996, 0.50000000000000000 },
!   { 1.2530330675914561, 0.19999999999999996, 0.59999999999999998 },
!   { 1.2154356555075867, 0.19999999999999996, 0.69999999999999996 },
!   { 1.1810223448909913, 0.19999999999999996, 0.80000000000000004 },
!   { 1.1493679916141863, 0.19999999999999996, 0.90000000000000002 },
  };
  
! // Test function for k=0.19999999999999996.
! template <typename Tp>
! void test012()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data012)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data012[i].k), Tp(data012[i].nu));
!       const Tp f0 = data012[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.30000000000000004.
! testcase_comp_ellint_3<double> data013[] = {
!   { 1.6080486199305126, 0.30000000000000004, 0.0000000000000000 },
!   { 1.5323534693557526, 0.30000000000000004, 0.10000000000000001 },
!   { 1.4663658145259875, 0.30000000000000004, 0.20000000000000001 },
!   { 1.4081767433479089, 0.30000000000000004, 0.29999999999999999 },
!   { 1.3563643538969761, 0.30000000000000004, 0.40000000000000002 },
!   { 1.3098448759814960, 0.30000000000000004, 0.50000000000000000 },
!   { 1.2677758800420666, 0.30000000000000004, 0.59999999999999998 },
!   { 1.2294913236274980, 0.30000000000000004, 0.69999999999999996 },
!   { 1.1944567571590046, 0.30000000000000004, 0.80000000000000004 },
!   { 1.1622376896064912, 0.30000000000000004, 0.90000000000000002 },
  };
  
! // Test function for k=0.30000000000000004.
! template <typename Tp>
! void test013()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data013)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data013[i].k), Tp(data013[i].nu));
!       const Tp f0 = data013[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.39999999999999991.
! testcase_comp_ellint_3<double> data014[] = {
!   { 1.6399998658645112, 0.39999999999999991, 0.0000000000000000 },
!   { 1.5620566886683604, 0.39999999999999991, 0.10000000000000001 },
!   { 1.4941414344266770, 0.39999999999999991, 0.20000000000000001 },
!   { 1.4342789859950078, 0.39999999999999991, 0.29999999999999999 },
!   { 1.3809986210732901, 0.39999999999999991, 0.40000000000000002 },
!   { 1.3331797176377398, 0.39999999999999991, 0.50000000000000000 },
!   { 1.2899514672527024, 0.39999999999999991, 0.59999999999999998 },
!   { 1.2506255923253344, 0.39999999999999991, 0.69999999999999996 },
!   { 1.2146499565727209, 0.39999999999999991, 0.80000000000000004 },
!   { 1.1815758115929846, 0.39999999999999991, 0.90000000000000002 },
  };
  
! // Test function for k=0.39999999999999991.
! template <typename Tp>
! void test014()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data014)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data014[i].k), Tp(data014[i].nu));
!       const Tp f0 = data014[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.50000000000000000.
! testcase_comp_ellint_3<double> data015[] = {
!   { 1.6857503548125963, 0.50000000000000000, 0.0000000000000000 },
!   { 1.6045524936084892, 0.50000000000000000, 0.10000000000000001 },
!   { 1.5338490483665983, 0.50000000000000000, 0.20000000000000001 },
!   { 1.4715681939859637, 0.50000000000000000, 0.29999999999999999 },
!   { 1.4161679518465340, 0.50000000000000000, 0.40000000000000002 },
!   { 1.3664739530045971, 0.50000000000000000, 0.50000000000000000 },
!   { 1.3215740290190876, 0.50000000000000000, 0.59999999999999998 },
!   { 1.2807475181182502, 0.50000000000000000, 0.69999999999999996 },
!   { 1.2434165408189539, 0.50000000000000000, 0.80000000000000004 },
!   { 1.2091116095504744, 0.50000000000000000, 0.90000000000000002 },
  };
  
! // Test function for k=0.50000000000000000.
! template <typename Tp>
! void test015()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data015)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data015[i].k), Tp(data015[i].nu));
!       const Tp f0 = data015[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
  
  // Test data for k=0.60000000000000009.
! testcase_comp_ellint_3<double> data016[] = {
    { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000 },
!   { 1.6648615773343014, 0.60000000000000009, 0.10000000000000001 },
!   { 1.5901418016279374, 0.60000000000000009, 0.20000000000000001 },
!   { 1.5243814243493585, 0.60000000000000009, 0.29999999999999999 },
!   { 1.4659345278069984, 0.60000000000000009, 0.40000000000000002 },
!   { 1.4135484285693078, 0.60000000000000009, 0.50000000000000000 },
!   { 1.3662507535812816, 0.60000000000000009, 0.59999999999999998 },
!   { 1.3232737468822811, 0.60000000000000009, 0.69999999999999996 },
!   { 1.2840021261752192, 0.60000000000000009, 0.80000000000000004 },
!   { 1.2479362973851875, 0.60000000000000009, 0.90000000000000002 },
  };
  
! // Test function for k=0.60000000000000009.
! template <typename Tp>
! void test016()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data016)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data016[i].k), Tp(data016[i].nu));
!       const Tp f0 = data016[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.69999999999999996.
! testcase_comp_ellint_3<double> data017[] = {
!   { 1.8456939983747236, 0.69999999999999996, 0.0000000000000000 },
!   { 1.7528050171757608, 0.69999999999999996, 0.10000000000000001 },
!   { 1.6721098780092147, 0.69999999999999996, 0.20000000000000001 },
!   { 1.6011813647733213, 0.69999999999999996, 0.29999999999999999 },
!   { 1.5382162002954762, 0.69999999999999996, 0.40000000000000002 },
!   { 1.4818433192178544, 0.69999999999999996, 0.50000000000000000 },
!   { 1.4309994736080540, 0.69999999999999996, 0.59999999999999998 },
!   { 1.3848459188329196, 0.69999999999999996, 0.69999999999999996 },
!   { 1.3427110650397533, 0.69999999999999996, 0.80000000000000004 },
!   { 1.3040500499695911, 0.69999999999999996, 0.90000000000000002 },
  };
! 
! // Test function for k=0.69999999999999996.
! template <typename Tp>
! void test017()
! {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data017)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data017[i].k), Tp(data017[i].nu));
!       const Tp f0 = data017[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
  
  // Test data for k=0.80000000000000004.
! testcase_comp_ellint_3<double> data018[] = {
!   { 1.9953027776647296, 0.80000000000000004, 0.0000000000000000 },
!   { 1.8910755418379521, 0.80000000000000004, 0.10000000000000001 },
!   { 1.8007226661734588, 0.80000000000000004, 0.20000000000000001 },
!   { 1.7214611048717301, 0.80000000000000004, 0.29999999999999999 },
!   { 1.6512267838651289, 0.80000000000000004, 0.40000000000000002 },
!   { 1.5884528947755532, 0.80000000000000004, 0.50000000000000000 },
!   { 1.5319262547427865, 0.80000000000000004, 0.59999999999999998 },
!   { 1.4806912324625332, 0.80000000000000004, 0.69999999999999996 },
!   { 1.4339837018309474, 0.80000000000000004, 0.80000000000000004 },
!   { 1.3911845406776222, 0.80000000000000004, 0.90000000000000002 },
  };
  
! // Test function for k=0.80000000000000004.
! template <typename Tp>
! void test018()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data018)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data018[i].k), Tp(data018[i].nu));
!       const Tp f0 = data018[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.89999999999999991.
! testcase_comp_ellint_3<double> data019[] = {
!   { 2.2805491384227699, 0.89999999999999991, 0.0000000000000000 },
!   { 2.1537868513875282, 0.89999999999999991, 0.10000000000000001 },
!   { 2.0443194576468890, 0.89999999999999991, 0.20000000000000001 },
!   { 1.9486280260314424, 0.89999999999999991, 0.29999999999999999 },
!   { 1.8641114227238347, 0.89999999999999991, 0.40000000000000002 },
!   { 1.7888013241937859, 0.89999999999999991, 0.50000000000000000 },
!   { 1.7211781128919521, 0.89999999999999991, 0.59999999999999998 },
!   { 1.6600480747670936, 0.89999999999999991, 0.69999999999999996 },
!   { 1.6044591960982200, 0.89999999999999991, 0.80000000000000004 },
!   { 1.5536420236310944, 0.89999999999999991, 0.90000000000000002 },
  };
  
! // Test function for k=0.89999999999999991.
! template <typename Tp>
! void test019()
! {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data019)
!                          / sizeof(testcase_comp_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::comp_ellint_3(Tp(data019[i].k), Tp(data019[i].nu));
!       const Tp f0 = data019[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
  
! int main(int, char**)
  {
!   test001<double>();
!   test002<double>();
!   test003<double>();
!   test004<double>();
!   test005<double>();
!   test006<double>();
!   test007<double>();
!   test008<double>();
!   test009<double>();
!   test010<double>();
!   test011<double>();
!   test012<double>();
!   test013<double>();
!   test014<double>();
!   test015<double>();
!   test016<double>();
!   test017<double>();
!   test018<double>();
!   test019<double>();
    return 0;
  }
--- 19,508 ----
  // <http://www.gnu.org/licenses/>.
  
  //  comp_ellint_3
  //  Compare against values generated by the GNU Scientific Library.
  //  The GSL can be found on the web: http://www.gnu.org/software/gsl/
! #include <limits>
  #include <tr1/cmath>
  #if defined(__TEST_DEBUG)
! #  include <iostream>
! #  define VERIFY(A) \
!   if (!(A)) \
!     { \
!       std::cout << "line " << __LINE__ \
! 	<< "  max_abs_frac = " << max_abs_frac \
! 	<< std::endl; \
!     }
  #else
! #  include <testsuite_hooks.h>
  #endif
! #include <specfun_testcase.h>
  
  // Test data for k=-0.90000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 5
! // max(|f - f_Boost| / |f_Boost|): 1.2838262090802751e-16
! // mean(f - f_Boost): 4.4408920985006264e-17
! // variance(f - f_Boost): 2.4347558803117648e-34
! // stddev(f - f_Boost): 1.5603704304785339e-17
! const testcase_comp_ellint_3<double>
! data001[10] =
! {
    { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000 },
!   { 2.4295011187834885, -0.90000000000000002, 0.10000000000000001 },
!   { 2.6076835743348412, -0.90000000000000002, 0.20000000000000001 },
!   { 2.8256506968858512, -0.90000000000000002, 0.30000000000000004 },
!   { 3.1000689868578619, -0.90000000000000002, 0.40000000000000002 },
!   { 3.4591069002104677, -0.90000000000000002, 0.50000000000000000 },
!   { 3.9549939883570229, -0.90000000000000002, 0.60000000000000009 },
!   { 4.6985482312992435, -0.90000000000000002, 0.70000000000000007 },
!   { 5.9820740813645710, -0.90000000000000002, 0.80000000000000004 },
!   { 8.9942562031858699, -0.90000000000000002, 0.90000000000000002 },
  };
! const double toler001 = 2.5000000000000020e-13;
  
  // Test data for k=-0.80000000000000004.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.1949393471095187e-16
! // mean(f - f_Boost): 9.5479180117763459e-16
! // variance(f - f_Boost): 5.4782007307014711e-34
! // stddev(f - f_Boost): 2.3405556457178006e-17
! const testcase_comp_ellint_3<double>
! data002[10] =
  {
!   { 1.9953027776647294, -0.80000000000000004, 0.0000000000000000 },
!   { 2.1172616484005085, -0.80000000000000004, 0.10000000000000001 },
!   { 2.2624789434186798, -0.80000000000000004, 0.20000000000000001 },
!   { 2.4392042002725698, -0.80000000000000004, 0.30000000000000004 },
!   { 2.6604037035529728, -0.80000000000000004, 0.40000000000000002 },
!   { 2.9478781158239751, -0.80000000000000004, 0.50000000000000000 },
!   { 3.3418121892288055, -0.80000000000000004, 0.60000000000000009 },
!   { 3.9268876980046397, -0.80000000000000004, 0.70000000000000007 },
!   { 4.9246422058196071, -0.80000000000000004, 0.80000000000000004 },
!   { 7.2263259298637132, -0.80000000000000004, 0.90000000000000002 },
  };
+ const double toler002 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 3
! // max(|f - f_Boost| / |f_Boost|): 1.9832236886714888e-16
! // mean(f - f_Boost): -1.5543122344752191e-16
! // variance(f - f_Boost): 2.9825759533819119e-33
! // stddev(f - f_Boost): 5.4612965066748680e-17
! const testcase_comp_ellint_3<double>
! data003[10] =
  {
!   { 1.8456939983747234, -0.69999999999999996, 0.0000000000000000 },
!   { 1.9541347343119564, -0.69999999999999996, 0.10000000000000001 },
!   { 2.0829290325820202, -0.69999999999999996, 0.20000000000000001 },
!   { 2.2392290510988535, -0.69999999999999996, 0.30000000000000004 },
!   { 2.4342502915307880, -0.69999999999999996, 0.40000000000000002 },
!   { 2.6868019968236996, -0.69999999999999996, 0.50000000000000000 },
!   { 3.0314573496746742, -0.69999999999999996, 0.60000000000000009 },
!   { 3.5408408771788564, -0.69999999999999996, 0.70000000000000007 },
!   { 4.4042405729076961, -0.69999999999999996, 0.80000000000000004 },
!   { 6.3796094177887754, -0.69999999999999996, 0.90000000000000002 },
! };
! const double toler003 = 2.5000000000000020e-13;
  
  // Test data for k=-0.59999999999999998.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 2
! // max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16
! // mean(f - f_Boost): -1.9984014443252818e-16
! // variance(f - f_Boost): 4.9303806576313241e-33
! // stddev(f - f_Boost): 7.0216669371534022e-17
! const testcase_comp_ellint_3<double>
! data004[10] =
! {
    { 1.7507538029157526, -0.59999999999999998, 0.0000000000000000 },
!   { 1.8508766487100685, -0.59999999999999998, 0.10000000000000001 },
!   { 1.9695980282802217, -0.59999999999999998, 0.20000000000000001 },
!   { 2.1134154405060599, -0.59999999999999998, 0.30000000000000004 },
!   { 2.2925036420985130, -0.59999999999999998, 0.40000000000000002 },
!   { 2.5239007084492711, -0.59999999999999998, 0.50000000000000000 },
!   { 2.8388723099514972, -0.59999999999999998, 0.60000000000000009 },
!   { 3.3029735898397159, -0.59999999999999998, 0.70000000000000007 },
!   { 4.0867036409261832, -0.59999999999999998, 0.80000000000000004 },
!   { 5.8709993116265604, -0.59999999999999998, 0.90000000000000002 },
  };
! const double toler004 = 2.5000000000000020e-13;
  
  // Test data for k=-0.50000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 3
! // max(|f - f_Boost| / |f_Boost|): 2.1900131385114407e-16
! // mean(f - f_Boost): 2.4424906541753446e-16
! // variance(f - f_Boost): 7.3651365379430888e-33
! // stddev(f - f_Boost): 8.5820373676319358e-17
! const testcase_comp_ellint_3<double>
! data005[10] =
  {
!   { 1.6857503548125961, -0.50000000000000000, 0.0000000000000000 },
!   { 1.7803034946545482, -0.50000000000000000, 0.10000000000000001 },
!   { 1.8922947612264021, -0.50000000000000000, 0.20000000000000001 },
!   { 2.0277924458111314, -0.50000000000000000, 0.30000000000000004 },
!   { 2.1962905366178065, -0.50000000000000000, 0.40000000000000002 },
!   { 2.4136715042011945, -0.50000000000000000, 0.50000000000000000 },
!   { 2.7090491861753558, -0.50000000000000000, 0.60000000000000009 },
!   { 3.1433945297859229, -0.50000000000000000, 0.70000000000000007 },
!   { 3.8750701888108070, -0.50000000000000000, 0.80000000000000004 },
!   { 5.5355132096026463, -0.50000000000000000, 0.90000000000000002 },
  };
+ const double toler005 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.1718164615986397e-16
! // mean(f - f_Boost): 6.2172489379008762e-16
! // variance(f - f_Boost): 1.6458949750907531e-31
! // stddev(f - f_Boost): 4.0569631192441877e-16
! const testcase_comp_ellint_3<double>
! data006[10] =
  {
!   { 1.6399998658645112, -0.39999999999999991, 0.0000000000000000 },
!   { 1.7306968836847190, -0.39999999999999991, 0.10000000000000001 },
!   { 1.8380358826317627, -0.39999999999999991, 0.20000000000000001 },
!   { 1.9677924132520139, -0.39999999999999991, 0.30000000000000004 },
!   { 2.1289968719280026, -0.39999999999999991, 0.40000000000000002 },
!   { 2.3367461373176512, -0.39999999999999991, 0.50000000000000000 },
!   { 2.6186940209850191, -0.39999999999999991, 0.60000000000000009 },
!   { 3.0327078743873246, -0.39999999999999991, 0.70000000000000007 },
!   { 3.7289548002199902, -0.39999999999999991, 0.80000000000000004 },
!   { 5.3055535102872513, -0.39999999999999991, 0.90000000000000002 },
  };
+ const double toler006 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.9274792319434433e-16
! // mean(f - f_Boost): 6.2172489379008762e-16
! // variance(f - f_Boost): 8.7651211691223537e-33
! // stddev(f - f_Boost): 9.3622225828712025e-17
! const testcase_comp_ellint_3<double>
! data007[10] =
  {
!   { 1.6080486199305128, -0.29999999999999993, 0.0000000000000000 },
!   { 1.6960848815118226, -0.29999999999999993, 0.10000000000000001 },
!   { 1.8002173372290500, -0.29999999999999993, 0.20000000000000001 },
!   { 1.9260216862473254, -0.29999999999999993, 0.30000000000000004 },
!   { 2.0822121773175533, -0.29999999999999993, 0.40000000000000002 },
!   { 2.2833505881933971, -0.29999999999999993, 0.50000000000000000 },
!   { 2.5560975528589065, -0.29999999999999993, 0.60000000000000009 },
!   { 2.9562123549913877, -0.29999999999999993, 0.70000000000000007 },
!   { 3.6283050484567170, -0.29999999999999993, 0.80000000000000004 },
!   { 5.1479514944016795, -0.29999999999999993, 0.90000000000000002 },
  };
+ const double toler007 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 1.9753938705764407e-16
! // mean(f - f_Boost): 3.1086244689504381e-16
! // variance(f - f_Boost): 4.1147374377268827e-32
! // stddev(f - f_Boost): 2.0284815596220939e-16
! const testcase_comp_ellint_3<double>
! data008[10] =
  {
!   { 1.5868678474541662, -0.19999999999999996, 0.0000000000000000 },
!   { 1.6731552050562593, -0.19999999999999996, 0.10000000000000001 },
!   { 1.7751816279738935, -0.19999999999999996, 0.20000000000000001 },
!   { 1.8983924169967101, -0.19999999999999996, 0.30000000000000004 },
!   { 2.0512956926676806, -0.19999999999999996, 0.40000000000000002 },
!   { 2.2481046259421302, -0.19999999999999996, 0.50000000000000000 },
!   { 2.5148333891629315, -0.19999999999999996, 0.60000000000000009 },
!   { 2.9058704854500967, -0.19999999999999996, 0.70000000000000007 },
!   { 3.5622166386422633, -0.19999999999999996, 0.80000000000000004 },
!   { 5.0448269356200370, -0.19999999999999996, 0.90000000000000002 },
  };
+ const double toler008 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 5
! // max(|f - f_Boost| / |f_Boost|): 1.9932308021417639e-16
! // mean(f - f_Boost): 0.0000000000000000
! // variance(f - f_Boost): 6.8368087769470551e-64
! // stddev(f - f_Boost): 2.6147291976315738e-32
! const testcase_comp_ellint_3<double>
! data009[10] =
  {
!   { 1.5747455615173560, -0.099999999999999978, 0.0000000000000000 },
!   { 1.6600374067558428, -0.099999999999999978, 0.10000000000000001 },
!   { 1.7608656115083421, -0.099999999999999978, 0.20000000000000001 },
!   { 1.8826015946315438, -0.099999999999999978, 0.30000000000000004 },
!   { 2.0336367403076760, -0.099999999999999978, 0.40000000000000002 },
!   { 2.2279868912966849, -0.099999999999999978, 0.50000000000000000 },
!   { 2.4913004919173827, -0.099999999999999978, 0.60000000000000009 },
!   { 2.8771910188009744, -0.099999999999999978, 0.70000000000000007 },
!   { 3.5246199613295617, -0.099999999999999978, 0.80000000000000004 },
!   { 4.9862890417305508, -0.099999999999999978, 0.90000000000000002 },
! };
! const double toler009 = 2.5000000000000020e-13;
  
  // Test data for k=0.0000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 2.1899085000907084e-16
! // mean(f - f_Boost): -2.2204460492503131e-16
! // variance(f - f_Boost): 5.4782007307014711e-32
! // stddev(f - f_Boost): 2.3405556457178008e-16
! const testcase_comp_ellint_3<double>
! data010[10] =
! {
    { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000 },
!   { 1.6557647109660170, 0.0000000000000000, 0.10000000000000001 },
!   { 1.7562036827601817, 0.0000000000000000, 0.20000000000000001 },
!   { 1.8774607092226381, 0.0000000000000000, 0.30000000000000004 },
!   { 2.0278893379868062, 0.0000000000000000, 0.40000000000000002 },
!   { 2.2214414690791831, 0.0000000000000000, 0.50000000000000000 },
!   { 2.4836470664490258, 0.0000000000000000, 0.60000000000000009 },
!   { 2.8678686047727386, 0.0000000000000000, 0.70000000000000007 },
!   { 3.5124073655203634, 0.0000000000000000, 0.80000000000000004 },
!   { 4.9672941328980516, 0.0000000000000000, 0.90000000000000002 },
  };
! const double toler010 = 2.5000000000000020e-13;
  
  // Test data for k=0.10000000000000009.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 5
! // max(|f - f_Boost| / |f_Boost|): 1.9932308021417639e-16
! // mean(f - f_Boost): -2.2204460492503132e-17
! // variance(f - f_Boost): 6.0868897007794120e-35
! // stddev(f - f_Boost): 7.8018521523926693e-18
! const testcase_comp_ellint_3<double>
! data011[10] =
  {
!   { 1.5747455615173560, 0.10000000000000009, 0.0000000000000000 },
!   { 1.6600374067558428, 0.10000000000000009, 0.10000000000000001 },
!   { 1.7608656115083421, 0.10000000000000009, 0.20000000000000001 },
!   { 1.8826015946315440, 0.10000000000000009, 0.30000000000000004 },
!   { 2.0336367403076760, 0.10000000000000009, 0.40000000000000002 },
!   { 2.2279868912966849, 0.10000000000000009, 0.50000000000000000 },
!   { 2.4913004919173827, 0.10000000000000009, 0.60000000000000009 },
!   { 2.8771910188009744, 0.10000000000000009, 0.70000000000000007 },
!   { 3.5246199613295617, 0.10000000000000009, 0.80000000000000004 },
!   { 4.9862890417305508, 0.10000000000000009, 0.90000000000000002 },
  };
+ const double toler011 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 1.9753938705764407e-16
! // mean(f - f_Boost): 3.1086244689504381e-16
! // variance(f - f_Boost): 4.1147374377268827e-32
! // stddev(f - f_Boost): 2.0284815596220939e-16
! const testcase_comp_ellint_3<double>
! data012[10] =
  {
!   { 1.5868678474541662, 0.20000000000000018, 0.0000000000000000 },
!   { 1.6731552050562593, 0.20000000000000018, 0.10000000000000001 },
!   { 1.7751816279738935, 0.20000000000000018, 0.20000000000000001 },
!   { 1.8983924169967101, 0.20000000000000018, 0.30000000000000004 },
!   { 2.0512956926676806, 0.20000000000000018, 0.40000000000000002 },
!   { 2.2481046259421302, 0.20000000000000018, 0.50000000000000000 },
!   { 2.5148333891629315, 0.20000000000000018, 0.60000000000000009 },
!   { 2.9058704854500967, 0.20000000000000018, 0.70000000000000007 },
!   { 3.5622166386422633, 0.20000000000000018, 0.80000000000000004 },
!   { 5.0448269356200370, 0.20000000000000018, 0.90000000000000002 },
  };
+ const double toler012 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.4585997630846713e-16
! // mean(f - f_Boost): 5.1070259132757197e-16
! // variance(f - f_Boost): 1.7591111235252501e-32
! // stddev(f - f_Boost): 1.3263148659067538e-16
! const testcase_comp_ellint_3<double>
! data013[10] =
  {
!   { 1.6080486199305128, 0.30000000000000004, 0.0000000000000000 },
!   { 1.6960848815118228, 0.30000000000000004, 0.10000000000000001 },
!   { 1.8002173372290500, 0.30000000000000004, 0.20000000000000001 },
!   { 1.9260216862473254, 0.30000000000000004, 0.30000000000000004 },
!   { 2.0822121773175533, 0.30000000000000004, 0.40000000000000002 },
!   { 2.2833505881933975, 0.30000000000000004, 0.50000000000000000 },
!   { 2.5560975528589065, 0.30000000000000004, 0.60000000000000009 },
!   { 2.9562123549913877, 0.30000000000000004, 0.70000000000000007 },
!   { 3.6283050484567174, 0.30000000000000004, 0.80000000000000004 },
!   { 5.1479514944016795, 0.30000000000000004, 0.90000000000000002 },
  };
+ const double toler013 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013.
! // max(|f - f_Boost|): 2.6645352591003757e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.7696531428672557e-16
! // mean(f - f_Boost): 1.1990408665951691e-15
! // variance(f - f_Boost): 2.6514491536595121e-31
! // stddev(f - f_Boost): 5.1492224205791612e-16
! const testcase_comp_ellint_3<double>
! data014[10] =
  {
!   { 1.6399998658645112, 0.40000000000000013, 0.0000000000000000 },
!   { 1.7306968836847190, 0.40000000000000013, 0.10000000000000001 },
!   { 1.8380358826317629, 0.40000000000000013, 0.20000000000000001 },
!   { 1.9677924132520141, 0.40000000000000013, 0.30000000000000004 },
!   { 2.1289968719280030, 0.40000000000000013, 0.40000000000000002 },
!   { 2.3367461373176512, 0.40000000000000013, 0.50000000000000000 },
!   { 2.6186940209850196, 0.40000000000000013, 0.60000000000000009 },
!   { 3.0327078743873246, 0.40000000000000013, 0.70000000000000007 },
!   { 3.7289548002199906, 0.40000000000000013, 0.80000000000000004 },
!   { 5.3055535102872522, 0.40000000000000013, 0.90000000000000002 },
  };
+ const double toler014 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 3
! // max(|f - f_Boost| / |f_Boost|): 2.1900131385114407e-16
! // mean(f - f_Boost): 2.4424906541753446e-16
! // variance(f - f_Boost): 7.3651365379430888e-33
! // stddev(f - f_Boost): 8.5820373676319358e-17
! const testcase_comp_ellint_3<double>
! data015[10] =
  {
!   { 1.6857503548125961, 0.50000000000000000, 0.0000000000000000 },
!   { 1.7803034946545482, 0.50000000000000000, 0.10000000000000001 },
!   { 1.8922947612264021, 0.50000000000000000, 0.20000000000000001 },
!   { 2.0277924458111314, 0.50000000000000000, 0.30000000000000004 },
!   { 2.1962905366178065, 0.50000000000000000, 0.40000000000000002 },
!   { 2.4136715042011945, 0.50000000000000000, 0.50000000000000000 },
!   { 2.7090491861753558, 0.50000000000000000, 0.60000000000000009 },
!   { 3.1433945297859229, 0.50000000000000000, 0.70000000000000007 },
!   { 3.8750701888108070, 0.50000000000000000, 0.80000000000000004 },
!   { 5.5355132096026463, 0.50000000000000000, 0.90000000000000002 },
! };
! const double toler015 = 2.5000000000000020e-13;
  
  // Test data for k=0.60000000000000009.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 2
! // max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16
! // mean(f - f_Boost): -2.2204460492503131e-16
! // variance(f - f_Boost): 6.0868897007794117e-33
! // stddev(f - f_Boost): 7.8018521523926690e-17
! const testcase_comp_ellint_3<double>
! data016[10] =
! {
    { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000 },
!   { 1.8508766487100687, 0.60000000000000009, 0.10000000000000001 },
!   { 1.9695980282802217, 0.60000000000000009, 0.20000000000000001 },
!   { 2.1134154405060599, 0.60000000000000009, 0.30000000000000004 },
!   { 2.2925036420985130, 0.60000000000000009, 0.40000000000000002 },
!   { 2.5239007084492711, 0.60000000000000009, 0.50000000000000000 },
!   { 2.8388723099514976, 0.60000000000000009, 0.60000000000000009 },
!   { 3.3029735898397159, 0.60000000000000009, 0.70000000000000007 },
!   { 4.0867036409261832, 0.60000000000000009, 0.80000000000000004 },
!   { 5.8709993116265613, 0.60000000000000009, 0.90000000000000002 },
  };
+ const double toler016 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 2.9298727220933567e-16
! // mean(f - f_Boost): 4.8849813083506892e-16
! // variance(f - f_Boost): 2.0476296953421943e-31
! // stddev(f - f_Boost): 4.5250742483877478e-16
! const testcase_comp_ellint_3<double>
! data017[10] =
  {
!   { 1.8456939983747238, 0.70000000000000018, 0.0000000000000000 },
!   { 1.9541347343119566, 0.70000000000000018, 0.10000000000000001 },
!   { 2.0829290325820207, 0.70000000000000018, 0.20000000000000001 },
!   { 2.2392290510988540, 0.70000000000000018, 0.30000000000000004 },
!   { 2.4342502915307880, 0.70000000000000018, 0.40000000000000002 },
!   { 2.6868019968237000, 0.70000000000000018, 0.50000000000000000 },
!   { 3.0314573496746746, 0.70000000000000018, 0.60000000000000009 },
!   { 3.5408408771788569, 0.70000000000000018, 0.70000000000000007 },
!   { 4.4042405729076970, 0.70000000000000018, 0.80000000000000004 },
!   { 6.3796094177887763, 0.70000000000000018, 0.90000000000000002 },
  };
! const double toler017 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.1949393471095187e-16
! // mean(f - f_Boost): 9.5479180117763459e-16
! // variance(f - f_Boost): 5.4782007307014711e-34
! // stddev(f - f_Boost): 2.3405556457178006e-17
! const testcase_comp_ellint_3<double>
! data018[10] =
! {
!   { 1.9953027776647294, 0.80000000000000004, 0.0000000000000000 },
!   { 2.1172616484005085, 0.80000000000000004, 0.10000000000000001 },
!   { 2.2624789434186798, 0.80000000000000004, 0.20000000000000001 },
!   { 2.4392042002725698, 0.80000000000000004, 0.30000000000000004 },
!   { 2.6604037035529728, 0.80000000000000004, 0.40000000000000002 },
!   { 2.9478781158239751, 0.80000000000000004, 0.50000000000000000 },
!   { 3.3418121892288055, 0.80000000000000004, 0.60000000000000009 },
!   { 3.9268876980046397, 0.80000000000000004, 0.70000000000000007 },
!   { 4.9246422058196071, 0.80000000000000004, 0.80000000000000004 },
!   { 7.2263259298637132, 0.80000000000000004, 0.90000000000000002 },
  };
+ const double toler018 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 3
! // max(|f - f_Boost| / |f_Boost|): 1.5716352001310461e-16
! // mean(f - f_Boost): 4.4408920985006264e-17
! // variance(f - f_Boost): 2.4347558803117648e-34
! // stddev(f - f_Boost): 1.5603704304785339e-17
! const testcase_comp_ellint_3<double>
! data019[10] =
  {
!   { 2.2805491384227707, 0.90000000000000013, 0.0000000000000000 },
!   { 2.4295011187834890, 0.90000000000000013, 0.10000000000000001 },
!   { 2.6076835743348421, 0.90000000000000013, 0.20000000000000001 },
!   { 2.8256506968858521, 0.90000000000000013, 0.30000000000000004 },
!   { 3.1000689868578628, 0.90000000000000013, 0.40000000000000002 },
!   { 3.4591069002104686, 0.90000000000000013, 0.50000000000000000 },
!   { 3.9549939883570242, 0.90000000000000013, 0.60000000000000009 },
!   { 4.6985482312992453, 0.90000000000000013, 0.70000000000000007 },
!   { 5.9820740813645727, 0.90000000000000013, 0.80000000000000004 },
!   { 8.9942562031858735, 0.90000000000000013, 0.90000000000000002 },
  };
+ const double toler019 = 2.5000000000000020e-13;
  
! template<typename Ret, unsigned int Num>
!   void
!   test(const testcase_comp_ellint_3<Ret> (&data)[Num], Ret toler)
!   {
!     bool test __attribute__((unused)) = true;
!     const Ret eps = std::numeric_limits<Ret>::epsilon();
!     Ret max_abs_diff = -Ret(1);
!     Ret max_abs_frac = -Ret(1);
!     unsigned int num_datum = Num;
!     for (unsigned int i = 0; i < num_datum; ++i)
!       {
! 	const Ret f = std::tr1::comp_ellint_3(data[i].k, data[i].nu);
! 	const Ret f0 = data[i].f0;
! 	const Ret diff = f - f0;
! 	if (std::abs(diff) > max_abs_diff)
! 	  max_abs_diff = std::abs(diff);
! 	if (std::abs(f0) > Ret(10) * eps
! 	 && std::abs(f) > Ret(10) * eps)
! 	  {
! 	    const Ret frac = diff / f0;
! 	    if (std::abs(frac) > max_abs_frac)
! 	      max_abs_frac = std::abs(frac);
! 	  }
!       }
!     VERIFY(max_abs_frac < toler);
!   }
  
! int
! main()
  {
!   test(data001, toler001);
!   test(data002, toler002);
!   test(data003, toler003);
!   test(data004, toler004);
!   test(data005, toler005);
!   test(data006, toler006);
!   test(data007, toler007);
!   test(data008, toler008);
!   test(data009, toler009);
!   test(data010, toler010);
!   test(data011, toler011);
!   test(data012, toler012);
!   test(data013, toler013);
!   test(data014, toler014);
!   test(data015, toler015);
!   test(data016, toler016);
!   test(data017, toler017);
!   test(data018, toler018);
!   test(data019, toler019);
    return 0;
  }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc gcc-7.4.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc	Mon Apr 30 19:51:13 2018
***************
*** 0 ****
--- 1,20 ----
+ 
+ #include <tr1/cmath>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   double Pi1 = std::tr1::comp_ellint_3(0.75, 0.0);
+   VERIFY(std::abs(Pi1 - 1.91099) < 0.00001);
+ 
+   double Pi2 = std::tr1::comp_ellint_3(0.75, 0.5);
+   VERIFY(std::abs(Pi2 - 2.80011) < 0.00001);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc gcc-7.4.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc	Sun Jan  1 12:07:43 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc	Mon Apr 30 19:51:13 2018
***************
*** 1,6 ****
! // 2007-02-04  Edward Smith-Rowland <3dw4rd@verizon.net>
  //
! // Copyright (C) 2007-2017 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,7 ----
! // { dg-do run { target c++11 } }
! // { dg-options "-D__STDCPP_WANT_MATH_SPEC_FUNCS__" }
  //
! // 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
***************
*** 18,10115 ****
  // <http://www.gnu.org/licenses/>.
  
  //  ellint_3
- 
- 
  //  Compare against values generated by the GNU Scientific Library.
  //  The GSL can be found on the web: http://www.gnu.org/software/gsl/
! 
  #include <tr1/cmath>
  #if defined(__TEST_DEBUG)
! #include <iostream>
! #define VERIFY(A) \
! if (!(A)) \
!   { \
!     std::cout << "line " << __LINE__ \
!       << "  max_abs_frac = " << max_abs_frac \
!       << std::endl; \
!   }
  #else
! #include <testsuite_hooks.h>
  #endif
! #include "../testcase.h"
! 
  
  // Test data for k=-0.90000000000000002, nu=0.0000000000000000.
! testcase_ellint_3<double> data001[] = {
!   { -0.0000000000000000, -0.90000000000000002, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17525427376115027, -0.90000000000000002, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.35492464591297446, -0.90000000000000002, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.54388221416157134, -0.90000000000000002, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.74797400423532523, -0.90000000000000002, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.97463898451966458, -0.90000000000000002, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.2334463254523440, -0.90000000000000002, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.5355247765594910, -0.90000000000000002, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.8882928567775124, -0.90000000000000002, 0.0000000000000000,
!           1.3962634015954636 },
!   { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000,
!           1.5707963267948966 },
! };
! 
! // Test function for k=-0.90000000000000002, nu=0.0000000000000000.
! template <typename Tp>
! void test001()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data001)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data001[i].k), Tp(data001[i].nu),
!                    Tp(data001[i].phi));
!       const Tp f0 = data001[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.90000000000000002, nu=0.10000000000000001.
! testcase_ellint_3<double> data002[] = {
!   { -0.0000000000000000, -0.90000000000000002, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17507714233254659, -0.90000000000000002, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.35350932904326521, -0.90000000000000002, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.53911129989870998, -0.90000000000000002, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.73666644254508429, -0.90000000000000002, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.95250736612100184, -0.90000000000000002, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.1950199550905594, -0.90000000000000002, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.4741687286340848, -0.90000000000000002, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.7968678183506059, -0.90000000000000002, 0.10000000000000001,
!           1.3962634015954636 },
!   { 2.1537868513875287, -0.90000000000000002, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.90000000000000002, nu=0.10000000000000001.
! template <typename Tp>
! void test002()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data002)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data002[i].k), Tp(data002[i].nu),
!                    Tp(data002[i].phi));
!       const Tp f0 = data002[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.90000000000000002, nu=0.20000000000000001.
! testcase_ellint_3<double> data003[] = {
!   { -0.0000000000000000, -0.90000000000000002, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17490065089140930, -0.90000000000000002, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.35211377590661436, -0.90000000000000002, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.53448220334204122, -0.90000000000000002, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.72591368943179613, -0.90000000000000002, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.93192539780038763, -0.90000000000000002, 0.20000000000000001,
!           0.87266462599716477 },
!   { 1.1600809679692683, -0.90000000000000002, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.4195407225882508, -0.90000000000000002, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.7168966476424528, -0.90000000000000002, 0.20000000000000001,
!           1.3962634015954636 },
!   { 2.0443194576468890, -0.90000000000000002, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.90000000000000002, nu=0.20000000000000001.
! template <typename Tp>
! void test003()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data003)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data003[i].k), Tp(data003[i].nu),
!                    Tp(data003[i].phi));
!       const Tp f0 = data003[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.90000000000000002, nu=0.29999999999999999.
! testcase_ellint_3<double> data004[] = {
!   { -0.0000000000000000, -0.90000000000000002, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17472479532647534, -0.90000000000000002, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.35073750187374114, -0.90000000000000002, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.52998766129466979, -0.90000000000000002, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.71566993548699587, -0.90000000000000002, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.91271517762560195, -0.90000000000000002, 0.29999999999999999,
!           0.87266462599716477 },
!   { 1.1281241199843370, -0.90000000000000002, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.3704929576917448, -0.90000000000000002, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.6461981511487715, -0.90000000000000002, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.9486280260314426, -0.90000000000000002, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.90000000000000002, nu=0.29999999999999999.
! template <typename Tp>
! void test004()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data004)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data004[i].k), Tp(data004[i].nu),
!                    Tp(data004[i].phi));
!       const Tp f0 = data004[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.90000000000000002, nu=0.40000000000000002.
! testcase_ellint_3<double> data005[] = {
!   { -0.0000000000000000, -0.90000000000000002, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17454957156468839, -0.90000000000000002, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34938003933330430, -0.90000000000000002, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.52562093533067455, -0.90000000000000002, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.70589461324915703, -0.90000000000000002, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.89472658511942849, -0.90000000000000002, 0.40000000000000002,
!           0.87266462599716477 },
!   { 1.0987419542323440, -0.90000000000000002, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.3261349565496301, -0.90000000000000002, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.5831293909853767, -0.90000000000000002, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.8641114227238349, -0.90000000000000002, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.90000000000000002, nu=0.40000000000000002.
! template <typename Tp>
! void test005()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data005)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data005[i].k), Tp(data005[i].nu),
!                    Tp(data005[i].phi));
!       const Tp f0 = data005[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.90000000000000002, nu=0.50000000000000000.
! testcase_ellint_3<double> data006[] = {
!   { -0.0000000000000000, -0.90000000000000002, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17437497557073336, -0.90000000000000002, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34804093691586013, -0.90000000000000002, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.52137576320372914, -0.90000000000000002, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.69655163996912284, -0.90000000000000002, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.87783188683054236, -0.90000000000000002, 0.50000000000000000,
!           0.87266462599716477 },
!   { 1.0716015959755185, -0.90000000000000002, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.2857636916026747, -0.90000000000000002, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.5264263913252365, -0.90000000000000002, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.7888013241937861, -0.90000000000000002, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.90000000000000002, nu=0.50000000000000000.
! template <typename Tp>
! void test006()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data006)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data006[i].k), Tp(data006[i].nu),
!                    Tp(data006[i].phi));
!       const Tp f0 = data006[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.90000000000000002, nu=0.59999999999999998.
! testcase_ellint_3<double> data007[] = {
!   { -0.0000000000000000, -0.90000000000000002, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17420100334657815, -0.90000000000000002, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34671975876122157, -0.90000000000000002, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.51724631570707968, -0.90000000000000002, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.68760879113743056, -0.90000000000000002, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.86192157779698364, -0.90000000000000002, 0.59999999999999998,
!           0.87266462599716477 },
!   { 1.0464279696166354, -0.90000000000000002, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.2488156247094004, -0.90000000000000002, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.4750988777188474, -0.90000000000000002, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.7211781128919523, -0.90000000000000002, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.90000000000000002, nu=0.59999999999999998.
! template <typename Tp>
! void test007()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data007)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data007[i].k), Tp(data007[i].nu),
!                    Tp(data007[i].phi));
!       const Tp f0 = data007[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.90000000000000002, nu=0.69999999999999996.
! testcase_ellint_3<double> data008[] = {
!   { -0.0000000000000000, -0.90000000000000002, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17402765093102210, -0.90000000000000002, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34541608382635131, -0.90000000000000002, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.51322715827061705, -0.90000000000000002, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.67903717872440306, -0.90000000000000002, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.84690113601682671, -0.90000000000000002, 0.69999999999999996,
!           0.87266462599716477 },
!   { 1.0229914311548418, -0.90000000000000002, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.2148329639709381, -0.90000000000000002, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.4283586501307806, -0.90000000000000002, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.6600480747670938, -0.90000000000000002, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.90000000000000002, nu=0.69999999999999996.
! template <typename Tp>
! void test008()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data008)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data008[i].k), Tp(data008[i].nu),
!                    Tp(data008[i].phi));
!       const Tp f0 = data008[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.90000000000000002, nu=0.80000000000000004.
! testcase_ellint_3<double> data009[] = {
!   { -0.0000000000000000, -0.90000000000000002, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17385491439925149, -0.90000000000000002, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.34412950523113928, -0.90000000000000002, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.50931321668729612, -0.90000000000000002, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.67081081392296349, -0.90000000000000002, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.83268846097293259, -0.90000000000000002, 0.80000000000000004,
!           0.87266462599716477 },
!   { 1.0010985015814027, -0.90000000000000002, 0.80000000000000004,
!           1.0471975511965976 },
!   { 1.1834394045489678, -0.90000000000000002, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.3855695891683188, -0.90000000000000002, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.6044591960982204, -0.90000000000000002, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.90000000000000002, nu=0.80000000000000004.
! template <typename Tp>
! void test009()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data009)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data009[i].k), Tp(data009[i].nu),
!                    Tp(data009[i].phi));
!       const Tp f0 = data009[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.90000000000000002, nu=0.90000000000000002.
! testcase_ellint_3<double> data010[] = {
!   { -0.0000000000000000, -0.90000000000000002, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17368278986240138, -0.90000000000000002, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.34285962963961397, -0.90000000000000002, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.50549974644993323, -0.90000000000000002, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.66290623857720898, -0.90000000000000002, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.81921183128847164, -0.90000000000000002, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.98058481956066390, -0.90000000000000002, 0.90000000000000002,
!           1.0471975511965976 },
!   { 1.1543223520473567, -0.90000000000000002, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.3462119782292938, -0.90000000000000002, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.5536420236310946, -0.90000000000000002, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.90000000000000002, nu=0.90000000000000002.
! template <typename Tp>
! void test010()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data010)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data010[i].k), Tp(data010[i].nu),
!                    Tp(data010[i].phi));
!       const Tp f0 = data010[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.80000000000000004, nu=0.0000000000000000.
! testcase_ellint_3<double> data011[] = {
!   { -0.0000000000000000, -0.80000000000000004, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17510154241338902, -0.80000000000000004, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.35365068839779390, -0.80000000000000004, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.53926804409084561, -0.80000000000000004, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.73587926028070383, -0.80000000000000004, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.94770942970071170, -0.80000000000000004, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.1789022995388239, -0.80000000000000004, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.4323027881876009, -0.80000000000000004, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.7069629739121674, -0.80000000000000004, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.9953027776647296, -0.80000000000000004, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.80000000000000004, nu=0.0000000000000000.
! template <typename Tp>
! void test011()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data011)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data011[i].k), Tp(data011[i].nu),
!                    Tp(data011[i].phi));
!       const Tp f0 = data011[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.80000000000000004, nu=0.10000000000000001.
! testcase_ellint_3<double> data012[] = {
!   { -0.0000000000000000, -0.80000000000000004, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17492468824017166, -0.80000000000000004, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.35224443521476911, -0.80000000000000004, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.53456851853226961, -0.80000000000000004, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.72488875602364944, -0.80000000000000004, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.92661354274638952, -0.80000000000000004, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.1432651144499077, -0.80000000000000004, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.3774479927211429, -0.80000000000000004, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.6287092337196041, -0.80000000000000004, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.8910755418379521, -0.80000000000000004, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.80000000000000004, nu=0.10000000000000001.
! template <typename Tp>
! void test012()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data012)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data012[i].k), Tp(data012[i].nu),
!                    Tp(data012[i].phi));
!       const Tp f0 = data012[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.80000000000000004, nu=0.20000000000000001.
! testcase_ellint_3<double> data013[] = {
!   { -0.0000000000000000, -0.80000000000000004, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17474847286224943, -0.80000000000000004, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.35085779529084682, -0.80000000000000004, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.53000829263059157, -0.80000000000000004, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.71443466027453406, -0.80000000000000004, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.90698196872715420, -0.80000000000000004, 0.20000000000000001,
!           0.87266462599716477 },
!   { 1.1108198200558581, -0.80000000000000004, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.3284988909963957, -0.80000000000000004, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.5600369318140328, -0.80000000000000004, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.8007226661734588, -0.80000000000000004, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.80000000000000004, nu=0.20000000000000001.
! template <typename Tp>
! void test013()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data013)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data013[i].k), Tp(data013[i].nu),
!                    Tp(data013[i].phi));
!       const Tp f0 = data013[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.80000000000000004, nu=0.29999999999999999.
! testcase_ellint_3<double> data014[] = {
!   { -0.0000000000000000, -0.80000000000000004, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17457289217669891, -0.80000000000000004, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34949028801501258, -0.80000000000000004, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.52558024362769318, -0.80000000000000004, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.70447281740094914, -0.80000000000000004, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.88864745641528986, -0.80000000000000004, 0.29999999999999999,
!           0.87266462599716477 },
!   { 1.0811075819341465, -0.80000000000000004, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.2844589654082377, -0.80000000000000004, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.4991461361277849, -0.80000000000000004, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.7214611048717301, -0.80000000000000004, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.80000000000000004, nu=0.29999999999999999.
! template <typename Tp>
! void test014()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data014)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data014[i].k), Tp(data014[i].nu),
!                    Tp(data014[i].phi));
!       const Tp f0 = data014[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.80000000000000004, nu=0.40000000000000002.
! testcase_ellint_3<double> data015[] = {
!   { -0.0000000000000000, -0.80000000000000004, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17439794211872178, -0.80000000000000004, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34814144964568972, -0.80000000000000004, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.52127776285273075, -0.80000000000000004, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.69496411438966599, -0.80000000000000004, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.87146878427509589, -0.80000000000000004, 0.40000000000000002,
!           0.87266462599716477 },
!   { 1.0537579024937762, -0.80000000000000004, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.2445534387922637, -0.80000000000000004, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.4446769766361993, -0.80000000000000004, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.6512267838651289, -0.80000000000000004, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.80000000000000004, nu=0.40000000000000002.
! template <typename Tp>
! void test015()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data015)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data015[i].k), Tp(data015[i].nu),
!                    Tp(data015[i].phi));
!       const Tp f0 = data015[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.80000000000000004, nu=0.50000000000000000.
! testcase_ellint_3<double> data016[] = {
!   { -0.0000000000000000, -0.80000000000000004, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17422361866118047, -0.80000000000000004, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34681083254170475, -0.80000000000000004, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.51709470815494440, -0.80000000000000004, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.68587375344080259, -0.80000000000000004, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.85532571852810624, -0.80000000000000004, 0.50000000000000000,
!           0.87266462599716477 },
!   { 1.0284677391874906, -0.80000000000000004, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.2081693942686225, -0.80000000000000004, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.3955803006426311, -0.80000000000000004, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.5884528947755532, -0.80000000000000004, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.80000000000000004, nu=0.50000000000000000.
! template <typename Tp>
! void test016()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data016)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data016[i].k), Tp(data016[i].nu),
!                    Tp(data016[i].phi));
!       const Tp f0 = data016[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.80000000000000004, nu=0.59999999999999998.
! testcase_ellint_3<double> data017[] = {
!   { -0.0000000000000000, -0.80000000000000004, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17404991781414092, -0.80000000000000004, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34549800443625167, -0.80000000000000004, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.51302536167001556, -0.80000000000000004, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.67717065003912258, -0.80000000000000004, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.84011512421134416, -0.80000000000000004, 0.59999999999999998,
!           0.87266462599716477 },
!   { 1.0049863847088742, -0.80000000000000004, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.1748145941898918, -0.80000000000000004, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.3510319699755071, -0.80000000000000004, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.5319262547427865, -0.80000000000000004, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.80000000000000004, nu=0.59999999999999998.
! template <typename Tp>
! void test017()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data017)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data017[i].k), Tp(data017[i].nu),
!                    Tp(data017[i].phi));
!       const Tp f0 = data017[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.80000000000000004, nu=0.69999999999999996.
! testcase_ellint_3<double> data018[] = {
!   { -0.0000000000000000, -0.80000000000000004, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17387683562442202, -0.80000000000000004, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34420254775101611, -0.80000000000000004, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.50906439222143685, -0.80000000000000004, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.66882693152688433, -0.80000000000000004, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.82574792844091316, -0.80000000000000004, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.98310431309490953, -0.80000000000000004, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.1440884535113258, -0.80000000000000004, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.3103743938952537, -0.80000000000000004, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.4806912324625332, -0.80000000000000004, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.80000000000000004, nu=0.69999999999999996.
! template <typename Tp>
! void test018()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data018)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data018[i].k), Tp(data018[i].nu),
!                    Tp(data018[i].phi));
!       const Tp f0 = data018[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.80000000000000004, nu=0.80000000000000004.
! testcase_ellint_3<double> data019[] = {
!   { -0.0000000000000000, -0.80000000000000004, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17370436817515206, -0.80000000000000004, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.34292405894783395, -0.80000000000000004, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.50520682176250087, -0.80000000000000004, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.66081751679736189, -0.80000000000000004, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.81214672249355102, -0.80000000000000004, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.96264481387685574, -0.80000000000000004, 0.80000000000000004,
!           1.0471975511965976 },
!   { 1.1156611352656258, -0.80000000000000004, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.2730756225143889, -0.80000000000000004, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.4339837018309474, -0.80000000000000004, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.80000000000000004, nu=0.80000000000000004.
! template <typename Tp>
! void test019()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data019)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data019[i].k), Tp(data019[i].nu),
!                    Tp(data019[i].phi));
!       const Tp f0 = data019[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.80000000000000004, nu=0.90000000000000002.
! testcase_ellint_3<double> data020[] = {
!   { -0.0000000000000000, -0.80000000000000004, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17353251158533153, -0.80000000000000004, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.34166214791545768, -0.80000000000000004, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.50144799535130580, -0.80000000000000004, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.65311976193814447, -0.80000000000000004, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.79924384892320866, -0.80000000000000004, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.94345762353365625, -0.80000000000000004, 0.90000000000000002,
!           1.0471975511965976 },
!   { 1.0892582069219159, -0.80000000000000004, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.2387000876610268, -0.80000000000000004, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.3911845406776222, -0.80000000000000004, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.80000000000000004, nu=0.90000000000000002.
! template <typename Tp>
! void test020()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data020)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data020[i].k), Tp(data020[i].nu),
!                    Tp(data020[i].phi));
!       const Tp f0 = data020[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.69999999999999996, nu=0.0000000000000000.
! testcase_ellint_3<double> data021[] = {
!   { -0.0000000000000000, -0.69999999999999996, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17496737466916720, -0.69999999999999996, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.35254687535677925, -0.69999999999999996, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.53536740275997130, -0.69999999999999996, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.72603797651684465, -0.69999999999999996, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.92698296348313458, -0.69999999999999996, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.1400447527693316, -0.69999999999999996, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.3657668117194071, -0.69999999999999996, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.6024686895959159, -0.69999999999999996, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.8456939983747236, -0.69999999999999996, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.69999999999999996, nu=0.0000000000000000.
! template <typename Tp>
! void test021()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data021)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data021[i].k), Tp(data021[i].nu),
!                    Tp(data021[i].phi));
!       const Tp f0 = data021[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.69999999999999996, nu=0.10000000000000001.
! testcase_ellint_3<double> data022[] = {
!   { -0.0000000000000000, -0.69999999999999996, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17479076384884681, -0.69999999999999996, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.35114844900396364, -0.69999999999999996, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.53072776947527012, -0.69999999999999996, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.71530198262386246, -0.69999999999999996, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.90666760677828306, -0.69999999999999996, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.1063366517438080, -0.69999999999999996, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.3149477243092147, -0.69999999999999996, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.5314886725038925, -0.69999999999999996, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.7528050171757608, -0.69999999999999996, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.69999999999999996, nu=0.10000000000000001.
! template <typename Tp>
! void test022()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data022)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data022[i].k), Tp(data022[i].nu),
!                    Tp(data022[i].phi));
!       const Tp f0 = data022[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.69999999999999996, nu=0.20000000000000001.
! testcase_ellint_3<double> data023[] = {
!   { -0.0000000000000000, -0.69999999999999996, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17461479077791472, -0.69999999999999996, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34976950621407538, -0.69999999999999996, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.52622533231350188, -0.69999999999999996, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.70508774017895226, -0.69999999999999996, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.88775302531730294, -0.69999999999999996, 0.20000000000000001,
!           0.87266462599716477 },
!   { 1.0756195476149006, -0.69999999999999996, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.2695349716654372, -0.69999999999999996, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.4690814617070540, -0.69999999999999996, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.6721098780092147, -0.69999999999999996, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.69999999999999996, nu=0.20000000000000001.
! template <typename Tp>
! void test023()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data023)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data023[i].k), Tp(data023[i].nu),
!                    Tp(data023[i].phi));
!       const Tp f0 = data023[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.69999999999999996, nu=0.29999999999999999.
! testcase_ellint_3<double> data024[] = {
!   { -0.0000000000000000, -0.69999999999999996, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17443945136076172, -0.69999999999999996, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34840956983535287, -0.69999999999999996, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.52185308551329179, -0.69999999999999996, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.69535240431168266, -0.69999999999999996, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.87007983473964923, -0.69999999999999996, 0.29999999999999999,
!           0.87266462599716477 },
!   { 1.0474657975577066, -0.69999999999999996, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.2286225419931889, -0.69999999999999996, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.4136490671013271, -0.69999999999999996, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.6011813647733213, -0.69999999999999996, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.69999999999999996, nu=0.29999999999999999.
! template <typename Tp>
! void test024()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data024)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data024[i].k), Tp(data024[i].nu),
!                    Tp(data024[i].phi));
!       const Tp f0 = data024[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.69999999999999996, nu=0.40000000000000002.
! testcase_ellint_3<double> data025[] = {
!   { -0.0000000000000000, -0.69999999999999996, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17426474153983226, -0.69999999999999996, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34706817945773732, -0.69999999999999996, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.51760452851738159, -0.69999999999999996, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.68605801534722766, -0.69999999999999996, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.85351339387296532, -0.69999999999999996, 0.40000000000000002,
!           0.87266462599716477 },
!   { 1.0215297967969537, -0.69999999999999996, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.1915051074460528, -0.69999999999999996, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.3639821911744707, -0.69999999999999996, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.5382162002954762, -0.69999999999999996, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.69999999999999996, nu=0.40000000000000002.
! template <typename Tp>
! void test025()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data025)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data025[i].k), Tp(data025[i].nu),
!                    Tp(data025[i].phi));
!       const Tp f0 = data025[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.69999999999999996, nu=0.50000000000000000.
! testcase_ellint_3<double> data026[] = {
!   { -0.0000000000000000, -0.69999999999999996, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17409065729516093, -0.69999999999999996, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34574489064986091, -0.69999999999999996, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.51347361925579793, -0.69999999999999996, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.67717079489579290, -0.69999999999999996, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.83793902055292280, -0.69999999999999996, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.99752863545289705, -0.69999999999999996, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.1576240080401499, -0.69999999999999996, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.3191464023923762, -0.69999999999999996, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.4818433192178544, -0.69999999999999996, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.69999999999999996, nu=0.50000000000000000.
! template <typename Tp>
! void test026()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data026)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data026[i].k), Tp(data026[i].nu),
!                    Tp(data026[i].phi));
!       const Tp f0 = data026[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.69999999999999996, nu=0.59999999999999998.
! testcase_ellint_3<double> data027[] = {
!   { -0.0000000000000000, -0.69999999999999996, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17391719464391611, -0.69999999999999996, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34443927423869031, -0.69999999999999996, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.50945473266486074, -0.69999999999999996, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.66866056326513823, -0.69999999999999996, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.82325830002337352, -0.69999999999999996, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.97522808245669357, -0.69999999999999996, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.1265300613705282, -0.69999999999999996, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.2784066076152003, -0.69999999999999996, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.4309994736080540, -0.69999999999999996, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.69999999999999996, nu=0.59999999999999998.
! template <typename Tp>
! void test027()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data027)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data027[i].k), Tp(data027[i].nu),
!                    Tp(data027[i].phi));
!       const Tp f0 = data027[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.69999999999999996, nu=0.69999999999999996.
! testcase_ellint_3<double> data028[] = {
!   { -0.0000000000000000, -0.69999999999999996, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17374434963995028, -0.69999999999999996, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34315091562900674, -0.69999999999999996, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.50554262375653358, -0.69999999999999996, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.66050025406305812, -0.69999999999999996, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.80938620118847404, -0.69999999999999996, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.95443223855852144, -0.69999999999999996, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.0978573207128302, -0.69999999999999996, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.2411754575007123, -0.69999999999999996, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.3848459188329196, -0.69999999999999996, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.69999999999999996, nu=0.69999999999999996.
! template <typename Tp>
! void test028()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data028)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data028[i].k), Tp(data028[i].nu),
!                    Tp(data028[i].phi));
!       const Tp f0 = data028[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.69999999999999996, nu=0.80000000000000004.
! testcase_ellint_3<double> data029[] = {
!   { -0.0000000000000000, -0.69999999999999996, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17357211837335737, -0.69999999999999996, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.34187941416012108, -0.69999999999999996, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.50173239465478270, -0.69999999999999996, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.65266550725988315, -0.69999999999999996, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.79624879865249298, -0.69999999999999996, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.93497577043296920, -0.69999999999999996, 0.80000000000000004,
!           1.0471975511965976 },
!   { 1.0713041566930748, -0.69999999999999996, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.2069772023255652, -0.69999999999999996, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.3427110650397533, -0.69999999999999996, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.69999999999999996, nu=0.80000000000000004.
! template <typename Tp>
! void test029()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data029)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data029[i].k), Tp(data029[i].nu),
!                    Tp(data029[i].phi));
!       const Tp f0 = data029[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.69999999999999996, nu=0.90000000000000002.
! testcase_ellint_3<double> data030[] = {
!   { -0.0000000000000000, -0.69999999999999996, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17340049697003634, -0.69999999999999996, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.34062438249741556, -0.69999999999999996, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.49801946510076878, -0.69999999999999996, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.64513432604750487, -0.69999999999999996, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.78378145487573758, -0.69999999999999996, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.91671799500854634, -0.69999999999999996, 0.90000000000000002,
!           1.0471975511965976 },
!   { 1.0466193579463123, -0.69999999999999996, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.1754218079199146, -0.69999999999999996, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.3040500499695911, -0.69999999999999996, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.69999999999999996, nu=0.90000000000000002.
! template <typename Tp>
! void test030()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data030)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data030[i].k), Tp(data030[i].nu),
!                    Tp(data030[i].phi));
!       const Tp f0 = data030[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.59999999999999998, nu=0.0000000000000000.
! testcase_ellint_3<double> data031[] = {
!   { -0.0000000000000000, -0.59999999999999998, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17485154362988362, -0.59999999999999998, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.35160509865544326, -0.59999999999999998, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.53210652578446160, -0.59999999999999998, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.71805304664485670, -0.59999999999999998, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.91082759030195970, -0.59999999999999998, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.1112333229323361, -0.59999999999999998, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.3191461190365270, -0.59999999999999998, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.5332022105084773, -0.59999999999999998, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.7507538029157526, -0.59999999999999998, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.59999999999999998, nu=0.0000000000000000.
! template <typename Tp>
! void test031()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data031)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data031[i].k), Tp(data031[i].nu),
!                    Tp(data031[i].phi));
!       const Tp f0 = data031[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.59999999999999998, nu=0.10000000000000001.
! testcase_ellint_3<double> data032[] = {
!   { -0.0000000000000000, -0.59999999999999998, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17467514275022014, -0.59999999999999998, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.35021333086258255, -0.59999999999999998, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.52751664092962713, -0.59999999999999998, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.70752126971957885, -0.59999999999999998, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.89111058756112871, -0.59999999999999998, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.0789241202877768, -0.59999999999999998, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.2710800210399946, -0.59999999999999998, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.4669060574440276, -0.59999999999999998, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.6648615773343014, -0.59999999999999998, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.59999999999999998, nu=0.10000000000000001.
! template <typename Tp>
! void test032()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data032)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data032[i].k), Tp(data032[i].nu),
!                    Tp(data032[i].phi));
!       const Tp f0 = data032[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.59999999999999998, nu=0.20000000000000001.
! testcase_ellint_3<double> data033[] = {
!   { -0.0000000000000000, -0.59999999999999998, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17449937871800653, -0.59999999999999998, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34884093647346553, -0.59999999999999998, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.52306221119844110, -0.59999999999999998, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.69749955678982223, -0.59999999999999998, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.87274610682416853, -0.59999999999999998, 0.20000000000000001,
!           0.87266462599716477 },
!   { 1.0494620540750792, -0.59999999999999998, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.2280847305507339, -0.59999999999999998, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.4085436279696886, -0.59999999999999998, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.5901418016279374, -0.59999999999999998, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.59999999999999998, nu=0.20000000000000001.
! template <typename Tp>
! void test033()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data033)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data033[i].k), Tp(data033[i].nu),
!                    Tp(data033[i].phi));
!       const Tp f0 = data033[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.59999999999999998, nu=0.29999999999999999.
! testcase_ellint_3<double> data034[] = {
!   { -0.0000000000000000, -0.59999999999999998, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17432424744393935, -0.59999999999999998, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34748744127146447, -0.59999999999999998, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.51873632743924847, -0.59999999999999998, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.68794610396313127, -0.59999999999999998, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.85558070175468726, -0.59999999999999998, 0.29999999999999999,
!           0.87266462599716477 },
!   { 1.0224416343605653, -0.59999999999999998, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.1893144457936788, -0.59999999999999998, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.3566435377982575, -0.59999999999999998, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.5243814243493585, -0.59999999999999998, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.59999999999999998, nu=0.29999999999999999.
! template <typename Tp>
! void test034()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data034)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data034[i].k), Tp(data034[i].nu),
!                    Tp(data034[i].phi));
!       const Tp f0 = data034[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.59999999999999998, nu=0.40000000000000002.
! testcase_ellint_3<double> data035[] = {
!   { -0.0000000000000000, -0.59999999999999998, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17414974487670720, -0.59999999999999998, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34615238767335027, -0.59999999999999998, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.51453257838108579, -0.59999999999999998, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.67882386787534410, -0.59999999999999998, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.83948470233173578, -0.59999999999999998, 0.40000000000000002,
!           0.87266462599716477 },
!   { 0.99753496200073977, -0.59999999999999998, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.1541101404388487, -0.59999999999999998, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.3100911323398814, -0.59999999999999998, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.4659345278069984, -0.59999999999999998, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.59999999999999998, nu=0.40000000000000002.
! template <typename Tp>
! void test035()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data035)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data035[i].k), Tp(data035[i].nu),
!                    Tp(data035[i].phi));
!       const Tp f0 = data035[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.59999999999999998, nu=0.50000000000000000.
! testcase_ellint_3<double> data036[] = {
!   { -0.0000000000000000, -0.59999999999999998, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17397586700252810, -0.59999999999999998, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34483533397138516, -0.59999999999999998, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.51044500461706499, -0.59999999999999998, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.67009988034712675, -0.59999999999999998, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.82434762375735193, -0.59999999999999998, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.97447346702798998, -0.59999999999999998, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.1219494000522143, -0.59999999999999998, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.2680242605954486, -0.59999999999999998, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.4135484285693078, -0.59999999999999998, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.59999999999999998, nu=0.50000000000000000.
! template <typename Tp>
! void test036()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data036)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data036[i].k), Tp(data036[i].nu),
!                    Tp(data036[i].phi));
!       const Tp f0 = data036[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.59999999999999998, nu=0.59999999999999998.
! testcase_ellint_3<double> data037[] = {
!   { -0.0000000000000000, -0.59999999999999998, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17380260984469356, -0.59999999999999998, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34353585361777839, -0.59999999999999998, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.50646805774321402, -0.59999999999999998, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.66174468108625517, -0.59999999999999998, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.81007462280278408, -0.59999999999999998, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.95303466945718729, -0.59999999999999998, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.0924118588677503, -0.59999999999999998, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.2297640574847937, -0.59999999999999998, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.3662507535812816, -0.59999999999999998, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.59999999999999998, nu=0.59999999999999998.
! template <typename Tp>
! void test037()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data037)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data037[i].k), Tp(data037[i].nu),
!                    Tp(data037[i].phi));
!       const Tp f0 = data037[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.59999999999999998, nu=0.69999999999999996.
! testcase_ellint_3<double> data038[] = {
!   { -0.0000000000000000, -0.59999999999999998, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17362996946312009, -0.59999999999999998, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34225353454870588, -0.59999999999999998, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.50259656397799546, -0.59999999999999998, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.65373184496628944, -0.59999999999999998, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.79658372884056439, -0.59999999999999998, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.93303240100245421, -0.59999999999999998, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.0651547944716557, -0.59999999999999998, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.1947676204853441, -0.59999999999999998, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.3232737468822811, -0.59999999999999998, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.59999999999999998, nu=0.69999999999999996.
! template <typename Tp>
! void test038()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data038)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data038[i].k), Tp(data038[i].nu),
!                    Tp(data038[i].phi));
!       const Tp f0 = data038[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.59999999999999998, nu=0.80000000000000004.
! testcase_ellint_3<double> data039[] = {
!   { -0.0000000000000000, -0.59999999999999998, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17345794195390687, -0.59999999999999998, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.34098797854531027, -0.59999999999999998, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.49882569168826230, -0.59999999999999998, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.64603758566475511, -0.59999999999999998, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.78380365594769730, -0.59999999999999998, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.91430946255611190, -0.59999999999999998, 0.80000000000000004,
!           1.0471975511965976 },
!   { 1.0398955217270607, -0.59999999999999998, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.1625948314277676, -0.59999999999999998, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.2840021261752192, -0.59999999999999998, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.59999999999999998, nu=0.80000000000000004.
! template <typename Tp>
! void test039()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data039)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data039[i].k), Tp(data039[i].nu),
!                    Tp(data039[i].phi));
!       const Tp f0 = data039[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.59999999999999998, nu=0.90000000000000002.
! testcase_ellint_3<double> data040[] = {
!   { -0.0000000000000000, -0.59999999999999998, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17328652344890033, -0.59999999999999998, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.33973880062929018, -0.59999999999999998, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.49515092233122765, -0.59999999999999998, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.63864042139737043, -0.59999999999999998, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.77167205646538850, -0.59999999999999998, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.89673202848034383, -0.59999999999999998, 0.90000000000000002,
!           1.0471975511965976 },
!   { 1.0163984492661304, -0.59999999999999998, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.1328845785162431, -0.59999999999999998, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.2479362973851875, -0.59999999999999998, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.59999999999999998, nu=0.90000000000000002.
! template <typename Tp>
! void test040()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data040)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data040[i].k), Tp(data040[i].nu),
!                    Tp(data040[i].phi));
!       const Tp f0 = data040[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.50000000000000000, nu=0.0000000000000000.
! testcase_ellint_3<double> data041[] = {
!   { -0.0000000000000000, -0.50000000000000000, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17475385514035785, -0.50000000000000000, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.35081868470101585, -0.50000000000000000, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.52942862705190585, -0.50000000000000000, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.71164727562630326, -0.50000000000000000, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.89824523594227768, -0.50000000000000000, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.0895506700518851, -0.50000000000000000, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.2853005857432933, -0.50000000000000000, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.4845545520549484, -0.50000000000000000, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.6857503548125963, -0.50000000000000000, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.50000000000000000, nu=0.0000000000000000.
! template <typename Tp>
! void test041()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data041)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data041[i].k), Tp(data041[i].nu),
!                    Tp(data041[i].phi));
!       const Tp f0 = data041[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.50000000000000000, nu=0.10000000000000001.
! testcase_ellint_3<double> data042[] = {
!   { -0.0000000000000000, -0.50000000000000000, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17457763120814676, -0.50000000000000000, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.34943246340849154, -0.50000000000000000, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.52487937869610801, -0.50000000000000000, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.70127785096388395, -0.50000000000000000, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.87898815988624479, -0.50000000000000000, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.0582764576094172, -0.50000000000000000, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.2391936844060207, -0.50000000000000000, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.4214793542995841, -0.50000000000000000, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.6045524936084892, -0.50000000000000000, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.50000000000000000, nu=0.10000000000000001.
! template <typename Tp>
! void test042()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data042)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data042[i].k), Tp(data042[i].nu),
!                    Tp(data042[i].phi));
!       const Tp f0 = data042[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.50000000000000000, nu=0.20000000000000001.
! testcase_ellint_3<double> data043[] = {
!   { -0.0000000000000000, -0.50000000000000000, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17440204336345433, -0.50000000000000000, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34806552388338824, -0.50000000000000000, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.52046416757129821, -0.50000000000000000, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.69140924550993876, -0.50000000000000000, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.86104678636125520, -0.50000000000000000, 0.20000000000000001,
!           0.87266462599716477 },
!   { 1.0297439459053981, -0.50000000000000000, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.1979214112912036, -0.50000000000000000, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.3659033858648930, -0.50000000000000000, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.5338490483665983, -0.50000000000000000, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.50000000000000000, nu=0.20000000000000001.
! template <typename Tp>
! void test043()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data043)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data043[i].k), Tp(data043[i].nu),
!                    Tp(data043[i].phi));
!       const Tp f0 = data043[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.50000000000000000, nu=0.29999999999999999.
! testcase_ellint_3<double> data044[] = {
!   { -0.0000000000000000, -0.50000000000000000, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17422708752228896, -0.50000000000000000, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34671739434855858, -0.50000000000000000, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.51617616305641889, -0.50000000000000000, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.68200047612545178, -0.50000000000000000, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.84427217869498372, -0.50000000000000000, 0.29999999999999999,
!           0.87266462599716477 },
!   { 1.0035637821389782, -0.50000000000000000, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.1606800483933113, -0.50000000000000000, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.3164407134643459, -0.50000000000000000, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.4715681939859637, -0.50000000000000000, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.50000000000000000, nu=0.29999999999999999.
! template <typename Tp>
! void test044()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data044)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data044[i].k), Tp(data044[i].nu),
!                    Tp(data044[i].phi));
!       const Tp f0 = data044[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.50000000000000000, nu=0.40000000000000002.
! testcase_ellint_3<double> data045[] = {
!   { -0.0000000000000000, -0.50000000000000000, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17405275963859917, -0.50000000000000000, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34538761957029329, -0.50000000000000000, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.51200902646603919, -0.50000000000000000, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.67301522212868792, -0.50000000000000000, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.82853844466313320, -0.50000000000000000, 0.40000000000000002,
!           0.87266462599716477 },
!   { 0.97942097862681488, -0.50000000000000000, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.1268429801220616, -0.50000000000000000, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.2720406704533922, -0.50000000000000000, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.4161679518465340, -0.50000000000000000, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.50000000000000000, nu=0.40000000000000002.
! template <typename Tp>
! void test045()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data045)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data045[i].k), Tp(data045[i].nu),
!                    Tp(data045[i].phi));
!       const Tp f0 = data045[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.50000000000000000, nu=0.50000000000000000.
! testcase_ellint_3<double> data046[] = {
!   { -0.0000000000000000, -0.50000000000000000, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17387905570381157, -0.50000000000000000, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34407576010465207, -0.50000000000000000, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.50795686560160835, -0.50000000000000000, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.66442115453330175, -0.50000000000000000, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.81373829119355345, -0.50000000000000000, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.95705743313235825, -0.50000000000000000, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.0959131991362556, -0.50000000000000000, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.2318900529754597, -0.50000000000000000, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.3664739530045971, -0.50000000000000000, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.50000000000000000, nu=0.50000000000000000.
! template <typename Tp>
! void test046()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data046)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data046[i].k), Tp(data046[i].nu),
!                    Tp(data046[i].phi));
!       const Tp f0 = data046[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.50000000000000000, nu=0.59999999999999998.
! testcase_ellint_3<double> data047[] = {
!   { -0.0000000000000000, -0.50000000000000000, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17370597174637581, -0.50000000000000000, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34278139158591414, -0.50000000000000000, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.50401419439302719, -0.50000000000000000, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.65618938076167221, -0.50000000000000000, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.79977959248855424, -0.50000000000000000, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.93625925190753545, -0.50000000000000000, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.0674905658379710, -0.50000000000000000, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.1953481298023048, -0.50000000000000000, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.3215740290190876, -0.50000000000000000, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.50000000000000000, nu=0.59999999999999998.
! template <typename Tp>
! void test047()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data047)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data047[i].k), Tp(data047[i].nu),
!                    Tp(data047[i].phi));
!       const Tp f0 = data047[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.50000000000000000, nu=0.69999999999999996.
! testcase_ellint_3<double> data048[] = {
!   { -0.0000000000000000, -0.50000000000000000, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17353350383131641, -0.50000000000000000, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34150410405436771, -0.50000000000000000, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.50017589696443487, -0.50000000000000000, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.64829398188419962, -0.50000000000000000, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.78658270782402073, -0.50000000000000000, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.91684738336675053, -0.50000000000000000, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.0412486789555937, -0.50000000000000000, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.1619021847612001, -0.50000000000000000, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.2807475181182502, -0.50000000000000000, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.50000000000000000, nu=0.69999999999999996.
! template <typename Tp>
! void test048()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data048)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data048[i].k), Tp(data048[i].nu),
!                    Tp(data048[i].phi));
!       const Tp f0 = data048[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.50000000000000000, nu=0.80000000000000004.
! testcase_ellint_3<double> data049[] = {
!   { -0.0000000000000000, -0.50000000000000000, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17336164805979126, -0.50000000000000000, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.34024350132086773, -0.50000000000000000, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.49643719555734084, -0.50000000000000000, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.64071162456976150, -0.50000000000000000, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.77407836177211908, -0.50000000000000000, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.89867058251905652, -0.50000000000000000, 0.80000000000000004,
!           1.0471975511965976 },
!   { 1.0169181822134912, -0.50000000000000000, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.1311363312779448, -0.50000000000000000, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.2434165408189539, -0.50000000000000000, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.50000000000000000, nu=0.80000000000000004.
! template <typename Tp>
! void test049()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data049)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data049[i].k), Tp(data049[i].nu),
!                    Tp(data049[i].phi));
!       const Tp f0 = data049[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.50000000000000000, nu=0.90000000000000002.
! testcase_ellint_3<double> data050[] = {
!   { -0.0000000000000000, -0.50000000000000000, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17319040056865681, -0.50000000000000000, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.33899920036578557, -0.50000000000000000, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.49279362182695186, -0.50000000000000000, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.63342123379746151, -0.50000000000000000, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.76220595179550321, -0.50000000000000000, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.88160004743532294, -0.50000000000000000, 0.90000000000000002,
!           1.0471975511965976 },
!   { 0.99427448642310134, -0.50000000000000000, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.1027091512470093, -0.50000000000000000, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.2091116095504744, -0.50000000000000000, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.50000000000000000, nu=0.90000000000000002.
! template <typename Tp>
! void test050()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data050)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data050[i].k), Tp(data050[i].nu),
!                    Tp(data050[i].phi));
!       const Tp f0 = data050[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.40000000000000002, nu=0.0000000000000000.
! testcase_ellint_3<double> data051[] = {
!   { -0.0000000000000000, -0.40000000000000002, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17467414669441531, -0.40000000000000002, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.35018222772483443, -0.40000000000000002, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.52729015917508748, -0.40000000000000002, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.70662374407341255, -0.40000000000000002, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.88859210497602170, -0.40000000000000002, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.0733136290471379, -0.40000000000000002, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.2605612170157061, -0.40000000000000002, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.4497513956433437, -0.40000000000000002, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.6399998658645112, -0.40000000000000002, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.40000000000000002, nu=0.0000000000000000.
! template <typename Tp>
! void test051()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data051)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data051[i].k), Tp(data051[i].nu),
!                    Tp(data051[i].phi));
!       const Tp f0 = data051[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.40000000000000002, nu=0.10000000000000001.
! testcase_ellint_3<double> data052[] = {
!   { -0.0000000000000000, -0.40000000000000002, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17449806706684673, -0.40000000000000002, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.34880048623856075, -0.40000000000000002, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.52277322065757403, -0.40000000000000002, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.69638072056918376, -0.40000000000000002, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.86968426619831540, -0.40000000000000002, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.0428044206578095, -0.40000000000000002, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.2158651158274378, -0.40000000000000002, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.3889447129893322, -0.40000000000000002, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.5620566886683604, -0.40000000000000002, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.40000000000000002, nu=0.10000000000000001.
! template <typename Tp>
! void test052()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data052)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data052[i].k), Tp(data052[i].nu),
!                    Tp(data052[i].phi));
!       const Tp f0 = data052[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.40000000000000002, nu=0.20000000000000001.
! testcase_ellint_3<double> data053[] = {
!   { -0.0000000000000000, -0.40000000000000002, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17432262290723399, -0.40000000000000002, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34743795258968596, -0.40000000000000002, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.51838919472805123, -0.40000000000000002, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.68663134739057918, -0.40000000000000002, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.85206432981833979, -0.40000000000000002, 0.20000000000000001,
!           0.87266462599716477 },
!   { 1.0149595349004430, -0.40000000000000002, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.1758349405464676, -0.40000000000000002, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.3353337673882635, -0.40000000000000002, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.4941414344266770, -0.40000000000000002, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.40000000000000002, nu=0.20000000000000001.
! template <typename Tp>
! void test053()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data053)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data053[i].k), Tp(data053[i].nu),
!                    Tp(data053[i].phi));
!       const Tp f0 = data053[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.40000000000000002, nu=0.29999999999999999.
! testcase_ellint_3<double> data054[] = {
!   { -0.0000000000000000, -0.40000000000000002, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17414781013591543, -0.40000000000000002, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34609415696777285, -0.40000000000000002, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.51413131295862546, -0.40000000000000002, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.67733527622935630, -0.40000000000000002, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.83558675182733266, -0.40000000000000002, 0.29999999999999999,
!           0.87266462599716477 },
!   { 0.98940140808865906, -0.40000000000000002, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.1396968797728058, -0.40000000000000002, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.2875920037865087, -0.40000000000000002, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.4342789859950078, -0.40000000000000002, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.40000000000000002, nu=0.29999999999999999.
! template <typename Tp>
! void test054()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data054)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data054[i].k), Tp(data054[i].nu),
!                    Tp(data054[i].phi));
!       const Tp f0 = data054[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.40000000000000002, nu=0.40000000000000002.
! testcase_ellint_3<double> data055[] = {
!   { -0.0000000000000000, -0.40000000000000002, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17397362471112710, -0.40000000000000002, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34476864603333196, -0.40000000000000002, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.50999329415379357, -0.40000000000000002, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.66845674551396017, -0.40000000000000002, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.82012848346231748, -0.40000000000000002, 0.40000000000000002,
!           0.87266462599716477 },
!   { 0.96582449258349057, -0.40000000000000002, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.1068473749476286, -0.40000000000000002, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.2447132729159986, -0.40000000000000002, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.3809986210732901, -0.40000000000000002, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.40000000000000002, nu=0.40000000000000002.
! template <typename Tp>
! void test055()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data055)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data055[i].k), Tp(data055[i].nu),
!                    Tp(data055[i].phi));
!       const Tp f0 = data055[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.40000000000000002, nu=0.50000000000000000.
! testcase_ellint_3<double> data056[] = {
!   { -0.0000000000000000, -0.40000000000000002, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17380006262854139, -0.40000000000000002, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34346098216756610, -0.40000000000000002, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.50596929935059420, -0.40000000000000002, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.65996392089131262, -0.40000000000000002, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.80558463511364786, -0.40000000000000002, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.94397834522857704, -0.40000000000000002, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.0768075114108115, -0.40000000000000002, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.2059184624251329, -0.40000000000000002, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.3331797176377398, -0.40000000000000002, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.40000000000000002, nu=0.50000000000000000.
! template <typename Tp>
! void test056()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data056)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data056[i].k), Tp(data056[i].nu),
!                    Tp(data056[i].phi));
!       const Tp f0 = data056[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.40000000000000002, nu=0.59999999999999998.
! testcase_ellint_3<double> data057[] = {
!   { -0.0000000000000000, -0.40000000000000002, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17362711992081248, -0.40000000000000002, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34217074276403953, -0.40000000000000002, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.50205389185761617, -0.40000000000000002, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.65182834920372745, -0.40000000000000002, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.79186512820565136, -0.40000000000000002, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.92365535916287134, -0.40000000000000002, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.0491915663957907, -0.40000000000000002, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.1705934291745104, -0.40000000000000002, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.2899514672527024, -0.40000000000000002, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.40000000000000002, nu=0.59999999999999998.
! template <typename Tp>
! void test057()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data057)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data057[i].k), Tp(data057[i].nu),
!                    Tp(data057[i].phi));
!       const Tp f0 = data057[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.40000000000000002, nu=0.69999999999999996.
! testcase_ellint_3<double> data058[] = {
!   { -0.0000000000000000, -0.40000000000000002, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17345479265712871, -0.40000000000000002, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34089751955950354, -0.40000000000000002, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.49824200167361343, -0.40000000000000002, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.64402450341199413, -0.40000000000000002, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.77889207804122873, -0.40000000000000002, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.90468169720957992, -0.40000000000000002, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.0236847823692916, -0.40000000000000002, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.1382465247425164, -0.40000000000000002, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.2506255923253344, -0.40000000000000002, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.40000000000000002, nu=0.69999999999999996.
! template <typename Tp>
! void test058()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data058)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data058[i].k), Tp(data058[i].nu),
!                    Tp(data058[i].phi));
!       const Tp f0 = data058[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.40000000000000002, nu=0.80000000000000004.
! testcase_ellint_3<double> data059[] = {
!   { -0.0000000000000000, -0.40000000000000002, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17328307694277156, -0.40000000000000002, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.33964091800132007, -0.40000000000000002, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.49452889372467451, -0.40000000000000002, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.63652940095937327, -0.40000000000000002, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.76659772511159097, -0.40000000000000002, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.88691047977338111, -0.40000000000000002, 0.80000000000000004,
!           1.0471975511965976 },
!   { 1.0000273200611638, -0.40000000000000002, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.1084787902188007, -0.40000000000000002, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.2146499565727209, -0.40000000000000002, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.40000000000000002, nu=0.80000000000000004.
! template <typename Tp>
! void test059()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data059)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data059[i].k), Tp(data059[i].nu),
!                    Tp(data059[i].phi));
!       const Tp f0 = data059[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.40000000000000002, nu=0.90000000000000002.
! testcase_ellint_3<double> data060[] = {
!   { -0.0000000000000000, -0.40000000000000002, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17311196891868130, -0.40000000000000002, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.33840055664911906, -0.40000000000000002, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.49091013944075340, -0.40000000000000002, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.62932228186809591, -0.40000000000000002, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.75492278323019801, -0.40000000000000002, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.87021659043854294, -0.40000000000000002, 0.90000000000000002,
!           1.0471975511965976 },
!   { 0.97800245228239246, -0.40000000000000002, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.0809625773173694, -0.40000000000000002, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.1815758115929846, -0.40000000000000002, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.40000000000000002, nu=0.90000000000000002.
! template <typename Tp>
! void test060()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data060)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data060[i].k), Tp(data060[i].nu),
!                    Tp(data060[i].phi));
!       const Tp f0 = data060[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.30000000000000004, nu=0.0000000000000000.
! testcase_ellint_3<double> data061[] = {
!   { -0.0000000000000000, -0.30000000000000004, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17461228653000102, -0.30000000000000004, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.34969146102798415, -0.30000000000000004, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.52565822873726320, -0.30000000000000004, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.70284226512408532, -0.30000000000000004, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.88144139195111182, -0.30000000000000004, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.0614897067260523, -0.30000000000000004, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.2428416824174218, -0.30000000000000004, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.4251795877015925, -0.30000000000000004, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.6080486199305126, -0.30000000000000004, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.30000000000000004, nu=0.0000000000000000.
! template <typename Tp>
! void test061()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data061)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data061[i].k), Tp(data061[i].nu),
!                    Tp(data061[i].phi));
!       const Tp f0 = data061[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.30000000000000004, nu=0.10000000000000001.
! testcase_ellint_3<double> data062[] = {
!   { -0.0000000000000000, -0.30000000000000004, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17443631884814378, -0.30000000000000004, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.34831316835124926, -0.30000000000000004, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.52116586276523857, -0.30000000000000004, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.69269385837910036, -0.30000000000000004, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.86279023163070856, -0.30000000000000004, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.0315321461438265, -0.30000000000000004, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.1991449111869024, -0.30000000000000004, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.3659561780923211, -0.30000000000000004, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.5323534693557526, -0.30000000000000004, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.30000000000000004, nu=0.10000000000000001.
! template <typename Tp>
! void test062()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data062)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data062[i].k), Tp(data062[i].nu),
!                    Tp(data062[i].phi));
!       const Tp f0 = data062[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.30000000000000004, nu=0.20000000000000001.
! testcase_ellint_3<double> data063[] = {
!   { -0.0000000000000000, -0.30000000000000004, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17426098615372090, -0.30000000000000004, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34695402664689923, -0.30000000000000004, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.51680555567038933, -0.30000000000000004, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.68303375225260210, -0.30000000000000004, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.84540662891295026, -0.30000000000000004, 0.20000000000000001,
!           0.87266462599716477 },
!   { 1.0041834051646927, -0.30000000000000004, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.1599952702345711, -0.30000000000000004, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.3137179520499163, -0.30000000000000004, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.4663658145259875, -0.30000000000000004, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.30000000000000004, nu=0.20000000000000001.
! template <typename Tp>
! void test063()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data063)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data063[i].k), Tp(data063[i].nu),
!                    Tp(data063[i].phi));
!       const Tp f0 = data063[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.30000000000000004, nu=0.29999999999999999.
! testcase_ellint_3<double> data064[] = {
!   { -0.0000000000000000, -0.30000000000000004, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17408628437042845, -0.30000000000000004, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34561356761638401, -0.30000000000000004, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.51257058617875850, -0.30000000000000004, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.67382207124602866, -0.30000000000000004, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.82914751587825131, -0.30000000000000004, 0.29999999999999999,
!           0.87266462599716477 },
!   { 0.97907434814374950, -0.30000000000000004, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.1246399297351584, -0.30000000000000004, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.2671793970398146, -0.30000000000000004, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.4081767433479089, -0.30000000000000004, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.30000000000000004, nu=0.29999999999999999.
! template <typename Tp>
! void test064()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data064)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data064[i].k), Tp(data064[i].nu),
!                    Tp(data064[i].phi));
!       const Tp f0 = data064[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.30000000000000004, nu=0.40000000000000002.
! testcase_ellint_3<double> data065[] = {
!   { -0.0000000000000000, -0.30000000000000004, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17391220945982730, -0.30000000000000004, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34429133937639689, -0.30000000000000004, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.50845471668581632, -0.30000000000000004, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.66502347027873854, -0.30000000000000004, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.81389191978012254, -0.30000000000000004, 0.40000000000000002,
!           0.87266462599716477 },
!   { 0.95590618002140593, -0.30000000000000004, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.0924915195213121, -0.30000000000000004, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.2253651604038058, -0.30000000000000004, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.3563643538969761, -0.30000000000000004, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.30000000000000004, nu=0.40000000000000002.
! template <typename Tp>
! void test065()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data065)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data065[i].k), Tp(data065[i].nu),
!                    Tp(data065[i].phi));
!       const Tp f0 = data065[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.30000000000000004, nu=0.50000000000000000.
! testcase_ellint_3<double> data066[] = {
!   { -0.0000000000000000, -0.30000000000000004, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17373875742088235, -0.30000000000000004, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34298690571124157, -0.30000000000000004, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.50445214859646936, -0.30000000000000004, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.65660648352418516, -0.30000000000000004, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.79953670639287289, -0.30000000000000004, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.93443393926588558, -0.30000000000000004, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.0630838369016911, -0.30000000000000004, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.1875197325653026, -0.30000000000000004, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.3098448759814960, -0.30000000000000004, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.30000000000000004, nu=0.50000000000000000.
! template <typename Tp>
! void test066()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data066)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data066[i].k), Tp(data066[i].nu),
!                    Tp(data066[i].phi));
!       const Tp f0 = data066[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.30000000000000004, nu=0.59999999999999998.
! testcase_ellint_3<double> data067[] = {
!   { -0.0000000000000000, -0.30000000000000004, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17356592428950826, -0.30000000000000004, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34169984536697379, -0.30000000000000004, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.50055748266498457, -0.30000000000000004, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.64854298527106768, -0.30000000000000004, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.78599329284207431, -0.30000000000000004, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.91445452089128221, -0.30000000000000004, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.0360412952290587, -0.30000000000000004, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.1530473919778639, -0.30000000000000004, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.2677758800420666, -0.30000000000000004, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.30000000000000004, nu=0.59999999999999998.
! template <typename Tp>
! void test067()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data067)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data067[i].k), Tp(data067[i].nu),
!                    Tp(data067[i].phi));
!       const Tp f0 = data067[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.30000000000000004, nu=0.69999999999999996.
! testcase_ellint_3<double> data068[] = {
!   { -0.0000000000000000, -0.30000000000000004, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17339370613812227, -0.30000000000000004, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34042975138455933, -0.30000000000000004, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.49676568368075985, -0.30000000000000004, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.64080774055753720, -0.30000000000000004, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.77318507779667278, -0.30000000000000004, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.89579782346548631, -0.30000000000000004, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.0110573286052202, -0.30000000000000004, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.1214710972949633, -0.30000000000000004, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.2294913236274980, -0.30000000000000004, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.30000000000000004, nu=0.69999999999999996.
! template <typename Tp>
! void test068()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data068)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data068[i].k), Tp(data068[i].nu),
!                    Tp(data068[i].phi));
!       const Tp f0 = data068[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.30000000000000004, nu=0.80000000000000004.
! testcase_ellint_3<double> data069[] = {
!   { -0.0000000000000000, -0.30000000000000004, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17322209907520361, -0.30000000000000004, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.33917623046949996, -0.30000000000000004, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.49307204894329176, -0.30000000000000004, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.63337802830291723, -0.30000000000000004, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.76104540997689407, -0.30000000000000004, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.87832009635450736, -0.30000000000000004, 0.80000000000000004,
!           1.0471975511965976 },
!   { 0.98787879723171790, -0.30000000000000004, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.0924036340069336, -0.30000000000000004, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.1944567571590046, -0.30000000000000004, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.30000000000000004, nu=0.80000000000000004.
! template <typename Tp>
! void test069()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data069)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data069[i].k), Tp(data069[i].nu),
!                    Tp(data069[i].phi));
!       const Tp f0 = data069[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.30000000000000004, nu=0.90000000000000002.
! testcase_ellint_3<double> data070[] = {
!   { -0.0000000000000000, -0.30000000000000004, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17305109924485948, -0.30000000000000004, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.33793890239556984, -0.30000000000000004, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.48947218005089738, -0.30000000000000004, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.62623332340775151, -0.30000000000000004, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.74951596581511148, -0.30000000000000004, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.86189886597756005, -0.30000000000000004, 0.90000000000000002,
!           1.0471975511965976 },
!   { 0.96629451153092005, -0.30000000000000004, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.0655269133492680, -0.30000000000000004, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.1622376896064912, -0.30000000000000004, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.30000000000000004, nu=0.90000000000000002.
! template <typename Tp>
! void test070()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data070)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data070[i].k), Tp(data070[i].nu),
!                    Tp(data070[i].phi));
!       const Tp f0 = data070[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.19999999999999996, nu=0.0000000000000000.
! testcase_ellint_3<double> data071[] = {
!   { -0.0000000000000000, -0.19999999999999996, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17456817290292811, -0.19999999999999996, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.34934315932086801, -0.19999999999999996, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.52450880529443988, -0.19999999999999996, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.70020491009844910, -0.19999999999999996, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.87651006649967955, -0.19999999999999996, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.0534305870298994, -0.19999999999999996, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.2308975521670784, -0.19999999999999996, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.4087733584990738, -0.19999999999999996, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.5868678474541664, -0.19999999999999996, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.19999999999999996, nu=0.0000000000000000.
! template <typename Tp>
! void test071()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data071)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data071[i].k), Tp(data071[i].nu),
!                    Tp(data071[i].phi));
!       const Tp f0 = data071[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.19999999999999996, nu=0.10000000000000001.
! testcase_ellint_3<double> data072[] = {
!   { -0.0000000000000000, -0.19999999999999996, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17439228502691750, -0.19999999999999996, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.34796731137565740, -0.19999999999999996, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.52003370294544848, -0.19999999999999996, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.69012222258631495, -0.19999999999999996, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.85803491465566772, -0.19999999999999996, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.0238463961099364, -0.19999999999999996, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.1878691059202153, -0.19999999999999996, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.3505985031831940, -0.19999999999999996, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.5126513474261092, -0.19999999999999996, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.19999999999999996, nu=0.10000000000000001.
! template <typename Tp>
! void test072()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data072)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data072[i].k), Tp(data072[i].nu),
!                    Tp(data072[i].phi));
!       const Tp f0 = data072[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.19999999999999996, nu=0.20000000000000001.
! testcase_ellint_3<double> data073[] = {
!   { -0.0000000000000000, -0.19999999999999996, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17421703179583750, -0.19999999999999996, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34661057411998791, -0.19999999999999996, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.51569006052647393, -0.19999999999999996, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.68052412821107278, -0.19999999999999996, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.84081341263313825, -0.19999999999999996, 0.20000000000000001,
!           0.87266462599716477 },
!   { 0.99683359988842890, -0.19999999999999996, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.1493086715118852, -0.19999999999999996, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.2992699693957541, -0.19999999999999996, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.4479323932249568, -0.19999999999999996, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.19999999999999996, nu=0.20000000000000001.
! template <typename Tp>
! void test073()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data073)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data073[i].k), Tp(data073[i].nu),
!                    Tp(data073[i].phi));
!       const Tp f0 = data073[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.19999999999999996, nu=0.29999999999999999.
! testcase_ellint_3<double> data074[] = {
!   { -0.0000000000000000, -0.19999999999999996, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17404240913577707, -0.19999999999999996, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34527248032587193, -0.19999999999999996, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.51147118981668416, -0.19999999999999996, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.67137107867777635, -0.19999999999999996, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.82470418188668893, -0.19999999999999996, 0.29999999999999999,
!           0.87266462599716477 },
!   { 0.97202873223594299, -0.19999999999999996, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.1144773569375266, -0.19999999999999996, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.2535292433701000, -0.19999999999999996, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.3908453514752481, -0.19999999999999996, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.19999999999999996, nu=0.29999999999999999.
! template <typename Tp>
! void test074()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data074)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data074[i].k), Tp(data074[i].nu),
!                    Tp(data074[i].phi));
!       const Tp f0 = data074[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.19999999999999996, nu=0.40000000000000002.
! testcase_ellint_3<double> data075[] = {
!   { -0.0000000000000000, -0.19999999999999996, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17386841301066677, -0.19999999999999996, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34395257914113253, -0.19999999999999996, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.50737088376869466, -0.19999999999999996, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.66262801717277664, -0.19999999999999996, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.80958766645079094, -0.19999999999999996, 0.40000000000000002,
!           0.87266462599716477 },
!   { 0.94913754236162040, -0.19999999999999996, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.0827985514223000, -0.19999999999999996, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.2124212429050478, -0.19999999999999996, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.3400002519661010, -0.19999999999999996, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.19999999999999996, nu=0.40000000000000002.
! template <typename Tp>
! void test075()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data075)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data075[i].k), Tp(data075[i].nu),
!                    Tp(data075[i].phi));
!       const Tp f0 = data075[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.19999999999999996, nu=0.50000000000000000.
! testcase_ellint_3<double> data076[] = {
!   { -0.0000000000000000, -0.19999999999999996, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17369503942181802, -0.19999999999999996, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34265043534362660, -0.19999999999999996, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.50338337208655415, -0.19999999999999996, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.65426373297163642, -0.19999999999999996, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.79536193036145808, -0.19999999999999996, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.92791875910061605, -0.19999999999999996, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.0538145052725829, -0.19999999999999996, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.1752060022875899, -0.19999999999999996, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.2943374404397376, -0.19999999999999996, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.19999999999999996, nu=0.50000000000000000.
! template <typename Tp>
! void test076()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data076)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data076[i].k), Tp(data076[i].nu),
!                    Tp(data076[i].phi));
!       const Tp f0 = data076[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.19999999999999996, nu=0.59999999999999998.
! testcase_ellint_3<double> data077[] = {
!   { -0.0000000000000000, -0.19999999999999996, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17352228440746928, -0.19999999999999996, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34136562863713626, -0.19999999999999996, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.49950328177638481, -0.19999999999999996, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.64625032705690832, -0.19999999999999996, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.78193941198403094, -0.19999999999999996, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.90817230934317128, -0.19999999999999996, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.0271563751276462, -0.19999999999999996, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.1412999379040518, -0.19999999999999996, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.2530330675914561, -0.19999999999999996, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.19999999999999996, nu=0.59999999999999998.
! template <typename Tp>
! void test077()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data077)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data077[i].k), Tp(data077[i].nu),
!                    Tp(data077[i].phi));
!       const Tp f0 = data077[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.19999999999999996, nu=0.69999999999999996.
! testcase_ellint_3<double> data078[] = {
!   { -0.0000000000000000, -0.19999999999999996, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17335014404233898, -0.19999999999999996, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34009775298617811, -0.19999999999999996, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.49572560201923810, -0.19999999999999996, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.63856276669886525, -0.19999999999999996, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.76924438644867565, -0.19999999999999996, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.88973060843856466, -0.19999999999999996, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.0025230471636377, -0.19999999999999996, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.1102356376093103, -0.19999999999999996, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.2154356555075867, -0.19999999999999996, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.19999999999999996, nu=0.69999999999999996.
! template <typename Tp>
! void test078()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data078)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data078[i].k), Tp(data078[i].nu),
!                    Tp(data078[i].phi));
!       const Tp f0 = data078[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.19999999999999996, nu=0.80000000000000004.
! testcase_ellint_3<double> data079[] = {
!   { -0.0000000000000000, -0.19999999999999996, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17317861443718541, -0.19999999999999996, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.33884641598718701, -0.19999999999999996, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.49204565281259494, -0.19999999999999996, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.63117851188220353, -0.19999999999999996, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.75721095949544170, -0.19999999999999996, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.87245201443919118, -0.19999999999999996, 0.80000000000000004,
!           1.0471975511965976 },
!   { 0.97966584238831089, -0.19999999999999996, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.0816336325174360, -0.19999999999999996, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.1810223448909913, -0.19999999999999996, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.19999999999999996, nu=0.80000000000000004.
! template <typename Tp>
! void test079()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data079)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data079[i].k), Tp(data079[i].nu),
!                    Tp(data079[i].phi));
!       const Tp f0 = data079[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.19999999999999996, nu=0.90000000000000002.
! testcase_ellint_3<double> data080[] = {
!   { -0.0000000000000000, -0.19999999999999996, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17300769173837280, -0.19999999999999996, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.33761123827372508, -0.19999999999999996, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.48845905690769426, -0.19999999999999996, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.62407720017324986, -0.19999999999999996, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.74578146525124289, -0.19999999999999996, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.85621583540073076, -0.19999999999999996, 0.90000000000000002,
!           1.0471975511965976 },
!   { 0.95837725988001199, -0.19999999999999996, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.0551821412633928, -0.19999999999999996, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.1493679916141863, -0.19999999999999996, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.19999999999999996, nu=0.90000000000000002.
! template <typename Tp>
! void test080()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data080)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data080[i].k), Tp(data080[i].nu),
!                    Tp(data080[i].phi));
!       const Tp f0 = data080[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.099999999999999978, nu=0.0000000000000000.
! testcase_ellint_3<double> data081[] = {
!   { -0.0000000000000000, -0.099999999999999978, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17454173353063665, -0.099999999999999978, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.34913506721468085, -0.099999999999999978, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.52382550016538953, -0.099999999999999978, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.69864700854177031, -0.099999999999999978, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.87361792586964870, -0.099999999999999978, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.0487386319621685, -0.099999999999999978, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.2239913752078757, -0.099999999999999978, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.3993423113684049, -0.099999999999999978, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.5747455615173562, -0.099999999999999978, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.099999999999999978, nu=0.0000000000000000.
! template <typename Tp>
! void test081()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data081)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data081[i].k), Tp(data081[i].nu),
!                    Tp(data081[i].phi));
!       const Tp f0 = data081[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.099999999999999978, nu=0.10000000000000001.
! testcase_ellint_3<double> data082[] = {
!   { -0.0000000000000000, -0.099999999999999978, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17436589347616618, -0.099999999999999978, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.34776067871237354, -0.099999999999999978, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.51936064354727807, -0.099999999999999978, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.68860303749364360, -0.099999999999999978, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.85524561882332051, -0.099999999999999978, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.0193708301908337, -0.099999999999999978, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.1813474067123044, -0.099999999999999978, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.3417670770424983, -0.099999999999999978, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.5013711111199950, -0.099999999999999978, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.099999999999999978, nu=0.10000000000000001.
! template <typename Tp>
! void test082()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data082)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data082[i].k), Tp(data082[i].nu),
!                    Tp(data082[i].phi));
!       const Tp f0 = data082[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.099999999999999978, nu=0.20000000000000001.
! testcase_ellint_3<double> data083[] = {
!   { -0.0000000000000000, -0.099999999999999978, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17419068786141345, -0.099999999999999978, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34640537686230127, -0.099999999999999978, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.51502689171753957, -0.099999999999999978, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.67904147863672726, -0.099999999999999978, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.83811885126105179, -0.099999999999999978, 0.20000000000000001,
!           0.87266462599716477 },
!   { 0.99255278555742810, -0.099999999999999978, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.1431260546194930, -0.099999999999999978, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.2909589656532101, -0.099999999999999978, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.4373749386463430, -0.099999999999999978, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.099999999999999978, nu=0.20000000000000001.
! template <typename Tp>
! void test083()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data083)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data083[i].k), Tp(data083[i].nu),
!                    Tp(data083[i].phi));
!       const Tp f0 = data083[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.099999999999999978, nu=0.29999999999999999.
! testcase_ellint_3<double> data084[] = {
!   { -0.0000000000000000, -0.099999999999999978, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17401611261390110, -0.099999999999999978, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34506869507511767, -0.099999999999999978, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.51081757604259870, -0.099999999999999978, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.66992297597712303, -0.099999999999999978, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.82209722856174228, -0.099999999999999978, 0.29999999999999999,
!           0.87266462599716477 },
!   { 0.96792430487669612, -0.099999999999999978, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.1085964108954092, -0.099999999999999978, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.2456748370836999, -0.099999999999999978, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.3809159606704959, -0.099999999999999978, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.099999999999999978, nu=0.29999999999999999.
! template <typename Tp>
! void test084()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data084)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data084[i].k), Tp(data084[i].nu),
!                    Tp(data084[i].phi));
!       const Tp f0 = data084[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.099999999999999978, nu=0.40000000000000002.
! testcase_ellint_3<double> data085[] = {
!   { -0.0000000000000000, -0.099999999999999978, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17384216369897937, -0.099999999999999978, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34375018311376782, -0.099999999999999978, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.50672650758380455, -0.099999999999999978, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.66121264213337616, -0.099999999999999978, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.80706202005774441, -0.099999999999999978, 0.40000000000000002,
!           0.87266462599716477 },
!   { 0.94519376138245892, -0.099999999999999978, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.0771880300759584, -0.099999999999999978, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.2049711557188272, -0.099999999999999978, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.3306223265207477, -0.099999999999999978, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.099999999999999978, nu=0.40000000000000002.
! template <typename Tp>
! void test085()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data085)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data085[i].k), Tp(data085[i].nu),
!                    Tp(data085[i].phi));
!       const Tp f0 = data085[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.099999999999999978, nu=0.50000000000000000.
! testcase_ellint_3<double> data086[] = {
!   { -0.0000000000000000, -0.099999999999999978, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17366883711936554, -0.099999999999999978, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34244940634881876, -0.099999999999999978, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.50274793281634378, -0.099999999999999978, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.65287941633275093, -0.099999999999999978, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.79291198790315398, -0.099999999999999978, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.92412201537880345, -0.099999999999999978, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.0484480076799370, -0.099999999999999978, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.1681168130475206, -0.099999999999999978, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.2854480708580160, -0.099999999999999978, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.099999999999999978, nu=0.50000000000000000.
! template <typename Tp>
! void test086()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data086)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data086[i].k), Tp(data086[i].nu),
!                    Tp(data086[i].phi));
!       const Tp f0 = data086[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.099999999999999978, nu=0.59999999999999998.
! testcase_ellint_3<double> data087[] = {
!   { -0.0000000000000000, -0.099999999999999978, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17349612891469018, -0.099999999999999978, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34116594505539438, -0.099999999999999978, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.49887649430466685, -0.099999999999999978, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.64489553282165157, -0.099999999999999978, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.77956016553782437, -0.099999999999999978, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.90451074530096309, -0.099999999999999978, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.0220113666961632, -0.099999999999999978, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.1345351441065563, -0.099999999999999978, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.2445798942989255, -0.099999999999999978, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.099999999999999978, nu=0.59999999999999998.
! template <typename Tp>
! void test087()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data087)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data087[i].k), Tp(data087[i].nu),
!                    Tp(data087[i].phi));
!       const Tp f0 = data087[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.099999999999999978, nu=0.69999999999999996.
! testcase_ellint_3<double> data088[] = {
!   { -0.0000000000000000, -0.099999999999999978, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17332403516105052, -0.099999999999999978, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.33989939374896877, -0.099999999999999978, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.49510719568614081, -0.099999999999999978, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.63723607776354974, -0.099999999999999978, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.76693133887935327, -0.099999999999999978, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.88619382078823827, -0.099999999999999978, 0.69999999999999996,
!           1.0471975511965976 },
!   { 0.99758012018676490, -0.099999999999999978, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.1037642270814410, -0.099999999999999978, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.2073745911083187, -0.099999999999999978, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.099999999999999978, nu=0.69999999999999996.
! template <typename Tp>
! void test088()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data088)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data088[i].k), Tp(data088[i].nu),
!                    Tp(data088[i].phi));
!       const Tp f0 = data088[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.099999999999999978, nu=0.80000000000000004.
! testcase_ellint_3<double> data089[] = {
!   { -0.0000000000000000, -0.099999999999999978, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17315255197057020, -0.099999999999999978, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.33864936055747985, -0.099999999999999978, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.49143537041117619, -0.099999999999999978, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.62987861760047492, -0.099999999999999978, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.75496005490917517, -0.099999999999999978, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.86903081862701903, -0.099999999999999978, 0.80000000000000004,
!           1.0471975511965976 },
!   { 0.97490814820725591, -0.099999999999999978, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.0754290107171083, -0.099999999999999978, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.1733158866987732, -0.099999999999999978, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.099999999999999978, nu=0.80000000000000004.
! template <typename Tp>
! void test089()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data089)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data089[i].k), Tp(data089[i].nu),
!                    Tp(data089[i].phi));
!       const Tp f0 = data089[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=-0.099999999999999978, nu=0.90000000000000002.
! testcase_ellint_3<double> data090[] = {
!   { -0.0000000000000000, -0.099999999999999978, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17298167549096569, -0.099999999999999978, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.33741546662741584, -0.099999999999999978, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.48785665376856879, -0.099999999999999978, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.62280288554518959, -0.099999999999999978, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.74358903115455199, -0.099999999999999978, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.85290207679298358, -0.099999999999999978, 0.90000000000000002,
!           1.0471975511965976 },
!   { 0.95379006645397379, -0.099999999999999978, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.0492213119872327, -0.099999999999999978, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.1419839485283374, -0.099999999999999978, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=-0.099999999999999978, nu=0.90000000000000002.
! template <typename Tp>
! void test090()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data090)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data090[i].k), Tp(data090[i].nu),
!                    Tp(data090[i].phi));
!       const Tp f0 = data090[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.0000000000000000, nu=0.0000000000000000.
! testcase_ellint_3<double> data091[] = {
!   { -0.0000000000000000, 0.0000000000000000, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17453292519943295, 0.0000000000000000, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.34906585039886584, 0.0000000000000000, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.52359877559829882, 0.0000000000000000, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.69813170079773179, 0.0000000000000000, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.87266462599716477, 0.0000000000000000, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.0471975511965976, 0.0000000000000000, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.2217304763960304, 0.0000000000000000, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.3962634015954631, 0.0000000000000000, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.0000000000000000, nu=0.0000000000000000.
! template <typename Tp>
! void test091()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data091)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data091[i].k), Tp(data091[i].nu),
!                    Tp(data091[i].phi));
!       const Tp f0 = data091[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.0000000000000000, nu=0.10000000000000001.
! testcase_ellint_3<double> data092[] = {
!   { -0.0000000000000000, 0.0000000000000000, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17435710107516608, 0.0000000000000000, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.34769194715329604, 0.0000000000000000, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.51913731575866118, 0.0000000000000000, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.68810051897078461, 0.0000000000000000, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.85432615661706823, 0.0000000000000000, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.0179006647340796, 0.0000000000000000, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.1792120640746322, 0.0000000000000000, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.3388834245070498, 0.0000000000000000, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.4976955329233277, 0.0000000000000000, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.0000000000000000, nu=0.10000000000000001.
! template <typename Tp>
! void test092()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data092)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data092[i].k), Tp(data092[i].nu),
!                    Tp(data092[i].phi));
!       const Tp f0 = data092[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.0000000000000000, nu=0.20000000000000001.
! testcase_ellint_3<double> data093[] = {
!   { -0.0000000000000000, 0.0000000000000000, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17418191132226077, 0.0000000000000000, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34633712256943405, 0.0000000000000000, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.51480684302043711, 0.0000000000000000, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.67855102942481949, 0.0000000000000000, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.83723056090326253, 0.0000000000000000, 0.20000000000000001,
!           0.87266462599716477 },
!   { 0.99114645269578183, 0.0000000000000000, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.1411014627915537, 0.0000000000000000, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.2882448138013969, 0.0000000000000000, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.4339343023863691, 0.0000000000000000, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.0000000000000000, nu=0.20000000000000001.
! template <typename Tp>
! void test093()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data093)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data093[i].k), Tp(data093[i].nu),
!                    Tp(data093[i].phi));
!       const Tp f0 = data093[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.0000000000000000, nu=0.29999999999999999.
! testcase_ellint_3<double> data094[] = {
!   { -0.0000000000000000, 0.0000000000000000, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17400735186871727, 0.0000000000000000, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34500091027020219, 0.0000000000000000, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.51060069523901541, 0.0000000000000000, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.66944393961375459, 0.0000000000000000, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.82123776744538157, 0.0000000000000000, 0.29999999999999999,
!           0.87266462599716477 },
!   { 0.96657579245516523, 0.0000000000000000, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.1066703663542414, 0.0000000000000000, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.2431094251944901, 0.0000000000000000, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.3776795151134889, 0.0000000000000000, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.0000000000000000, nu=0.29999999999999999.
! template <typename Tp>
! void test094()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data094)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data094[i].k), Tp(data094[i].nu),
!                    Tp(data094[i].phi));
!       const Tp f0 = data094[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.0000000000000000, nu=0.40000000000000002.
! testcase_ellint_3<double> data095[] = {
!   { -0.0000000000000000, 0.0000000000000000, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17383341868035865, 0.0000000000000000, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34368286022299821, 0.0000000000000000, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.50651268947499406, 0.0000000000000000, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.66074441806097550, 0.0000000000000000, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.80622931670113485, 0.0000000000000000, 0.40000000000000002,
!           0.87266462599716477 },
!   { 0.94389791565435233, 0.0000000000000000, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.0753503387899728, 0.0000000000000000, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.2025374759127518, 0.0000000000000000, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.3275651989026322, 0.0000000000000000, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.0000000000000000, nu=0.40000000000000002.
! template <typename Tp>
! void test095()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data095)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data095[i].k), Tp(data095[i].nu),
!                    Tp(data095[i].phi));
!       const Tp f0 = data095[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.0000000000000000, nu=0.50000000000000000.
! testcase_ellint_3<double> data096[] = {
!   { -0.0000000000000000, 0.0000000000000000, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17366010776037047, 0.0000000000000000, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34238253799539309, 0.0000000000000000, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.50253707775976408, 0.0000000000000000, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.65242145347295766, 0.0000000000000000, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.79210420018698058, 0.0000000000000000, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.92287437995632193, 0.0000000000000000, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.0466900550798661, 0.0000000000000000, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.1658007366618623, 0.0000000000000000, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.2825498301618641, 0.0000000000000000, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.0000000000000000, nu=0.50000000000000000.
! template <typename Tp>
! void test096()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data096)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data096[i].k), Tp(data096[i].nu),
!                    Tp(data096[i].phi));
!       const Tp f0 = data096[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.0000000000000000, nu=0.59999999999999998.
! testcase_ellint_3<double> data097[] = {
!   { -0.0000000000000000, 0.0000000000000000, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17348741514884702, 0.0000000000000000, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34109952405241289, 0.0000000000000000, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.49866850781226296, 0.0000000000000000, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.64444732407062510, 0.0000000000000000, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.77877564686544720, 0.0000000000000000, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.90330743691883497, 0.0000000000000000, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.0203257987604104, 0.0000000000000000, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.1323247918768631, 0.0000000000000000, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.2418235332245127, 0.0000000000000000, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.0000000000000000, nu=0.59999999999999998.
! template <typename Tp>
! void test097()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data097)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data097[i].k), Tp(data097[i].nu),
!                    Tp(data097[i].phi));
!       const Tp f0 = data097[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.0000000000000000, nu=0.69999999999999996.
! testcase_ellint_3<double> data098[] = {
!   { -0.0000000000000000, 0.0000000000000000, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17331533692234477, 0.0000000000000000, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.33983341309265941, 0.0000000000000000, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.49490198805931990, 0.0000000000000000, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.63679715525145308, 0.0000000000000000, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.76616861049481944, 0.0000000000000000, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.88503143209004220, 0.0000000000000000, 0.69999999999999996,
!           1.0471975511965976 },
!   { 0.99596060249112173, 0.0000000000000000, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.1016495050260424, 0.0000000000000000, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.2047457872617382, 0.0000000000000000, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.0000000000000000, nu=0.69999999999999996.
! template <typename Tp>
! void test098()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data098)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data098[i].k), Tp(data098[i].nu),
!                    Tp(data098[i].phi));
!       const Tp f0 = data098[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.0000000000000000, nu=0.80000000000000004.
! testcase_ellint_3<double> data099[] = {
!   { -0.0000000000000000, 0.0000000000000000, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17314386919344213, 0.0000000000000000, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.33858381342073240, 0.0000000000000000, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.49123285640844738, 0.0000000000000000, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.62944854858904520, 0.0000000000000000, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.75421778305499343, 0.0000000000000000, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.86790634112156639, 0.0000000000000000, 0.80000000000000004,
!           1.0471975511965976 },
!   { 0.97334918087427558, 0.0000000000000000, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.0734012615283985, 0.0000000000000000, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.1708024551734544, 0.0000000000000000, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.0000000000000000, nu=0.80000000000000004.
! template <typename Tp>
! void test099()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data099)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data099[i].k), Tp(data099[i].nu),
!                    Tp(data099[i].phi));
!       const Tp f0 = data099[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.0000000000000000, nu=0.90000000000000002.
! testcase_ellint_3<double> data100[] = {
!   { -0.0000000000000000, 0.0000000000000000, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17297300811030600, 0.0000000000000000, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.33735034635360817, 0.0000000000000000, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.48765675230233141, 0.0000000000000000, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.62238126886123568, 0.0000000000000000, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.74286600807269243, 0.0000000000000000, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.85181283909264971, 0.0000000000000000, 0.90000000000000002,
!           1.0471975511965976 },
!   { 0.95228683995371122, 0.0000000000000000, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.0472730487412552, 0.0000000000000000, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.1395754288497419, 0.0000000000000000, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.0000000000000000, nu=0.90000000000000002.
! template <typename Tp>
! void test100()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data100)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data100[i].k), Tp(data100[i].nu),
!                    Tp(data100[i].phi));
!       const Tp f0 = data100[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.10000000000000009, nu=0.0000000000000000.
! testcase_ellint_3<double> data101[] = {
!   { -0.0000000000000000, 0.10000000000000009, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17454173353063665, 0.10000000000000009, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.34913506721468085, 0.10000000000000009, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.52382550016538953, 0.10000000000000009, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.69864700854177031, 0.10000000000000009, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.87361792586964870, 0.10000000000000009, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.0487386319621685, 0.10000000000000009, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.2239913752078757, 0.10000000000000009, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.3993423113684049, 0.10000000000000009, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.5747455615173562, 0.10000000000000009, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.10000000000000009, nu=0.0000000000000000.
! template <typename Tp>
! void test101()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data101)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data101[i].k), Tp(data101[i].nu),
!                    Tp(data101[i].phi));
!       const Tp f0 = data101[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.10000000000000009, nu=0.10000000000000001.
! testcase_ellint_3<double> data102[] = {
!   { -0.0000000000000000, 0.10000000000000009, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17436589347616618, 0.10000000000000009, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.34776067871237354, 0.10000000000000009, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.51936064354727807, 0.10000000000000009, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.68860303749364360, 0.10000000000000009, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.85524561882332051, 0.10000000000000009, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.0193708301908337, 0.10000000000000009, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.1813474067123044, 0.10000000000000009, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.3417670770424983, 0.10000000000000009, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.5013711111199950, 0.10000000000000009, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.10000000000000009, nu=0.10000000000000001.
! template <typename Tp>
! void test102()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data102)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data102[i].k), Tp(data102[i].nu),
!                    Tp(data102[i].phi));
!       const Tp f0 = data102[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.10000000000000009, nu=0.20000000000000001.
! testcase_ellint_3<double> data103[] = {
!   { -0.0000000000000000, 0.10000000000000009, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17419068786141345, 0.10000000000000009, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34640537686230127, 0.10000000000000009, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.51502689171753957, 0.10000000000000009, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.67904147863672726, 0.10000000000000009, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.83811885126105179, 0.10000000000000009, 0.20000000000000001,
!           0.87266462599716477 },
!   { 0.99255278555742810, 0.10000000000000009, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.1431260546194930, 0.10000000000000009, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.2909589656532101, 0.10000000000000009, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.4373749386463430, 0.10000000000000009, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.10000000000000009, nu=0.20000000000000001.
! template <typename Tp>
! void test103()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data103)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data103[i].k), Tp(data103[i].nu),
!                    Tp(data103[i].phi));
!       const Tp f0 = data103[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.10000000000000009, nu=0.29999999999999999.
! testcase_ellint_3<double> data104[] = {
!   { -0.0000000000000000, 0.10000000000000009, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17401611261390110, 0.10000000000000009, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34506869507511767, 0.10000000000000009, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.51081757604259870, 0.10000000000000009, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.66992297597712303, 0.10000000000000009, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.82209722856174228, 0.10000000000000009, 0.29999999999999999,
!           0.87266462599716477 },
!   { 0.96792430487669612, 0.10000000000000009, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.1085964108954092, 0.10000000000000009, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.2456748370836999, 0.10000000000000009, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.3809159606704959, 0.10000000000000009, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.10000000000000009, nu=0.29999999999999999.
! template <typename Tp>
! void test104()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data104)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data104[i].k), Tp(data104[i].nu),
!                    Tp(data104[i].phi));
!       const Tp f0 = data104[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.10000000000000009, nu=0.40000000000000002.
! testcase_ellint_3<double> data105[] = {
!   { -0.0000000000000000, 0.10000000000000009, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17384216369897937, 0.10000000000000009, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34375018311376782, 0.10000000000000009, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.50672650758380455, 0.10000000000000009, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.66121264213337616, 0.10000000000000009, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.80706202005774441, 0.10000000000000009, 0.40000000000000002,
!           0.87266462599716477 },
!   { 0.94519376138245892, 0.10000000000000009, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.0771880300759584, 0.10000000000000009, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.2049711557188272, 0.10000000000000009, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.3306223265207477, 0.10000000000000009, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.10000000000000009, nu=0.40000000000000002.
! template <typename Tp>
! void test105()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data105)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data105[i].k), Tp(data105[i].nu),
!                    Tp(data105[i].phi));
!       const Tp f0 = data105[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.10000000000000009, nu=0.50000000000000000.
! testcase_ellint_3<double> data106[] = {
!   { -0.0000000000000000, 0.10000000000000009, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17366883711936554, 0.10000000000000009, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34244940634881876, 0.10000000000000009, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.50274793281634378, 0.10000000000000009, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.65287941633275093, 0.10000000000000009, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.79291198790315398, 0.10000000000000009, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.92412201537880345, 0.10000000000000009, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.0484480076799370, 0.10000000000000009, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.1681168130475206, 0.10000000000000009, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.2854480708580160, 0.10000000000000009, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.10000000000000009, nu=0.50000000000000000.
! template <typename Tp>
! void test106()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data106)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data106[i].k), Tp(data106[i].nu),
!                    Tp(data106[i].phi));
!       const Tp f0 = data106[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.10000000000000009, nu=0.59999999999999998.
! testcase_ellint_3<double> data107[] = {
!   { -0.0000000000000000, 0.10000000000000009, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17349612891469018, 0.10000000000000009, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34116594505539438, 0.10000000000000009, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.49887649430466685, 0.10000000000000009, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.64489553282165157, 0.10000000000000009, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.77956016553782437, 0.10000000000000009, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.90451074530096309, 0.10000000000000009, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.0220113666961632, 0.10000000000000009, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.1345351441065563, 0.10000000000000009, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.2445798942989255, 0.10000000000000009, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.10000000000000009, nu=0.59999999999999998.
! template <typename Tp>
! void test107()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data107)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data107[i].k), Tp(data107[i].nu),
!                    Tp(data107[i].phi));
!       const Tp f0 = data107[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.10000000000000009, nu=0.69999999999999996.
! testcase_ellint_3<double> data108[] = {
!   { -0.0000000000000000, 0.10000000000000009, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17332403516105052, 0.10000000000000009, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.33989939374896877, 0.10000000000000009, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.49510719568614081, 0.10000000000000009, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.63723607776354974, 0.10000000000000009, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.76693133887935327, 0.10000000000000009, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.88619382078823827, 0.10000000000000009, 0.69999999999999996,
!           1.0471975511965976 },
!   { 0.99758012018676490, 0.10000000000000009, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.1037642270814410, 0.10000000000000009, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.2073745911083187, 0.10000000000000009, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.10000000000000009, nu=0.69999999999999996.
! template <typename Tp>
! void test108()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data108)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data108[i].k), Tp(data108[i].nu),
!                    Tp(data108[i].phi));
!       const Tp f0 = data108[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.10000000000000009, nu=0.80000000000000004.
! testcase_ellint_3<double> data109[] = {
!   { -0.0000000000000000, 0.10000000000000009, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17315255197057020, 0.10000000000000009, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.33864936055747985, 0.10000000000000009, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.49143537041117619, 0.10000000000000009, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.62987861760047492, 0.10000000000000009, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.75496005490917517, 0.10000000000000009, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.86903081862701903, 0.10000000000000009, 0.80000000000000004,
!           1.0471975511965976 },
!   { 0.97490814820725591, 0.10000000000000009, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.0754290107171083, 0.10000000000000009, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.1733158866987732, 0.10000000000000009, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.10000000000000009, nu=0.80000000000000004.
! template <typename Tp>
! void test109()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data109)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data109[i].k), Tp(data109[i].nu),
!                    Tp(data109[i].phi));
!       const Tp f0 = data109[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.10000000000000009, nu=0.90000000000000002.
! testcase_ellint_3<double> data110[] = {
!   { -0.0000000000000000, 0.10000000000000009, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17298167549096569, 0.10000000000000009, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.33741546662741584, 0.10000000000000009, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.48785665376856879, 0.10000000000000009, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.62280288554518959, 0.10000000000000009, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.74358903115455199, 0.10000000000000009, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.85290207679298358, 0.10000000000000009, 0.90000000000000002,
!           1.0471975511965976 },
!   { 0.95379006645397379, 0.10000000000000009, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.0492213119872327, 0.10000000000000009, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.1419839485283374, 0.10000000000000009, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.10000000000000009, nu=0.90000000000000002.
! template <typename Tp>
! void test110()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data110)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data110[i].k), Tp(data110[i].nu),
!                    Tp(data110[i].phi));
!       const Tp f0 = data110[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.19999999999999996, nu=0.0000000000000000.
! testcase_ellint_3<double> data111[] = {
!   { -0.0000000000000000, 0.19999999999999996, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17456817290292811, 0.19999999999999996, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.34934315932086801, 0.19999999999999996, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.52450880529443988, 0.19999999999999996, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.70020491009844910, 0.19999999999999996, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.87651006649967955, 0.19999999999999996, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.0534305870298994, 0.19999999999999996, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.2308975521670784, 0.19999999999999996, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.4087733584990738, 0.19999999999999996, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.5868678474541664, 0.19999999999999996, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.19999999999999996, nu=0.0000000000000000.
! template <typename Tp>
! void test111()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data111)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data111[i].k), Tp(data111[i].nu),
!                    Tp(data111[i].phi));
!       const Tp f0 = data111[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.19999999999999996, nu=0.10000000000000001.
! testcase_ellint_3<double> data112[] = {
!   { -0.0000000000000000, 0.19999999999999996, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17439228502691750, 0.19999999999999996, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.34796731137565740, 0.19999999999999996, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.52003370294544848, 0.19999999999999996, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.69012222258631495, 0.19999999999999996, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.85803491465566772, 0.19999999999999996, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.0238463961099364, 0.19999999999999996, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.1878691059202153, 0.19999999999999996, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.3505985031831940, 0.19999999999999996, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.5126513474261092, 0.19999999999999996, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.19999999999999996, nu=0.10000000000000001.
! template <typename Tp>
! void test112()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data112)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data112[i].k), Tp(data112[i].nu),
!                    Tp(data112[i].phi));
!       const Tp f0 = data112[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.19999999999999996, nu=0.20000000000000001.
! testcase_ellint_3<double> data113[] = {
!   { -0.0000000000000000, 0.19999999999999996, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17421703179583750, 0.19999999999999996, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34661057411998791, 0.19999999999999996, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.51569006052647393, 0.19999999999999996, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.68052412821107278, 0.19999999999999996, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.84081341263313825, 0.19999999999999996, 0.20000000000000001,
!           0.87266462599716477 },
!   { 0.99683359988842890, 0.19999999999999996, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.1493086715118852, 0.19999999999999996, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.2992699693957541, 0.19999999999999996, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.4479323932249568, 0.19999999999999996, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.19999999999999996, nu=0.20000000000000001.
! template <typename Tp>
! void test113()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data113)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data113[i].k), Tp(data113[i].nu),
!                    Tp(data113[i].phi));
!       const Tp f0 = data113[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.19999999999999996, nu=0.29999999999999999.
! testcase_ellint_3<double> data114[] = {
!   { -0.0000000000000000, 0.19999999999999996, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17404240913577707, 0.19999999999999996, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34527248032587193, 0.19999999999999996, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.51147118981668416, 0.19999999999999996, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.67137107867777635, 0.19999999999999996, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.82470418188668893, 0.19999999999999996, 0.29999999999999999,
!           0.87266462599716477 },
!   { 0.97202873223594299, 0.19999999999999996, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.1144773569375266, 0.19999999999999996, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.2535292433701000, 0.19999999999999996, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.3908453514752481, 0.19999999999999996, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.19999999999999996, nu=0.29999999999999999.
! template <typename Tp>
! void test114()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data114)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data114[i].k), Tp(data114[i].nu),
!                    Tp(data114[i].phi));
!       const Tp f0 = data114[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.19999999999999996, nu=0.40000000000000002.
! testcase_ellint_3<double> data115[] = {
!   { -0.0000000000000000, 0.19999999999999996, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17386841301066677, 0.19999999999999996, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34395257914113253, 0.19999999999999996, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.50737088376869466, 0.19999999999999996, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.66262801717277664, 0.19999999999999996, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.80958766645079094, 0.19999999999999996, 0.40000000000000002,
!           0.87266462599716477 },
!   { 0.94913754236162040, 0.19999999999999996, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.0827985514223000, 0.19999999999999996, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.2124212429050478, 0.19999999999999996, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.3400002519661010, 0.19999999999999996, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.19999999999999996, nu=0.40000000000000002.
! template <typename Tp>
! void test115()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data115)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data115[i].k), Tp(data115[i].nu),
!                    Tp(data115[i].phi));
!       const Tp f0 = data115[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.19999999999999996, nu=0.50000000000000000.
! testcase_ellint_3<double> data116[] = {
!   { -0.0000000000000000, 0.19999999999999996, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17369503942181802, 0.19999999999999996, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34265043534362660, 0.19999999999999996, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.50338337208655415, 0.19999999999999996, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.65426373297163642, 0.19999999999999996, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.79536193036145808, 0.19999999999999996, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.92791875910061605, 0.19999999999999996, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.0538145052725829, 0.19999999999999996, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.1752060022875899, 0.19999999999999996, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.2943374404397376, 0.19999999999999996, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.19999999999999996, nu=0.50000000000000000.
! template <typename Tp>
! void test116()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data116)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data116[i].k), Tp(data116[i].nu),
!                    Tp(data116[i].phi));
!       const Tp f0 = data116[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.19999999999999996, nu=0.59999999999999998.
! testcase_ellint_3<double> data117[] = {
!   { -0.0000000000000000, 0.19999999999999996, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17352228440746928, 0.19999999999999996, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34136562863713626, 0.19999999999999996, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.49950328177638481, 0.19999999999999996, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.64625032705690832, 0.19999999999999996, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.78193941198403094, 0.19999999999999996, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.90817230934317128, 0.19999999999999996, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.0271563751276462, 0.19999999999999996, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.1412999379040518, 0.19999999999999996, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.2530330675914561, 0.19999999999999996, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.19999999999999996, nu=0.59999999999999998.
! template <typename Tp>
! void test117()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data117)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data117[i].k), Tp(data117[i].nu),
!                    Tp(data117[i].phi));
!       const Tp f0 = data117[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.19999999999999996, nu=0.69999999999999996.
! testcase_ellint_3<double> data118[] = {
!   { -0.0000000000000000, 0.19999999999999996, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17335014404233898, 0.19999999999999996, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34009775298617811, 0.19999999999999996, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.49572560201923810, 0.19999999999999996, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.63856276669886525, 0.19999999999999996, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.76924438644867565, 0.19999999999999996, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.88973060843856466, 0.19999999999999996, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.0025230471636377, 0.19999999999999996, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.1102356376093103, 0.19999999999999996, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.2154356555075867, 0.19999999999999996, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.19999999999999996, nu=0.69999999999999996.
! template <typename Tp>
! void test118()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data118)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data118[i].k), Tp(data118[i].nu),
!                    Tp(data118[i].phi));
!       const Tp f0 = data118[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.19999999999999996, nu=0.80000000000000004.
! testcase_ellint_3<double> data119[] = {
!   { -0.0000000000000000, 0.19999999999999996, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17317861443718541, 0.19999999999999996, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.33884641598718701, 0.19999999999999996, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.49204565281259494, 0.19999999999999996, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.63117851188220353, 0.19999999999999996, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.75721095949544170, 0.19999999999999996, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.87245201443919118, 0.19999999999999996, 0.80000000000000004,
!           1.0471975511965976 },
!   { 0.97966584238831089, 0.19999999999999996, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.0816336325174360, 0.19999999999999996, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.1810223448909913, 0.19999999999999996, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.19999999999999996, nu=0.80000000000000004.
! template <typename Tp>
! void test119()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data119)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data119[i].k), Tp(data119[i].nu),
!                    Tp(data119[i].phi));
!       const Tp f0 = data119[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.19999999999999996, nu=0.90000000000000002.
! testcase_ellint_3<double> data120[] = {
!   { -0.0000000000000000, 0.19999999999999996, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17300769173837280, 0.19999999999999996, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.33761123827372508, 0.19999999999999996, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.48845905690769426, 0.19999999999999996, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.62407720017324986, 0.19999999999999996, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.74578146525124289, 0.19999999999999996, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.85621583540073076, 0.19999999999999996, 0.90000000000000002,
!           1.0471975511965976 },
!   { 0.95837725988001199, 0.19999999999999996, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.0551821412633928, 0.19999999999999996, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.1493679916141863, 0.19999999999999996, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.19999999999999996, nu=0.90000000000000002.
! template <typename Tp>
! void test120()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data120)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data120[i].k), Tp(data120[i].nu),
!                    Tp(data120[i].phi));
!       const Tp f0 = data120[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.30000000000000004, nu=0.0000000000000000.
! testcase_ellint_3<double> data121[] = {
!   { -0.0000000000000000, 0.30000000000000004, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17461228653000102, 0.30000000000000004, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.34969146102798415, 0.30000000000000004, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.52565822873726320, 0.30000000000000004, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.70284226512408532, 0.30000000000000004, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.88144139195111182, 0.30000000000000004, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.0614897067260523, 0.30000000000000004, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.2428416824174218, 0.30000000000000004, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.4251795877015925, 0.30000000000000004, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.6080486199305126, 0.30000000000000004, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.30000000000000004, nu=0.0000000000000000.
! template <typename Tp>
! void test121()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data121)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data121[i].k), Tp(data121[i].nu),
!                    Tp(data121[i].phi));
!       const Tp f0 = data121[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.30000000000000004, nu=0.10000000000000001.
! testcase_ellint_3<double> data122[] = {
!   { -0.0000000000000000, 0.30000000000000004, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17443631884814378, 0.30000000000000004, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.34831316835124926, 0.30000000000000004, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.52116586276523857, 0.30000000000000004, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.69269385837910036, 0.30000000000000004, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.86279023163070856, 0.30000000000000004, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.0315321461438265, 0.30000000000000004, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.1991449111869024, 0.30000000000000004, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.3659561780923211, 0.30000000000000004, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.5323534693557526, 0.30000000000000004, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.30000000000000004, nu=0.10000000000000001.
! template <typename Tp>
! void test122()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data122)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data122[i].k), Tp(data122[i].nu),
!                    Tp(data122[i].phi));
!       const Tp f0 = data122[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.30000000000000004, nu=0.20000000000000001.
! testcase_ellint_3<double> data123[] = {
!   { -0.0000000000000000, 0.30000000000000004, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17426098615372090, 0.30000000000000004, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34695402664689923, 0.30000000000000004, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.51680555567038933, 0.30000000000000004, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.68303375225260210, 0.30000000000000004, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.84540662891295026, 0.30000000000000004, 0.20000000000000001,
!           0.87266462599716477 },
!   { 1.0041834051646927, 0.30000000000000004, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.1599952702345711, 0.30000000000000004, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.3137179520499163, 0.30000000000000004, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.4663658145259875, 0.30000000000000004, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.30000000000000004, nu=0.20000000000000001.
! template <typename Tp>
! void test123()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data123)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data123[i].k), Tp(data123[i].nu),
!                    Tp(data123[i].phi));
!       const Tp f0 = data123[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.30000000000000004, nu=0.29999999999999999.
! testcase_ellint_3<double> data124[] = {
!   { -0.0000000000000000, 0.30000000000000004, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17408628437042845, 0.30000000000000004, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34561356761638401, 0.30000000000000004, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.51257058617875850, 0.30000000000000004, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.67382207124602866, 0.30000000000000004, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.82914751587825131, 0.30000000000000004, 0.29999999999999999,
!           0.87266462599716477 },
!   { 0.97907434814374950, 0.30000000000000004, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.1246399297351584, 0.30000000000000004, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.2671793970398146, 0.30000000000000004, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.4081767433479089, 0.30000000000000004, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.30000000000000004, nu=0.29999999999999999.
! template <typename Tp>
! void test124()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data124)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data124[i].k), Tp(data124[i].nu),
!                    Tp(data124[i].phi));
!       const Tp f0 = data124[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.30000000000000004, nu=0.40000000000000002.
! testcase_ellint_3<double> data125[] = {
!   { -0.0000000000000000, 0.30000000000000004, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17391220945982730, 0.30000000000000004, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34429133937639689, 0.30000000000000004, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.50845471668581632, 0.30000000000000004, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.66502347027873854, 0.30000000000000004, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.81389191978012254, 0.30000000000000004, 0.40000000000000002,
!           0.87266462599716477 },
!   { 0.95590618002140593, 0.30000000000000004, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.0924915195213121, 0.30000000000000004, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.2253651604038058, 0.30000000000000004, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.3563643538969761, 0.30000000000000004, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.30000000000000004, nu=0.40000000000000002.
! template <typename Tp>
! void test125()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data125)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data125[i].k), Tp(data125[i].nu),
!                    Tp(data125[i].phi));
!       const Tp f0 = data125[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.30000000000000004, nu=0.50000000000000000.
! testcase_ellint_3<double> data126[] = {
!   { -0.0000000000000000, 0.30000000000000004, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17373875742088235, 0.30000000000000004, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34298690571124157, 0.30000000000000004, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.50445214859646936, 0.30000000000000004, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.65660648352418516, 0.30000000000000004, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.79953670639287289, 0.30000000000000004, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.93443393926588558, 0.30000000000000004, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.0630838369016911, 0.30000000000000004, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.1875197325653026, 0.30000000000000004, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.3098448759814960, 0.30000000000000004, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.30000000000000004, nu=0.50000000000000000.
! template <typename Tp>
! void test126()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data126)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data126[i].k), Tp(data126[i].nu),
!                    Tp(data126[i].phi));
!       const Tp f0 = data126[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.30000000000000004, nu=0.59999999999999998.
! testcase_ellint_3<double> data127[] = {
!   { -0.0000000000000000, 0.30000000000000004, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17356592428950826, 0.30000000000000004, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34169984536697379, 0.30000000000000004, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.50055748266498457, 0.30000000000000004, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.64854298527106768, 0.30000000000000004, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.78599329284207431, 0.30000000000000004, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.91445452089128221, 0.30000000000000004, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.0360412952290587, 0.30000000000000004, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.1530473919778639, 0.30000000000000004, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.2677758800420666, 0.30000000000000004, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.30000000000000004, nu=0.59999999999999998.
! template <typename Tp>
! void test127()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data127)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data127[i].k), Tp(data127[i].nu),
!                    Tp(data127[i].phi));
!       const Tp f0 = data127[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.30000000000000004, nu=0.69999999999999996.
! testcase_ellint_3<double> data128[] = {
!   { -0.0000000000000000, 0.30000000000000004, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17339370613812227, 0.30000000000000004, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34042975138455933, 0.30000000000000004, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.49676568368075985, 0.30000000000000004, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.64080774055753720, 0.30000000000000004, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.77318507779667278, 0.30000000000000004, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.89579782346548631, 0.30000000000000004, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.0110573286052202, 0.30000000000000004, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.1214710972949633, 0.30000000000000004, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.2294913236274980, 0.30000000000000004, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.30000000000000004, nu=0.69999999999999996.
! template <typename Tp>
! void test128()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data128)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data128[i].k), Tp(data128[i].nu),
!                    Tp(data128[i].phi));
!       const Tp f0 = data128[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.30000000000000004, nu=0.80000000000000004.
! testcase_ellint_3<double> data129[] = {
!   { -0.0000000000000000, 0.30000000000000004, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17322209907520361, 0.30000000000000004, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.33917623046949996, 0.30000000000000004, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.49307204894329176, 0.30000000000000004, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.63337802830291723, 0.30000000000000004, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.76104540997689407, 0.30000000000000004, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.87832009635450736, 0.30000000000000004, 0.80000000000000004,
!           1.0471975511965976 },
!   { 0.98787879723171790, 0.30000000000000004, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.0924036340069336, 0.30000000000000004, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.1944567571590046, 0.30000000000000004, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.30000000000000004, nu=0.80000000000000004.
! template <typename Tp>
! void test129()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data129)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data129[i].k), Tp(data129[i].nu),
!                    Tp(data129[i].phi));
!       const Tp f0 = data129[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.30000000000000004, nu=0.90000000000000002.
! testcase_ellint_3<double> data130[] = {
!   { -0.0000000000000000, 0.30000000000000004, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17305109924485948, 0.30000000000000004, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.33793890239556984, 0.30000000000000004, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.48947218005089738, 0.30000000000000004, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.62623332340775151, 0.30000000000000004, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.74951596581511148, 0.30000000000000004, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.86189886597756005, 0.30000000000000004, 0.90000000000000002,
!           1.0471975511965976 },
!   { 0.96629451153092005, 0.30000000000000004, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.0655269133492680, 0.30000000000000004, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.1622376896064912, 0.30000000000000004, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.30000000000000004, nu=0.90000000000000002.
! template <typename Tp>
! void test130()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data130)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data130[i].k), Tp(data130[i].nu),
!                    Tp(data130[i].phi));
!       const Tp f0 = data130[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.39999999999999991, nu=0.0000000000000000.
! testcase_ellint_3<double> data131[] = {
!   { -0.0000000000000000, 0.39999999999999991, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17467414669441531, 0.39999999999999991, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.35018222772483443, 0.39999999999999991, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.52729015917508748, 0.39999999999999991, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.70662374407341255, 0.39999999999999991, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.88859210497602170, 0.39999999999999991, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.0733136290471379, 0.39999999999999991, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.2605612170157061, 0.39999999999999991, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.4497513956433437, 0.39999999999999991, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.6399998658645112, 0.39999999999999991, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.39999999999999991, nu=0.0000000000000000.
! template <typename Tp>
! void test131()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data131)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data131[i].k), Tp(data131[i].nu),
!                    Tp(data131[i].phi));
!       const Tp f0 = data131[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.39999999999999991, nu=0.10000000000000001.
! testcase_ellint_3<double> data132[] = {
!   { -0.0000000000000000, 0.39999999999999991, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17449806706684673, 0.39999999999999991, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.34880048623856075, 0.39999999999999991, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.52277322065757403, 0.39999999999999991, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.69638072056918376, 0.39999999999999991, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.86968426619831540, 0.39999999999999991, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.0428044206578095, 0.39999999999999991, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.2158651158274378, 0.39999999999999991, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.3889447129893322, 0.39999999999999991, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.5620566886683604, 0.39999999999999991, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.39999999999999991, nu=0.10000000000000001.
! template <typename Tp>
! void test132()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data132)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data132[i].k), Tp(data132[i].nu),
!                    Tp(data132[i].phi));
!       const Tp f0 = data132[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.39999999999999991, nu=0.20000000000000001.
! testcase_ellint_3<double> data133[] = {
!   { -0.0000000000000000, 0.39999999999999991, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17432262290723399, 0.39999999999999991, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34743795258968596, 0.39999999999999991, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.51838919472805123, 0.39999999999999991, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.68663134739057918, 0.39999999999999991, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.85206432981833979, 0.39999999999999991, 0.20000000000000001,
!           0.87266462599716477 },
!   { 1.0149595349004430, 0.39999999999999991, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.1758349405464676, 0.39999999999999991, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.3353337673882635, 0.39999999999999991, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.4941414344266770, 0.39999999999999991, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.39999999999999991, nu=0.20000000000000001.
! template <typename Tp>
! void test133()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data133)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data133[i].k), Tp(data133[i].nu),
!                    Tp(data133[i].phi));
!       const Tp f0 = data133[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.39999999999999991, nu=0.29999999999999999.
! testcase_ellint_3<double> data134[] = {
!   { -0.0000000000000000, 0.39999999999999991, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17414781013591543, 0.39999999999999991, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34609415696777285, 0.39999999999999991, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.51413131295862546, 0.39999999999999991, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.67733527622935630, 0.39999999999999991, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.83558675182733266, 0.39999999999999991, 0.29999999999999999,
!           0.87266462599716477 },
!   { 0.98940140808865906, 0.39999999999999991, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.1396968797728058, 0.39999999999999991, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.2875920037865087, 0.39999999999999991, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.4342789859950078, 0.39999999999999991, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.39999999999999991, nu=0.29999999999999999.
! template <typename Tp>
! void test134()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data134)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data134[i].k), Tp(data134[i].nu),
!                    Tp(data134[i].phi));
!       const Tp f0 = data134[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.39999999999999991, nu=0.40000000000000002.
! testcase_ellint_3<double> data135[] = {
!   { -0.0000000000000000, 0.39999999999999991, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17397362471112710, 0.39999999999999991, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34476864603333196, 0.39999999999999991, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.50999329415379357, 0.39999999999999991, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.66845674551396017, 0.39999999999999991, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.82012848346231748, 0.39999999999999991, 0.40000000000000002,
!           0.87266462599716477 },
!   { 0.96582449258349057, 0.39999999999999991, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.1068473749476286, 0.39999999999999991, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.2447132729159986, 0.39999999999999991, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.3809986210732901, 0.39999999999999991, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.39999999999999991, nu=0.40000000000000002.
! template <typename Tp>
! void test135()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data135)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data135[i].k), Tp(data135[i].nu),
!                    Tp(data135[i].phi));
!       const Tp f0 = data135[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.39999999999999991, nu=0.50000000000000000.
! testcase_ellint_3<double> data136[] = {
!   { -0.0000000000000000, 0.39999999999999991, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17380006262854139, 0.39999999999999991, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34346098216756610, 0.39999999999999991, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.50596929935059420, 0.39999999999999991, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.65996392089131262, 0.39999999999999991, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.80558463511364786, 0.39999999999999991, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.94397834522857704, 0.39999999999999991, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.0768075114108115, 0.39999999999999991, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.2059184624251329, 0.39999999999999991, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.3331797176377398, 0.39999999999999991, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.39999999999999991, nu=0.50000000000000000.
! template <typename Tp>
! void test136()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data136)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data136[i].k), Tp(data136[i].nu),
!                    Tp(data136[i].phi));
!       const Tp f0 = data136[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.39999999999999991, nu=0.59999999999999998.
! testcase_ellint_3<double> data137[] = {
!   { -0.0000000000000000, 0.39999999999999991, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17362711992081248, 0.39999999999999991, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34217074276403953, 0.39999999999999991, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.50205389185761617, 0.39999999999999991, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.65182834920372745, 0.39999999999999991, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.79186512820565136, 0.39999999999999991, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.92365535916287134, 0.39999999999999991, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.0491915663957907, 0.39999999999999991, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.1705934291745104, 0.39999999999999991, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.2899514672527024, 0.39999999999999991, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.39999999999999991, nu=0.59999999999999998.
! template <typename Tp>
! void test137()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data137)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data137[i].k), Tp(data137[i].nu),
!                    Tp(data137[i].phi));
!       const Tp f0 = data137[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.39999999999999991, nu=0.69999999999999996.
! testcase_ellint_3<double> data138[] = {
!   { -0.0000000000000000, 0.39999999999999991, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17345479265712871, 0.39999999999999991, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34089751955950354, 0.39999999999999991, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.49824200167361343, 0.39999999999999991, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.64402450341199413, 0.39999999999999991, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.77889207804122873, 0.39999999999999991, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.90468169720957992, 0.39999999999999991, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.0236847823692916, 0.39999999999999991, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.1382465247425164, 0.39999999999999991, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.2506255923253344, 0.39999999999999991, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.39999999999999991, nu=0.69999999999999996.
! template <typename Tp>
! void test138()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data138)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data138[i].k), Tp(data138[i].nu),
!                    Tp(data138[i].phi));
!       const Tp f0 = data138[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.39999999999999991, nu=0.80000000000000004.
! testcase_ellint_3<double> data139[] = {
!   { -0.0000000000000000, 0.39999999999999991, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17328307694277156, 0.39999999999999991, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.33964091800132007, 0.39999999999999991, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.49452889372467451, 0.39999999999999991, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.63652940095937327, 0.39999999999999991, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.76659772511159097, 0.39999999999999991, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.88691047977338111, 0.39999999999999991, 0.80000000000000004,
!           1.0471975511965976 },
!   { 1.0000273200611640, 0.39999999999999991, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.1084787902188007, 0.39999999999999991, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.2146499565727209, 0.39999999999999991, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.39999999999999991, nu=0.80000000000000004.
! template <typename Tp>
! void test139()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data139)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data139[i].k), Tp(data139[i].nu),
!                    Tp(data139[i].phi));
!       const Tp f0 = data139[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.39999999999999991, nu=0.90000000000000002.
! testcase_ellint_3<double> data140[] = {
!   { -0.0000000000000000, 0.39999999999999991, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17311196891868130, 0.39999999999999991, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.33840055664911906, 0.39999999999999991, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.49091013944075340, 0.39999999999999991, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.62932228186809591, 0.39999999999999991, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.75492278323019801, 0.39999999999999991, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.87021659043854294, 0.39999999999999991, 0.90000000000000002,
!           1.0471975511965976 },
!   { 0.97800245228239246, 0.39999999999999991, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.0809625773173694, 0.39999999999999991, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.1815758115929846, 0.39999999999999991, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.39999999999999991, nu=0.90000000000000002.
! template <typename Tp>
! void test140()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data140)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data140[i].k), Tp(data140[i].nu),
!                    Tp(data140[i].phi));
!       const Tp f0 = data140[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.50000000000000000, nu=0.0000000000000000.
! testcase_ellint_3<double> data141[] = {
!   { -0.0000000000000000, 0.50000000000000000, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17475385514035785, 0.50000000000000000, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.35081868470101585, 0.50000000000000000, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.52942862705190585, 0.50000000000000000, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.71164727562630326, 0.50000000000000000, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.89824523594227768, 0.50000000000000000, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.0895506700518851, 0.50000000000000000, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.2853005857432933, 0.50000000000000000, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.4845545520549484, 0.50000000000000000, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.6857503548125963, 0.50000000000000000, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.50000000000000000, nu=0.0000000000000000.
! template <typename Tp>
! void test141()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data141)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data141[i].k), Tp(data141[i].nu),
!                    Tp(data141[i].phi));
!       const Tp f0 = data141[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.50000000000000000, nu=0.10000000000000001.
! testcase_ellint_3<double> data142[] = {
!   { -0.0000000000000000, 0.50000000000000000, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17457763120814676, 0.50000000000000000, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.34943246340849154, 0.50000000000000000, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.52487937869610801, 0.50000000000000000, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.70127785096388395, 0.50000000000000000, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.87898815988624479, 0.50000000000000000, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.0582764576094172, 0.50000000000000000, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.2391936844060207, 0.50000000000000000, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.4214793542995841, 0.50000000000000000, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.6045524936084892, 0.50000000000000000, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.50000000000000000, nu=0.10000000000000001.
! template <typename Tp>
! void test142()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data142)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data142[i].k), Tp(data142[i].nu),
!                    Tp(data142[i].phi));
!       const Tp f0 = data142[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.50000000000000000, nu=0.20000000000000001.
! testcase_ellint_3<double> data143[] = {
!   { -0.0000000000000000, 0.50000000000000000, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17440204336345433, 0.50000000000000000, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34806552388338824, 0.50000000000000000, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.52046416757129821, 0.50000000000000000, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.69140924550993876, 0.50000000000000000, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.86104678636125520, 0.50000000000000000, 0.20000000000000001,
!           0.87266462599716477 },
!   { 1.0297439459053981, 0.50000000000000000, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.1979214112912036, 0.50000000000000000, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.3659033858648930, 0.50000000000000000, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.5338490483665983, 0.50000000000000000, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.50000000000000000, nu=0.20000000000000001.
! template <typename Tp>
! void test143()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data143)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data143[i].k), Tp(data143[i].nu),
!                    Tp(data143[i].phi));
!       const Tp f0 = data143[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.50000000000000000, nu=0.29999999999999999.
! testcase_ellint_3<double> data144[] = {
!   { -0.0000000000000000, 0.50000000000000000, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17422708752228896, 0.50000000000000000, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34671739434855858, 0.50000000000000000, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.51617616305641889, 0.50000000000000000, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.68200047612545178, 0.50000000000000000, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.84427217869498372, 0.50000000000000000, 0.29999999999999999,
!           0.87266462599716477 },
!   { 1.0035637821389782, 0.50000000000000000, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.1606800483933113, 0.50000000000000000, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.3164407134643459, 0.50000000000000000, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.4715681939859637, 0.50000000000000000, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.50000000000000000, nu=0.29999999999999999.
! template <typename Tp>
! void test144()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data144)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data144[i].k), Tp(data144[i].nu),
!                    Tp(data144[i].phi));
!       const Tp f0 = data144[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.50000000000000000, nu=0.40000000000000002.
! testcase_ellint_3<double> data145[] = {
!   { -0.0000000000000000, 0.50000000000000000, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17405275963859917, 0.50000000000000000, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34538761957029329, 0.50000000000000000, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.51200902646603919, 0.50000000000000000, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.67301522212868792, 0.50000000000000000, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.82853844466313320, 0.50000000000000000, 0.40000000000000002,
!           0.87266462599716477 },
!   { 0.97942097862681488, 0.50000000000000000, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.1268429801220616, 0.50000000000000000, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.2720406704533922, 0.50000000000000000, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.4161679518465340, 0.50000000000000000, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.50000000000000000, nu=0.40000000000000002.
! template <typename Tp>
! void test145()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data145)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data145[i].k), Tp(data145[i].nu),
!                    Tp(data145[i].phi));
!       const Tp f0 = data145[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.50000000000000000, nu=0.50000000000000000.
! testcase_ellint_3<double> data146[] = {
!   { -0.0000000000000000, 0.50000000000000000, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17387905570381157, 0.50000000000000000, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34407576010465207, 0.50000000000000000, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.50795686560160835, 0.50000000000000000, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.66442115453330175, 0.50000000000000000, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.81373829119355345, 0.50000000000000000, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.95705743313235825, 0.50000000000000000, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.0959131991362556, 0.50000000000000000, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.2318900529754597, 0.50000000000000000, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.3664739530045971, 0.50000000000000000, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.50000000000000000, nu=0.50000000000000000.
! template <typename Tp>
! void test146()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data146)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data146[i].k), Tp(data146[i].nu),
!                    Tp(data146[i].phi));
!       const Tp f0 = data146[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.50000000000000000, nu=0.59999999999999998.
! testcase_ellint_3<double> data147[] = {
!   { -0.0000000000000000, 0.50000000000000000, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17370597174637581, 0.50000000000000000, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34278139158591414, 0.50000000000000000, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.50401419439302719, 0.50000000000000000, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.65618938076167221, 0.50000000000000000, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.79977959248855424, 0.50000000000000000, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.93625925190753545, 0.50000000000000000, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.0674905658379710, 0.50000000000000000, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.1953481298023048, 0.50000000000000000, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.3215740290190876, 0.50000000000000000, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.50000000000000000, nu=0.59999999999999998.
! template <typename Tp>
! void test147()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data147)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data147[i].k), Tp(data147[i].nu),
!                    Tp(data147[i].phi));
!       const Tp f0 = data147[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.50000000000000000, nu=0.69999999999999996.
! testcase_ellint_3<double> data148[] = {
!   { -0.0000000000000000, 0.50000000000000000, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17353350383131641, 0.50000000000000000, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34150410405436771, 0.50000000000000000, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.50017589696443487, 0.50000000000000000, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.64829398188419962, 0.50000000000000000, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.78658270782402073, 0.50000000000000000, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.91684738336675053, 0.50000000000000000, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.0412486789555937, 0.50000000000000000, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.1619021847612001, 0.50000000000000000, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.2807475181182502, 0.50000000000000000, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.50000000000000000, nu=0.69999999999999996.
! template <typename Tp>
! void test148()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data148)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data148[i].k), Tp(data148[i].nu),
!                    Tp(data148[i].phi));
!       const Tp f0 = data148[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.50000000000000000, nu=0.80000000000000004.
! testcase_ellint_3<double> data149[] = {
!   { -0.0000000000000000, 0.50000000000000000, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17336164805979126, 0.50000000000000000, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.34024350132086773, 0.50000000000000000, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.49643719555734084, 0.50000000000000000, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.64071162456976150, 0.50000000000000000, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.77407836177211908, 0.50000000000000000, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.89867058251905652, 0.50000000000000000, 0.80000000000000004,
!           1.0471975511965976 },
!   { 1.0169181822134912, 0.50000000000000000, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.1311363312779448, 0.50000000000000000, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.2434165408189539, 0.50000000000000000, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.50000000000000000, nu=0.80000000000000004.
! template <typename Tp>
! void test149()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data149)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data149[i].k), Tp(data149[i].nu),
!                    Tp(data149[i].phi));
!       const Tp f0 = data149[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.50000000000000000, nu=0.90000000000000002.
! testcase_ellint_3<double> data150[] = {
!   { -0.0000000000000000, 0.50000000000000000, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17319040056865681, 0.50000000000000000, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.33899920036578557, 0.50000000000000000, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.49279362182695186, 0.50000000000000000, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.63342123379746151, 0.50000000000000000, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.76220595179550321, 0.50000000000000000, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.88160004743532294, 0.50000000000000000, 0.90000000000000002,
!           1.0471975511965976 },
!   { 0.99427448642310134, 0.50000000000000000, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.1027091512470093, 0.50000000000000000, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.2091116095504744, 0.50000000000000000, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.50000000000000000, nu=0.90000000000000002.
! template <typename Tp>
! void test150()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data150)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data150[i].k), Tp(data150[i].nu),
!                    Tp(data150[i].phi));
!       const Tp f0 = data150[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.60000000000000009, nu=0.0000000000000000.
! testcase_ellint_3<double> data151[] = {
!   { -0.0000000000000000, 0.60000000000000009, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17485154362988362, 0.60000000000000009, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.35160509865544326, 0.60000000000000009, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.53210652578446160, 0.60000000000000009, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.71805304664485670, 0.60000000000000009, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.91082759030195970, 0.60000000000000009, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.1112333229323366, 0.60000000000000009, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.3191461190365270, 0.60000000000000009, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.5332022105084775, 0.60000000000000009, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.60000000000000009, nu=0.0000000000000000.
! template <typename Tp>
! void test151()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data151)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data151[i].k), Tp(data151[i].nu),
!                    Tp(data151[i].phi));
!       const Tp f0 = data151[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.60000000000000009, nu=0.10000000000000001.
! testcase_ellint_3<double> data152[] = {
!   { -0.0000000000000000, 0.60000000000000009, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17467514275022014, 0.60000000000000009, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.35021333086258255, 0.60000000000000009, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.52751664092962713, 0.60000000000000009, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.70752126971957885, 0.60000000000000009, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.89111058756112871, 0.60000000000000009, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.0789241202877773, 0.60000000000000009, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.2710800210399946, 0.60000000000000009, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.4669060574440278, 0.60000000000000009, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.6648615773343014, 0.60000000000000009, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.60000000000000009, nu=0.10000000000000001.
! template <typename Tp>
! void test152()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data152)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data152[i].k), Tp(data152[i].nu),
!                    Tp(data152[i].phi));
!       const Tp f0 = data152[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.60000000000000009, nu=0.20000000000000001.
! testcase_ellint_3<double> data153[] = {
!   { -0.0000000000000000, 0.60000000000000009, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17449937871800653, 0.60000000000000009, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34884093647346553, 0.60000000000000009, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.52306221119844110, 0.60000000000000009, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.69749955678982223, 0.60000000000000009, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.87274610682416853, 0.60000000000000009, 0.20000000000000001,
!           0.87266462599716477 },
!   { 1.0494620540750796, 0.60000000000000009, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.2280847305507339, 0.60000000000000009, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.4085436279696888, 0.60000000000000009, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.5901418016279374, 0.60000000000000009, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.60000000000000009, nu=0.20000000000000001.
! template <typename Tp>
! void test153()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data153)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data153[i].k), Tp(data153[i].nu),
!                    Tp(data153[i].phi));
!       const Tp f0 = data153[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.60000000000000009, nu=0.29999999999999999.
! testcase_ellint_3<double> data154[] = {
!   { -0.0000000000000000, 0.60000000000000009, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17432424744393935, 0.60000000000000009, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34748744127146447, 0.60000000000000009, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.51873632743924847, 0.60000000000000009, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.68794610396313127, 0.60000000000000009, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.85558070175468726, 0.60000000000000009, 0.29999999999999999,
!           0.87266462599716477 },
!   { 1.0224416343605658, 0.60000000000000009, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.1893144457936788, 0.60000000000000009, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.3566435377982575, 0.60000000000000009, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.5243814243493585, 0.60000000000000009, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.60000000000000009, nu=0.29999999999999999.
! template <typename Tp>
! void test154()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data154)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data154[i].k), Tp(data154[i].nu),
!                    Tp(data154[i].phi));
!       const Tp f0 = data154[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.60000000000000009, nu=0.40000000000000002.
! testcase_ellint_3<double> data155[] = {
!   { -0.0000000000000000, 0.60000000000000009, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17414974487670720, 0.60000000000000009, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34615238767335027, 0.60000000000000009, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.51453257838108579, 0.60000000000000009, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.67882386787534410, 0.60000000000000009, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.83948470233173578, 0.60000000000000009, 0.40000000000000002,
!           0.87266462599716477 },
!   { 0.99753496200074021, 0.60000000000000009, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.1541101404388487, 0.60000000000000009, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.3100911323398816, 0.60000000000000009, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.4659345278069984, 0.60000000000000009, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.60000000000000009, nu=0.40000000000000002.
! template <typename Tp>
! void test155()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data155)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data155[i].k), Tp(data155[i].nu),
!                    Tp(data155[i].phi));
!       const Tp f0 = data155[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.60000000000000009, nu=0.50000000000000000.
! testcase_ellint_3<double> data156[] = {
!   { -0.0000000000000000, 0.60000000000000009, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17397586700252810, 0.60000000000000009, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34483533397138516, 0.60000000000000009, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.51044500461706499, 0.60000000000000009, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.67009988034712675, 0.60000000000000009, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.82434762375735193, 0.60000000000000009, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.97447346702799043, 0.60000000000000009, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.1219494000522143, 0.60000000000000009, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.2680242605954488, 0.60000000000000009, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.4135484285693078, 0.60000000000000009, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.60000000000000009, nu=0.50000000000000000.
! template <typename Tp>
! void test156()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data156)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data156[i].k), Tp(data156[i].nu),
!                    Tp(data156[i].phi));
!       const Tp f0 = data156[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.60000000000000009, nu=0.59999999999999998.
! testcase_ellint_3<double> data157[] = {
!   { -0.0000000000000000, 0.60000000000000009, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17380260984469356, 0.60000000000000009, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34353585361777839, 0.60000000000000009, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.50646805774321402, 0.60000000000000009, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.66174468108625517, 0.60000000000000009, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.81007462280278408, 0.60000000000000009, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.95303466945718773, 0.60000000000000009, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.0924118588677503, 0.60000000000000009, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.2297640574847937, 0.60000000000000009, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.3662507535812816, 0.60000000000000009, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.60000000000000009, nu=0.59999999999999998.
! template <typename Tp>
! void test157()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data157)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data157[i].k), Tp(data157[i].nu),
!                    Tp(data157[i].phi));
!       const Tp f0 = data157[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.60000000000000009, nu=0.69999999999999996.
! testcase_ellint_3<double> data158[] = {
!   { -0.0000000000000000, 0.60000000000000009, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17362996946312009, 0.60000000000000009, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34225353454870588, 0.60000000000000009, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.50259656397799546, 0.60000000000000009, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.65373184496628944, 0.60000000000000009, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.79658372884056439, 0.60000000000000009, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.93303240100245466, 0.60000000000000009, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.0651547944716557, 0.60000000000000009, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.1947676204853441, 0.60000000000000009, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.3232737468822811, 0.60000000000000009, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.60000000000000009, nu=0.69999999999999996.
! template <typename Tp>
! void test158()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data158)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data158[i].k), Tp(data158[i].nu),
!                    Tp(data158[i].phi));
!       const Tp f0 = data158[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.60000000000000009, nu=0.80000000000000004.
! testcase_ellint_3<double> data159[] = {
!   { -0.0000000000000000, 0.60000000000000009, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17345794195390687, 0.60000000000000009, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.34098797854531027, 0.60000000000000009, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.49882569168826230, 0.60000000000000009, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.64603758566475511, 0.60000000000000009, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.78380365594769730, 0.60000000000000009, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.91430946255611223, 0.60000000000000009, 0.80000000000000004,
!           1.0471975511965976 },
!   { 1.0398955217270607, 0.60000000000000009, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.1625948314277679, 0.60000000000000009, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.2840021261752192, 0.60000000000000009, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.60000000000000009, nu=0.80000000000000004.
! template <typename Tp>
! void test159()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data159)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data159[i].k), Tp(data159[i].nu),
!                    Tp(data159[i].phi));
!       const Tp f0 = data159[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.60000000000000009, nu=0.90000000000000002.
! testcase_ellint_3<double> data160[] = {
!   { -0.0000000000000000, 0.60000000000000009, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17328652344890033, 0.60000000000000009, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.33973880062929018, 0.60000000000000009, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.49515092233122765, 0.60000000000000009, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.63864042139737043, 0.60000000000000009, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.77167205646538850, 0.60000000000000009, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.89673202848034428, 0.60000000000000009, 0.90000000000000002,
!           1.0471975511965976 },
!   { 1.0163984492661304, 0.60000000000000009, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.1328845785162431, 0.60000000000000009, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.2479362973851875, 0.60000000000000009, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.60000000000000009, nu=0.90000000000000002.
! template <typename Tp>
! void test160()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data160)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data160[i].k), Tp(data160[i].nu),
!                    Tp(data160[i].phi));
!       const Tp f0 = data160[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.69999999999999996, nu=0.0000000000000000.
! testcase_ellint_3<double> data161[] = {
!   { -0.0000000000000000, 0.69999999999999996, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17496737466916720, 0.69999999999999996, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.35254687535677925, 0.69999999999999996, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.53536740275997130, 0.69999999999999996, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.72603797651684465, 0.69999999999999996, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.92698296348313458, 0.69999999999999996, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.1400447527693316, 0.69999999999999996, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.3657668117194071, 0.69999999999999996, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.6024686895959159, 0.69999999999999996, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.8456939983747236, 0.69999999999999996, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.69999999999999996, nu=0.0000000000000000.
! template <typename Tp>
! void test161()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data161)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data161[i].k), Tp(data161[i].nu),
!                    Tp(data161[i].phi));
!       const Tp f0 = data161[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.69999999999999996, nu=0.10000000000000001.
! testcase_ellint_3<double> data162[] = {
!   { -0.0000000000000000, 0.69999999999999996, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17479076384884681, 0.69999999999999996, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.35114844900396364, 0.69999999999999996, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.53072776947527012, 0.69999999999999996, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.71530198262386246, 0.69999999999999996, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.90666760677828306, 0.69999999999999996, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.1063366517438080, 0.69999999999999996, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.3149477243092147, 0.69999999999999996, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.5314886725038925, 0.69999999999999996, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.7528050171757608, 0.69999999999999996, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.69999999999999996, nu=0.10000000000000001.
! template <typename Tp>
! void test162()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data162)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data162[i].k), Tp(data162[i].nu),
!                    Tp(data162[i].phi));
!       const Tp f0 = data162[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.69999999999999996, nu=0.20000000000000001.
! testcase_ellint_3<double> data163[] = {
!   { -0.0000000000000000, 0.69999999999999996, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17461479077791472, 0.69999999999999996, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.34976950621407538, 0.69999999999999996, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.52622533231350188, 0.69999999999999996, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.70508774017895226, 0.69999999999999996, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.88775302531730294, 0.69999999999999996, 0.20000000000000001,
!           0.87266462599716477 },
!   { 1.0756195476149006, 0.69999999999999996, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.2695349716654372, 0.69999999999999996, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.4690814617070540, 0.69999999999999996, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.6721098780092147, 0.69999999999999996, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.69999999999999996, nu=0.20000000000000001.
! template <typename Tp>
! void test163()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data163)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data163[i].k), Tp(data163[i].nu),
!                    Tp(data163[i].phi));
!       const Tp f0 = data163[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.69999999999999996, nu=0.29999999999999999.
! testcase_ellint_3<double> data164[] = {
!   { -0.0000000000000000, 0.69999999999999996, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17443945136076172, 0.69999999999999996, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34840956983535287, 0.69999999999999996, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.52185308551329179, 0.69999999999999996, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.69535240431168266, 0.69999999999999996, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.87007983473964923, 0.69999999999999996, 0.29999999999999999,
!           0.87266462599716477 },
!   { 1.0474657975577066, 0.69999999999999996, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.2286225419931889, 0.69999999999999996, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.4136490671013271, 0.69999999999999996, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.6011813647733213, 0.69999999999999996, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.69999999999999996, nu=0.29999999999999999.
! template <typename Tp>
! void test164()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data164)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data164[i].k), Tp(data164[i].nu),
!                    Tp(data164[i].phi));
!       const Tp f0 = data164[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.69999999999999996, nu=0.40000000000000002.
! testcase_ellint_3<double> data165[] = {
!   { -0.0000000000000000, 0.69999999999999996, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17426474153983226, 0.69999999999999996, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34706817945773732, 0.69999999999999996, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.51760452851738159, 0.69999999999999996, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.68605801534722766, 0.69999999999999996, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.85351339387296532, 0.69999999999999996, 0.40000000000000002,
!           0.87266462599716477 },
!   { 1.0215297967969537, 0.69999999999999996, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.1915051074460528, 0.69999999999999996, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.3639821911744707, 0.69999999999999996, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.5382162002954762, 0.69999999999999996, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.69999999999999996, nu=0.40000000000000002.
! template <typename Tp>
! void test165()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data165)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data165[i].k), Tp(data165[i].nu),
!                    Tp(data165[i].phi));
!       const Tp f0 = data165[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.69999999999999996, nu=0.50000000000000000.
! testcase_ellint_3<double> data166[] = {
!   { -0.0000000000000000, 0.69999999999999996, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17409065729516093, 0.69999999999999996, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34574489064986091, 0.69999999999999996, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.51347361925579793, 0.69999999999999996, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.67717079489579290, 0.69999999999999996, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.83793902055292280, 0.69999999999999996, 0.50000000000000000,
!           0.87266462599716477 },
!   { 0.99752863545289705, 0.69999999999999996, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.1576240080401499, 0.69999999999999996, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.3191464023923762, 0.69999999999999996, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.4818433192178544, 0.69999999999999996, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.69999999999999996, nu=0.50000000000000000.
! template <typename Tp>
! void test166()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data166)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data166[i].k), Tp(data166[i].nu),
!                    Tp(data166[i].phi));
!       const Tp f0 = data166[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.69999999999999996, nu=0.59999999999999998.
! testcase_ellint_3<double> data167[] = {
!   { -0.0000000000000000, 0.69999999999999996, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17391719464391611, 0.69999999999999996, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34443927423869031, 0.69999999999999996, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.50945473266486074, 0.69999999999999996, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.66866056326513823, 0.69999999999999996, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.82325830002337352, 0.69999999999999996, 0.59999999999999998,
!           0.87266462599716477 },
!   { 0.97522808245669357, 0.69999999999999996, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.1265300613705282, 0.69999999999999996, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.2784066076152003, 0.69999999999999996, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.4309994736080540, 0.69999999999999996, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.69999999999999996, nu=0.59999999999999998.
! template <typename Tp>
! void test167()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data167)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data167[i].k), Tp(data167[i].nu),
!                    Tp(data167[i].phi));
!       const Tp f0 = data167[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.69999999999999996, nu=0.69999999999999996.
! testcase_ellint_3<double> data168[] = {
!   { -0.0000000000000000, 0.69999999999999996, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17374434963995028, 0.69999999999999996, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34315091562900674, 0.69999999999999996, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.50554262375653358, 0.69999999999999996, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.66050025406305812, 0.69999999999999996, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.80938620118847404, 0.69999999999999996, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.95443223855852144, 0.69999999999999996, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.0978573207128302, 0.69999999999999996, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.2411754575007123, 0.69999999999999996, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.3848459188329196, 0.69999999999999996, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.69999999999999996, nu=0.69999999999999996.
! template <typename Tp>
! void test168()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data168)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data168[i].k), Tp(data168[i].nu),
!                    Tp(data168[i].phi));
!       const Tp f0 = data168[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.69999999999999996, nu=0.80000000000000004.
! testcase_ellint_3<double> data169[] = {
!   { -0.0000000000000000, 0.69999999999999996, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17357211837335737, 0.69999999999999996, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.34187941416012108, 0.69999999999999996, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.50173239465478270, 0.69999999999999996, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.65266550725988315, 0.69999999999999996, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.79624879865249298, 0.69999999999999996, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.93497577043296920, 0.69999999999999996, 0.80000000000000004,
!           1.0471975511965976 },
!   { 1.0713041566930748, 0.69999999999999996, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.2069772023255652, 0.69999999999999996, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.3427110650397533, 0.69999999999999996, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.69999999999999996, nu=0.80000000000000004.
! template <typename Tp>
! void test169()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data169)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data169[i].k), Tp(data169[i].nu),
!                    Tp(data169[i].phi));
!       const Tp f0 = data169[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.69999999999999996, nu=0.90000000000000002.
! testcase_ellint_3<double> data170[] = {
!   { -0.0000000000000000, 0.69999999999999996, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17340049697003634, 0.69999999999999996, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.34062438249741556, 0.69999999999999996, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.49801946510076878, 0.69999999999999996, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.64513432604750487, 0.69999999999999996, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.78378145487573758, 0.69999999999999996, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.91671799500854634, 0.69999999999999996, 0.90000000000000002,
!           1.0471975511965976 },
!   { 1.0466193579463123, 0.69999999999999996, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.1754218079199146, 0.69999999999999996, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.3040500499695911, 0.69999999999999996, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.69999999999999996, nu=0.90000000000000002.
! template <typename Tp>
! void test170()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data170)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data170[i].k), Tp(data170[i].nu),
!                    Tp(data170[i].phi));
!       const Tp f0 = data170[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.80000000000000004, nu=0.0000000000000000.
! testcase_ellint_3<double> data171[] = {
!   { -0.0000000000000000, 0.80000000000000004, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17510154241338902, 0.80000000000000004, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.35365068839779390, 0.80000000000000004, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.53926804409084561, 0.80000000000000004, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.73587926028070383, 0.80000000000000004, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.94770942970071170, 0.80000000000000004, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.1789022995388239, 0.80000000000000004, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.4323027881876009, 0.80000000000000004, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.7069629739121674, 0.80000000000000004, 0.0000000000000000,
!           1.3962634015954636 },
!   { 1.9953027776647296, 0.80000000000000004, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.80000000000000004, nu=0.0000000000000000.
! template <typename Tp>
! void test171()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data171)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data171[i].k), Tp(data171[i].nu),
!                    Tp(data171[i].phi));
!       const Tp f0 = data171[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.80000000000000004, nu=0.10000000000000001.
! testcase_ellint_3<double> data172[] = {
!   { -0.0000000000000000, 0.80000000000000004, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17492468824017166, 0.80000000000000004, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.35224443521476911, 0.80000000000000004, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.53456851853226961, 0.80000000000000004, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.72488875602364944, 0.80000000000000004, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.92661354274638952, 0.80000000000000004, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.1432651144499077, 0.80000000000000004, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.3774479927211429, 0.80000000000000004, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.6287092337196041, 0.80000000000000004, 0.10000000000000001,
!           1.3962634015954636 },
!   { 1.8910755418379521, 0.80000000000000004, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.80000000000000004, nu=0.10000000000000001.
! template <typename Tp>
! void test172()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data172)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data172[i].k), Tp(data172[i].nu),
!                    Tp(data172[i].phi));
!       const Tp f0 = data172[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.80000000000000004, nu=0.20000000000000001.
! testcase_ellint_3<double> data173[] = {
!   { -0.0000000000000000, 0.80000000000000004, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17474847286224943, 0.80000000000000004, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.35085779529084682, 0.80000000000000004, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.53000829263059157, 0.80000000000000004, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.71443466027453406, 0.80000000000000004, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.90698196872715420, 0.80000000000000004, 0.20000000000000001,
!           0.87266462599716477 },
!   { 1.1108198200558581, 0.80000000000000004, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.3284988909963957, 0.80000000000000004, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.5600369318140328, 0.80000000000000004, 0.20000000000000001,
!           1.3962634015954636 },
!   { 1.8007226661734588, 0.80000000000000004, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.80000000000000004, nu=0.20000000000000001.
! template <typename Tp>
! void test173()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data173)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data173[i].k), Tp(data173[i].nu),
!                    Tp(data173[i].phi));
!       const Tp f0 = data173[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.80000000000000004, nu=0.29999999999999999.
! testcase_ellint_3<double> data174[] = {
!   { -0.0000000000000000, 0.80000000000000004, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17457289217669891, 0.80000000000000004, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.34949028801501258, 0.80000000000000004, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.52558024362769318, 0.80000000000000004, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.70447281740094914, 0.80000000000000004, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.88864745641528986, 0.80000000000000004, 0.29999999999999999,
!           0.87266462599716477 },
!   { 1.0811075819341465, 0.80000000000000004, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.2844589654082377, 0.80000000000000004, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.4991461361277849, 0.80000000000000004, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.7214611048717301, 0.80000000000000004, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.80000000000000004, nu=0.29999999999999999.
! template <typename Tp>
! void test174()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data174)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data174[i].k), Tp(data174[i].nu),
!                    Tp(data174[i].phi));
!       const Tp f0 = data174[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.80000000000000004, nu=0.40000000000000002.
! testcase_ellint_3<double> data175[] = {
!   { -0.0000000000000000, 0.80000000000000004, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17439794211872178, 0.80000000000000004, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34814144964568972, 0.80000000000000004, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.52127776285273075, 0.80000000000000004, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.69496411438966599, 0.80000000000000004, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.87146878427509589, 0.80000000000000004, 0.40000000000000002,
!           0.87266462599716477 },
!   { 1.0537579024937762, 0.80000000000000004, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.2445534387922637, 0.80000000000000004, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.4446769766361993, 0.80000000000000004, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.6512267838651289, 0.80000000000000004, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.80000000000000004, nu=0.40000000000000002.
! template <typename Tp>
! void test175()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data175)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data175[i].k), Tp(data175[i].nu),
!                    Tp(data175[i].phi));
!       const Tp f0 = data175[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.80000000000000004, nu=0.50000000000000000.
! testcase_ellint_3<double> data176[] = {
!   { -0.0000000000000000, 0.80000000000000004, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17422361866118047, 0.80000000000000004, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34681083254170475, 0.80000000000000004, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.51709470815494440, 0.80000000000000004, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.68587375344080259, 0.80000000000000004, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.85532571852810624, 0.80000000000000004, 0.50000000000000000,
!           0.87266462599716477 },
!   { 1.0284677391874906, 0.80000000000000004, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.2081693942686225, 0.80000000000000004, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.3955803006426311, 0.80000000000000004, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.5884528947755532, 0.80000000000000004, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.80000000000000004, nu=0.50000000000000000.
! template <typename Tp>
! void test176()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data176)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data176[i].k), Tp(data176[i].nu),
!                    Tp(data176[i].phi));
!       const Tp f0 = data176[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.80000000000000004, nu=0.59999999999999998.
! testcase_ellint_3<double> data177[] = {
!   { -0.0000000000000000, 0.80000000000000004, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17404991781414092, 0.80000000000000004, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34549800443625167, 0.80000000000000004, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.51302536167001556, 0.80000000000000004, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.67717065003912258, 0.80000000000000004, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.84011512421134416, 0.80000000000000004, 0.59999999999999998,
!           0.87266462599716477 },
!   { 1.0049863847088742, 0.80000000000000004, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.1748145941898918, 0.80000000000000004, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.3510319699755071, 0.80000000000000004, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.5319262547427865, 0.80000000000000004, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.80000000000000004, nu=0.59999999999999998.
! template <typename Tp>
! void test177()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data177)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data177[i].k), Tp(data177[i].nu),
!                    Tp(data177[i].phi));
!       const Tp f0 = data177[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.80000000000000004, nu=0.69999999999999996.
! testcase_ellint_3<double> data178[] = {
!   { -0.0000000000000000, 0.80000000000000004, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17387683562442202, 0.80000000000000004, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34420254775101611, 0.80000000000000004, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.50906439222143685, 0.80000000000000004, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.66882693152688433, 0.80000000000000004, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.82574792844091316, 0.80000000000000004, 0.69999999999999996,
!           0.87266462599716477 },
!   { 0.98310431309490953, 0.80000000000000004, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.1440884535113258, 0.80000000000000004, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.3103743938952537, 0.80000000000000004, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.4806912324625332, 0.80000000000000004, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.80000000000000004, nu=0.69999999999999996.
! template <typename Tp>
! void test178()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data178)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data178[i].k), Tp(data178[i].nu),
!                    Tp(data178[i].phi));
!       const Tp f0 = data178[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.80000000000000004, nu=0.80000000000000004.
! testcase_ellint_3<double> data179[] = {
!   { -0.0000000000000000, 0.80000000000000004, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17370436817515206, 0.80000000000000004, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.34292405894783395, 0.80000000000000004, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.50520682176250087, 0.80000000000000004, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.66081751679736189, 0.80000000000000004, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.81214672249355102, 0.80000000000000004, 0.80000000000000004,
!           0.87266462599716477 },
!   { 0.96264481387685574, 0.80000000000000004, 0.80000000000000004,
!           1.0471975511965976 },
!   { 1.1156611352656258, 0.80000000000000004, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.2730756225143889, 0.80000000000000004, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.4339837018309474, 0.80000000000000004, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.80000000000000004, nu=0.80000000000000004.
! template <typename Tp>
! void test179()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data179)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data179[i].k), Tp(data179[i].nu),
!                    Tp(data179[i].phi));
!       const Tp f0 = data179[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
  
  // Test data for k=0.80000000000000004, nu=0.90000000000000002.
! testcase_ellint_3<double> data180[] = {
!   { -0.0000000000000000, 0.80000000000000004, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17353251158533153, 0.80000000000000004, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.34166214791545768, 0.80000000000000004, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.50144799535130580, 0.80000000000000004, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.65311976193814447, 0.80000000000000004, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.79924384892320866, 0.80000000000000004, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.94345762353365625, 0.80000000000000004, 0.90000000000000002,
!           1.0471975511965976 },
!   { 1.0892582069219159, 0.80000000000000004, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.2387000876610268, 0.80000000000000004, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.3911845406776222, 0.80000000000000004, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.80000000000000004, nu=0.90000000000000002.
! template <typename Tp>
! void test180()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data180)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data180[i].k), Tp(data180[i].nu),
!                    Tp(data180[i].phi));
!       const Tp f0 = data180[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.89999999999999991, nu=0.0000000000000000.
! testcase_ellint_3<double> data181[] = {
!   { -0.0000000000000000, 0.89999999999999991, 0.0000000000000000,
!           0.0000000000000000 },
!   { 0.17525427376115027, 0.89999999999999991, 0.0000000000000000,
!           0.17453292519943295 },
!   { 0.35492464591297446, 0.89999999999999991, 0.0000000000000000,
!           0.34906585039886590 },
!   { 0.54388221416157123, 0.89999999999999991, 0.0000000000000000,
!           0.52359877559829882 },
!   { 0.74797400423532501, 0.89999999999999991, 0.0000000000000000,
!           0.69813170079773179 },
!   { 0.97463898451966458, 0.89999999999999991, 0.0000000000000000,
!           0.87266462599716477 },
!   { 1.2334463254523438, 0.89999999999999991, 0.0000000000000000,
!           1.0471975511965976 },
!   { 1.5355247765594910, 0.89999999999999991, 0.0000000000000000,
!           1.2217304763960306 },
!   { 1.8882928567775117, 0.89999999999999991, 0.0000000000000000,
!           1.3962634015954636 },
!   { 2.2805491384227699, 0.89999999999999991, 0.0000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.89999999999999991, nu=0.0000000000000000.
! template <typename Tp>
! void test181()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data181)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data181[i].k), Tp(data181[i].nu),
!                    Tp(data181[i].phi));
!       const Tp f0 = data181[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.89999999999999991, nu=0.10000000000000001.
! testcase_ellint_3<double> data182[] = {
!   { -0.0000000000000000, 0.89999999999999991, 0.10000000000000001,
!           0.0000000000000000 },
!   { 0.17507714233254659, 0.89999999999999991, 0.10000000000000001,
!           0.17453292519943295 },
!   { 0.35350932904326521, 0.89999999999999991, 0.10000000000000001,
!           0.34906585039886590 },
!   { 0.53911129989870987, 0.89999999999999991, 0.10000000000000001,
!           0.52359877559829882 },
!   { 0.73666644254508407, 0.89999999999999991, 0.10000000000000001,
!           0.69813170079773179 },
!   { 0.95250736612100184, 0.89999999999999991, 0.10000000000000001,
!           0.87266462599716477 },
!   { 1.1950199550905591, 0.89999999999999991, 0.10000000000000001,
!           1.0471975511965976 },
!   { 1.4741687286340848, 0.89999999999999991, 0.10000000000000001,
!           1.2217304763960306 },
!   { 1.7968678183506053, 0.89999999999999991, 0.10000000000000001,
!           1.3962634015954636 },
!   { 2.1537868513875282, 0.89999999999999991, 0.10000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.89999999999999991, nu=0.10000000000000001.
! template <typename Tp>
! void test182()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data182)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data182[i].k), Tp(data182[i].nu),
!                    Tp(data182[i].phi));
!       const Tp f0 = data182[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.89999999999999991, nu=0.20000000000000001.
! testcase_ellint_3<double> data183[] = {
!   { -0.0000000000000000, 0.89999999999999991, 0.20000000000000001,
!           0.0000000000000000 },
!   { 0.17490065089140930, 0.89999999999999991, 0.20000000000000001,
!           0.17453292519943295 },
!   { 0.35211377590661436, 0.89999999999999991, 0.20000000000000001,
!           0.34906585039886590 },
!   { 0.53448220334204111, 0.89999999999999991, 0.20000000000000001,
!           0.52359877559829882 },
!   { 0.72591368943179591, 0.89999999999999991, 0.20000000000000001,
!           0.69813170079773179 },
!   { 0.93192539780038763, 0.89999999999999991, 0.20000000000000001,
!           0.87266462599716477 },
!   { 1.1600809679692681, 0.89999999999999991, 0.20000000000000001,
!           1.0471975511965976 },
!   { 1.4195407225882508, 0.89999999999999991, 0.20000000000000001,
!           1.2217304763960306 },
!   { 1.7168966476424521, 0.89999999999999991, 0.20000000000000001,
!           1.3962634015954636 },
!   { 2.0443194576468890, 0.89999999999999991, 0.20000000000000001,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.89999999999999991, nu=0.20000000000000001.
! template <typename Tp>
! void test183()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data183)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data183[i].k), Tp(data183[i].nu),
!                    Tp(data183[i].phi));
!       const Tp f0 = data183[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.89999999999999991, nu=0.29999999999999999.
! testcase_ellint_3<double> data184[] = {
!   { -0.0000000000000000, 0.89999999999999991, 0.29999999999999999,
!           0.0000000000000000 },
!   { 0.17472479532647534, 0.89999999999999991, 0.29999999999999999,
!           0.17453292519943295 },
!   { 0.35073750187374114, 0.89999999999999991, 0.29999999999999999,
!           0.34906585039886590 },
!   { 0.52998766129466968, 0.89999999999999991, 0.29999999999999999,
!           0.52359877559829882 },
!   { 0.71566993548699565, 0.89999999999999991, 0.29999999999999999,
!           0.69813170079773179 },
!   { 0.91271517762560195, 0.89999999999999991, 0.29999999999999999,
!           0.87266462599716477 },
!   { 1.1281241199843368, 0.89999999999999991, 0.29999999999999999,
!           1.0471975511965976 },
!   { 1.3704929576917448, 0.89999999999999991, 0.29999999999999999,
!           1.2217304763960306 },
!   { 1.6461981511487711, 0.89999999999999991, 0.29999999999999999,
!           1.3962634015954636 },
!   { 1.9486280260314424, 0.89999999999999991, 0.29999999999999999,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.89999999999999991, nu=0.29999999999999999.
! template <typename Tp>
! void test184()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data184)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data184[i].k), Tp(data184[i].nu),
!                    Tp(data184[i].phi));
!       const Tp f0 = data184[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.89999999999999991, nu=0.40000000000000002.
! testcase_ellint_3<double> data185[] = {
!   { -0.0000000000000000, 0.89999999999999991, 0.40000000000000002,
!           0.0000000000000000 },
!   { 0.17454957156468839, 0.89999999999999991, 0.40000000000000002,
!           0.17453292519943295 },
!   { 0.34938003933330430, 0.89999999999999991, 0.40000000000000002,
!           0.34906585039886590 },
!   { 0.52562093533067444, 0.89999999999999991, 0.40000000000000002,
!           0.52359877559829882 },
!   { 0.70589461324915681, 0.89999999999999991, 0.40000000000000002,
!           0.69813170079773179 },
!   { 0.89472658511942849, 0.89999999999999991, 0.40000000000000002,
!           0.87266462599716477 },
!   { 1.0987419542323438, 0.89999999999999991, 0.40000000000000002,
!           1.0471975511965976 },
!   { 1.3261349565496301, 0.89999999999999991, 0.40000000000000002,
!           1.2217304763960306 },
!   { 1.5831293909853761, 0.89999999999999991, 0.40000000000000002,
!           1.3962634015954636 },
!   { 1.8641114227238347, 0.89999999999999991, 0.40000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.89999999999999991, nu=0.40000000000000002.
! template <typename Tp>
! void test185()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data185)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data185[i].k), Tp(data185[i].nu),
!                    Tp(data185[i].phi));
!       const Tp f0 = data185[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.89999999999999991, nu=0.50000000000000000.
! testcase_ellint_3<double> data186[] = {
!   { -0.0000000000000000, 0.89999999999999991, 0.50000000000000000,
!           0.0000000000000000 },
!   { 0.17437497557073336, 0.89999999999999991, 0.50000000000000000,
!           0.17453292519943295 },
!   { 0.34804093691586013, 0.89999999999999991, 0.50000000000000000,
!           0.34906585039886590 },
!   { 0.52137576320372903, 0.89999999999999991, 0.50000000000000000,
!           0.52359877559829882 },
!   { 0.69655163996912262, 0.89999999999999991, 0.50000000000000000,
!           0.69813170079773179 },
!   { 0.87783188683054236, 0.89999999999999991, 0.50000000000000000,
!           0.87266462599716477 },
!   { 1.0716015959755183, 0.89999999999999991, 0.50000000000000000,
!           1.0471975511965976 },
!   { 1.2857636916026749, 0.89999999999999991, 0.50000000000000000,
!           1.2217304763960306 },
!   { 1.5264263913252358, 0.89999999999999991, 0.50000000000000000,
!           1.3962634015954636 },
!   { 1.7888013241937859, 0.89999999999999991, 0.50000000000000000,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.89999999999999991, nu=0.50000000000000000.
! template <typename Tp>
! void test186()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data186)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data186[i].k), Tp(data186[i].nu),
!                    Tp(data186[i].phi));
!       const Tp f0 = data186[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.89999999999999991, nu=0.59999999999999998.
! testcase_ellint_3<double> data187[] = {
!   { -0.0000000000000000, 0.89999999999999991, 0.59999999999999998,
!           0.0000000000000000 },
!   { 0.17420100334657815, 0.89999999999999991, 0.59999999999999998,
!           0.17453292519943295 },
!   { 0.34671975876122157, 0.89999999999999991, 0.59999999999999998,
!           0.34906585039886590 },
!   { 0.51724631570707957, 0.89999999999999991, 0.59999999999999998,
!           0.52359877559829882 },
!   { 0.68760879113743034, 0.89999999999999991, 0.59999999999999998,
!           0.69813170079773179 },
!   { 0.86192157779698364, 0.89999999999999991, 0.59999999999999998,
!           0.87266462599716477 },
!   { 1.0464279696166352, 0.89999999999999991, 0.59999999999999998,
!           1.0471975511965976 },
!   { 1.2488156247094004, 0.89999999999999991, 0.59999999999999998,
!           1.2217304763960306 },
!   { 1.4750988777188470, 0.89999999999999991, 0.59999999999999998,
!           1.3962634015954636 },
!   { 1.7211781128919521, 0.89999999999999991, 0.59999999999999998,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.89999999999999991, nu=0.59999999999999998.
! template <typename Tp>
! void test187()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data187)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data187[i].k), Tp(data187[i].nu),
!                    Tp(data187[i].phi));
!       const Tp f0 = data187[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.89999999999999991, nu=0.69999999999999996.
! testcase_ellint_3<double> data188[] = {
!   { -0.0000000000000000, 0.89999999999999991, 0.69999999999999996,
!           0.0000000000000000 },
!   { 0.17402765093102210, 0.89999999999999991, 0.69999999999999996,
!           0.17453292519943295 },
!   { 0.34541608382635131, 0.89999999999999991, 0.69999999999999996,
!           0.34906585039886590 },
!   { 0.51322715827061693, 0.89999999999999991, 0.69999999999999996,
!           0.52359877559829882 },
!   { 0.67903717872440283, 0.89999999999999991, 0.69999999999999996,
!           0.69813170079773179 },
!   { 0.84690113601682671, 0.89999999999999991, 0.69999999999999996,
!           0.87266462599716477 },
!   { 1.0229914311548416, 0.89999999999999991, 0.69999999999999996,
!           1.0471975511965976 },
!   { 1.2148329639709381, 0.89999999999999991, 0.69999999999999996,
!           1.2217304763960306 },
!   { 1.4283586501307799, 0.89999999999999991, 0.69999999999999996,
!           1.3962634015954636 },
!   { 1.6600480747670936, 0.89999999999999991, 0.69999999999999996,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.89999999999999991, nu=0.69999999999999996.
! template <typename Tp>
! void test188()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data188)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data188[i].k), Tp(data188[i].nu),
!                    Tp(data188[i].phi));
!       const Tp f0 = data188[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.89999999999999991, nu=0.80000000000000004.
! testcase_ellint_3<double> data189[] = {
!   { -0.0000000000000000, 0.89999999999999991, 0.80000000000000004,
!           0.0000000000000000 },
!   { 0.17385491439925149, 0.89999999999999991, 0.80000000000000004,
!           0.17453292519943295 },
!   { 0.34412950523113928, 0.89999999999999991, 0.80000000000000004,
!           0.34906585039886590 },
!   { 0.50931321668729601, 0.89999999999999991, 0.80000000000000004,
!           0.52359877559829882 },
!   { 0.67081081392296327, 0.89999999999999991, 0.80000000000000004,
!           0.69813170079773179 },
!   { 0.83268846097293259, 0.89999999999999991, 0.80000000000000004,
!           0.87266462599716477 },
!   { 1.0010985015814025, 0.89999999999999991, 0.80000000000000004,
!           1.0471975511965976 },
!   { 1.1834394045489678, 0.89999999999999991, 0.80000000000000004,
!           1.2217304763960306 },
!   { 1.3855695891683182, 0.89999999999999991, 0.80000000000000004,
!           1.3962634015954636 },
!   { 1.6044591960982200, 0.89999999999999991, 0.80000000000000004,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.89999999999999991, nu=0.80000000000000004.
! template <typename Tp>
! void test189()
  {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data189)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data189[i].k), Tp(data189[i].nu),
!                    Tp(data189[i].phi));
!       const Tp f0 = data189[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
! 
! // Test data for k=0.89999999999999991, nu=0.90000000000000002.
! testcase_ellint_3<double> data190[] = {
!   { -0.0000000000000000, 0.89999999999999991, 0.90000000000000002,
!           0.0000000000000000 },
!   { 0.17368278986240138, 0.89999999999999991, 0.90000000000000002,
!           0.17453292519943295 },
!   { 0.34285962963961397, 0.89999999999999991, 0.90000000000000002,
!           0.34906585039886590 },
!   { 0.50549974644993312, 0.89999999999999991, 0.90000000000000002,
!           0.52359877559829882 },
!   { 0.66290623857720876, 0.89999999999999991, 0.90000000000000002,
!           0.69813170079773179 },
!   { 0.81921183128847164, 0.89999999999999991, 0.90000000000000002,
!           0.87266462599716477 },
!   { 0.98058481956066368, 0.89999999999999991, 0.90000000000000002,
!           1.0471975511965976 },
!   { 1.1543223520473569, 0.89999999999999991, 0.90000000000000002,
!           1.2217304763960306 },
!   { 1.3462119782292934, 0.89999999999999991, 0.90000000000000002,
!           1.3962634015954636 },
!   { 1.5536420236310944, 0.89999999999999991, 0.90000000000000002,
!           1.5707963267948966 },
  };
  
! // Test function for k=0.89999999999999991, nu=0.90000000000000002.
! template <typename Tp>
! void test190()
! {
!   const Tp eps = std::numeric_limits<Tp>::epsilon();
!   Tp max_abs_diff = -Tp(1);
!   Tp max_abs_frac = -Tp(1);
!   unsigned int num_datum = sizeof(data190)
!                          / sizeof(testcase_ellint_3<double>);
!   for (unsigned int i = 0; i < num_datum; ++i)
!     {
!       const Tp f = std::tr1::ellint_3(Tp(data190[i].k), Tp(data190[i].nu),
!                    Tp(data190[i].phi));
!       const Tp f0 = data190[i].f0;
!       const Tp diff = f - f0;
!       if (std::abs(diff) > max_abs_diff)
!         max_abs_diff = std::abs(diff);
!       if (std::abs(f0) > Tp(10) * eps
!        && std::abs(f) > Tp(10) * eps)
!         {
!           const Tp frac = diff / f0;
!           if (std::abs(frac) > max_abs_frac)
!             max_abs_frac = std::abs(frac);
!         }
!     }
!   VERIFY(max_abs_frac < Tp(2.5000000000000020e-13));
! }
  
! int main(int, char**)
  {
!   test001<double>();
!   test002<double>();
!   test003<double>();
!   test004<double>();
!   test005<double>();
!   test006<double>();
!   test007<double>();
!   test008<double>();
!   test009<double>();
!   test010<double>();
!   test011<double>();
!   test012<double>();
!   test013<double>();
!   test014<double>();
!   test015<double>();
!   test016<double>();
!   test017<double>();
!   test018<double>();
!   test019<double>();
!   test020<double>();
!   test021<double>();
!   test022<double>();
!   test023<double>();
!   test024<double>();
!   test025<double>();
!   test026<double>();
!   test027<double>();
!   test028<double>();
!   test029<double>();
!   test030<double>();
!   test031<double>();
!   test032<double>();
!   test033<double>();
!   test034<double>();
!   test035<double>();
!   test036<double>();
!   test037<double>();
!   test038<double>();
!   test039<double>();
!   test040<double>();
!   test041<double>();
!   test042<double>();
!   test043<double>();
!   test044<double>();
!   test045<double>();
!   test046<double>();
!   test047<double>();
!   test048<double>();
!   test049<double>();
!   test050<double>();
!   test051<double>();
!   test052<double>();
!   test053<double>();
!   test054<double>();
!   test055<double>();
!   test056<double>();
!   test057<double>();
!   test058<double>();
!   test059<double>();
!   test060<double>();
!   test061<double>();
!   test062<double>();
!   test063<double>();
!   test064<double>();
!   test065<double>();
!   test066<double>();
!   test067<double>();
!   test068<double>();
!   test069<double>();
!   test070<double>();
!   test071<double>();
!   test072<double>();
!   test073<double>();
!   test074<double>();
!   test075<double>();
!   test076<double>();
!   test077<double>();
!   test078<double>();
!   test079<double>();
!   test080<double>();
!   test081<double>();
!   test082<double>();
!   test083<double>();
!   test084<double>();
!   test085<double>();
!   test086<double>();
!   test087<double>();
!   test088<double>();
!   test089<double>();
!   test090<double>();
!   test091<double>();
!   test092<double>();
!   test093<double>();
!   test094<double>();
!   test095<double>();
!   test096<double>();
!   test097<double>();
!   test098<double>();
!   test099<double>();
!   test100<double>();
!   test101<double>();
!   test102<double>();
!   test103<double>();
!   test104<double>();
!   test105<double>();
!   test106<double>();
!   test107<double>();
!   test108<double>();
!   test109<double>();
!   test110<double>();
!   test111<double>();
!   test112<double>();
!   test113<double>();
!   test114<double>();
!   test115<double>();
!   test116<double>();
!   test117<double>();
!   test118<double>();
!   test119<double>();
!   test120<double>();
!   test121<double>();
!   test122<double>();
!   test123<double>();
!   test124<double>();
!   test125<double>();
!   test126<double>();
!   test127<double>();
!   test128<double>();
!   test129<double>();
!   test130<double>();
!   test131<double>();
!   test132<double>();
!   test133<double>();
!   test134<double>();
!   test135<double>();
!   test136<double>();
!   test137<double>();
!   test138<double>();
!   test139<double>();
!   test140<double>();
!   test141<double>();
!   test142<double>();
!   test143<double>();
!   test144<double>();
!   test145<double>();
!   test146<double>();
!   test147<double>();
!   test148<double>();
!   test149<double>();
!   test150<double>();
!   test151<double>();
!   test152<double>();
!   test153<double>();
!   test154<double>();
!   test155<double>();
!   test156<double>();
!   test157<double>();
!   test158<double>();
!   test159<double>();
!   test160<double>();
!   test161<double>();
!   test162<double>();
!   test163<double>();
!   test164<double>();
!   test165<double>();
!   test166<double>();
!   test167<double>();
!   test168<double>();
!   test169<double>();
!   test170<double>();
!   test171<double>();
!   test172<double>();
!   test173<double>();
!   test174<double>();
!   test175<double>();
!   test176<double>();
!   test177<double>();
!   test178<double>();
!   test179<double>();
!   test180<double>();
!   test181<double>();
!   test182<double>();
!   test183<double>();
!   test184<double>();
!   test185<double>();
!   test186<double>();
!   test187<double>();
!   test188<double>();
!   test189<double>();
!   test190<double>();
    return 0;
  }
--- 19,6342 ----
  // <http://www.gnu.org/licenses/>.
  
  //  ellint_3
  //  Compare against values generated by the GNU Scientific Library.
  //  The GSL can be found on the web: http://www.gnu.org/software/gsl/
! #include <limits>
  #include <tr1/cmath>
  #if defined(__TEST_DEBUG)
! #  include <iostream>
! #  define VERIFY(A) \
!   if (!(A)) \
!     { \
!       std::cout << "line " << __LINE__ \
! 	<< "  max_abs_frac = " << max_abs_frac \
! 	<< std::endl; \
!     }
  #else
! #  include <testsuite_hooks.h>
  #endif
! #include <specfun_testcase.h>
  
  // Test data for k=-0.90000000000000002, nu=0.0000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 5.7842011620951154e-16
! // mean(f - f_Boost): 5.8286708792820721e-17
! // variance(f - f_Boost): 4.1942474344433133e-34
! // stddev(f - f_Boost): 2.0479861900030756e-17
! const testcase_ellint_3<double>
! data001[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17525427376115027, -0.90000000000000002, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35492464591297446, -0.90000000000000002, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.54388221416157123, -0.90000000000000002, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.74797400423532512, -0.90000000000000002, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.97463898451966446, -0.90000000000000002, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.2334463254523438, -0.90000000000000002, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.5355247765594913, -0.90000000000000002, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.8882928567775126, -0.90000000000000002, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 2.2805491384227703, -0.90000000000000002, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler001 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.1500594295134815e-16
! // mean(f - f_Boost): 1.0269562977782698e-16
! // variance(f - f_Boost): 1.4388836606733082e-32
! // stddev(f - f_Boost): 1.1995347684303728e-16
! const testcase_ellint_3<double>
! data002[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17543204932716244, -0.90000000000000002, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35636022898551184, -0.90000000000000002, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.54880278898382584, -0.90000000000000002, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.75988834774529268, -0.90000000000000002, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.99853303003568117, -0.90000000000000002, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.2759958823999022, -0.90000000000000002, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.6051187364639401, -0.90000000000000002, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.9941406879519472, -0.90000000000000002, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 2.4295011187834881, -0.90000000000000002, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler002 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.20000000000000001.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 5.2711357908578066e-16
! // mean(f - f_Boost): 8.0491169285323847e-17
! // variance(f - f_Boost): 7.9985534974304465e-34
! // stddev(f - f_Boost): 2.8281714052423424e-17
! const testcase_ellint_3<double>
! data003[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17561047321968409, -0.90000000000000002, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35781659944356109, -0.90000000000000002, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.55388150905215283, -0.90000000000000002, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.77246874123251441, -0.90000000000000002, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 1.0244466254771925, -0.90000000000000002, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.3234824077640801, -0.90000000000000002, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.6849848968804237, -0.90000000000000002, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 2.1185749045502273, -0.90000000000000002, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 2.6076835743348412, -0.90000000000000002, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler003 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.9955372494296814e-16
! // mean(f - f_Boost): 5.8286708792820721e-17
! // variance(f - f_Boost): 4.1942474344433133e-34
! // stddev(f - f_Boost): 2.0479861900030756e-17
! const testcase_ellint_3<double>
! data004[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17578954966746221, -0.90000000000000002, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35929429810867447, -0.90000000000000002, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.55912757154240811, -0.90000000000000002, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.78578314722025389, -0.90000000000000002, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 1.0526941001131365, -0.90000000000000002, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.3769682234538601, -0.90000000000000002, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.7779437432911238, -0.90000000000000002, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 2.2676509341813631, -0.90000000000000002, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 2.8256506968858512, -0.90000000000000002, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler004 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.40000000000000002.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.7042235432234642e-16
! // mean(f - f_Boost): 2.0261570199409106e-16
! // variance(f - f_Boost): 5.8024227149195491e-32
! // stddev(f - f_Boost): 2.4088218520512364e-16
! const testcase_ellint_3<double>
! data005[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17596928293938452, -0.90000000000000002, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36079388642472821, -0.90000000000000002, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.56455096667115612, -0.90000000000000002, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.79990996997869435, -0.90000000000000002, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 1.0836647913872215, -0.90000000000000002, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.4378726836091849, -0.90000000000000002, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.8880446720682853, -0.90000000000000002, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 2.4505848932025227, -0.90000000000000002, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 3.1000689868578615, -0.90000000000000002, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler005 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.50000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 3.8944086593755267e-16
! // mean(f - f_Boost): 6.9388939039072284e-17
! // variance(f - f_Boost): 1.7333369499485123e-32
! // stddev(f - f_Boost): 1.3165625507162629e-16
! const testcase_ellint_3<double>
! data006[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17614967734498183, -0.90000000000000002, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.36231594750319435, -0.90000000000000002, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.57016256984349567, -0.90000000000000002, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.81494025918293422, -0.90000000000000002, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 1.1178482279283477, -0.90000000000000002, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.5081455873012106, -0.90000000000000002, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 2.0213599730863998, -0.90000000000000002, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 2.6822467012926827, -0.90000000000000002, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 3.4591069002104677, -0.90000000000000002, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler006 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.60000000000000009.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.0602096790645418e-16
! // mean(f - f_Boost): 1.0269562977782698e-16
! // variance(f - f_Boost): 1.4388836606733082e-32
! // stddev(f - f_Boost): 1.1995347684303728e-16
! const testcase_ellint_3<double>
! data007[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17633073723493825, -0.90000000000000002, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.36386108723492810, -0.90000000000000002, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.57597424744716241, -0.90000000000000002, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.83098051948501150, -0.90000000000000002, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.1558706545698916, -0.90000000000000002, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.5905576379415669, -0.90000000000000002, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 2.1875186010215080, -0.90000000000000002, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.9885767771316849, -0.90000000000000002, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 3.9549939883570224, -0.90000000000000002, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler007 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.70000000000000007.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 5.1938610791060186e-16
! // mean(f - f_Boost): 3.0253577421035517e-16
! // variance(f - f_Boost): 4.2342877557562532e-32
! // stddev(f - f_Boost): 2.0577385051935665e-16
! const testcase_ellint_3<double>
! data008[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17651246700160939, -0.90000000000000002, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.36542993547358982, -0.90000000000000002, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.58199897877674867, -0.90000000000000002, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.84815633587352857, -0.90000000000000002, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.1985495623872375, -0.90000000000000002, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.6892158134027688, -0.90000000000000002, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 2.4029722191094236, -0.90000000000000002, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 3.4201084941340052, -0.90000000000000002, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 4.6985482312992435, -0.90000000000000002, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler008 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.80000000000000004.
! // max(|f - f_Boost|): 2.6645352591003757e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 6.5091520146032660e-16
! // mean(f - f_Boost): 2.8310687127941490e-16
! // variance(f - f_Boost): 9.8950000698295322e-33
! // stddev(f - f_Boost): 9.9473614943006532e-17
! const testcase_ellint_3<double>
! data009[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17669487107954862, -0.90000000000000002, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36702314729628421, -0.90000000000000002, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.58825099711365492, -0.90000000000000002, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.86661711422209031, -0.90000000000000002, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.2469779109884802, -0.90000000000000002, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.8105469760531578, -0.90000000000000002, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.6989505165893752, -0.90000000000000002, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 4.0935213267757424, -0.90000000000000002, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 5.9820740813645710, -0.90000000000000002, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler009 = 2.5000000000000020e-13;
  
! // Test data for k=-0.90000000000000002, nu=0.90000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 8.2628580104449673e-16
! // mean(f - f_Boost): 8.5764728652293339e-16
! // variance(f - f_Boost): 8.9671393318321280e-31
! // stddev(f - f_Boost): 9.4694980499666013e-16
! const testcase_ellint_3<double>
! data010[10] =
  {
!   { 0.0000000000000000, -0.90000000000000002, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17687795394604169, -0.90000000000000002, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36864140434751286, -0.90000000000000002, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.59474595366817051, -0.90000000000000002, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.88654237226056665, -0.90000000000000002, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.3026595810616726, -0.90000000000000002, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.9653635459278078, -0.90000000000000002, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 3.1451407527189463, -0.90000000000000002, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 5.3745230680316114, -0.90000000000000002, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 8.9942562031858682, -0.90000000000000002, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler010 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.0000000000000000.
! // max(|f - f_Boost|): 1.5543122344752192e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.7898565163847540e-16
! // mean(f - f_Boost): 2.3869795029440865e-16
! // variance(f - f_Boost): 2.1368406725192426e-31
! // stddev(f - f_Boost): 4.6225974002926564e-16
! const testcase_ellint_3<double>
! data011[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17510154241338899, -0.80000000000000004, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35365068839779396, -0.80000000000000004, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.53926804409084550, -0.80000000000000004, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.73587926028070372, -0.80000000000000004, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.94770942970071170, -0.80000000000000004, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.1789022995388236, -0.80000000000000004, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.4323027881876012, -0.80000000000000004, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.7069629739121677, -0.80000000000000004, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.9953027776647294, -0.80000000000000004, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler011 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.10000000000000001.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 8.3898786942190374e-16
! // mean(f - f_Boost): 2.3869795029440865e-16
! // variance(f - f_Boost): 2.9190059990693968e-31
! // stddev(f - f_Boost): 5.4027826155319237e-16
! const testcase_ellint_3<double>
! data012[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17527903952342144, -0.80000000000000004, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35507705313548549, -0.80000000000000004, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.54411455987643553, -0.80000000000000004, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.74745625666804383, -0.80000000000000004, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.97046953684238557, -0.80000000000000004, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.2183080025184605, -0.80000000000000004, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.4943711151994405, -0.80000000000000004, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.7972401309544201, -0.80000000000000004, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 2.1172616484005085, -0.80000000000000004, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler012 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.20000000000000001.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.8513740186068518e-16
! // mean(f - f_Boost): 2.8310687127941490e-16
! // variance(f - f_Boost): 2.7528339102381189e-31
! // stddev(f - f_Boost): 5.2467455724840699e-16
! const testcase_ellint_3<double>
! data013[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17545718375086419, -0.80000000000000004, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35652404627248163, -0.80000000000000004, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.54911638512920913, -0.80000000000000004, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.75967684282131176, -0.80000000000000004, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.99513526893543769, -0.80000000000000004, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.2622192109995993, -0.80000000000000004, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.5654106676347741, -0.80000000000000004, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.9029531718534984, -0.80000000000000004, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 2.2624789434186798, -0.80000000000000004, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler013 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.30000000000000004.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.2825261583337354e-16
! // mean(f - f_Boost): 2.6367796834847468e-16
! // variance(f - f_Boost): 2.8249350208968825e-31
! // stddev(f - f_Boost): 5.3150117788175054e-16
! const testcase_ellint_3<double>
! data014[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17563597931587369, -0.80000000000000004, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35799220412005128, -0.80000000000000004, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.55428253691111318, -0.80000000000000004, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.77260647376977365, -0.80000000000000004, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 1.0220015271210958, -0.80000000000000004, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.3115965312302671, -0.80000000000000004, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.6478518468813512, -0.80000000000000004, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 2.0290458414203481, -0.80000000000000004, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 2.4392042002725693, -0.80000000000000004, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler014 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.40000000000000002.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 8.3462748389836647e-16
! // mean(f - f_Boost): 3.3861802251067273e-16
! // variance(f - f_Boost): 4.3719465706454422e-31
! // stddev(f - f_Boost): 6.6120696991527871e-16
! const testcase_ellint_3<double>
! data015[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17581543047866136, -0.80000000000000004, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35948208343061633, -0.80000000000000004, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.55962280893702021, -0.80000000000000004, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.78632063889234116, -0.80000000000000004, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 1.0514333069550323, -0.80000000000000004, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.3677213138838757, -0.80000000000000004, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.7451736773665165, -0.80000000000000004, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 2.1830100424586831, -0.80000000000000004, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.6604037035529724, -0.80000000000000004, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler015 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.50000000000000000.
! // max(|f - f_Boost|): 2.6645352591003757e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 9.0388243828581744e-16
! // mean(f - f_Boost): 3.8580250105724191e-16
! // variance(f - f_Boost): 6.4106456575047741e-31
! // stddev(f - f_Boost): 8.0066507713929764e-16
! const testcase_ellint_3<double>
! data016[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17599554153999472, -0.80000000000000004, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.36099426243351540, -0.80000000000000004, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.56514786174780673, -0.80000000000000004, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.80090697622371010, -0.80000000000000004, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 1.0838891627679339, -0.80000000000000004, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.4323506654466280, -0.80000000000000004, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.8625761085390575, -0.80000000000000004, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 2.3768757305654766, -0.80000000000000004, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.9478781158239746, -0.80000000000000004, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler016 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.60000000000000009.
! // max(|f - f_Boost|): 3.5527136788005009e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 1.0631099169042069e-15
! // mean(f - f_Boost): 4.8294701571194306e-16
! // variance(f - f_Boost): 1.1633910328160319e-30
! // stddev(f - f_Boost): 1.0786060600682865e-15
! const testcase_ellint_3<double>
! data017[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17617631684170665, -0.80000000000000004, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.36252934193666231, -0.80000000000000004, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.57086932622945163, -0.80000000000000004, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.81646796740150973, -0.80000000000000004, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.1199552158519064, -0.80000000000000004, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.5079766673336394, -0.80000000000000004, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 2.0082747447038165, -0.80000000000000004, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.6315146066775523, -0.80000000000000004, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 3.3418121892288051, -0.80000000000000004, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler017 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.70000000000000007.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.6544679145741375e-16
! // mean(f - f_Boost): 3.2751579226442120e-16
! // variance(f - f_Boost): 4.4236851331020672e-31
! // stddev(f - f_Boost): 6.6510789599147505e-16
! const testcase_ellint_3<double>
! data018[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17635776076721221, -0.80000000000000004, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.36408794649916976, -0.80000000000000004, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.57679992290624138, -0.80000000000000004, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.83312441418142813, -0.80000000000000004, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.1603958891464856, -0.80000000000000004, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.5982855143796213, -0.80000000000000004, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 2.1962484408371821, -0.80000000000000004, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.9873281786111869, -0.80000000000000004, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 3.9268876980046397, -0.80000000000000004, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler018 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.80000000000000004.
! // max(|f - f_Boost|): 4.4408920985006262e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 9.0176949165011079e-16
! // mean(f - f_Boost): 7.0499162063697436e-16
! // variance(f - f_Boost): 1.7230805408026989e-30
! // stddev(f - f_Boost): 1.3126616246400665e-15
! const testcase_ellint_3<double>
! data019[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17653987774203392, -0.80000000000000004, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36567072568046877, -0.80000000000000004, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.58295359996558616, -0.80000000000000004, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.85101998309176108, -0.80000000000000004, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.2062322059736537, -0.80000000000000004, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.7090321420917429, -0.80000000000000004, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.4529058049405066, -0.80000000000000004, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 3.5368893360106948, -0.80000000000000004, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 4.9246422058196062, -0.80000000000000004, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler019 = 2.5000000000000020e-13;
  
! // Test data for k=-0.80000000000000004, nu=0.90000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.7782721357365268e-16
! // mean(f - f_Boost): 8.9928064994637676e-16
! // variance(f - f_Boost): 1.5485199571025344e-30
! // stddev(f - f_Boost): 1.2443954183066307e-15
! const testcase_ellint_3<double>
! data020[10] =
  {
!   { 0.0000000000000000, -0.80000000000000004, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17672267223433513, -0.80000000000000004, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36727835537196063, -0.80000000000000004, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.58934569363716649, -0.80000000000000004, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.87032723471138851, -0.80000000000000004, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.2588676111323349, -0.80000000000000004, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.8498731900660019, -0.80000000000000004, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.8368381299300420, -0.80000000000000004, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 4.5674844191654058, -0.80000000000000004, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 7.2263259298637115, -0.80000000000000004, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler020 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.0000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 5.5425633303580569e-16
! // mean(f - f_Boost): 7.7715611723760953e-17
! // variance(f - f_Boost): 7.4564398834547797e-34
! // stddev(f - f_Boost): 2.7306482533374340e-17
! const testcase_ellint_3<double>
! data021[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17496737466916723, -0.69999999999999996, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35254687535677931, -0.69999999999999996, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.53536740275997130, -0.69999999999999996, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.72603797651684454, -0.69999999999999996, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.92698296348313447, -0.69999999999999996, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.1400447527693316, -0.69999999999999996, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.3657668117194071, -0.69999999999999996, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.6024686895959162, -0.69999999999999996, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.8456939983747234, -0.69999999999999996, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler021 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.10000000000000001.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 5.2736371663370261e-16
! // mean(f - f_Boost): 8.8817841970012528e-17
! // variance(f - f_Boost): 9.7390235212470591e-34
! // stddev(f - f_Boost): 3.1207408609570677e-17
! const testcase_ellint_3<double>
! data022[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17514462737300920, -0.69999999999999996, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35396527997470451, -0.69999999999999996, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.54015179589433981, -0.69999999999999996, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.73734430854477728, -0.69999999999999996, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.94888950796697047, -0.69999999999999996, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1772807959736322, -0.69999999999999996, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.4231796401075831, -0.69999999999999996, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.6841856799887469, -0.69999999999999996, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.9541347343119562, -0.69999999999999996, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler022 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.20000000000000001.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.9907249355047774e-16
! // mean(f - f_Boost): 3.3306690738754695e-17
! // variance(f - f_Boost): 1.3695501826753678e-34
! // stddev(f - f_Boost): 1.1702778228589003e-17
! const testcase_ellint_3<double>
! data023[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17532252613350796, -0.69999999999999996, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35540417596807522, -0.69999999999999996, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.54508913033361928, -0.69999999999999996, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.74927635777718415, -0.69999999999999996, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.97261706337936338, -0.69999999999999996, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.2187303976209327, -0.69999999999999996, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.4887796709222487, -0.69999999999999996, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.7796581281839212, -0.69999999999999996, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 2.0829290325820202, -0.69999999999999996, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler023 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.6912897610535316e-16
! // mean(f - f_Boost): 1.6653345369377347e-17
! // variance(f - f_Boost): 2.6207864467918357e-32
! // stddev(f - f_Boost): 1.6188843216214787e-16
! const testcase_ellint_3<double>
! data024[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17550107516328570, -0.69999999999999996, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35686409576571959, -0.69999999999999996, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.55018827316513352, -0.69999999999999996, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.76189759494390275, -0.69999999999999996, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.99844623430885615, -0.69999999999999996, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.2652862989039833, -0.69999999999999996, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.5647666808691361, -0.69999999999999996, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.8932499694938163, -0.69999999999999996, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 2.2392290510988535, -0.69999999999999996, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler024 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.40000000000000002.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 6.5578567644745380e-16
! // mean(f - f_Boost): 1.4710455076283324e-16
! // variance(f - f_Boost): 2.6715739327327140e-33
! // stddev(f - f_Boost): 5.1687270509601433e-17
! const testcase_ellint_3<double>
! data025[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17568027871494424, -0.69999999999999996, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35834559208180261, -0.69999999999999996, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.55545885451190613, -0.69999999999999996, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.77528120402568101, -0.69999999999999996, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 1.0267241287600319, -0.69999999999999996, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.3181380338980246, -0.69999999999999996, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.6542840785132085, -0.69999999999999996, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 2.0315595131131818, -0.69999999999999996, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.4342502915307875, -0.69999999999999996, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler025 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.50000000000000000.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 6.0416041815443256e-16
! // mean(f - f_Boost): 1.9151347174783951e-16
! // variance(f - f_Boost): 7.8758646268991113e-33
! // stddev(f - f_Boost): 8.8746068233466605e-17
! const testcase_ellint_3<double>
! data026[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17586014108156545, -0.69999999999999996, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35984923894341653, -0.69999999999999996, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.56091135606739995, -0.69999999999999996, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.78951212635197054, -0.69999999999999996, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 1.0578865732938729, -0.69999999999999996, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.3789149005151722, -0.69999999999999996, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.7620212286086225, -0.69999999999999996, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 2.2051554347435585, -0.69999999999999996, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.6868019968236991, -0.69999999999999996, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler026 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.60000000000000009.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.6515644573247170e-16
! // mean(f - f_Boost): 9.9920072216264091e-17
! // variance(f - f_Boost): 1.2325951644078310e-33
! // stddev(f - f_Boost): 3.5108334685767011e-17
! const testcase_ellint_3<double>
! data027[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17604066659721918, -0.69999999999999996, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.36137563278353424, -0.69999999999999996, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.56655721272747606, -0.69999999999999996, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.80468966552978305, -0.69999999999999996, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0924902943683852, -0.69999999999999996, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.4499247992499797, -0.69999999999999996, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.8953714382113815, -0.69999999999999996, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.4323229949248670, -0.69999999999999996, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 3.0314573496746742, -0.69999999999999996, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler027 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.70000000000000007.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.8475278552871384e-16
! // mean(f - f_Boost): 9.9920072216264091e-17
! // variance(f - f_Boost): 1.2325951644078310e-33
! // stddev(f - f_Boost): 3.5108334685767011e-17
! const testcase_ellint_3<double>
! data028[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17622185963747933, -0.69999999999999996, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.36292539360435261, -0.69999999999999996, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.57240892970150015, -0.69999999999999996, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.82093084713182629, -0.69999999999999996, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.1312609022179871, -0.69999999999999996, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.5345768067715795, -0.69999999999999996, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 2.0668847445934420, -0.69999999999999996, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.7483444537551240, -0.69999999999999996, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 3.5408408771788560, -0.69999999999999996, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler028 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.80000000000000004.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 6.8664526853112274e-16
! // mean(f - f_Boost): 1.6930901125533636e-16
! // variance(f - f_Boost): 3.5389557150937801e-33
! // stddev(f - f_Boost): 5.9489122661994095e-17
! const testcase_ellint_3<double>
! data029[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17640372461994805, -0.69999999999999996, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36449916621651091, -0.69999999999999996, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.57848021800372573, -0.69999999999999996, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.83837480968392586, -0.69999999999999996, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.1751669030061143, -0.69999999999999996, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.6381851899173601, -0.69999999999999996, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.3002065924302197, -0.69999999999999996, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 3.2337600665337862, -0.69999999999999996, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 4.4042405729076961, -0.69999999999999996, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler029 = 2.5000000000000020e-13;
  
! // Test data for k=-0.69999999999999996, nu=0.90000000000000002.
! // max(|f - f_Boost|): 3.5527136788005009e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 8.5869439826269878e-16
! // mean(f - f_Boost): 6.7723604502134545e-16
! // variance(f - f_Boost): 4.8757508225668289e-31
! // stddev(f - f_Boost): 6.9826576763914390e-16
! const testcase_ellint_3<double>
! data030[10] =
  {
!   { 0.0000000000000000, -0.69999999999999996, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17658626600478800, -0.69999999999999996, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36609762156017206, -0.69999999999999996, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.58478615187842409, -0.69999999999999996, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.85718862878291846, -0.69999999999999996, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.2255385617397643, -0.69999999999999996, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.7696521899992939, -0.69999999999999996, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.6476314987883502, -0.69999999999999996, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 4.1373434902898083, -0.69999999999999996, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 6.3796094177887746, -0.69999999999999996, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler030 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.3664899092028927e-16
! // mean(f - f_Boost): 5.2735593669694933e-17
! // variance(f - f_Boost): 3.4333862218458872e-34
! // stddev(f - f_Boost): 1.8529398861932589e-17
! const testcase_ellint_3<double>
! data031[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17485154362988359, -0.59999999999999998, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35160509865544320, -0.59999999999999998, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.53210652578446138, -0.59999999999999998, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.71805304664485659, -0.59999999999999998, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.91082759030195981, -0.59999999999999998, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.1112333229323361, -0.59999999999999998, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.3191461190365270, -0.59999999999999998, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.5332022105084779, -0.59999999999999998, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.7507538029157523, -0.59999999999999998, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler031 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.10000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.2335247010355137e-16
! // mean(f - f_Boost): 8.6042284408449634e-17
! // variance(f - f_Boost): 2.2835347143080263e-33
! // stddev(f - f_Boost): 4.7786344433405099e-17
! const testcase_ellint_3<double>
! data032[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17502858548476194, -0.59999999999999998, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35301673150537388, -0.59999999999999998, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53683932476326812, -0.59999999999999998, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.72914228589586771, -0.59999999999999998, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.93208036718354692, -0.59999999999999998, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1468984688863377, -0.59999999999999998, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3733904977062528, -0.59999999999999998, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.6094225663372157, -0.59999999999999998, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.8508766487100685, -0.59999999999999998, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler032 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.20000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.0940560416437693e-16
! // mean(f - f_Boost): 4.1633363423443370e-17
! // variance(f - f_Boost): 8.5834655546147173e-33
! // stddev(f - f_Boost): 9.2646994309662939e-17
! const testcase_ellint_3<double>
! data033[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17520627248155893, -0.59999999999999998, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35444873935437748, -0.59999999999999998, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.54172310557682524, -0.59999999999999998, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.74084300280734672, -0.59999999999999998, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.95509001527006121, -0.59999999999999998, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1865688084431796, -0.59999999999999998, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.4352978868932598, -0.59999999999999998, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.6983400371331816, -0.59999999999999998, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 1.9695980282802215, -0.59999999999999998, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler033 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.30000000000000004.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.9470074709717020e-16
! // mean(f - f_Boost): 7.4940054162198071e-17
! // variance(f - f_Boost): 1.6823592487044846e-32
! // stddev(f - f_Boost): 1.2970579203352812e-16
! const testcase_ellint_3<double>
! data034[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17538460882640122, -0.59999999999999998, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35590165133735557, -0.59999999999999998, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.54676661152254535, -0.59999999999999998, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.75321709418305305, -0.59999999999999998, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.98012637808992920, -0.59999999999999998, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.2310891277158875, -0.59999999999999998, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.5069157924585623, -0.59999999999999998, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.8039583598337940, -0.59999999999999998, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 2.1134154405060599, -0.59999999999999998, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler034 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.40000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.7909659715991921e-16
! // mean(f - f_Boost): -2.7755575615628915e-18
! // variance(f - f_Boost): 2.4044165394594425e-32
! // stddev(f - f_Boost): 1.5506181152880429e-16
! const testcase_ellint_3<double>
! data035[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17556359876533037, -0.59999999999999998, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35737601674244679, -0.59999999999999998, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.55197933771320218, -0.59999999999999998, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.76633591620002894, -0.59999999999999998, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 1.0075231136019616, -0.59999999999999998, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.2815842073813450, -0.59999999999999998, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.5911666941449827, -0.59999999999999998, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 1.9323227566025762, -0.59999999999999998, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.2925036420985130, -0.59999999999999998, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler035 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.50000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.6240126899196213e-16
! // mean(f - f_Boost): 9.1593399531575410e-17
! // variance(f - f_Boost): 1.0357223256482469e-33
! // stddev(f - f_Boost): 3.2182640128619758e-17
! const testcase_ellint_3<double>
! data036[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17574324658480217, -0.59999999999999998, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35887240603169313, -0.59999999999999998, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.55737161826345261, -0.59999999999999998, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.78028227313077458, -0.59999999999999998, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 1.0376989776486290, -0.59999999999999998, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.3395933991042925, -0.59999999999999998, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.6924049626591782, -0.59999999999999998, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 2.0931011856518920, -0.59999999999999998, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.5239007084492706, -0.59999999999999998, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler036 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.60000000000000009.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.6651378277398083e-16
! // mean(f - f_Boost): 1.1934897514720432e-16
! // variance(f - f_Boost): 1.7585404776158019e-33
! // stddev(f - f_Boost): 4.1934955319110598e-17
! const testcase_ellint_3<double>
! data037[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17592355661219386, -0.59999999999999998, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.36039141192661606, -0.59999999999999998, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.56295472636903854, -0.59999999999999998, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.79515295130165986, -0.59999999999999998, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0711886441942242, -0.59999999999999998, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.4072952835139891, -0.59999999999999998, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.8174863977376825, -0.59999999999999998, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.3029921578542232, -0.59999999999999998, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 2.8388723099514972, -0.59999999999999998, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler037 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.70000000000000007.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.2451074234797436e-16
! // mean(f - f_Boost): 5.2735593669694933e-17
! // variance(f - f_Boost): 3.4333862218458872e-34
! // stddev(f - f_Boost): 1.8529398861932589e-17
! const testcase_ellint_3<double>
! data038[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17610453321631936, -0.59999999999999998, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.36193365056369764, -0.59999999999999998, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.56874098962268527, -0.59999999999999998, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.81106198671477181, -0.59999999999999998, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.1086886419010082, -0.59999999999999998, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.4879048567239257, -0.59999999999999998, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 1.9780310073615923, -0.59999999999999998, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.5941545586772712, -0.59999999999999998, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 3.3029735898397155, -0.59999999999999998, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler038 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.3826960061025914e-16
! // mean(f - f_Boost): 2.7478019859472625e-16
! // variance(f - f_Boost): 4.6451528105588637e-32
! // stddev(f - f_Boost): 2.1552616570984749e-16
! const testcase_ellint_3<double>
! data039[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17628618080795252, -0.59999999999999998, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36349976272521012, -0.59999999999999998, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.57474392342151914, -0.59999999999999998, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.82814493499158159, -0.59999999999999998, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.1511281795998280, -0.59999999999999998, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.5864286332503075, -0.59999999999999998, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.1958944866494527, -0.59999999999999998, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 3.0398358172574604, -0.59999999999999998, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 4.0867036409261832, -0.59999999999999998, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler039 = 2.5000000000000020e-13;
  
! // Test data for k=-0.59999999999999998, nu=0.90000000000000002.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 5.7440178400898422e-16
! // mean(f - f_Boost): 5.0792703376600914e-16
! // variance(f - f_Boost): 1.9863137923719990e-31
! // stddev(f - f_Boost): 4.4568080420543122e-16
! const testcase_ellint_3<double>
! data040[10] =
  {
!   { 0.0000000000000000, -0.59999999999999998, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17646850384035848, -0.59999999999999998, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36509041515134105, -0.59999999999999998, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.58097838596260631, -0.59999999999999998, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.84656453396163722, -0.59999999999999998, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.1997828426963724, -0.59999999999999998, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.7112436789225605, -0.59999999999999998, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.5193168553672312, -0.59999999999999998, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 3.8656670488606686, -0.59999999999999998, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 5.8709993116265595, -0.59999999999999998, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler040 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.4551389361831220e-16
! // mean(f - f_Boost): -1.3877787807814457e-17
! // variance(f - f_Boost): 2.5893058141206173e-32
! // stddev(f - f_Boost): 1.6091320064309879e-16
! const testcase_ellint_3<double>
! data041[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17475385514035785, -0.50000000000000000, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35081868470101579, -0.50000000000000000, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.52942862705190574, -0.50000000000000000, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.71164727562630326, -0.50000000000000000, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.89824523594227768, -0.50000000000000000, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.0895506700518853, -0.50000000000000000, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.2853005857432933, -0.50000000000000000, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.4845545520549488, -0.50000000000000000, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.6857503548125961, -0.50000000000000000, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler041 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.7416868347177582e-16
! // mean(f - f_Boost): 2.7755575615628915e-18
! // variance(f - f_Boost): 5.4326441655972001e-32
! // stddev(f - f_Boost): 2.3308033305273100e-16
! const testcase_ellint_3<double>
! data042[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17493071928248824, -0.50000000000000000, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35222467688034798, -0.50000000000000000, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53411928652008112, -0.50000000000000000, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.72256398117177589, -0.50000000000000000, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.91899583232771009, -0.50000000000000000, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1240549163055360, -0.50000000000000000, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3372938086286021, -0.50000000000000000, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.5570024469132429, -0.50000000000000000, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.7803034946545480, -0.50000000000000000, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler042 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.20000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.1198767993730867e-16
! // mean(f - f_Boost): 2.7755575615628914e-17
! // variance(f - f_Boost): 5.0311947683004831e-32
! // stddev(f - f_Boost): 2.2430324938128922e-16
! const testcase_ellint_3<double>
! data043[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17510822779582402, -0.50000000000000000, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35365094725531487, -0.50000000000000000, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53895933237328697, -0.50000000000000000, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.73408090840070794, -0.50000000000000000, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.94145442818535396, -0.50000000000000000, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1624120186296487, -0.50000000000000000, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3965823372867114, -0.50000000000000000, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.6414308440430099, -0.50000000000000000, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 1.8922947612264018, -0.50000000000000000, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler043 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.3800262770228813e-16
! // mean(f - f_Boost): 5.8286708792820721e-17
! // variance(f - f_Boost): 8.5027191584278157e-32
! // stddev(f - f_Boost): 2.9159422419567599e-16
! const testcase_ellint_3<double>
! data044[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17528638488102041, -0.50000000000000000, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35509802222332720, -0.50000000000000000, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.54395740731866193, -0.50000000000000000, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.74625871438752667, -0.50000000000000000, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.96588271186092023, -0.50000000000000000, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.2054319584357329, -0.50000000000000000, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.4651077994832871, -0.50000000000000000, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.7416018368052644, -0.50000000000000000, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 2.0277924458111314, -0.50000000000000000, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler044 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.40000000000000002.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.0439932918341581e-16
! // mean(f - f_Boost): 3.0531133177191807e-17
! // variance(f - f_Boost): 9.0809736800018602e-32
! // stddev(f - f_Boost): 3.0134653938616686e-16
! const testcase_ellint_3<double>
! data045[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17546519477859268, -0.50000000000000000, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35656644822531680, -0.50000000000000000, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.54912289677411319, -0.50000000000000000, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.75916731611690047, -0.50000000000000000, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 0.99260415631328214, -0.50000000000000000, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.2541925856918670, -0.50000000000000000, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.5456393705347609, -0.50000000000000000, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 1.8631904972952076, -0.50000000000000000, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.1962905366178065, -0.50000000000000000, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler045 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.6797816859260978e-16
! // mean(f - f_Boost): 9.4368957093138303e-17
! // variance(f - f_Boost): 7.7794254682023874e-32
! // stddev(f - f_Boost): 2.7891621444803792e-16
! const testcase_ellint_3<double>
! data046[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17564466176941509, -0.50000000000000000, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35805679276065394, -0.50000000000000000, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.55446601496200032, -0.50000000000000000, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.77288783578259013, -0.50000000000000000, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 1.0220246013918972, -0.50000000000000000, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.3101681612463965, -0.50000000000000000, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.6422994881851025, -0.50000000000000000, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 2.0152636030998816, -0.50000000000000000, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.4136715042011945, -0.50000000000000000, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler046 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.60000000000000009.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.9178421578645735e-16
! // mean(f - f_Boost): 1.3322676295501878e-16
! // variance(f - f_Boost): 1.7749370367472766e-31
! // stddev(f - f_Boost): 4.2130001622920411e-16
! const testcase_ellint_3<double>
! data047[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17582479017522740, -0.50000000000000000, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.35956964546660036, -0.50000000000000000, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.55999790372984193, -0.50000000000000000, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.78751507911209895, -0.50000000000000000, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0546620505035220, -0.50000000000000000, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.3754438357425935, -0.50000000000000000, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.7615727400820127, -0.50000000000000000, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.2134638067565242, -0.50000000000000000, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 2.7090491861753558, -0.50000000000000000, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler047 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.70000000000000007.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.0745105182189226e-16
! // mean(f - f_Boost): 4.1633363423443370e-17
! // variance(f - f_Boost): 1.9996383743576116e-32
! // stddev(f - f_Boost): 1.4140857026211713e-16
! const testcase_ellint_3<double>
! data048[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17600558435914915, -0.50000000000000000, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.36110561926726259, -0.50000000000000000, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.56573074641137111, -0.50000000000000000, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.80316073084237205, -0.50000000000000000, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.0911910688131461, -0.50000000000000000, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.4530946406380640, -0.50000000000000000, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 1.9144386536785372, -0.50000000000000000, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.4878788958234970, -0.50000000000000000, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 3.1433945297859225, -0.50000000000000000, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler048 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.4380477375534667e-16
! // mean(f - f_Boost): 2.3037127760972000e-16
! // variance(f - f_Boost): 1.4989821857033475e-31
! // stddev(f - f_Boost): 3.8716691306248618e-16
! const testcase_ellint_3<double>
! data049[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17618704872620228, -0.50000000000000000, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36266535159745827, -0.50000000000000000, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.57167789954529158, -0.50000000000000000, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.81995752984315018, -0.50000000000000000, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.1325112162158122, -0.50000000000000000, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.5479055930718042, -0.50000000000000000, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.1215243941010486, -0.50000000000000000, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 2.9069405767650132, -0.50000000000000000, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 3.8750701888108066, -0.50000000000000000, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler049 = 2.5000000000000020e-13;
  
! // Test data for k=-0.50000000000000000, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.6192315188521289e-16
! // mean(f - f_Boost): 3.5249581031848718e-16
! // variance(f - f_Boost): 2.5029385557256515e-31
! // stddev(f - f_Boost): 5.0029376927217987e-16
! const testcase_ellint_3<double>
! data050[10] =
  {
!   { 0.0000000000000000, -0.50000000000000000, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17636918772384180, -0.50000000000000000, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36424950570740700, -0.50000000000000000, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.57785404590231426, -0.50000000000000000, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.83806480521716531, -0.50000000000000000, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.1798568683069752, -0.50000000000000000, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.6678766243739607, -0.50000000000000000, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.4282976450693483, -0.50000000000000000, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 3.6810787666126656, -0.50000000000000000, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 5.5355132096026454, -0.50000000000000000, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler050 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.1423314994346225e-16
! // mean(f - f_Boost): 1.9428902930940238e-17
! // variance(f - f_Boost): 2.2263750157116445e-32
! // stddev(f - f_Boost): 1.4921042241450980e-16
! const testcase_ellint_3<double>
! data051[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17467414669441528, -0.39999999999999991, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35018222772483443, -0.39999999999999991, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.52729015917508748, -0.39999999999999991, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.70662374407341244, -0.39999999999999991, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.88859210497602159, -0.39999999999999991, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.0733136290471381, -0.39999999999999991, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.2605612170157066, -0.39999999999999991, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.4497513956433439, -0.39999999999999991, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.6399998658645112, -0.39999999999999991, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler051 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.8489340395463703e-16
! // mean(f - f_Boost): 6.3837823915946496e-17
! // variance(f - f_Boost): 4.4785242050000272e-32
! // stddev(f - f_Boost): 2.1162523963365114e-16
! const testcase_ellint_3<double>
! data052[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17485086590796767, -0.39999999999999991, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35158366412506992, -0.39999999999999991, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53194731675711726, -0.39999999999999991, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.71740615528010931, -0.39999999999999991, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.90896157773487030, -0.39999999999999991, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1069605483834348, -0.39999999999999991, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3109353428823001, -0.39999999999999991, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.5195460789903448, -0.39999999999999991, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.7306968836847187, -0.39999999999999991, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler052 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.20000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.0467985583872730e-16
! // mean(f - f_Boost): 8.6042284408449634e-17
! // variance(f - f_Boost): 1.5826864298542218e-32
! // stddev(f - f_Boost): 1.2580486595733180e-16
! const testcase_ellint_3<double>
! data053[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17502822886437389, -0.39999999999999991, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35300530062530805, -0.39999999999999991, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53675259548210896, -0.39999999999999991, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.72878006428676934, -0.39999999999999991, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.93100219010583563, -0.39999999999999991, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1443487271187609, -0.39999999999999991, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3683427764108813, -0.39999999999999991, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.6008221459300933, -0.39999999999999991, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 1.8380358826317627, -0.39999999999999991, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler053 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.30000000000000004.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 2.9973414591826100e-16
! // mean(f - f_Boost): 8.6042284408449634e-17
! // variance(f - f_Boost): 1.5826864298542218e-32
! // stddev(f - f_Boost): 1.2580486595733180e-16
! const testcase_ellint_3<double>
! data054[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17520623975982899, -0.39999999999999991, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35444766141612105, -0.39999999999999991, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.54171455841536009, -0.39999999999999991, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.74080517001084012, -0.39999999999999991, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.95496950509296563, -0.39999999999999991, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.1862627879844718, -0.39999999999999991, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.4346501803799458, -0.39999999999999991, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.6971744798077697, -0.39999999999999991, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 1.9677924132520139, -0.39999999999999991, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler054 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.40000000000000002.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.2577246923979600e-16
! // mean(f - f_Boost): 1.8596235662471373e-16
! // variance(f - f_Boost): 1.6222417021441306e-31
! // stddev(f - f_Boost): 4.0277061736727151e-16
! const testcase_ellint_3<double>
! data055[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17538490283034375, -0.39999999999999991, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35591129064319948, -0.39999999999999991, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.54684250413264535, -0.39999999999999991, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.75355027742668290, -0.39999999999999991, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 0.98117935026780634, -0.39999999999999991, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.2337464222030734, -0.39999999999999991, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.5125183419289221, -0.39999999999999991, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 1.8140224451130311, -0.39999999999999991, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.1289968719280026, -0.39999999999999991, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler055 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.8009196014748294e-16
! // mean(f - f_Boost): 1.6375789613221060e-16
! // variance(f - f_Boost): 6.4788283329186610e-32
! // stddev(f - f_Boost): 2.5453542647181080e-16
! const testcase_ellint_3<double>
! data056[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17556422235224273, -0.39999999999999991, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35739675341763921, -0.39999999999999991, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.55214655195037188, -0.39999999999999991, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.76709520942047438, -0.39999999999999991, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 1.0100278761577499, -0.39999999999999991, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.2882265661384342, -0.39999999999999991, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.6059059780051874, -0.39999999999999991, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 1.9600182740224081, -0.39999999999999991, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.3367461373176508, -0.39999999999999991, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler056 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.60000000000000009.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 2.8411408870840790e-16
! // mean(f - f_Boost): 9.7144514654701197e-17
! // variance(f - f_Boost): 1.4860570558543486e-32
! // stddev(f - f_Boost): 1.2190393988113545e-16
! const testcase_ellint_3<double>
! data057[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17574420264267029, -0.39999999999999991, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.35890463689046265, -0.39999999999999991, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.55763773975194486, -0.39999999999999991, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.78153324227761267, -0.39999999999999991, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0420205885765887, -0.39999999999999991, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.3517205230381770, -0.39999999999999991, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.7210360970313896, -0.39999999999999991, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.1500780510169242, -0.39999999999999991, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 2.6186940209850191, -0.39999999999999991, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler057 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.70000000000000007.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.1553900340611668e-16
! // mean(f - f_Boost): 1.1657341758564144e-16
! // variance(f - f_Boost): 1.3242789405258207e-32
! // stddev(f - f_Boost): 1.1507731924779187e-16
! const testcase_ellint_3<double>
! data058[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17592484806010436, -0.39999999999999991, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.36043555139631439, -0.39999999999999991, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.56332813669944881, -0.39999999999999991, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.79697424562157548, -0.39999999999999991, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.0778155987523672, -0.39999999999999991, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.4272018169896268, -0.39999999999999991, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 1.8684377907453380, -0.39999999999999991, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.4128677409207469, -0.39999999999999991, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 3.0327078743873241, -0.39999999999999991, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler058 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.5727642219519274e-16
! // mean(f - f_Boost): 2.1926904736346843e-16
! // variance(f - f_Boost): 1.5293405480859847e-31
! // stddev(f - f_Boost): 3.9106783913868252e-16
! const testcase_ellint_3<double>
! data059[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17610616300487833, -0.39999999999999991, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36199013167171978, -0.39999999999999991, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.56923097361842423, -0.39999999999999991, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.81354878456624347, -0.39999999999999991, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.1182902719261825, -0.39999999999999991, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.5192950589409022, -0.39999999999999991, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.0678761710223981, -0.39999999999999991, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 2.8135222249879783, -0.39999999999999991, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 3.7289548002199902, -0.39999999999999991, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler059 = 2.5000000000000020e-13;
  
! // Test data for k=-0.39999999999999991, nu=0.90000000000000002.
! // max(|f - f_Boost|): 2.6645352591003757e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.0221626338023938e-16
! // mean(f - f_Boost): 4.1910919179599658e-16
! // variance(f - f_Boost): 6.2246150910247033e-31
! // stddev(f - f_Boost): 7.8896229891070860e-16
! const testcase_ellint_3<double>
! data060[10] =
  {
!   { 0.0000000000000000, -0.39999999999999991, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17628815191971123, -0.39999999999999991, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36356903815378772, -0.39999999999999991, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.57536079447000310, -0.39999999999999991, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.83141355850172571, -0.39999999999999991, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.1646481598721361, -0.39999999999999991, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.6357275034001995, -0.39999999999999991, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.3628787566572398, -0.39999999999999991, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 3.5521010369134958, -0.39999999999999991, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 5.3055535102872513, -0.39999999999999991, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler060 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.0000000000000000.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.2241249691539529e-16
! // mean(f - f_Boost): 4.9960036108132046e-17
! // variance(f - f_Boost): 4.6872855002064458e-32
! // stddev(f - f_Boost): 2.1650139722889657e-16
! const testcase_ellint_3<double>
! data061[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17461228653000099, -0.29999999999999993, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.34969146102798421, -0.29999999999999993, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.52565822873726309, -0.29999999999999993, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.70284226512408543, -0.29999999999999993, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.88144139195111171, -0.29999999999999993, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.0614897067260520, -0.29999999999999993, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.2428416824174220, -0.29999999999999993, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.4251795877015929, -0.29999999999999993, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.6080486199305126, -0.29999999999999993, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler061 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.1872304407982844e-16
! // mean(f - f_Boost): 9.4368957093138303e-17
! // variance(f - f_Boost): 4.0359883022230488e-32
! // stddev(f - f_Boost): 2.0089769292411121e-16
! const testcase_ellint_3<double>
! data062[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17478889331392972, -0.29999999999999993, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35108939018329183, -0.29999999999999993, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53028990896115835, -0.29999999999999993, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.71352417052371409, -0.29999999999999993, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.90153086032405894, -0.29999999999999993, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.0945187977283313, -0.29999999999999993, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.2920699268385680, -0.29999999999999993, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.4931243665896394, -0.29999999999999993, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.6960848815118226, -0.29999999999999993, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler062 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.20000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.2247497610332889e-16
! // mean(f - f_Boost): 1.1102230246251565e-16
! // variance(f - f_Boost): 3.8043060629871325e-32
! // stddev(f - f_Boost): 1.9504630380981672e-16
! const testcase_ellint_3<double>
! data063[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17496614335337535, -0.29999999999999993, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35250745937139372, -0.29999999999999993, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53506875002836884, -0.29999999999999993, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.72479106622248191, -0.29999999999999993, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.92326451535891607, -0.29999999999999993, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1312092060698349, -0.29999999999999993, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3481473154592321, -0.29999999999999993, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.5722049569662748, -0.29999999999999993, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 1.8002173372290498, -0.29999999999999993, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler063 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.1678685180047551e-16
! // mean(f - f_Boost): 1.0547118733938987e-16
! // variance(f - f_Boost): 7.5633408838247182e-32
! // stddev(f - f_Boost): 2.7501528837184157e-16
! const testcase_ellint_3<double>
! data064[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17514404084107435, -0.29999999999999993, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35394619108645647, -0.29999999999999993, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.54000325463372689, -0.29999999999999993, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.73670193794067651, -0.29999999999999993, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.94689345491722177, -0.29999999999999993, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.1723274608389140, -0.29999999999999993, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.4128880552936287, -0.29999999999999993, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.6659010047449661, -0.29999999999999993, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 1.9260216862473254, -0.29999999999999993, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler064 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.40000000000000002.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.3983279132797385e-16
! // mean(f - f_Boost): 1.1657341758564144e-16
! // variance(f - f_Boost): 1.8245832308692586e-31
! // stddev(f - f_Boost): 4.2715140534349863e-16
! const testcase_ellint_3<double>
! data065[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17532259000954434, -0.29999999999999993, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35540612770983693, -0.29999999999999993, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.54510265552938919, -0.29999999999999993, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.74932476310965057, -0.29999999999999993, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 0.97272793583093109, -0.29999999999999993, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.2188928987074241, -0.29999999999999993, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.4888771674085941, -0.29999999999999993, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 1.7794558498219191, -0.29999999999999993, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.0822121773175528, -0.29999999999999993, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler065 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.50000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.0516138451673425e-16
! // mean(f - f_Boost): 4.7184478546569152e-17
! // variance(f - f_Boost): 1.9448563670505968e-32
! // stddev(f - f_Boost): 1.3945810722401896e-16
! const testcase_ellint_3<double>
! data066[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17550179513158179, -0.29999999999999993, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35688783251681200, -0.29999999999999993, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.55037700010142798, -0.29999999999999993, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.76273839789895992, -0.29999999999999993, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 1.0011570518830419, -0.29999999999999993, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.2722987414055109, -0.29999999999999993, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.5799590511080066, -0.29999999999999993, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 1.9212367220124293, -0.29999999999999993, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.2833505881933971, -0.29999999999999993, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler066 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.60000000000000009.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.2121157428443725e-16
! // mean(f - f_Boost): 1.9428902930940239e-16
! // variance(f - f_Boost): 1.5987596229703424e-31
! // stddev(f - f_Boost): 3.9984492281012430e-16
! const testcase_ellint_3<double>
! data067[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17568166052076745, -0.29999999999999993, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.35839189074731181, -0.29999999999999993, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.55583724744367558, -0.29999999999999993, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.77703498090888223, -0.29999999999999993, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0326772113675962, -0.29999999999999993, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.3345139983717369, -0.29999999999999993, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.6921742922838403, -0.29999999999999993, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.1056608968472186, -0.29999999999999993, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 2.5560975528589061, -0.29999999999999993, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler067 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.70000000000000007.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.0088945789059381e-16
! // mean(f - f_Boost): 1.6653345369377348e-16
! // variance(f - f_Boost): 3.1994213989721786e-31
! // stddev(f - f_Boost): 5.6563428104846852e-16
! const testcase_ellint_3<double>
! data068[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17586219053197988, -0.29999999999999993, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.35991891074557669, -0.29999999999999993, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.56149538019961731, -0.29999999999999993, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.79232303189667685, -0.29999999999999993, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.0679345542878826, -0.29999999999999993, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.4084400085913955, -0.29999999999999993, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 1.8357382859296454, -0.29999999999999993, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.3604197996171519, -0.29999999999999993, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 2.9562123549913872, -0.29999999999999993, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler068 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.80000000000000004.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.1197887707781618e-16
! // mean(f - f_Boost): 3.4416913763379854e-16
! // variance(f - f_Boost): 4.3461914185990199e-31
! // stddev(f - f_Boost): 6.5925650687718054e-16
! const testcase_ellint_3<double>
! data069[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17604338956191670, -0.29999999999999993, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36146952517410791, -0.29999999999999993, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.56736453393774644, -0.29999999999999993, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.80873149979001091, -0.29999999999999993, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.1077903069860620, -0.29999999999999993, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.4985874311132998, -0.29999999999999993, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.0298167266724954, -0.29999999999999993, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 2.7483929054985432, -0.29999999999999993, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 3.6283050484567170, -0.29999999999999993, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler069 = 2.5000000000000020e-13;
  
! // Test data for k=-0.29999999999999993, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 5.1301806687926828e-16
! // mean(f - f_Boost): 4.1633363423443370e-16
! // variance(f - f_Boost): 2.2835347143080263e-31
! // stddev(f - f_Boost): 4.7786344433405093e-16
! const testcase_ellint_3<double>
! data070[10] =
  {
!   { 0.0000000000000000, -0.29999999999999993, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17622526204962433, -0.29999999999999993, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36304439230777141, -0.29999999999999993, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.57345914744719195, -0.29999999999999993, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.82641512928845162, -0.29999999999999993, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.1534256210757743, -0.29999999999999993, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.6124900353411677, -0.29999999999999993, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.3165905514845089, -0.29999999999999993, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 3.4625619526539824, -0.29999999999999993, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 5.1479514944016787, -0.29999999999999993, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler070 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 4.2156475739151676e-16
! // mean(f - f_Boost): -5.2735593669694933e-17
! // variance(f - f_Boost): 3.0473442641042680e-32
! // stddev(f - f_Boost): 1.7456644190978597e-16
! const testcase_ellint_3<double>
! data071[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17456817290292806, -0.19999999999999996, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.34934315932086796, -0.19999999999999996, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.52450880529443988, -0.19999999999999996, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.70020491009844887, -0.19999999999999996, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.87651006649967977, -0.19999999999999996, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.0534305870298994, -0.19999999999999996, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.2308975521670789, -0.19999999999999996, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.4087733584990738, -0.19999999999999996, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.5868678474541662, -0.19999999999999996, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler071 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.10000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 4.0890622182605400e-16
! // mean(f - f_Boost): -3.8857805861880476e-17
! // variance(f - f_Boost): 2.8794792590749608e-32
! // stddev(f - f_Boost): 1.6969028431454054e-16
! const testcase_ellint_3<double>
! data072[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17474469953608965, -0.19999999999999996, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35073860234984255, -0.19999999999999996, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.52912258712951521, -0.19999999999999996, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.71081701558898069, -0.19999999999999996, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.89640758521169384, -0.19999999999999996, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.0860417038089853, -0.19999999999999996, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.2793599255528623, -0.19999999999999996, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.4754938544089076, -0.19999999999999996, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.6731552050562593, -0.19999999999999996, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler072 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.20000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 3.9570963716579749e-16
! // mean(f - f_Boost): -5.8286708792820721e-17
! // variance(f - f_Boost): 3.1158217732380362e-32
! // stddev(f - f_Boost): 1.7651690494788412e-16
! const testcase_ellint_3<double>
! data073[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17492186907740698, -0.19999999999999996, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35215414286134267, -0.19999999999999996, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53388285615182440, -0.19999999999999996, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.72200960282688265, -0.19999999999999996, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.91793087614428526, -0.19999999999999996, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1222602841587976, -0.19999999999999996, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3345489407496247, -0.19999999999999996, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.5531225705475502, -0.19999999999999996, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 1.7751816279738935, -0.19999999999999996, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler073 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.6785817924053817e-16
! // mean(f - f_Boost): -1.1102230246251566e-17
! // variance(f - f_Boost): 9.9840208317034302e-32
! // stddev(f - f_Boost): 3.1597501217190311e-16
! const testcase_ellint_3<double>
! data074[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17509968571715159, -0.19999999999999996, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35359030214835629, -0.19999999999999996, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.53879807274537084, -0.19999999999999996, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.73384116418059731, -0.19999999999999996, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.94132799329524031, -0.19999999999999996, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.1628407021801439, -0.19999999999999996, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.3982440216739438, -0.19999999999999996, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.6450634983653640, -0.19999999999999996, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 1.8983924169967099, -0.19999999999999996, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler074 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.40000000000000002.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.3298410018355870e-16
! // mean(f - f_Boost): 1.3877787807814457e-17
! // variance(f - f_Boost): 9.4370567274974557e-32
! // stddev(f - f_Boost): 3.0719792850046133e-16
! const testcase_ellint_3<double>
! data075[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17527815368535152, -0.19999999999999996, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35504762134297801, -0.19999999999999996, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.54387742353211344, -0.19999999999999996, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.74637910471804259, -0.19999999999999996, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 0.96690539714174639, -0.19999999999999996, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.2087859420184757, -0.19999999999999996, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.4729799844168852, -0.19999999999999996, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 1.7564445064596661, -0.19999999999999996, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.0512956926676802, -0.19999999999999996, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler075 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.3841806057292116e-16
! // mean(f - f_Boost): 8.0491169285323847e-17
! // variance(f - f_Boost): 8.0538110429953348e-32
! // stddev(f - f_Boost): 2.8379237204328335e-16
! const testcase_ellint_3<double>
! data076[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17545727725228877, -0.19999999999999996, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35652666242062175, -0.19999999999999996, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.54913090549102406, -0.19999999999999996, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.75970161209211551, -0.19999999999999996, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 0.99504737401590326, -0.19999999999999996, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.2614666007124373, -0.19999999999999996, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.5625255355205496, -0.19999999999999996, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 1.8954460255613343, -0.19999999999999996, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.2481046259421302, -0.19999999999999996, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler076 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.60000000000000009.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.5317584994994743e-16
! // mean(f - f_Boost): -1.3877787807814457e-17
! // variance(f - f_Boost): 1.0045745697575397e-31
! // stddev(f - f_Boost): 3.1695024369095219e-16
! const testcase_ellint_3<double>
! data077[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17563706072900442, -0.19999999999999996, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.35802800926807238, -0.19999999999999996, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.55456942250515051, -0.19999999999999996, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.77390003828438203, -0.19999999999999996, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0262441366366397, -0.19999999999999996, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.3228192988439669, -0.19999999999999996, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.6728005754680795, -0.19999999999999996, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.0761587107468511, -0.19999999999999996, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 2.5148333891629315, -0.19999999999999996, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler077 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.70000000000000007.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.1818454249546518e-16
! // mean(f - f_Boost): 3.6082248300317589e-17
! // variance(f - f_Boost): 8.9638010532618564e-32
! // stddev(f - f_Boost): 2.9939607634806868e-16
! const testcase_ellint_3<double>
! data078[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17581750846781172, -0.19999999999999996, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.35955226882028513, -0.19999999999999996, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.56020489659466499, -0.19999999999999996, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.78908196988531487, -0.19999999999999996, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.0611336754143517, -0.19999999999999996, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.3956969951058884, -0.19999999999999996, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 1.8138131612209609, -0.19999999999999996, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.3256365528879561, -0.19999999999999996, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 2.9058704854500963, -0.19999999999999996, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler078 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.9866614515542431e-16
! // mean(f - f_Boost): 1.8318679906315082e-16
! // variance(f - f_Boost): 3.1335688610218711e-31
! // stddev(f - f_Boost): 5.5978289193417400e-16
! const testcase_ellint_3<double>
! data079[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17599862486281712, -0.19999999999999996, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36110007227128776, -0.19999999999999996, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.56605039658567224, -0.19999999999999996, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.80537523874517691, -0.19999999999999996, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.1005662342414086, -0.19999999999999996, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.4845340298105778, -0.19999999999999996, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.0043332244969392, -0.19999999999999996, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 2.7052856676744761, -0.19999999999999996, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 3.5622166386422629, -0.19999999999999996, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler079 = 2.5000000000000020e-13;
  
! // Test data for k=-0.19999999999999996, nu=0.90000000000000002.
! // max(|f - f_Boost|): 2.6645352591003757e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.2817178727913890e-16
! // mean(f - f_Boost): 3.4694469519536142e-16
! // variance(f - f_Boost): 6.6311432369155086e-31
! // stddev(f - f_Boost): 8.1431831840598485e-16
! const testcase_ellint_3<double>
! data080[10] =
  {
!   { 0.0000000000000000, -0.19999999999999996, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17618041435044951, -0.19999999999999996, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36267207636502929, -0.19999999999999996, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.57212028758237743, -0.19999999999999996, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.82293323876704483, -0.19999999999999996, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.1457077279880385, -0.19999999999999996, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.5967346899325681, -0.19999999999999996, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.2856537353421724, -0.19999999999999996, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 3.4034714304613902, -0.19999999999999996, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 5.0448269356200361, -0.19999999999999996, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler080 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.1735566504509645e-16
! // mean(f - f_Boost): -3.6082248300317589e-17
! // variance(f - f_Boost): 8.2258607846939269e-33
! // stddev(f - f_Boost): 9.0696531271564778e-17
! const testcase_ellint_3<double>
! data081[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17454173353063662, -0.099999999999999978, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.34913506721468096, -0.099999999999999978, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.52382550016538953, -0.099999999999999978, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.69864700854177020, -0.099999999999999978, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.87361792586964859, -0.099999999999999978, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.0487386319621685, -0.099999999999999978, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.2239913752078759, -0.099999999999999978, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.3993423113684051, -0.099999999999999978, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.5747455615173558, -0.099999999999999978, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler081 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.10000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.0305747373482148e-16
! // mean(f - f_Boost): -3.0531133177191807e-17
! // variance(f - f_Boost): 1.1508025840536076e-34
! // stddev(f - f_Boost): 1.0727546709539920e-17
! const testcase_ellint_3<double>
! data082[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17471821213559732, -0.099999999999999978, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35052902610011138, -0.099999999999999978, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.52842865990255727, -0.099999999999999978, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.70921799731166713, -0.099999999999999978, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.89340330535868662, -0.099999999999999978, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.0811075784236857, -0.099999999999999978, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.2720133232666426, -0.099999999999999978, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.4653630031861395, -0.099999999999999978, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.6600374067558428, -0.099999999999999978, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler082 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.20000000000000001.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 1.6736714959992433e-16
! // mean(f - f_Boost): 5.5511151231257830e-18
! // variance(f - f_Boost): 3.8043060629871325e-36
! // stddev(f - f_Boost): 1.9504630380981673e-18
! const testcase_ellint_3<double>
! data083[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17489533344059083, -0.099999999999999978, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35194305707815038, -0.099999999999999978, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53317790741512527, -0.099999999999999978, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.72036681615081222, -0.099999999999999978, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.91480372268244303, -0.099999999999999978, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1170528708071514, -0.099999999999999978, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3266916802718358, -0.099999999999999978, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.5421622241831547, -0.099999999999999978, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 1.7608656115083421, -0.099999999999999978, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler083 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.30000000000000004.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 1.9186071760326645e-16
! // mean(f - f_Boost): -1.6653345369377347e-17
! // variance(f - f_Boost): 3.4238754566884194e-35
! // stddev(f - f_Boost): 5.8513891142945016e-18
! const testcase_ellint_3<double>
! data084[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17507310163441189, -0.099999999999999978, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35337768072524217, -0.099999999999999978, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.53808167801629170, -0.099999999999999978, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.73215166755955019, -0.099999999999999978, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.93806546000201219, -0.099999999999999978, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.1573218723395986, -0.099999999999999978, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.3897859679542097, -0.099999999999999978, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.6331009404328622, -0.099999999999999978, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 1.8826015946315438, -0.099999999999999978, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler084 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.40000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.0338059536914377e-16
! // mean(f - f_Boost): 2.7755575615628914e-17
! // variance(f - f_Boost): 9.5107651574678308e-35
! // stddev(f - f_Boost): 9.7523151904908362e-18
! const testcase_ellint_3<double>
! data085[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17525152094559704, -0.099999999999999978, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35483343742825979, -0.099999999999999978, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.54314913099505446, -0.099999999999999978, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.74463962034766862, -0.099999999999999978, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 0.96349276837570441, -0.099999999999999978, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.2029081382746343, -0.099999999999999978, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.4638022887050806, -0.099999999999999978, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 1.7432413830105224, -0.099999999999999978, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.0336367403076760, -0.099999999999999978, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler085 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.9864616042835278e-16
! // mean(f - f_Boost): 1.0547118733938987e-16
! // variance(f - f_Boost): 7.5633408838247182e-32
! // stddev(f - f_Boost): 2.7501528837184157e-16
! const testcase_ellint_3<double>
! data086[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17543059564292182, -0.099999999999999978, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35631088838721664, -0.099999999999999978, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.54839023346436444, -0.099999999999999978, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.75790846946088830, -0.099999999999999978, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 0.99146713686720678, -0.099999999999999978, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.2551692247937198, -0.099999999999999978, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.5524660788146873, -0.099999999999999978, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 1.8806578570830670, -0.099999999999999978, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.2279868912966849, -0.099999999999999978, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler086 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.60000000000000009.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.6726146516228014e-16
! // mean(f - f_Boost): -3.6082248300317589e-17
! // variance(f - f_Boost): 1.6073193116120635e-34
! // stddev(f - f_Boost): 1.2678009747638087e-17
! const testcase_ellint_3<double>
! data087[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17561033003590576, -0.099999999999999978, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.35781061668171932, -0.099999999999999978, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.55381585659629196, -0.099999999999999978, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.77204910484575640, -0.099999999999999978, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0224751740393108, -0.099999999999999978, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.3160230906351114, -0.099999999999999978, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.6616282844233206, -0.099999999999999978, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.0592555664850392, -0.099999999999999978, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 2.4913004919173822, -0.099999999999999978, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler087 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.70000000000000007.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 5
! // max(|f - f_Boost| / |f_Boost|): 2.1004074871280821e-16
! // mean(f - f_Boost): 3.3306690738754695e-17
! // variance(f - f_Boost): 1.3695501826753678e-34
! // stddev(f - f_Boost): 1.1702778228589003e-17
! const testcase_ellint_3<double>
! data088[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17579072847532518, -0.099999999999999978, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.35933322840606297, -0.099999999999999978, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.55943788649460324, -0.099999999999999978, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.78716856504031707, -0.099999999999999978, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.0571501305617423, -0.099999999999999978, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.3882948301743525, -0.099999999999999978, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 1.8011785680114223, -0.099999999999999978, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.3057268183616464, -0.099999999999999978, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 2.8771910188009739, -0.099999999999999978, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler088 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.80000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.3133043868392355e-16
! // mean(f - f_Boost): 1.8041124150158794e-16
! // variance(f - f_Boost): 6.1843750436434569e-32
! // stddev(f - f_Boost): 2.4868403735751633e-16
! const testcase_ellint_3<double>
! data089[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17597179535373417, -0.099999999999999978, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36087935387831499, -0.099999999999999978, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.56526935244526444, -0.099999999999999978, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.80339402590612397, -0.099999999999999978, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.0963358646374459, -0.099999999999999978, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.4763748483246868, -0.099999999999999978, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 1.9896610222794102, -0.099999999999999978, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 2.6806423920122024, -0.099999999999999978, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 3.5246199613295612, -0.099999999999999978, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler089 = 2.5000000000000020e-13;
  
! // Test data for k=-0.099999999999999978, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.5624826890976725e-16
! // mean(f - f_Boost): 2.3314683517128288e-16
! // variance(f - f_Boost): 2.9401198977189756e-31
! // stddev(f - f_Boost): 5.4222872459129045e-16
! const testcase_ellint_3<double>
! data090[10] =
  {
!   { 0.0000000000000000, -0.099999999999999978, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17615353510599349, -0.099999999999999978, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36244964892922371, -0.099999999999999978, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.57132457590110530, -0.099999999999999978, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.82087808820385000, -0.099999999999999978, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.1411894342144451, -0.099999999999999978, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.5875929286844597, -0.099999999999999978, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.2678622986596659, -0.099999999999999978, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 3.3697528941897903, -0.099999999999999978, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 4.9862890417305499, -0.099999999999999978, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler090 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.0000000000000000.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.1203697876423447e-16
! // mean(f - f_Boost): -1.9428902930940238e-17
! // variance(f - f_Boost): 4.6602749271592373e-35
! // stddev(f - f_Boost): 6.8266206333435850e-18
! const testcase_ellint_3<double>
! data091[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17453292519943295, 0.0000000000000000, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.34906585039886590, 0.0000000000000000, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.52359877559829882, 0.0000000000000000, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.69813170079773179, 0.0000000000000000, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.87266462599716477, 0.0000000000000000, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.0471975511965976, 0.0000000000000000, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.2217304763960306, 0.0000000000000000, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.3962634015954636, 0.0000000000000000, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.5707963267948966, 0.0000000000000000, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler091 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.10000000000000001.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.1019052604815601e-16
! // mean(f - f_Boost): 2.7755575615628915e-18
! // variance(f - f_Boost): 9.5107651574678312e-37
! // stddev(f - f_Boost): 9.7523151904908366e-19
! const testcase_ellint_3<double>
! data092[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17470938780535167, 0.0000000000000000, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35045931581655582, 0.0000000000000000, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.52819841383849875, 0.0000000000000000, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.70868910807992958, 0.0000000000000000, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.89241311307249638, 0.0000000000000000, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.0794871444666669, 0.0000000000000000, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.2696086247356864, 0.0000000000000000, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.4620562617494721, 0.0000000000000000, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.6557647109660167, 0.0000000000000000, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler092 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.20000000000000001.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.0831888697465320e-16
! // mean(f - f_Boost): -1.9428902930940238e-17
! // variance(f - f_Boost): 4.6602749271592373e-35
! // stddev(f - f_Boost): 6.8266206333435850e-18
! const testcase_ellint_3<double>
! data093[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17488649304197776, 0.0000000000000000, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35187284488675424, 0.0000000000000000, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53294400750146131, 0.0000000000000000, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.71982347021822823, 0.0000000000000000, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.91377311030258745, 0.0000000000000000, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1153429007215137, 0.0000000000000000, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3241202847784086, 0.0000000000000000, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.5385854914338242, 0.0000000000000000, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 1.7562036827601815, 0.0000000000000000, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler093 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.30000000000000004.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.0642101770923591e-16
! // mean(f - f_Boost): -1.9428902930940238e-17
! // variance(f - f_Boost): 4.6602749271592373e-35
! // stddev(f - f_Boost): 6.8266206333435850e-18
! const testcase_ellint_3<double>
! data094[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17506424509761404, 0.0000000000000000, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35330695794774630, 0.0000000000000000, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.53784398359522367, 0.0000000000000000, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.73159289408687844, 0.0000000000000000, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.93699031797084975, 0.0000000000000000, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.1555098909390267, 0.0000000000000000, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.3870184960144325, 0.0000000000000000, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.6291980835772994, 0.0000000000000000, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 1.8774607092226381, 0.0000000000000000, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler094 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.40000000000000002.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.0449580089795878e-16
! // mean(f - f_Boost): -1.9428902930940238e-17
! // variance(f - f_Boost): 4.6602749271592373e-35
! // stddev(f - f_Boost): 6.8266206333435850e-18
! const testcase_ellint_3<double>
! data095[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17524264820030025, 0.0000000000000000, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35476219513871499, 0.0000000000000000, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.54290749235440094, 0.0000000000000000, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.74406433757109913, 0.0000000000000000, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 0.96236826162553313, 0.0000000000000000, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.2009785880262487, 0.0000000000000000, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.4608000106167567, 0.0000000000000000, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 1.7389349574753439, 0.0000000000000000, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.0278893379868057, 0.0000000000000000, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler095 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.50000000000000000.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.0254203825026289e-16
! // mean(f - f_Boost): -1.9428902930940238e-17
! // variance(f - f_Boost): 4.6602749271592373e-35
! // stddev(f - f_Boost): 6.8266206333435850e-18
! const testcase_ellint_3<double>
! data096[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17542170661831016, 0.0000000000000000, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35623911740195419, 0.0000000000000000, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.54814449099863127, 0.0000000000000000, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.75731546607718081, 0.0000000000000000, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 0.99028751188233310, 0.0000000000000000, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.2531022857760581, 0.0000000000000000, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.5491761777615785, 0.0000000000000000, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 1.8758359693666533, 0.0000000000000000, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.2214414690791831, 0.0000000000000000, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler096 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.60000000000000009.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 2.1742785192400269e-16
! // mean(f - f_Boost): 1.3877787807814457e-17
! // variance(f - f_Boost): 2.3776912893669577e-35
! // stddev(f - f_Boost): 4.8761575952454181e-18
! const testcase_ellint_3<double>
! data097[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17560142466065651, 0.0000000000000000, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.35773830754879005, 0.0000000000000000, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.55356583986445973, 0.0000000000000000, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.77143701715151514, 0.0000000000000000, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0212334940541210, 0.0000000000000000, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.3137928444460387, 0.0000000000000000, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.6579755004159076, 0.0000000000000000, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.0537461418295506, 0.0000000000000000, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 2.4836470664490253, 0.0000000000000000, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler097 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.70000000000000007.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 4
! // max(|f - f_Boost| / |f_Boost|): 3.0903019454022601e-16
! // mean(f - f_Boost): -6.9388939039072284e-17
! // variance(f - f_Boost): 5.9442282234173945e-34
! // stddev(f - f_Boost): 2.4380787976227090e-17
! const testcase_ellint_3<double>
! data098[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17578180667760368, 0.0000000000000000, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.35926037139410999, 0.0000000000000000, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.55918341315855080, 0.0000000000000000, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.78653584856932546, 0.0000000000000000, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.0558379029273324, 0.0000000000000000, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.3858662544850615, 0.0000000000000000, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 1.7970491170359040, 0.0000000000000000, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.2992404490153917, 0.0000000000000000, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 2.8678686047727382, 0.0000000000000000, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler098 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.80000000000000004.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.2373744057922657e-16
! // mean(f - f_Boost): 1.0269562977782698e-16
! // variance(f - f_Boost): 1.4388836606733082e-32
! // stddev(f - f_Boost): 1.1995347684303728e-16
! const testcase_ellint_3<double>
! data099[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17596285706118869, 0.0000000000000000, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36080593896484231, 0.0000000000000000, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.56501022706967863, 0.0000000000000000, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.80273891984116930, 0.0000000000000000, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.0949425007763358, 0.0000000000000000, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.4736985692253419, 0.0000000000000000, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 1.9848676587180696, 0.0000000000000000, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 2.6726187823193546, 0.0000000000000000, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 3.5124073655203634, 0.0000000000000000, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler099 = 2.5000000000000020e-13;
  
! // Test data for k=0.0000000000000000, nu=0.90000000000000002.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 6.6108624815885066e-16
! // mean(f - f_Boost): 2.1371793224034264e-16
! // variance(f - f_Boost): 5.6389326618626776e-33
! // stddev(f - f_Boost): 7.5092826966779442e-17
! const testcase_ellint_3<double>
! data100[10] =
  {
!   { 0.0000000000000000, 0.0000000000000000, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17614458024574997, 0.0000000000000000, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36237566578821978, 0.0000000000000000, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.57106058859196640, 0.0000000000000000, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.82019857015755915, 0.0000000000000000, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.1397014388908147, 0.0000000000000000, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.5845952415154960, 0.0000000000000000, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.2620531413370775, 0.0000000000000000, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 3.3587842061975066, 0.0000000000000000, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 4.9672941328980507, 0.0000000000000000, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler100 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.1735566504509645e-16
! // mean(f - f_Boost): -5.8286708792820721e-17
! // variance(f - f_Boost): 4.1942474344433133e-34
! // stddev(f - f_Boost): 2.0479861900030756e-17
! const testcase_ellint_3<double>
! data101[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17454173353063662, 0.10000000000000009, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.34913506721468096, 0.10000000000000009, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.52382550016538953, 0.10000000000000009, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.69864700854177020, 0.10000000000000009, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.87361792586964859, 0.10000000000000009, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.0487386319621685, 0.10000000000000009, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.2239913752078759, 0.10000000000000009, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.3993423113684051, 0.10000000000000009, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.5747455615173560, 0.10000000000000009, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler101 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.10000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.0305747373482148e-16
! // mean(f - f_Boost): -3.0531133177191807e-17
! // variance(f - f_Boost): 1.1508025840536076e-34
! // stddev(f - f_Boost): 1.0727546709539920e-17
! const testcase_ellint_3<double>
! data102[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17471821213559732, 0.10000000000000009, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35052902610011138, 0.10000000000000009, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.52842865990255727, 0.10000000000000009, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.70921799731166713, 0.10000000000000009, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.89340330535868662, 0.10000000000000009, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.0811075784236857, 0.10000000000000009, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.2720133232666426, 0.10000000000000009, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.4653630031861395, 0.10000000000000009, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.6600374067558428, 0.10000000000000009, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler102 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.20000000000000001.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 1.6736714959992433e-16
! // mean(f - f_Boost): 5.5511151231257830e-18
! // variance(f - f_Boost): 3.8043060629871325e-36
! // stddev(f - f_Boost): 1.9504630380981673e-18
! const testcase_ellint_3<double>
! data103[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17489533344059083, 0.10000000000000009, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35194305707815038, 0.10000000000000009, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53317790741512527, 0.10000000000000009, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.72036681615081222, 0.10000000000000009, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.91480372268244303, 0.10000000000000009, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1170528708071514, 0.10000000000000009, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3266916802718358, 0.10000000000000009, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.5421622241831547, 0.10000000000000009, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 1.7608656115083421, 0.10000000000000009, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler103 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.30000000000000004.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 1.9186071760326645e-16
! // mean(f - f_Boost): -1.6653345369377347e-17
! // variance(f - f_Boost): 3.4238754566884194e-35
! // stddev(f - f_Boost): 5.8513891142945016e-18
! const testcase_ellint_3<double>
! data104[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17507310163441189, 0.10000000000000009, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35337768072524217, 0.10000000000000009, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.53808167801629170, 0.10000000000000009, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.73215166755955019, 0.10000000000000009, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.93806546000201219, 0.10000000000000009, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.1573218723395986, 0.10000000000000009, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.3897859679542097, 0.10000000000000009, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.6331009404328622, 0.10000000000000009, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 1.8826015946315438, 0.10000000000000009, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler104 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.40000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.0338059536914377e-16
! // mean(f - f_Boost): 2.7755575615628914e-17
! // variance(f - f_Boost): 9.5107651574678308e-35
! // stddev(f - f_Boost): 9.7523151904908362e-18
! const testcase_ellint_3<double>
! data105[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17525152094559704, 0.10000000000000009, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35483343742825979, 0.10000000000000009, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.54314913099505446, 0.10000000000000009, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.74463962034766862, 0.10000000000000009, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 0.96349276837570441, 0.10000000000000009, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.2029081382746343, 0.10000000000000009, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.4638022887050806, 0.10000000000000009, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 1.7432413830105224, 0.10000000000000009, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.0336367403076760, 0.10000000000000009, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler105 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.9864616042835278e-16
! // mean(f - f_Boost): 9.4368957093138303e-17
! // variance(f - f_Boost): 7.7794254682023874e-32
! // stddev(f - f_Boost): 2.7891621444803792e-16
! const testcase_ellint_3<double>
! data106[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17543059564292182, 0.10000000000000009, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35631088838721664, 0.10000000000000009, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.54839023346436455, 0.10000000000000009, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.75790846946088830, 0.10000000000000009, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 0.99146713686720678, 0.10000000000000009, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.2551692247937198, 0.10000000000000009, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.5524660788146873, 0.10000000000000009, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 1.8806578570830670, 0.10000000000000009, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.2279868912966849, 0.10000000000000009, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler106 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.60000000000000009.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.6726146516228014e-16
! // mean(f - f_Boost): -3.6082248300317589e-17
! // variance(f - f_Boost): 1.6073193116120635e-34
! // stddev(f - f_Boost): 1.2678009747638087e-17
! const testcase_ellint_3<double>
! data107[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17561033003590576, 0.10000000000000009, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.35781061668171932, 0.10000000000000009, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.55381585659629196, 0.10000000000000009, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.77204910484575640, 0.10000000000000009, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0224751740393108, 0.10000000000000009, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.3160230906351114, 0.10000000000000009, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.6616282844233206, 0.10000000000000009, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.0592555664850392, 0.10000000000000009, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 2.4913004919173822, 0.10000000000000009, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler107 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.70000000000000007.
! // max(|f - f_Boost|): 2.2204460492503131e-16 at index 5
! // max(|f - f_Boost| / |f_Boost|): 2.1004074871280821e-16
! // mean(f - f_Boost): 3.3306690738754695e-17
! // variance(f - f_Boost): 1.3695501826753678e-34
! // stddev(f - f_Boost): 1.1702778228589003e-17
! const testcase_ellint_3<double>
! data108[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17579072847532518, 0.10000000000000009, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.35933322840606297, 0.10000000000000009, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.55943788649460324, 0.10000000000000009, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.78716856504031707, 0.10000000000000009, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.0571501305617423, 0.10000000000000009, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.3882948301743525, 0.10000000000000009, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 1.8011785680114223, 0.10000000000000009, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.3057268183616464, 0.10000000000000009, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 2.8771910188009739, 0.10000000000000009, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler108 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.80000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.3133043868392355e-16
! // mean(f - f_Boost): 1.8041124150158794e-16
! // variance(f - f_Boost): 6.1843750436434569e-32
! // stddev(f - f_Boost): 2.4868403735751633e-16
! const testcase_ellint_3<double>
! data109[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17597179535373417, 0.10000000000000009, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36087935387831499, 0.10000000000000009, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.56526935244526444, 0.10000000000000009, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.80339402590612397, 0.10000000000000009, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.0963358646374459, 0.10000000000000009, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.4763748483246868, 0.10000000000000009, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 1.9896610222794102, 0.10000000000000009, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 2.6806423920122024, 0.10000000000000009, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 3.5246199613295612, 0.10000000000000009, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler109 = 2.5000000000000020e-13;
  
! // Test data for k=0.10000000000000009, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.5624826890976725e-16
! // mean(f - f_Boost): 2.3314683517128288e-16
! // variance(f - f_Boost): 2.9401198977189756e-31
! // stddev(f - f_Boost): 5.4222872459129045e-16
! const testcase_ellint_3<double>
! data110[10] =
  {
!   { 0.0000000000000000, 0.10000000000000009, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17615353510599349, 0.10000000000000009, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36244964892922371, 0.10000000000000009, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.57132457590110530, 0.10000000000000009, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.82087808820385000, 0.10000000000000009, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.1411894342144451, 0.10000000000000009, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.5875929286844597, 0.10000000000000009, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.2678622986596659, 0.10000000000000009, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 3.3697528941897903, 0.10000000000000009, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 4.9862890417305499, 0.10000000000000009, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler110 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 4.2156475739151676e-16
! // mean(f - f_Boost): -5.2735593669694933e-17
! // variance(f - f_Boost): 3.0473442641042680e-32
! // stddev(f - f_Boost): 1.7456644190978597e-16
! const testcase_ellint_3<double>
! data111[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17456817290292806, 0.20000000000000018, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.34934315932086796, 0.20000000000000018, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.52450880529443988, 0.20000000000000018, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.70020491009844887, 0.20000000000000018, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.87651006649967977, 0.20000000000000018, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.0534305870298994, 0.20000000000000018, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.2308975521670789, 0.20000000000000018, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.4087733584990738, 0.20000000000000018, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.5868678474541662, 0.20000000000000018, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler111 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.10000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 4.0890622182605400e-16
! // mean(f - f_Boost): -3.8857805861880476e-17
! // variance(f - f_Boost): 2.8794792590749608e-32
! // stddev(f - f_Boost): 1.6969028431454054e-16
! const testcase_ellint_3<double>
! data112[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17474469953608965, 0.20000000000000018, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35073860234984255, 0.20000000000000018, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.52912258712951521, 0.20000000000000018, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.71081701558898069, 0.20000000000000018, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.89640758521169384, 0.20000000000000018, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.0860417038089853, 0.20000000000000018, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.2793599255528623, 0.20000000000000018, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.4754938544089076, 0.20000000000000018, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.6731552050562593, 0.20000000000000018, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler112 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.20000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 3.9570963716579749e-16
! // mean(f - f_Boost): -5.8286708792820721e-17
! // variance(f - f_Boost): 3.1158217732380362e-32
! // stddev(f - f_Boost): 1.7651690494788412e-16
! const testcase_ellint_3<double>
! data113[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17492186907740698, 0.20000000000000018, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35215414286134267, 0.20000000000000018, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53388285615182440, 0.20000000000000018, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.72200960282688265, 0.20000000000000018, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.91793087614428526, 0.20000000000000018, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1222602841587976, 0.20000000000000018, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3345489407496247, 0.20000000000000018, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.5531225705475502, 0.20000000000000018, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 1.7751816279738935, 0.20000000000000018, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler113 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.6785817924053817e-16
! // mean(f - f_Boost): -1.1102230246251566e-17
! // variance(f - f_Boost): 9.9840208317034302e-32
! // stddev(f - f_Boost): 3.1597501217190311e-16
! const testcase_ellint_3<double>
! data114[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17509968571715159, 0.20000000000000018, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35359030214835629, 0.20000000000000018, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.53879807274537084, 0.20000000000000018, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.73384116418059731, 0.20000000000000018, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.94132799329524031, 0.20000000000000018, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.1628407021801439, 0.20000000000000018, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.3982440216739438, 0.20000000000000018, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.6450634983653640, 0.20000000000000018, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 1.8983924169967099, 0.20000000000000018, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler114 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.40000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 6
! // max(|f - f_Boost| / |f_Boost|): 3.6738449250038925e-16
! // mean(f - f_Boost): -3.0531133177191807e-17
! // variance(f - f_Boost): 2.7810428396951687e-32
! // stddev(f - f_Boost): 1.6676458975739331e-16
! const testcase_ellint_3<double>
! data115[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17527815368535152, 0.20000000000000018, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35504762134297801, 0.20000000000000018, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.54387742353211344, 0.20000000000000018, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.74637910471804259, 0.20000000000000018, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 0.96690539714174639, 0.20000000000000018, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.2087859420184757, 0.20000000000000018, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.4729799844168852, 0.20000000000000018, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 1.7564445064596661, 0.20000000000000018, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.0512956926676806, 0.20000000000000018, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler115 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.3841806057292116e-16
! // mean(f - f_Boost): 3.6082248300317589e-17
! // variance(f - f_Boost): 8.9638010532618564e-32
! // stddev(f - f_Boost): 2.9939607634806868e-16
! const testcase_ellint_3<double>
! data116[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17545727725228877, 0.20000000000000018, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35652666242062175, 0.20000000000000018, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.54913090549102406, 0.20000000000000018, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.75970161209211551, 0.20000000000000018, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 0.99504737401590326, 0.20000000000000018, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.2614666007124373, 0.20000000000000018, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.5625255355205498, 0.20000000000000018, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 1.8954460255613346, 0.20000000000000018, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.2481046259421302, 0.20000000000000018, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler116 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.60000000000000009.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.5317584994994743e-16
! // mean(f - f_Boost): -1.3877787807814457e-17
! // variance(f - f_Boost): 1.0045745697575397e-31
! // stddev(f - f_Boost): 3.1695024369095219e-16
! const testcase_ellint_3<double>
! data117[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17563706072900442, 0.20000000000000018, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.35802800926807238, 0.20000000000000018, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.55456942250515051, 0.20000000000000018, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.77390003828438203, 0.20000000000000018, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0262441366366397, 0.20000000000000018, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.3228192988439669, 0.20000000000000018, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.6728005754680795, 0.20000000000000018, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.0761587107468511, 0.20000000000000018, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 2.5148333891629315, 0.20000000000000018, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler117 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.70000000000000007.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.2209418045118284e-16
! // mean(f - f_Boost): 2.4980018054066023e-17
! // variance(f - f_Boost): 9.1989071679544611e-32
! // stddev(f - f_Boost): 3.0329700242426498e-16
! const testcase_ellint_3<double>
! data118[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17581750846781172, 0.20000000000000018, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.35955226882028513, 0.20000000000000018, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.56020489659466499, 0.20000000000000018, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.78908196988531498, 0.20000000000000018, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.0611336754143517, 0.20000000000000018, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.3956969951058884, 0.20000000000000018, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 1.8138131612209609, 0.20000000000000018, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.3256365528879561, 0.20000000000000018, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 2.9058704854500963, 0.20000000000000018, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler118 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.7399960886656824e-16
! // mean(f - f_Boost): 1.3877787807814457e-16
! // variance(f - f_Boost): 1.7585404776158019e-31
! // stddev(f - f_Boost): 4.1934955319110593e-16
! const testcase_ellint_3<double>
! data119[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17599862486281712, 0.20000000000000018, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36110007227128776, 0.20000000000000018, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.56605039658567224, 0.20000000000000018, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.80537523874517691, 0.20000000000000018, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.1005662342414086, 0.20000000000000018, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.4845340298105778, 0.20000000000000018, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.0043332244969392, 0.20000000000000018, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 2.7052856676744761, 0.20000000000000018, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 3.5622166386422633, 0.20000000000000018, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler119 = 2.5000000000000020e-13;
  
! // Test data for k=0.20000000000000018, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.1718503329017390e-16
! // mean(f - f_Boost): 2.3592239273284576e-16
! // variance(f - f_Boost): 2.9295534376290287e-31
! // stddev(f - f_Boost): 5.4125349307224141e-16
! const testcase_ellint_3<double>
! data120[10] =
  {
!   { 0.0000000000000000, 0.20000000000000018, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17618041435044951, 0.20000000000000018, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36267207636502929, 0.20000000000000018, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.57212028758237743, 0.20000000000000018, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.82293323876704483, 0.20000000000000018, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.1457077279880388, 0.20000000000000018, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.5967346899325681, 0.20000000000000018, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.2856537353421724, 0.20000000000000018, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 3.4034714304613902, 0.20000000000000018, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 5.0448269356200370, 0.20000000000000018, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler120 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.2241249691539529e-16
! // mean(f - f_Boost): 2.7755575615628914e-17
! // variance(f - f_Boost): 2.1399221604302621e-32
! // stddev(f - f_Boost): 1.4628472785736254e-16
! const testcase_ellint_3<double>
! data121[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17461228653000099, 0.30000000000000004, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.34969146102798421, 0.30000000000000004, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.52565822873726309, 0.30000000000000004, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.70284226512408543, 0.30000000000000004, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.88144139195111171, 0.30000000000000004, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.0614897067260520, 0.30000000000000004, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.2428416824174220, 0.30000000000000004, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.4251795877015929, 0.30000000000000004, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.6080486199305128, 0.30000000000000004, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler121 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.1872304407982844e-16
! // mean(f - f_Boost): 7.2164496600635178e-17
! // variance(f - f_Boost): 4.3555500115139682e-32
! // stddev(f - f_Boost): 2.0869954507650391e-16
! const testcase_ellint_3<double>
! data122[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17478889331392972, 0.30000000000000004, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35108939018329183, 0.30000000000000004, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53028990896115835, 0.30000000000000004, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.71352417052371409, 0.30000000000000004, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.90153086032405894, 0.30000000000000004, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.0945187977283313, 0.30000000000000004, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.2920699268385683, 0.30000000000000004, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.4931243665896394, 0.30000000000000004, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.6960848815118226, 0.30000000000000004, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler122 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.20000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.2247497610332889e-16
! // mean(f - f_Boost): 6.6613381477509390e-17
! // variance(f - f_Boost): 1.7591111235252501e-32
! // stddev(f - f_Boost): 1.3263148659067538e-16
! const testcase_ellint_3<double>
! data123[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17496614335337535, 0.30000000000000004, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35250745937139372, 0.30000000000000004, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53506875002836884, 0.30000000000000004, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.72479106622248191, 0.30000000000000004, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.92326451535891607, 0.30000000000000004, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1312092060698349, 0.30000000000000004, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3481473154592321, 0.30000000000000004, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.5722049569662750, 0.30000000000000004, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 1.8002173372290500, 0.30000000000000004, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler123 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.1678685180047551e-16
! // mean(f - f_Boost): 1.0547118733938987e-16
! // variance(f - f_Boost): 7.5633408838247182e-32
! // stddev(f - f_Boost): 2.7501528837184157e-16
! const testcase_ellint_3<double>
! data124[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17514404084107435, 0.30000000000000004, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35394619108645647, 0.30000000000000004, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.54000325463372689, 0.30000000000000004, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.73670193794067651, 0.30000000000000004, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.94689345491722177, 0.30000000000000004, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.1723274608389140, 0.30000000000000004, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.4128880552936287, 0.30000000000000004, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.6659010047449661, 0.30000000000000004, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 1.9260216862473254, 0.30000000000000004, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler124 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.40000000000000002.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.3983279132797385e-16
! // mean(f - f_Boost): 1.1657341758564144e-16
! // variance(f - f_Boost): 1.8245832308692586e-31
! // stddev(f - f_Boost): 4.2715140534349863e-16
! const testcase_ellint_3<double>
! data125[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17532259000954434, 0.30000000000000004, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35540612770983693, 0.30000000000000004, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.54510265552938919, 0.30000000000000004, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.74932476310965057, 0.30000000000000004, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 0.97272793583093109, 0.30000000000000004, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.2188928987074241, 0.30000000000000004, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.4888771674085941, 0.30000000000000004, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 1.7794558498219191, 0.30000000000000004, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.0822121773175528, 0.30000000000000004, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler125 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.50000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.0516138451673425e-16
! // mean(f - f_Boost): 4.7184478546569152e-17
! // variance(f - f_Boost): 1.9448563670505968e-32
! // stddev(f - f_Boost): 1.3945810722401896e-16
! const testcase_ellint_3<double>
! data126[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17550179513158179, 0.30000000000000004, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35688783251681200, 0.30000000000000004, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.55037700010142798, 0.30000000000000004, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.76273839789895992, 0.30000000000000004, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 1.0011570518830419, 0.30000000000000004, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.2722987414055109, 0.30000000000000004, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.5799590511080066, 0.30000000000000004, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 1.9212367220124293, 0.30000000000000004, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.2833505881933971, 0.30000000000000004, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler126 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.60000000000000009.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.2121157428443725e-16
! // mean(f - f_Boost): 1.9428902930940239e-16
! // variance(f - f_Boost): 1.5987596229703424e-31
! // stddev(f - f_Boost): 3.9984492281012430e-16
! const testcase_ellint_3<double>
! data127[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17568166052076745, 0.30000000000000004, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.35839189074731181, 0.30000000000000004, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.55583724744367558, 0.30000000000000004, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.77703498090888223, 0.30000000000000004, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0326772113675962, 0.30000000000000004, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.3345139983717369, 0.30000000000000004, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.6921742922838403, 0.30000000000000004, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.1056608968472186, 0.30000000000000004, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 2.5560975528589061, 0.30000000000000004, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler127 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.70000000000000007.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.0088945789059381e-16
! // mean(f - f_Boost): 2.1094237467877973e-16
! // variance(f - f_Boost): 3.0253363535298873e-31
! // stddev(f - f_Boost): 5.5003057674368314e-16
! const testcase_ellint_3<double>
! data128[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17586219053197988, 0.30000000000000004, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.35991891074557669, 0.30000000000000004, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.56149538019961731, 0.30000000000000004, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.79232303189667685, 0.30000000000000004, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.0679345542878826, 0.30000000000000004, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.4084400085913955, 0.30000000000000004, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 1.8357382859296454, 0.30000000000000004, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.3604197996171519, 0.30000000000000004, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 2.9562123549913872, 0.30000000000000004, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler128 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.80000000000000004.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 6.1197887707781618e-16
! // mean(f - f_Boost): 3.4416913763379854e-16
! // variance(f - f_Boost): 4.3461914185990199e-31
! // stddev(f - f_Boost): 6.5925650687718054e-16
! const testcase_ellint_3<double>
! data129[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17604338956191670, 0.30000000000000004, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36146952517410791, 0.30000000000000004, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.56736453393774644, 0.30000000000000004, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.80873149979001091, 0.30000000000000004, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.1077903069860620, 0.30000000000000004, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.4985874311132998, 0.30000000000000004, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.0298167266724954, 0.30000000000000004, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 2.7483929054985432, 0.30000000000000004, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 3.6283050484567170, 0.30000000000000004, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler129 = 2.5000000000000020e-13;
  
! // Test data for k=0.30000000000000004, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 5.1301806687926828e-16
! // mean(f - f_Boost): 4.1633363423443370e-16
! // variance(f - f_Boost): 2.2835347143080263e-31
! // stddev(f - f_Boost): 4.7786344433405093e-16
! const testcase_ellint_3<double>
! data130[10] =
  {
!   { 0.0000000000000000, 0.30000000000000004, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17622526204962433, 0.30000000000000004, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36304439230777141, 0.30000000000000004, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.57345914744719195, 0.30000000000000004, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.82641512928845162, 0.30000000000000004, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.1534256210757743, 0.30000000000000004, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.6124900353411677, 0.30000000000000004, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.3165905514845089, 0.30000000000000004, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 3.4625619526539824, 0.30000000000000004, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 5.1479514944016787, 0.30000000000000004, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler130 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.0000000000000000.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 1.0831445028587608e-15
! // mean(f - f_Boost): 1.7486012637846215e-16
! // variance(f - f_Boost): 3.1664095331106078e-31
! // stddev(f - f_Boost): 5.6270858649132121e-16
! const testcase_ellint_3<double>
! data131[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17467414669441528, 0.40000000000000013, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35018222772483443, 0.40000000000000013, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.52729015917508748, 0.40000000000000013, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.70662374407341244, 0.40000000000000013, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.88859210497602159, 0.40000000000000013, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.0733136290471381, 0.40000000000000013, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.2605612170157066, 0.40000000000000013, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.4497513956433439, 0.40000000000000013, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.6399998658645112, 0.40000000000000013, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler131 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.10000000000000001.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 1.0263824105456986e-15
! // mean(f - f_Boost): 1.7486012637846215e-16
! // variance(f - f_Boost): 3.1664095331106078e-31
! // stddev(f - f_Boost): 5.6270858649132121e-16
! const testcase_ellint_3<double>
! data132[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17485086590796767, 0.40000000000000013, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35158366412506992, 0.40000000000000013, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53194731675711726, 0.40000000000000013, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.71740615528010931, 0.40000000000000013, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.90896157773487030, 0.40000000000000013, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1069605483834348, 0.40000000000000013, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3109353428823001, 0.40000000000000013, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.5195460789903450, 0.40000000000000013, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.7306968836847190, 0.40000000000000013, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler132 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.20000000000000001.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 9.6644296021947179e-16
! // mean(f - f_Boost): 2.0816681711721685e-16
! // variance(f - f_Boost): 3.0360740073926687e-31
! // stddev(f - f_Boost): 5.5100580826273227e-16
! const testcase_ellint_3<double>
! data133[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17502822886437389, 0.40000000000000013, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35300530062530805, 0.40000000000000013, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53675259548210896, 0.40000000000000013, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.72878006428676934, 0.40000000000000013, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.93100219010583574, 0.40000000000000013, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1443487271187611, 0.40000000000000013, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3683427764108813, 0.40000000000000013, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.6008221459300933, 0.40000000000000013, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 1.8380358826317627, 0.40000000000000013, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler133 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.30000000000000004.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 9.0271556462838835e-16
! // mean(f - f_Boost): 2.0816681711721685e-16
! // variance(f - f_Boost): 3.0360740073926687e-31
! // stddev(f - f_Boost): 5.5100580826273227e-16
! const testcase_ellint_3<double>
! data134[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17520623975982899, 0.40000000000000013, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35444766141612105, 0.40000000000000013, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.54171455841536009, 0.40000000000000013, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.74080517001084012, 0.40000000000000013, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.95496950509296574, 0.40000000000000013, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.1862627879844718, 0.40000000000000013, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.4346501803799458, 0.40000000000000013, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.6971744798077699, 0.40000000000000013, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 1.9677924132520139, 0.40000000000000013, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler134 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.40000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 8.3436329231972794e-16
! // mean(f - f_Boost): 2.3037127760972000e-16
! // variance(f - f_Boost): 2.9507053793392374e-31
! // stddev(f - f_Boost): 5.4320395611033958e-16
! const testcase_ellint_3<double>
! data135[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17538490283034375, 0.40000000000000013, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35591129064319948, 0.40000000000000013, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.54684250413264535, 0.40000000000000013, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.75355027742668290, 0.40000000000000013, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 0.98117935026780634, 0.40000000000000013, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.2337464222030736, 0.40000000000000013, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.5125183419289221, 0.40000000000000013, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 1.8140224451130313, 0.40000000000000013, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.1289968719280026, 0.40000000000000013, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler135 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.50000000000000000.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.7013794022122431e-16
! // mean(f - f_Boost): 2.3037127760972000e-16
! // variance(f - f_Boost): 1.4989821857033475e-31
! // stddev(f - f_Boost): 3.8716691306248618e-16
! const testcase_ellint_3<double>
! data136[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17556422235224273, 0.40000000000000013, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35739675341763921, 0.40000000000000013, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.55214655195037188, 0.40000000000000013, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.76709520942047438, 0.40000000000000013, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 1.0100278761577499, 0.40000000000000013, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.2882265661384342, 0.40000000000000013, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.6059059780051876, 0.40000000000000013, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 1.9600182740224081, 0.40000000000000013, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.3367461373176512, 0.40000000000000013, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler136 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.60000000000000009.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 8.4792115132836117e-16
! // mean(f - f_Boost): 2.3037127760972000e-16
! // variance(f - f_Boost): 4.8893797490374802e-31
! // stddev(f - f_Boost): 6.9924099915819294e-16
! const testcase_ellint_3<double>
! data137[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17574420264267029, 0.40000000000000013, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.35890463689046265, 0.40000000000000013, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.55763773975194486, 0.40000000000000013, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.78153324227761267, 0.40000000000000013, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0420205885765887, 0.40000000000000013, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.3517205230381770, 0.40000000000000013, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.7210360970313896, 0.40000000000000013, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.1500780510169246, 0.40000000000000013, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 2.6186940209850191, 0.40000000000000013, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler137 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.70000000000000007.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.8573292020719759e-16
! // mean(f - f_Boost): 2.2759572004815707e-16
! // variance(f - f_Boost): 2.9613098824898137e-31
! // stddev(f - f_Boost): 5.4417918762938862e-16
! const testcase_ellint_3<double>
! data138[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17592484806010436, 0.40000000000000013, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.36043555139631439, 0.40000000000000013, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.56332813669944881, 0.40000000000000013, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.79697424562157548, 0.40000000000000013, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.0778155987523672, 0.40000000000000013, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.4272018169896268, 0.40000000000000013, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 1.8684377907453382, 0.40000000000000013, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.4128677409207473, 0.40000000000000013, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 3.0327078743873246, 0.40000000000000013, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler138 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.80000000000000004.
! // max(|f - f_Boost|): 3.5527136788005009e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 9.5273712585384737e-16
! // mean(f - f_Boost): 4.5241588253475131e-16
! // variance(f - f_Boost): 1.1866477068555882e-30
! // stddev(f - f_Boost): 1.0893336067778265e-15
! const testcase_ellint_3<double>
! data139[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17610616300487833, 0.40000000000000013, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36199013167171978, 0.40000000000000013, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.56923097361842434, 0.40000000000000013, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.81354878456624347, 0.40000000000000013, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.1182902719261825, 0.40000000000000013, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.5192950589409022, 0.40000000000000013, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.0678761710223981, 0.40000000000000013, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 2.8135222249879788, 0.40000000000000013, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 3.7289548002199902, 0.40000000000000013, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler139 = 2.5000000000000020e-13;
  
! // Test data for k=0.40000000000000013, nu=0.90000000000000002.
! // max(|f - f_Boost|): 6.2172489379008766e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 1.1718379478872251e-15
! // mean(f - f_Boost): 8.4099394115355610e-16
! // variance(f - f_Boost): 3.5684096037099424e-30
! // stddev(f - f_Boost): 1.8890234523980751e-15
! const testcase_ellint_3<double>
! data140[10] =
  {
!   { 0.0000000000000000, 0.40000000000000013, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17628815191971123, 0.40000000000000013, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36356903815378772, 0.40000000000000013, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.57536079447000310, 0.40000000000000013, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.83141355850172571, 0.40000000000000013, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.1646481598721361, 0.40000000000000013, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.6357275034001995, 0.40000000000000013, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.3628787566572402, 0.40000000000000013, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 3.5521010369134962, 0.40000000000000013, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 5.3055535102872513, 0.40000000000000013, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler140 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.4551389361831220e-16
! // mean(f - f_Boost): -1.3877787807814457e-17
! // variance(f - f_Boost): 2.5893058141206173e-32
! // stddev(f - f_Boost): 1.6091320064309879e-16
! const testcase_ellint_3<double>
! data141[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17475385514035785, 0.50000000000000000, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35081868470101579, 0.50000000000000000, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.52942862705190574, 0.50000000000000000, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.71164727562630326, 0.50000000000000000, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.89824523594227768, 0.50000000000000000, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.0895506700518853, 0.50000000000000000, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.2853005857432933, 0.50000000000000000, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.4845545520549488, 0.50000000000000000, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.6857503548125961, 0.50000000000000000, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler141 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.7416868347177582e-16
! // mean(f - f_Boost): 2.7755575615628915e-18
! // variance(f - f_Boost): 5.4326441655972001e-32
! // stddev(f - f_Boost): 2.3308033305273100e-16
! const testcase_ellint_3<double>
! data142[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17493071928248824, 0.50000000000000000, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35222467688034798, 0.50000000000000000, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53411928652008112, 0.50000000000000000, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.72256398117177589, 0.50000000000000000, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.91899583232771009, 0.50000000000000000, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1240549163055360, 0.50000000000000000, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3372938086286021, 0.50000000000000000, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.5570024469132429, 0.50000000000000000, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.7803034946545480, 0.50000000000000000, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler142 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.20000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.1198767993730867e-16
! // mean(f - f_Boost): 2.7755575615628914e-17
! // variance(f - f_Boost): 5.0311947683004831e-32
! // stddev(f - f_Boost): 2.2430324938128922e-16
! const testcase_ellint_3<double>
! data143[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17510822779582402, 0.50000000000000000, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35365094725531487, 0.50000000000000000, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53895933237328697, 0.50000000000000000, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.73408090840070794, 0.50000000000000000, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.94145442818535396, 0.50000000000000000, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1624120186296487, 0.50000000000000000, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3965823372867114, 0.50000000000000000, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.6414308440430099, 0.50000000000000000, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 1.8922947612264018, 0.50000000000000000, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler143 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.30000000000000004.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.3800262770228813e-16
! // mean(f - f_Boost): 5.8286708792820721e-17
! // variance(f - f_Boost): 8.5027191584278157e-32
! // stddev(f - f_Boost): 2.9159422419567599e-16
! const testcase_ellint_3<double>
! data144[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17528638488102041, 0.50000000000000000, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35509802222332720, 0.50000000000000000, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.54395740731866193, 0.50000000000000000, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.74625871438752667, 0.50000000000000000, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.96588271186092023, 0.50000000000000000, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.2054319584357329, 0.50000000000000000, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.4651077994832871, 0.50000000000000000, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.7416018368052644, 0.50000000000000000, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 2.0277924458111314, 0.50000000000000000, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler144 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.40000000000000002.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.0439932918341581e-16
! // mean(f - f_Boost): 3.0531133177191807e-17
! // variance(f - f_Boost): 9.0809736800018602e-32
! // stddev(f - f_Boost): 3.0134653938616686e-16
! const testcase_ellint_3<double>
! data145[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17546519477859268, 0.50000000000000000, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35656644822531680, 0.50000000000000000, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.54912289677411319, 0.50000000000000000, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.75916731611690047, 0.50000000000000000, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 0.99260415631328214, 0.50000000000000000, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.2541925856918670, 0.50000000000000000, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.5456393705347609, 0.50000000000000000, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 1.8631904972952076, 0.50000000000000000, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.1962905366178065, 0.50000000000000000, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler145 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.6797816859260978e-16
! // mean(f - f_Boost): 9.4368957093138303e-17
! // variance(f - f_Boost): 7.7794254682023874e-32
! // stddev(f - f_Boost): 2.7891621444803792e-16
! const testcase_ellint_3<double>
! data146[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17564466176941509, 0.50000000000000000, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35805679276065394, 0.50000000000000000, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.55446601496200032, 0.50000000000000000, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.77288783578259013, 0.50000000000000000, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 1.0220246013918972, 0.50000000000000000, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.3101681612463965, 0.50000000000000000, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.6422994881851025, 0.50000000000000000, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 2.0152636030998816, 0.50000000000000000, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.4136715042011945, 0.50000000000000000, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler146 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.60000000000000009.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.9178421578645735e-16
! // mean(f - f_Boost): 1.3322676295501878e-16
! // variance(f - f_Boost): 1.7749370367472766e-31
! // stddev(f - f_Boost): 4.2130001622920411e-16
! const testcase_ellint_3<double>
! data147[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17582479017522740, 0.50000000000000000, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.35956964546660036, 0.50000000000000000, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.55999790372984193, 0.50000000000000000, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.78751507911209895, 0.50000000000000000, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0546620505035220, 0.50000000000000000, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.3754438357425935, 0.50000000000000000, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.7615727400820127, 0.50000000000000000, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.2134638067565242, 0.50000000000000000, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 2.7090491861753558, 0.50000000000000000, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler147 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.70000000000000007.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.0745105182189226e-16
! // mean(f - f_Boost): 4.1633363423443370e-17
! // variance(f - f_Boost): 1.9996383743576116e-32
! // stddev(f - f_Boost): 1.4140857026211713e-16
! const testcase_ellint_3<double>
! data148[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17600558435914915, 0.50000000000000000, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.36110561926726259, 0.50000000000000000, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.56573074641137111, 0.50000000000000000, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.80316073084237205, 0.50000000000000000, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.0911910688131461, 0.50000000000000000, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.4530946406380640, 0.50000000000000000, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 1.9144386536785372, 0.50000000000000000, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.4878788958234970, 0.50000000000000000, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 3.1433945297859225, 0.50000000000000000, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler148 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.4380477375534667e-16
! // mean(f - f_Boost): 2.3037127760972000e-16
! // variance(f - f_Boost): 1.4989821857033475e-31
! // stddev(f - f_Boost): 3.8716691306248618e-16
! const testcase_ellint_3<double>
! data149[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17618704872620228, 0.50000000000000000, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36266535159745827, 0.50000000000000000, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.57167789954529158, 0.50000000000000000, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.81995752984315018, 0.50000000000000000, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.1325112162158122, 0.50000000000000000, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.5479055930718042, 0.50000000000000000, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.1215243941010486, 0.50000000000000000, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 2.9069405767650132, 0.50000000000000000, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 3.8750701888108066, 0.50000000000000000, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler149 = 2.5000000000000020e-13;
  
! // Test data for k=0.50000000000000000, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 3.6192315188521289e-16
! // mean(f - f_Boost): 3.5249581031848718e-16
! // variance(f - f_Boost): 2.5029385557256515e-31
! // stddev(f - f_Boost): 5.0029376927217987e-16
! const testcase_ellint_3<double>
! data150[10] =
  {
!   { 0.0000000000000000, 0.50000000000000000, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17636918772384180, 0.50000000000000000, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36424950570740700, 0.50000000000000000, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.57785404590231426, 0.50000000000000000, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.83806480521716531, 0.50000000000000000, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.1798568683069752, 0.50000000000000000, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.6678766243739607, 0.50000000000000000, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.4282976450693483, 0.50000000000000000, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 3.6810787666126656, 0.50000000000000000, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 5.5355132096026454, 0.50000000000000000, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler150 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.0000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.3664899092028927e-16
! // mean(f - f_Boost): 3.0531133177191807e-17
! // variance(f - f_Boost): 7.8758646268991113e-33
! // stddev(f - f_Boost): 8.8746068233466605e-17
! const testcase_ellint_3<double>
! data151[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17485154362988359, 0.60000000000000009, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35160509865544320, 0.60000000000000009, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.53210652578446138, 0.60000000000000009, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.71805304664485659, 0.60000000000000009, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.91082759030195981, 0.60000000000000009, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.1112333229323361, 0.60000000000000009, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.3191461190365270, 0.60000000000000009, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.5332022105084779, 0.60000000000000009, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.7507538029157526, 0.60000000000000009, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler151 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.10000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.2335247010355137e-16
! // mean(f - f_Boost): 8.6042284408449634e-17
! // variance(f - f_Boost): 2.2835347143080263e-33
! // stddev(f - f_Boost): 4.7786344433405099e-17
! const testcase_ellint_3<double>
! data152[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17502858548476194, 0.60000000000000009, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35301673150537388, 0.60000000000000009, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.53683932476326812, 0.60000000000000009, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.72914228589586771, 0.60000000000000009, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.93208036718354692, 0.60000000000000009, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1468984688863377, 0.60000000000000009, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.3733904977062528, 0.60000000000000009, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.6094225663372157, 0.60000000000000009, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.8508766487100685, 0.60000000000000009, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler152 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.20000000000000001.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 2.2547200163366559e-16
! // mean(f - f_Boost): -2.4980018054066023e-17
! // variance(f - f_Boost): 2.1685495635542404e-32
! // stddev(f - f_Boost): 1.4725995937641163e-16
! const testcase_ellint_3<double>
! data153[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17520627248155893, 0.60000000000000009, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35444873935437748, 0.60000000000000009, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.54172310557682524, 0.60000000000000009, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.74084300280734672, 0.60000000000000009, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.95509001527006121, 0.60000000000000009, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1865688084431796, 0.60000000000000009, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.4352978868932600, 0.60000000000000009, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.6983400371331818, 0.60000000000000009, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 1.9695980282802217, 0.60000000000000009, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler153 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.30000000000000004.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.9470074709717020e-16
! // mean(f - f_Boost): 3.0531133177191807e-17
! // variance(f - f_Boost): 1.1508025840536076e-34
! // stddev(f - f_Boost): 1.0727546709539920e-17
! const testcase_ellint_3<double>
! data154[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17538460882640122, 0.60000000000000009, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35590165133735557, 0.60000000000000009, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.54676661152254535, 0.60000000000000009, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.75321709418305305, 0.60000000000000009, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.98012637808992920, 0.60000000000000009, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.2310891277158875, 0.60000000000000009, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.5069157924585623, 0.60000000000000009, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.8039583598337940, 0.60000000000000009, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 2.1134154405060599, 0.60000000000000009, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler154 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.40000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 2.8974839914337670e-16
! // mean(f - f_Boost): -1.3877787807814457e-17
! // variance(f - f_Boost): 2.2849613290816465e-32
! // stddev(f - f_Boost): 1.5116088545260797e-16
! const testcase_ellint_3<double>
! data155[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17556359876533037, 0.60000000000000009, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35737601674244679, 0.60000000000000009, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.55197933771320218, 0.60000000000000009, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.76633591620002905, 0.60000000000000009, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 1.0075231136019616, 0.60000000000000009, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.2815842073813450, 0.60000000000000009, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.5911666941449827, 0.60000000000000009, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 1.9323227566025762, 0.60000000000000009, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.2925036420985130, 0.60000000000000009, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler155 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.50000000000000000.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 2.1397785842303966e-16
! // mean(f - f_Boost): 9.1593399531575410e-17
! // variance(f - f_Boost): 1.5339913122479866e-32
! // stddev(f - f_Boost): 1.2385440291923362e-16
! const testcase_ellint_3<double>
! data156[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17574324658480217, 0.60000000000000009, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35887240603169313, 0.60000000000000009, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.55737161826345261, 0.60000000000000009, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.78028227313077458, 0.60000000000000009, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 1.0376989776486290, 0.60000000000000009, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.3395933991042928, 0.60000000000000009, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.6924049626591784, 0.60000000000000009, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 2.0931011856518920, 0.60000000000000009, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.5239007084492711, 0.60000000000000009, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler156 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.60000000000000009.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.6651378277398083e-16
! // mean(f - f_Boost): 1.1934897514720432e-16
! // variance(f - f_Boost): 1.7585404776158019e-33
! // stddev(f - f_Boost): 4.1934955319110598e-17
! const testcase_ellint_3<double>
! data157[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17592355661219386, 0.60000000000000009, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.36039141192661606, 0.60000000000000009, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.56295472636903854, 0.60000000000000009, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.79515295130165986, 0.60000000000000009, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0711886441942242, 0.60000000000000009, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.4072952835139891, 0.60000000000000009, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.8174863977376825, 0.60000000000000009, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.3029921578542232, 0.60000000000000009, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 2.8388723099514972, 0.60000000000000009, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler157 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.70000000000000007.
! // max(|f - f_Boost|): 4.4408920985006262e-16 at index 9
! // max(|f - f_Boost| / |f_Boost|): 2.0027679235921772e-16
! // mean(f - f_Boost): -1.3877787807814457e-17
! // variance(f - f_Boost): 2.2849613290816465e-32
! // stddev(f - f_Boost): 1.5116088545260797e-16
! const testcase_ellint_3<double>
! data158[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17610453321631936, 0.60000000000000009, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.36193365056369764, 0.60000000000000009, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.56874098962268527, 0.60000000000000009, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.81106198671477181, 0.60000000000000009, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.1086886419010082, 0.60000000000000009, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.4879048567239257, 0.60000000000000009, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 1.9780310073615925, 0.60000000000000009, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.5941545586772712, 0.60000000000000009, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 3.3029735898397159, 0.60000000000000009, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler158 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.80000000000000004.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 7.3044933435043190e-16
! // mean(f - f_Boost): 2.6367796834847468e-16
! // variance(f - f_Boost): 8.5834655546147173e-33
! // stddev(f - f_Boost): 9.2646994309662939e-17
! const testcase_ellint_3<double>
! data159[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17628618080795252, 0.60000000000000009, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36349976272521012, 0.60000000000000009, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.57474392342151914, 0.60000000000000009, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.82814493499158170, 0.60000000000000009, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.1511281795998280, 0.60000000000000009, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.5864286332503075, 0.60000000000000009, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.1958944866494527, 0.60000000000000009, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 3.0398358172574604, 0.60000000000000009, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 4.0867036409261832, 0.60000000000000009, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler159 = 2.5000000000000020e-13;
  
! // Test data for k=0.60000000000000009, nu=0.90000000000000002.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.5952142720718732e-16
! // mean(f - f_Boost): 4.6351811278100284e-16
! // variance(f - f_Boost): 2.1278339779151204e-31
! // stddev(f - f_Boost): 4.6128450851021651e-16
! const testcase_ellint_3<double>
! data160[10] =
  {
!   { 0.0000000000000000, 0.60000000000000009, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17646850384035848, 0.60000000000000009, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36509041515134105, 0.60000000000000009, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.58097838596260631, 0.60000000000000009, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.84656453396163722, 0.60000000000000009, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.1997828426963724, 0.60000000000000009, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.7112436789225605, 0.60000000000000009, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.5193168553672312, 0.60000000000000009, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 3.8656670488606690, 0.60000000000000009, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 5.8709993116265604, 0.60000000000000009, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler160 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.0000000000000000.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.1569224977685422e-16
! // mean(f - f_Boost): 7.7715611723760953e-17
! // variance(f - f_Boost): 1.6571557210371951e-32
! // stddev(f - f_Boost): 1.2873056051447903e-16
! const testcase_ellint_3<double>
! data161[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17496737466916723, 0.70000000000000018, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35254687535677931, 0.70000000000000018, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.53536740275997130, 0.70000000000000018, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.72603797651684454, 0.70000000000000018, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.92698296348313447, 0.70000000000000018, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.1400447527693318, 0.70000000000000018, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.3657668117194073, 0.70000000000000018, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.6024686895959164, 0.70000000000000018, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.8456939983747236, 0.70000000000000018, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler161 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.9552278747527691e-16
! // mean(f - f_Boost): 1.1102230246251565e-16
! // variance(f - f_Boost): 1.3695501826753678e-32
! // stddev(f - f_Boost): 1.1702778228589004e-16
! const testcase_ellint_3<double>
! data162[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17514462737300920, 0.70000000000000018, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35396527997470451, 0.70000000000000018, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.54015179589433981, 0.70000000000000018, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.73734430854477728, 0.70000000000000018, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.94888950796697047, 0.70000000000000018, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.1772807959736322, 0.70000000000000018, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.4231796401075834, 0.70000000000000018, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.6841856799887471, 0.70000000000000018, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 1.9541347343119564, 0.70000000000000018, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler162 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.20000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.7430437016285820e-16
! // mean(f - f_Boost): 3.3306690738754695e-17
! // variance(f - f_Boost): 1.3695501826753678e-34
! // stddev(f - f_Boost): 1.1702778228589003e-17
! const testcase_ellint_3<double>
! data163[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17532252613350796, 0.70000000000000018, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35540417596807522, 0.70000000000000018, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.54508913033361928, 0.70000000000000018, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.74927635777718415, 0.70000000000000018, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.97261706337936338, 0.70000000000000018, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.2187303976209327, 0.70000000000000018, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.4887796709222487, 0.70000000000000018, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.7796581281839214, 0.70000000000000018, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 2.0829290325820207, 0.70000000000000018, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler163 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.30000000000000004.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.2570807706941696e-16
! // mean(f - f_Boost): 8.8817841970012528e-17
! // variance(f - f_Boost): 1.5582437633995295e-32
! // stddev(f - f_Boost): 1.2482963443828271e-16
! const testcase_ellint_3<double>
! data164[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17550107516328570, 0.70000000000000018, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35686409576571965, 0.70000000000000018, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.55018827316513352, 0.70000000000000018, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.76189759494390275, 0.70000000000000018, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 0.99844623430885626, 0.70000000000000018, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.2652862989039833, 0.70000000000000018, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.5647666808691361, 0.70000000000000018, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 1.8932499694938165, 0.70000000000000018, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 2.2392290510988535, 0.70000000000000018, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler164 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.40000000000000002.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.3719045096496910e-16
! // mean(f - f_Boost): 1.3600232051658169e-16
! // variance(f - f_Boost): 1.1718213750516114e-32
! // stddev(f - f_Boost): 1.0825069861444829e-16
! const testcase_ellint_3<double>
! data165[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17568027871494424, 0.70000000000000018, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35834559208180261, 0.70000000000000018, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.55545885451190613, 0.70000000000000018, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.77528120402568113, 0.70000000000000018, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 1.0267241287600322, 0.70000000000000018, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.3181380338980246, 0.70000000000000018, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.6542840785132087, 0.70000000000000018, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 2.0315595131131823, 0.70000000000000018, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.4342502915307880, 0.70000000000000018, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler165 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.0277361210295499e-16
! // mean(f - f_Boost): 1.6930901125533636e-16
! // variance(f - f_Boost): 6.3799163752809956e-32
! // stddev(f - f_Boost): 2.5258496343371268e-16
! const testcase_ellint_3<double>
! data166[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17586014108156545, 0.70000000000000018, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35984923894341653, 0.70000000000000018, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.56091135606739995, 0.70000000000000018, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.78951212635197054, 0.70000000000000018, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 1.0578865732938731, 0.70000000000000018, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.3789149005151722, 0.70000000000000018, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.7620212286086228, 0.70000000000000018, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 2.2051554347435589, 0.70000000000000018, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.6868019968236996, 0.70000000000000018, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler166 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.60000000000000009.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.8597454441867134e-16
! // mean(f - f_Boost): 2.5535129566378598e-16
! // variance(f - f_Boost): 2.8561208198482198e-31
! // stddev(f - f_Boost): 5.3442687243889785e-16
! const testcase_ellint_3<double>
! data167[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17604066659721918, 0.70000000000000018, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.36137563278353424, 0.70000000000000018, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.56655721272747606, 0.70000000000000018, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.80468966552978305, 0.70000000000000018, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.0924902943683852, 0.70000000000000018, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.4499247992499800, 0.70000000000000018, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 1.8953714382113818, 0.70000000000000018, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.4323229949248670, 0.70000000000000018, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 3.0314573496746746, 0.70000000000000018, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler167 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.70000000000000007.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 8
! // max(|f - f_Boost| / |f_Boost|): 3.2316852368580916e-16
! // mean(f - f_Boost): 7.7715611723760953e-17
! // variance(f - f_Boost): 7.4564398834547797e-34
! // stddev(f - f_Boost): 2.7306482533374340e-17
! const testcase_ellint_3<double>
! data168[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17622185963747933, 0.70000000000000018, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.36292539360435261, 0.70000000000000018, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.57240892970150015, 0.70000000000000018, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.82093084713182629, 0.70000000000000018, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.1312609022179871, 0.70000000000000018, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.5345768067715795, 0.70000000000000018, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 2.0668847445934424, 0.70000000000000018, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.7483444537551245, 0.70000000000000018, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 3.5408408771788569, 0.70000000000000018, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler168 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.3322676295501878e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.1198716111867353e-16
! // mean(f - f_Boost): 2.2482016248659419e-16
! // variance(f - f_Boost): 5.4326441655972001e-32
! // stddev(f - f_Boost): 2.3308033305273100e-16
! const testcase_ellint_3<double>
! data169[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17640372461994805, 0.70000000000000018, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36449916621651091, 0.70000000000000018, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.57848021800372584, 0.70000000000000018, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.83837480968392586, 0.70000000000000018, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.1751669030061143, 0.70000000000000018, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.6381851899173603, 0.70000000000000018, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.3002065924302197, 0.70000000000000018, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 3.2337600665337871, 0.70000000000000018, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 4.4042405729076970, 0.70000000000000018, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler169 = 2.5000000000000020e-13;
  
! // Test data for k=0.70000000000000018, nu=0.90000000000000002.
! // max(|f - f_Boost|): 3.5527136788005009e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 8.5869439826269878e-16
! // mean(f - f_Boost): 7.4384942649885490e-16
! // variance(f - f_Boost): 9.7403930714297352e-31
! // stddev(f - f_Boost): 9.8693429727767263e-16
! const testcase_ellint_3<double>
! data170[10] =
  {
!   { 0.0000000000000000, 0.70000000000000018, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17658626600478800, 0.70000000000000018, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36609762156017206, 0.70000000000000018, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.58478615187842409, 0.70000000000000018, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.85718862878291846, 0.70000000000000018, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.2255385617397643, 0.70000000000000018, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.7696521899992941, 0.70000000000000018, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.6476314987883507, 0.70000000000000018, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 4.1373434902898083, 0.70000000000000018, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 6.3796094177887763, 0.70000000000000018, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler170 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.0000000000000000.
! // max(|f - f_Boost|): 1.5543122344752192e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.7898565163847540e-16
! // mean(f - f_Boost): 2.3869795029440865e-16
! // variance(f - f_Boost): 2.1368406725192426e-31
! // stddev(f - f_Boost): 4.6225974002926564e-16
! const testcase_ellint_3<double>
! data171[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17510154241338899, 0.80000000000000004, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35365068839779396, 0.80000000000000004, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.53926804409084550, 0.80000000000000004, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.73587926028070372, 0.80000000000000004, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.94770942970071170, 0.80000000000000004, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.1789022995388236, 0.80000000000000004, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.4323027881876012, 0.80000000000000004, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.7069629739121677, 0.80000000000000004, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 1.9953027776647294, 0.80000000000000004, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler171 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.10000000000000001.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 8.3898786942190374e-16
! // mean(f - f_Boost): 2.3869795029440865e-16
! // variance(f - f_Boost): 2.9190059990693968e-31
! // stddev(f - f_Boost): 5.4027826155319237e-16
! const testcase_ellint_3<double>
! data172[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17527903952342144, 0.80000000000000004, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35507705313548549, 0.80000000000000004, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.54411455987643553, 0.80000000000000004, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.74745625666804383, 0.80000000000000004, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.97046953684238557, 0.80000000000000004, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.2183080025184605, 0.80000000000000004, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.4943711151994405, 0.80000000000000004, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.7972401309544201, 0.80000000000000004, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 2.1172616484005085, 0.80000000000000004, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler172 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.20000000000000001.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.8513740186068518e-16
! // mean(f - f_Boost): 2.8310687127941490e-16
! // variance(f - f_Boost): 2.7528339102381189e-31
! // stddev(f - f_Boost): 5.2467455724840699e-16
! const testcase_ellint_3<double>
! data173[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17545718375086419, 0.80000000000000004, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35652404627248163, 0.80000000000000004, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.54911638512920913, 0.80000000000000004, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.75967684282131176, 0.80000000000000004, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 0.99513526893543769, 0.80000000000000004, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.2622192109995993, 0.80000000000000004, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.5654106676347741, 0.80000000000000004, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 1.9029531718534984, 0.80000000000000004, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 2.2624789434186798, 0.80000000000000004, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler173 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.30000000000000004.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.2825261583337354e-16
! // mean(f - f_Boost): 2.6367796834847468e-16
! // variance(f - f_Boost): 2.8249350208968825e-31
! // stddev(f - f_Boost): 5.3150117788175054e-16
! const testcase_ellint_3<double>
! data174[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17563597931587369, 0.80000000000000004, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35799220412005128, 0.80000000000000004, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.55428253691111318, 0.80000000000000004, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.77260647376977365, 0.80000000000000004, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 1.0220015271210958, 0.80000000000000004, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.3115965312302671, 0.80000000000000004, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.6478518468813512, 0.80000000000000004, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 2.0290458414203481, 0.80000000000000004, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 2.4392042002725693, 0.80000000000000004, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler174 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.40000000000000002.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 8.3462748389836647e-16
! // mean(f - f_Boost): 3.3861802251067273e-16
! // variance(f - f_Boost): 4.3719465706454422e-31
! // stddev(f - f_Boost): 6.6120696991527871e-16
! const testcase_ellint_3<double>
! data175[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17581543047866136, 0.80000000000000004, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.35948208343061633, 0.80000000000000004, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.55962280893702021, 0.80000000000000004, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.78632063889234116, 0.80000000000000004, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 1.0514333069550323, 0.80000000000000004, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.3677213138838757, 0.80000000000000004, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.7451736773665165, 0.80000000000000004, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 2.1830100424586831, 0.80000000000000004, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 2.6604037035529724, 0.80000000000000004, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler175 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.50000000000000000.
! // max(|f - f_Boost|): 2.6645352591003757e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 9.0388243828581744e-16
! // mean(f - f_Boost): 3.8580250105724191e-16
! // variance(f - f_Boost): 6.4106456575047741e-31
! // stddev(f - f_Boost): 8.0066507713929764e-16
! const testcase_ellint_3<double>
! data176[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17599554153999472, 0.80000000000000004, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.36099426243351540, 0.80000000000000004, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.56514786174780673, 0.80000000000000004, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.80090697622371010, 0.80000000000000004, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 1.0838891627679339, 0.80000000000000004, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.4323506654466280, 0.80000000000000004, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 1.8625761085390575, 0.80000000000000004, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 2.3768757305654766, 0.80000000000000004, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 2.9478781158239746, 0.80000000000000004, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler176 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.60000000000000009.
! // max(|f - f_Boost|): 3.5527136788005009e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 1.0631099169042069e-15
! // mean(f - f_Boost): 4.8294701571194306e-16
! // variance(f - f_Boost): 1.1633910328160319e-30
! // stddev(f - f_Boost): 1.0786060600682865e-15
! const testcase_ellint_3<double>
! data177[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17617631684170665, 0.80000000000000004, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.36252934193666231, 0.80000000000000004, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.57086932622945163, 0.80000000000000004, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.81646796740150973, 0.80000000000000004, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.1199552158519064, 0.80000000000000004, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.5079766673336394, 0.80000000000000004, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 2.0082747447038165, 0.80000000000000004, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.6315146066775523, 0.80000000000000004, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 3.3418121892288051, 0.80000000000000004, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler177 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.70000000000000007.
! // max(|f - f_Boost|): 2.2204460492503131e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.6544679145741375e-16
! // mean(f - f_Boost): 3.2751579226442120e-16
! // variance(f - f_Boost): 4.4236851331020672e-31
! // stddev(f - f_Boost): 6.6510789599147505e-16
! const testcase_ellint_3<double>
! data178[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17635776076721221, 0.80000000000000004, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.36408794649916976, 0.80000000000000004, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.57679992290624138, 0.80000000000000004, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.83312441418142813, 0.80000000000000004, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.1603958891464856, 0.80000000000000004, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.5982855143796213, 0.80000000000000004, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 2.1962484408371821, 0.80000000000000004, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 2.9873281786111869, 0.80000000000000004, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 3.9268876980046397, 0.80000000000000004, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler178 = 2.5000000000000020e-13;
  
! // Test data for k=0.80000000000000004, nu=0.80000000000000004.
! // max(|f - f_Boost|): 4.4408920985006262e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 9.0176949165011079e-16
! // mean(f - f_Boost): 7.0499162063697436e-16
! // variance(f - f_Boost): 1.7230805408026989e-30
! // stddev(f - f_Boost): 1.3126616246400665e-15
! const testcase_ellint_3<double>
! data179[10] =
  {
!   { 0.0000000000000000, 0.80000000000000004, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17653987774203392, 0.80000000000000004, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36567072568046877, 0.80000000000000004, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.58295359996558616, 0.80000000000000004, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.85101998309176108, 0.80000000000000004, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.2062322059736537, 0.80000000000000004, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.7090321420917429, 0.80000000000000004, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.4529058049405066, 0.80000000000000004, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 3.5368893360106948, 0.80000000000000004, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 4.9246422058196062, 0.80000000000000004, 0.80000000000000004, 
! 	  1.5707963267948966 },
! };
! const double toler179 = 2.5000000000000020e-13;
  
  // Test data for k=0.80000000000000004, nu=0.90000000000000002.
! // max(|f - f_Boost|): 4.4408920985006262e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 7.7782721357365268e-16
! // mean(f - f_Boost): 8.9928064994637676e-16
! // variance(f - f_Boost): 1.5485199571025344e-30
! // stddev(f - f_Boost): 1.2443954183066307e-15
! const testcase_ellint_3<double>
! data180[10] =
! {
!   { 0.0000000000000000, 0.80000000000000004, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17672267223433513, 0.80000000000000004, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36727835537196063, 0.80000000000000004, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.58934569363716649, 0.80000000000000004, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.87032723471138851, 0.80000000000000004, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.2588676111323349, 0.80000000000000004, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.8498731900660019, 0.80000000000000004, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 2.8368381299300420, 0.80000000000000004, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 4.5674844191654058, 0.80000000000000004, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 7.2263259298637115, 0.80000000000000004, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler180 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.0000000000000000.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.3381508715713360e-16
! // mean(f - f_Boost): 5.8286708792820721e-17
! // variance(f - f_Boost): 4.1942474344433133e-34
! // stddev(f - f_Boost): 2.0479861900030756e-17
! const testcase_ellint_3<double>
! data181[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.0000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17525427376115027, 0.90000000000000013, 0.0000000000000000, 
! 	  0.17453292519943295 },
!   { 0.35492464591297446, 0.90000000000000013, 0.0000000000000000, 
! 	  0.34906585039886590 },
!   { 0.54388221416157123, 0.90000000000000013, 0.0000000000000000, 
! 	  0.52359877559829882 },
!   { 0.74797400423532512, 0.90000000000000013, 0.0000000000000000, 
! 	  0.69813170079773179 },
!   { 0.97463898451966446, 0.90000000000000013, 0.0000000000000000, 
! 	  0.87266462599716477 },
!   { 1.2334463254523440, 0.90000000000000013, 0.0000000000000000, 
! 	  1.0471975511965976 },
!   { 1.5355247765594915, 0.90000000000000013, 0.0000000000000000, 
! 	  1.2217304763960306 },
!   { 1.8882928567775128, 0.90000000000000013, 0.0000000000000000, 
! 	  1.3962634015954636 },
!   { 2.2805491384227707, 0.90000000000000013, 0.0000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler181 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.10000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.1500594295134815e-16
! // mean(f - f_Boost): 9.1593399531575410e-17
! // variance(f - f_Boost): 1.0357223256482469e-33
! // stddev(f - f_Boost): 3.2182640128619758e-17
! const testcase_ellint_3<double>
! data182[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.10000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17543204932716244, 0.90000000000000013, 0.10000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35636022898551184, 0.90000000000000013, 0.10000000000000001, 
! 	  0.34906585039886590 },
!   { 0.54880278898382595, 0.90000000000000013, 0.10000000000000001, 
! 	  0.52359877559829882 },
!   { 0.75988834774529268, 0.90000000000000013, 0.10000000000000001, 
! 	  0.69813170079773179 },
!   { 0.99853303003568117, 0.90000000000000013, 0.10000000000000001, 
! 	  0.87266462599716477 },
!   { 1.2759958823999022, 0.90000000000000013, 0.10000000000000001, 
! 	  1.0471975511965976 },
!   { 1.6051187364639401, 0.90000000000000013, 0.10000000000000001, 
! 	  1.2217304763960306 },
!   { 1.9941406879519474, 0.90000000000000013, 0.10000000000000001, 
! 	  1.3962634015954636 },
!   { 2.4295011187834890, 0.90000000000000013, 0.10000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler182 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.20000000000000001.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.9533518431433547e-16
! // mean(f - f_Boost): 1.0269562977782698e-16
! // variance(f - f_Boost): 1.4388836606733082e-32
! // stddev(f - f_Boost): 1.1995347684303728e-16
! const testcase_ellint_3<double>
! data183[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.20000000000000001, 
! 	  0.0000000000000000 },
!   { 0.17561047321968409, 0.90000000000000013, 0.20000000000000001, 
! 	  0.17453292519943295 },
!   { 0.35781659944356109, 0.90000000000000013, 0.20000000000000001, 
! 	  0.34906585039886590 },
!   { 0.55388150905215283, 0.90000000000000013, 0.20000000000000001, 
! 	  0.52359877559829882 },
!   { 0.77246874123251441, 0.90000000000000013, 0.20000000000000001, 
! 	  0.69813170079773179 },
!   { 1.0244466254771925, 0.90000000000000013, 0.20000000000000001, 
! 	  0.87266462599716477 },
!   { 1.3234824077640801, 0.90000000000000013, 0.20000000000000001, 
! 	  1.0471975511965976 },
!   { 1.6849848968804240, 0.90000000000000013, 0.20000000000000001, 
! 	  1.2217304763960306 },
!   { 2.1185749045502278, 0.90000000000000013, 0.20000000000000001, 
! 	  1.3962634015954636 },
!   { 2.6076835743348417, 0.90000000000000013, 0.20000000000000001, 
! 	  1.5707963267948966 },
  };
+ const double toler183 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.30000000000000004.
! // max(|f - f_Boost|): 6.6613381477509392e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 3.9712691025502371e-16
! // mean(f - f_Boost): 6.9388939039072284e-17
! // variance(f - f_Boost): 5.9442282234173945e-34
! // stddev(f - f_Boost): 2.4380787976227090e-17
! const testcase_ellint_3<double>
! data184[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.30000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17578954966746221, 0.90000000000000013, 0.30000000000000004, 
! 	  0.17453292519943295 },
!   { 0.35929429810867447, 0.90000000000000013, 0.30000000000000004, 
! 	  0.34906585039886590 },
!   { 0.55912757154240822, 0.90000000000000013, 0.30000000000000004, 
! 	  0.52359877559829882 },
!   { 0.78578314722025389, 0.90000000000000013, 0.30000000000000004, 
! 	  0.69813170079773179 },
!   { 1.0526941001131365, 0.90000000000000013, 0.30000000000000004, 
! 	  0.87266462599716477 },
!   { 1.3769682234538601, 0.90000000000000013, 0.30000000000000004, 
! 	  1.0471975511965976 },
!   { 1.7779437432911240, 0.90000000000000013, 0.30000000000000004, 
! 	  1.2217304763960306 },
!   { 2.2676509341813635, 0.90000000000000013, 0.30000000000000004, 
! 	  1.3962634015954636 },
!   { 2.8256506968858517, 0.90000000000000013, 0.30000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler184 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.40000000000000002.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.7042235432234642e-16
! // mean(f - f_Boost): 1.8041124150158794e-16
! // variance(f - f_Boost): 8.5834655546147173e-33
! // stddev(f - f_Boost): 9.2646994309662939e-17
! const testcase_ellint_3<double>
! data185[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.40000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17596928293938452, 0.90000000000000013, 0.40000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36079388642472821, 0.90000000000000013, 0.40000000000000002, 
! 	  0.34906585039886590 },
!   { 0.56455096667115612, 0.90000000000000013, 0.40000000000000002, 
! 	  0.52359877559829882 },
!   { 0.79990996997869435, 0.90000000000000013, 0.40000000000000002, 
! 	  0.69813170079773179 },
!   { 1.0836647913872215, 0.90000000000000013, 0.40000000000000002, 
! 	  0.87266462599716477 },
!   { 1.4378726836091849, 0.90000000000000013, 0.40000000000000002, 
! 	  1.0471975511965976 },
!   { 1.8880446720682853, 0.90000000000000013, 0.40000000000000002, 
! 	  1.2217304763960306 },
!   { 2.4505848932025232, 0.90000000000000013, 0.40000000000000002, 
! 	  1.3962634015954636 },
!   { 3.1000689868578624, 0.90000000000000013, 0.40000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler185 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.50000000000000000.
! // max(|f - f_Boost|): 8.8817841970012523e-16 at index 7
! // max(|f - f_Boost| / |f_Boost|): 4.3939646155354115e-16
! // mean(f - f_Boost): 1.5820678100908481e-16
! // variance(f - f_Boost): 1.0089970755557622e-32
! // stddev(f - f_Boost): 1.0044884646205561e-16
! const testcase_ellint_3<double>
! data186[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.50000000000000000, 
! 	  0.0000000000000000 },
!   { 0.17614967734498183, 0.90000000000000013, 0.50000000000000000, 
! 	  0.17453292519943295 },
!   { 0.36231594750319435, 0.90000000000000013, 0.50000000000000000, 
! 	  0.34906585039886590 },
!   { 0.57016256984349567, 0.90000000000000013, 0.50000000000000000, 
! 	  0.52359877559829882 },
!   { 0.81494025918293422, 0.90000000000000013, 0.50000000000000000, 
! 	  0.69813170079773179 },
!   { 1.1178482279283477, 0.90000000000000013, 0.50000000000000000, 
! 	  0.87266462599716477 },
!   { 1.5081455873012106, 0.90000000000000013, 0.50000000000000000, 
! 	  1.0471975511965976 },
!   { 2.0213599730863998, 0.90000000000000013, 0.50000000000000000, 
! 	  1.2217304763960306 },
!   { 2.6822467012926832, 0.90000000000000013, 0.50000000000000000, 
! 	  1.3962634015954636 },
!   { 3.4591069002104686, 0.90000000000000013, 0.50000000000000000, 
! 	  1.5707963267948966 },
  };
+ const double toler186 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.60000000000000009.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 4.4914274070443813e-16
! // mean(f - f_Boost): 3.4694469519536142e-16
! // variance(f - f_Boost): 2.5224926888894056e-31
! // stddev(f - f_Boost): 5.0224423231027804e-16
! const testcase_ellint_3<double>
! data187[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.60000000000000009, 
! 	  0.0000000000000000 },
!   { 0.17633073723493825, 0.90000000000000013, 0.60000000000000009, 
! 	  0.17453292519943295 },
!   { 0.36386108723492810, 0.90000000000000013, 0.60000000000000009, 
! 	  0.34906585039886590 },
!   { 0.57597424744716241, 0.90000000000000013, 0.60000000000000009, 
! 	  0.52359877559829882 },
!   { 0.83098051948501150, 0.90000000000000013, 0.60000000000000009, 
! 	  0.69813170079773179 },
!   { 1.1558706545698916, 0.90000000000000013, 0.60000000000000009, 
! 	  0.87266462599716477 },
!   { 1.5905576379415669, 0.90000000000000013, 0.60000000000000009, 
! 	  1.0471975511965976 },
!   { 2.1875186010215084, 0.90000000000000013, 0.60000000000000009, 
! 	  1.2217304763960306 },
!   { 2.9885767771316853, 0.90000000000000013, 0.60000000000000009, 
! 	  1.3962634015954636 },
!   { 3.9549939883570238, 0.90000000000000013, 0.60000000000000009, 
! 	  1.5707963267948966 },
  };
+ const double toler187 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.70000000000000007.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 9
! // max(|f - f_Boost| / |f_Boost|): 5.5442489886293633e-16
! // mean(f - f_Boost): 4.3576253716537392e-16
! // variance(f - f_Boost): 2.2187568928205130e-31
! // stddev(f - f_Boost): 4.7103682370070737e-16
! const testcase_ellint_3<double>
! data188[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.70000000000000007, 
! 	  0.0000000000000000 },
!   { 0.17651246700160939, 0.90000000000000013, 0.70000000000000007, 
! 	  0.17453292519943295 },
!   { 0.36542993547358982, 0.90000000000000013, 0.70000000000000007, 
! 	  0.34906585039886590 },
!   { 0.58199897877674867, 0.90000000000000013, 0.70000000000000007, 
! 	  0.52359877559829882 },
!   { 0.84815633587352857, 0.90000000000000013, 0.70000000000000007, 
! 	  0.69813170079773179 },
!   { 1.1985495623872375, 0.90000000000000013, 0.70000000000000007, 
! 	  0.87266462599716477 },
!   { 1.6892158134027691, 0.90000000000000013, 0.70000000000000007, 
! 	  1.0471975511965976 },
!   { 2.4029722191094236, 0.90000000000000013, 0.70000000000000007, 
! 	  1.2217304763960306 },
!   { 3.4201084941340061, 0.90000000000000013, 0.70000000000000007, 
! 	  1.3962634015954636 },
!   { 4.6985482312992444, 0.90000000000000013, 0.70000000000000007, 
! 	  1.5707963267948966 },
  };
+ const double toler188 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.80000000000000004.
! // max(|f - f_Boost|): 1.7763568394002505e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.9362432595976420e-16
! // mean(f - f_Boost): 3.0531133177191805e-16
! // variance(f - f_Boost): 1.1508025840536076e-32
! // stddev(f - f_Boost): 1.0727546709539920e-16
! const testcase_ellint_3<double>
! data189[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.80000000000000004, 
! 	  0.0000000000000000 },
!   { 0.17669487107954862, 0.90000000000000013, 0.80000000000000004, 
! 	  0.17453292519943295 },
!   { 0.36702314729628421, 0.90000000000000013, 0.80000000000000004, 
! 	  0.34906585039886590 },
!   { 0.58825099711365492, 0.90000000000000013, 0.80000000000000004, 
! 	  0.52359877559829882 },
!   { 0.86661711422209031, 0.90000000000000013, 0.80000000000000004, 
! 	  0.69813170079773179 },
!   { 1.2469779109884802, 0.90000000000000013, 0.80000000000000004, 
! 	  0.87266462599716477 },
!   { 1.8105469760531578, 0.90000000000000013, 0.80000000000000004, 
! 	  1.0471975511965976 },
!   { 2.6989505165893752, 0.90000000000000013, 0.80000000000000004, 
! 	  1.2217304763960306 },
!   { 4.0935213267757433, 0.90000000000000013, 0.80000000000000004, 
! 	  1.3962634015954636 },
!   { 5.9820740813645727, 0.90000000000000013, 0.80000000000000004, 
! 	  1.5707963267948966 },
  };
+ const double toler189 = 2.5000000000000020e-13;
  
! // Test data for k=0.90000000000000013, nu=0.90000000000000002.
! // max(|f - f_Boost|): 2.6645352591003757e-15 at index 8
! // max(|f - f_Boost| / |f_Boost|): 4.9577148062669782e-16
! // mean(f - f_Boost): 5.9119376061289588e-16
! // variance(f - f_Boost): 1.7340883003959522e-31
! // stddev(f - f_Boost): 4.1642385863395872e-16
! const testcase_ellint_3<double>
! data190[10] =
  {
!   { 0.0000000000000000, 0.90000000000000013, 0.90000000000000002, 
! 	  0.0000000000000000 },
!   { 0.17687795394604169, 0.90000000000000013, 0.90000000000000002, 
! 	  0.17453292519943295 },
!   { 0.36864140434751286, 0.90000000000000013, 0.90000000000000002, 
! 	  0.34906585039886590 },
!   { 0.59474595366817051, 0.90000000000000013, 0.90000000000000002, 
! 	  0.52359877559829882 },
!   { 0.88654237226056665, 0.90000000000000013, 0.90000000000000002, 
! 	  0.69813170079773179 },
!   { 1.3026595810616726, 0.90000000000000013, 0.90000000000000002, 
! 	  0.87266462599716477 },
!   { 1.9653635459278080, 0.90000000000000013, 0.90000000000000002, 
! 	  1.0471975511965976 },
!   { 3.1451407527189468, 0.90000000000000013, 0.90000000000000002, 
! 	  1.2217304763960306 },
!   { 5.3745230680316132, 0.90000000000000013, 0.90000000000000002, 
! 	  1.3962634015954636 },
!   { 8.9942562031858717, 0.90000000000000013, 0.90000000000000002, 
! 	  1.5707963267948966 },
  };
+ const double toler190 = 2.5000000000000020e-13;
  
! template<typename Ret, unsigned int Num>
!   void
!   test(const testcase_ellint_3<Ret> (&data)[Num], Ret toler)
!   {
!     bool test __attribute__((unused)) = true;
!     const Ret eps = std::numeric_limits<Ret>::epsilon();
!     Ret max_abs_diff = -Ret(1);
!     Ret max_abs_frac = -Ret(1);
!     unsigned int num_datum = Num;
!     for (unsigned int i = 0; i < num_datum; ++i)
!   	 {
! 	const Ret f = std::tr1::ellint_3(data[i].k, data[i].nu,
! 		     data[i].phi);
! 	const Ret f0 = data[i].f0;
! 	const Ret diff = f - f0;
! 	if (std::abs(diff) > max_abs_diff)
! 	  max_abs_diff = std::abs(diff);
! 	if (std::abs(f0) > Ret(10) * eps
! 	 && std::abs(f) > Ret(10) * eps)
! 	  {
! 	    const Ret frac = diff / f0;
! 	    if (std::abs(frac) > max_abs_frac)
! 	      max_abs_frac = std::abs(frac);
! 	  }
!       }
!     VERIFY(max_abs_frac < toler);
!   }
  
! int
! main()
  {
!   test(data001, toler001);
!   test(data002, toler002);
!   test(data003, toler003);
!   test(data004, toler004);
!   test(data005, toler005);
!   test(data006, toler006);
!   test(data007, toler007);
!   test(data008, toler008);
!   test(data009, toler009);
!   test(data010, toler010);
!   test(data011, toler011);
!   test(data012, toler012);
!   test(data013, toler013);
!   test(data014, toler014);
!   test(data015, toler015);
!   test(data016, toler016);
!   test(data017, toler017);
!   test(data018, toler018);
!   test(data019, toler019);
!   test(data020, toler020);
!   test(data021, toler021);
!   test(data022, toler022);
!   test(data023, toler023);
!   test(data024, toler024);
!   test(data025, toler025);
!   test(data026, toler026);
!   test(data027, toler027);
!   test(data028, toler028);
!   test(data029, toler029);
!   test(data030, toler030);
!   test(data031, toler031);
!   test(data032, toler032);
!   test(data033, toler033);
!   test(data034, toler034);
!   test(data035, toler035);
!   test(data036, toler036);
!   test(data037, toler037);
!   test(data038, toler038);
!   test(data039, toler039);
!   test(data040, toler040);
!   test(data041, toler041);
!   test(data042, toler042);
!   test(data043, toler043);
!   test(data044, toler044);
!   test(data045, toler045);
!   test(data046, toler046);
!   test(data047, toler047);
!   test(data048, toler048);
!   test(data049, toler049);
!   test(data050, toler050);
!   test(data051, toler051);
!   test(data052, toler052);
!   test(data053, toler053);
!   test(data054, toler054);
!   test(data055, toler055);
!   test(data056, toler056);
!   test(data057, toler057);
!   test(data058, toler058);
!   test(data059, toler059);
!   test(data060, toler060);
!   test(data061, toler061);
!   test(data062, toler062);
!   test(data063, toler063);
!   test(data064, toler064);
!   test(data065, toler065);
!   test(data066, toler066);
!   test(data067, toler067);
!   test(data068, toler068);
!   test(data069, toler069);
!   test(data070, toler070);
!   test(data071, toler071);
!   test(data072, toler072);
!   test(data073, toler073);
!   test(data074, toler074);
!   test(data075, toler075);
!   test(data076, toler076);
!   test(data077, toler077);
!   test(data078, toler078);
!   test(data079, toler079);
!   test(data080, toler080);
!   test(data081, toler081);
!   test(data082, toler082);
!   test(data083, toler083);
!   test(data084, toler084);
!   test(data085, toler085);
!   test(data086, toler086);
!   test(data087, toler087);
!   test(data088, toler088);
!   test(data089, toler089);
!   test(data090, toler090);
!   test(data091, toler091);
!   test(data092, toler092);
!   test(data093, toler093);
!   test(data094, toler094);
!   test(data095, toler095);
!   test(data096, toler096);
!   test(data097, toler097);
!   test(data098, toler098);
!   test(data099, toler099);
!   test(data100, toler100);
!   test(data101, toler101);
!   test(data102, toler102);
!   test(data103, toler103);
!   test(data104, toler104);
!   test(data105, toler105);
!   test(data106, toler106);
!   test(data107, toler107);
!   test(data108, toler108);
!   test(data109, toler109);
!   test(data110, toler110);
!   test(data111, toler111);
!   test(data112, toler112);
!   test(data113, toler113);
!   test(data114, toler114);
!   test(data115, toler115);
!   test(data116, toler116);
!   test(data117, toler117);
!   test(data118, toler118);
!   test(data119, toler119);
!   test(data120, toler120);
!   test(data121, toler121);
!   test(data122, toler122);
!   test(data123, toler123);
!   test(data124, toler124);
!   test(data125, toler125);
!   test(data126, toler126);
!   test(data127, toler127);
!   test(data128, toler128);
!   test(data129, toler129);
!   test(data130, toler130);
!   test(data131, toler131);
!   test(data132, toler132);
!   test(data133, toler133);
!   test(data134, toler134);
!   test(data135, toler135);
!   test(data136, toler136);
!   test(data137, toler137);
!   test(data138, toler138);
!   test(data139, toler139);
!   test(data140, toler140);
!   test(data141, toler141);
!   test(data142, toler142);
!   test(data143, toler143);
!   test(data144, toler144);
!   test(data145, toler145);
!   test(data146, toler146);
!   test(data147, toler147);
!   test(data148, toler148);
!   test(data149, toler149);
!   test(data150, toler150);
!   test(data151, toler151);
!   test(data152, toler152);
!   test(data153, toler153);
!   test(data154, toler154);
!   test(data155, toler155);
!   test(data156, toler156);
!   test(data157, toler157);
!   test(data158, toler158);
!   test(data159, toler159);
!   test(data160, toler160);
!   test(data161, toler161);
!   test(data162, toler162);
!   test(data163, toler163);
!   test(data164, toler164);
!   test(data165, toler165);
!   test(data166, toler166);
!   test(data167, toler167);
!   test(data168, toler168);
!   test(data169, toler169);
!   test(data170, toler170);
!   test(data171, toler171);
!   test(data172, toler172);
!   test(data173, toler173);
!   test(data174, toler174);
!   test(data175, toler175);
!   test(data176, toler176);
!   test(data177, toler177);
!   test(data178, toler178);
!   test(data179, toler179);
!   test(data180, toler180);
!   test(data181, toler181);
!   test(data182, toler182);
!   test(data183, toler183);
!   test(data184, toler184);
!   test(data185, toler185);
!   test(data186, toler186);
!   test(data187, toler187);
!   test(data188, toler188);
!   test(data189, toler189);
!   test(data190, toler190);
    return 0;
  }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc gcc-7.4.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc	Mon Apr 30 19:51:13 2018
***************
*** 0 ****
--- 1,22 ----
+ 
+ #include <tr1/cmath>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   const double pi = 3.141592654;
+ 
+   double Pi1 = std::tr1::ellint_3(0.75, 0.0, pi / 2.0);
+   VERIFY(std::abs(Pi1 - 1.91099) < 0.00001);
+ 
+   double Pi2 = std::tr1::ellint_3(0.75, 0.5, pi / 2.0);
+   VERIFY(std::abs(Pi2 - 2.80011) < 0.00001);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc gcc-7.4.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc
*** gcc-7.3.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc	Thu Jan  1 00:00:00 1970
--- gcc-7.4.0/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc	Mon Apr 30 19:51:13 2018
***************
*** 0 ****
--- 1,46 ----
+ // Copyright (C) 2017 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/>.
+ 
+ // PR libstdc++/68397 -  std::tr1::expint fails in __expint_En_cont_frac
+ // for some long double arguments due to low __max_iter value
+ 
+ #include <tr1/cmath>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   // Answers from Wolfram Alpha.
+   long double ans_ok = -0.10001943365331651406888645149537315243646135979573L;
+   long double ans_bomb = -0.10777727809650077516264612749163100483995270163783L;
+ 
+   long double Ei_ok = std::tr1::expint(-1.500001L);
+   long double diff_ok = std::abs(Ei_ok - ans_ok);
+   VERIFY(diff_ok < 1.0e-15L);
+ 
+   long double Ei_bomb = std::tr1::expint(-1.450001L);
+   long double diff_bomb = std::abs(Ei_bomb - ans_bomb);
+   VERIFY(diff_bomb < 1.0e-15L);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   return 0;
+ }
+ 
diff -Nrcpad gcc-7.3.0/libstdc++-v3/testsuite/util/testsuite_allocator.h gcc-7.4.0/libstdc++-v3/testsuite/util/testsuite_allocator.h
*** gcc-7.3.0/libstdc++-v3/testsuite/util/testsuite_allocator.h	Fri Jan 27 16:17:04 2017
--- gcc-7.4.0/libstdc++-v3/testsuite/util/testsuite_allocator.h	Tue Aug  7 22:50:45 2018
*************** namespace __gnu_test
*** 570,575 ****
--- 570,577 ----
  
        explicit PointerBase(T* p = nullptr) : value(p) { }
  
+       PointerBase(std::nullptr_t) : value(nullptr) { }
+ 
        template<typename D, typename U,
  	       typename = decltype(static_cast<T*>(std::declval<U*>()))>
  	PointerBase(const PointerBase<D, U>& p) : value(p.value) { }
*************** namespace __gnu_test
*** 603,609 ****
        }
  
      private:
!       Derived& derived() { return static_cast<Derived&>(*this); }
      };
  
      template<typename D, typename T>
--- 605,615 ----
        }
  
      private:
!       Derived&
!       derived() { return static_cast<Derived&>(*this); }
! 
!       const Derived&
!       derived() const { return static_cast<const Derived&>(*this); }
      };
  
      template<typename D, typename T>
diff -Nrcpad gcc-7.3.0/libvtv/ChangeLog gcc-7.4.0/libvtv/ChangeLog
*** gcc-7.3.0/libvtv/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/libvtv/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,15 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
+ 2018-06-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from mainline
+ 	2018-04-18  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR jit/85384
+ 	* configure: Regenerate.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/libvtv/configure gcc-7.4.0/libvtv/configure
*** gcc-7.3.0/libvtv/configure	Thu Jan 25 08:17:54 2018
--- gcc-7.4.0/libvtv/configure	Thu Dec  6 09:58:51 2018
*************** fi
*** 15516,15522 ****
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'"
        fi
  
  fi
--- 15516,15522 ----
  # Check whether --with-gcc-major-version-only was given.
  if test "${with_gcc_major_version_only+set}" = set; then :
    withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then
!         get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'"
        fi
  
  fi
diff -Nrcpad gcc-7.3.0/lto-plugin/ChangeLog gcc-7.4.0/lto-plugin/ChangeLog
*** gcc-7.3.0/lto-plugin/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/lto-plugin/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/maintainer-scripts/ChangeLog gcc-7.4.0/maintainer-scripts/ChangeLog
*** gcc-7.3.0/maintainer-scripts/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/maintainer-scripts/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
diff -Nrcpad gcc-7.3.0/zlib/ChangeLog gcc-7.4.0/zlib/ChangeLog
*** gcc-7.3.0/zlib/ChangeLog	Thu Jan 25 08:17:27 2018
--- gcc-7.4.0/zlib/ChangeLog	Thu Dec  6 10:00:03 2018
***************
*** 1,3 ****
--- 1,7 ----
+ 2018-12-06  Release Manager
+ 
+ 	* GCC 7.4.0 released.
+ 
  2018-01-25  Release Manager
  
  	* GCC 7.3.0 released.
