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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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 ****

Contrast with --enable-shared, which affects target libraries. !

--with-gnu-as
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 ----

Contrast with --enable-shared, which affects target libraries. !

--with-gnu-as
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 ****
  • sparc64-any-solaris2.any’ !
    --with-as=pathname
    Specify that the compiler should use the assembler pointed to by pathname, rather than the one found by the standard rules to find an assembler, which are:
      --- 375,381 ----
    • sparc64-any-solaris2.any
    !
    --with-as=pathname
    Specify that the compiler should use the assembler pointed to by pathname, rather than the one found by the standard rules to find an assembler, which are:
      *************** is installed in the directories listed a *** 406,412 **** assemblers installed and want to choose one that is not found by the above rules. !
      --with-gnu-ld
      Same as --with-gnu-as but for the linker.
      --with-ld=pathname
      Same as --with-as --- 406,412 ---- assemblers installed and want to choose one that is not found by the above rules. !
      --with-gnu-ld
      Same as --with-gnu-as but for the linker.
      --with-ld=pathname
      Same as --with-as 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 ****

    !


    aarch64*-*-*

    --- 129,135 ----

    !


    aarch64*-*-*

    *************** The workaround is disabled by default if *** 158,164 **** --enable-fix-cortex-a53-843419 or --disable-fix-cortex-a53-843419 is given at configure time. !


    alpha*-*-*

    --- 158,164 ---- --enable-fix-cortex-a53-843419 or --disable-fix-cortex-a53-843419 is given at configure time. !


    alpha*-*-*

    *************** Previous binutils releases had a number *** 172,178 **** debugging information, not the least of which is incorrect linking of shared libraries. !


    alpha*-dec-osf5.1

    --- 172,178 ---- debugging information, not the least of which is incorrect linking of shared libraries. !


    alpha*-dec-osf5.1

    *************** support for Tru64 UNIX V4.0 and V5.0 has *** 185,197 **** versions before alpha*-dec-osf4 are no longer supported. (These are the versions which identify themselves as DEC OSF/1.) !


    amd64-*-solaris2.1[0-9]*

    This is a synonym for ‘x86_64-*-solaris2.1[0-9]*’. !


    arc-*-elf32

    --- 185,197 ---- versions before alpha*-dec-osf4 are no longer supported. (These are the versions which identify themselves as DEC OSF/1.) !


    amd64-*-solaris2.1[0-9]*

    This is a synonym for ‘x86_64-*-solaris2.1[0-9]*’. !


    arc-*-elf32

    *************** are the versions which identify themselv *** 199,211 **** to configure GCC, with cpu being one of ‘arc600’, ‘arc601’, or ‘arc700’. !


    arc-linux-uclibc

    Use ‘configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages="c,c++"’ to configure GCC. !


    arm-*-eabi

    --- 199,211 ---- to configure GCC, with cpu being one of ‘arc600’, ‘arc601’, or ‘arc700’. !


    arc-linux-uclibc

    Use ‘configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages="c,c++"’ to configure GCC. !


    arm-*-eabi

    *************** 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. !


    epiphany-*-elf

    Adapteva Epiphany. This configuration is intended for embedded systems. !


    *-*-freebsd*

    --- 298,311 ---- compilation package DJGPP, which includes binaries as well as sources, and includes all the necessary compilation tools and libraries. !


    epiphany-*-elf

    Adapteva Epiphany. This configuration is intended for embedded systems. !


    *-*-freebsd*

    *************** 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. !


    ft32-*-elf

    The FT32 processor. This configuration is intended for embedded systems. !


    h8300-hms

    --- 342,355 ---- properly on FreeBSD prior to the FreeBSD 7.0 release with GNU binutils after 2.16.1. !


    ft32-*-elf

    The FT32 processor. This configuration is intended for embedded systems. !


    h8300-hms

    *************** 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. !


    hppa*-hp-hpux*

    --- 362,368 ---- first three arguments in function calls in registers. Structures are no longer a multiple of 2 bytes. !


    hppa*-hp-hpux*

    *************** a list of the predefines used with each *** 414,420 ****

    More specific information to ‘hppa*-hp-hpux*’ targets follows. !


    hppa*-hp-hpux10

    --- 414,420 ----

    More specific information to ‘hppa*-hp-hpux*’ targets follows. !


    hppa*-hp-hpux10

    *************** 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. !


    hppa*-hp-hpux11

    --- 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. !


    hppa*-hp-hpux11

    *************** versioning with --enable-threads=dce does not work. !


    *-*-linux-gnu

    --- 531,537 ----

    POSIX threads are the default. The optional DCE thread library is not supported, so --enable-threads=dce does not work. !


    *-*-linux-gnu

    *************** supported, so

    i?86-*-linux*

    --- 539,545 ---- in glibc 2.2.5 and later. More information is available in the libstdc++-v3 documentation. !


    i?86-*-linux*

    *************** See www.bitwizard.nl. !


    i?86-*-solaris2.10

    --- 550,556 ---- possible you have a hardware problem. Further information on this can be found on www.bitwizard.nl. !


    i?86-*-solaris2.10

    *************** to configure with ld. !


    ia64-*-linux

    --- 584,590 ---- guarantee use of Sun ld. !


    ia64-*-linux

    *************** 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. !


    ia64-*-hpux*

    --- 604,610 ---- As of version 3.1 GCC is believed to be fully ABI compliant, and hence no more major ABI changes are expected. !


    ia64-*-hpux*

    *************** For gcc 3.4.3 and later,
    !

    *-ibm-aix*

    --- 619,625 ---- removed and the system libunwind library will always be used.


    !

    *-ibm-aix*

    *************** environment variable to ‘A default can be specified with the -mcpu=cpu_type switch and using the configure option --with-cpu-cpu_type. !


    iq2000-*-elf

    Vitesse IQ2000 processors. These are used in embedded applications. There are no standard Unix configurations. !


    lm32-*-elf

    Lattice Mico32 processor. This configuration is intended for embedded systems. !


    lm32-*-uclinux

    Lattice Mico32 processor. This configuration is intended for embedded systems running uClinux. !


    m32c-*-elf

    Renesas M32C processor. This configuration is intended for embedded systems. !


    m32r-*-elf

    Renesas M32R processor. This configuration is intended for embedded systems. !


    m68k-*-*

    --- 774,815 ----

    A default can be specified with the -mcpu=cpu_type switch and using the configure option --with-cpu-cpu_type. !


    iq2000-*-elf

    Vitesse IQ2000 processors. These are used in embedded applications. There are no standard Unix configurations. !


    lm32-*-elf

    Lattice Mico32 processor. This configuration is intended for embedded systems. !


    lm32-*-uclinux

    Lattice Mico32 processor. This configuration is intended for embedded systems running uClinux. !


    m32c-*-elf

    Renesas M32C processor. This configuration is intended for embedded systems. !


    m32r-*-elf

    Renesas M32R processor. This configuration is intended for embedded systems. !


    m68k-*-*

    *************** be a -mcpuGCC requires at least binutils version 2.17 on these targets. !


    m68k-*-uclinux

    --- 837,843 ----

    GCC requires at least binutils version 2.17 on these targets. !


    m68k-*-uclinux

    *************** be a -mcpu

    microblaze-*-elf

    Xilinx MicroBlaze processor. This configuration is intended for embedded systems. !


    mips-*-*

    --- 846,859 ---- It also added improved support for C++ and flat shared libraries, both of which were ABI changes. !


    microblaze-*-elf

    Xilinx MicroBlaze processor. This configuration is intended for embedded systems. !


    mips-*-*

    *************** the use of break, use the configure option when configuring GCC. The default is to use traps on systems that support them. !


    mips-sgi-irix5

    Support for IRIX 5 has been removed in GCC 4.6. !


    mips-sgi-irix6

    --- 896,908 ---- configure option when configuring GCC. The default is to use traps on systems that support them. !


    mips-sgi-irix5

    Support for IRIX 5 has been removed in GCC 4.6. !


    mips-sgi-irix6

    *************** 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. !


    moxie-*-elf

    The moxie processor. !


    msp430-*-elf

    TI MSP430 processor. This configuration is intended for embedded systems. !


    nds32le-*-elf

    Andes NDS32 target in little endian mode. !


    nds32be-*-elf

    Andes NDS32 target in big endian mode. !


    nvptx-*-none

    --- 910,941 ---- releases before 6.5 has been removed in GCC 4.6, as well as support for the O32 ABI. !


    moxie-*-elf

    The moxie processor. !


    msp430-*-elf

    TI MSP430 processor. This configuration is intended for embedded systems. !


    nds32le-*-elf

    Andes NDS32 target in little endian mode. !


    nds32be-*-elf

    Andes NDS32 target in big endian mode. !


    nvptx-*-none

    *************** directory containing the GCC sources. *** 955,961 ****

    Use the --disable-sjlj-exceptions and --enable-newlib-io-long-long options when configuring. !


    powerpc-*-*

    --- 955,961 ----

    Use the --disable-sjlj-exceptions and --enable-newlib-io-long-long options when configuring. !


    powerpc-*-*

    *************** switch by using the configure option You will need GNU binutils 2.15 or newer. !


    powerpc-*-darwin*

    --- 964,970 ----

    You will need GNU binutils 2.15 or newer. !


    powerpc-*-darwin*

    *************** cctools-590.36 package referenced from *** 980,1043 **** http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html will not work on systems older than 10.3.9 (aka darwin7.9.0). !


    powerpc-*-elf

    PowerPC system in big endian mode, running System V.4. !


    powerpc*-*-linux-gnu*

    PowerPC system in big endian mode running Linux. !


    powerpc-*-netbsd*

    PowerPC system in big endian mode running NetBSD. !


    powerpc-*-eabisim

    Embedded PowerPC system in big endian mode for use in running under the PSIM simulator. !


    powerpc-*-eabi

    Embedded PowerPC system in big endian mode. !


    powerpcle-*-elf

    PowerPC system in little endian mode, running System V.4. !


    powerpcle-*-eabisim

    Embedded PowerPC system in little endian mode for use in running under the PSIM simulator. !


    powerpcle-*-eabi

    Embedded PowerPC system in little endian mode. !


    rl78-*-elf

    The Renesas RL78 processor. This configuration is intended for embedded systems. !


    riscv32-*-elf

    --- 980,1043 ---- http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html will not work on systems older than 10.3.9 (aka darwin7.9.0). !


    powerpc-*-elf

    PowerPC system in big endian mode, running System V.4. !


    powerpc*-*-linux-gnu*

    PowerPC system in big endian mode running Linux. !


    powerpc-*-netbsd*

    PowerPC system in big endian mode running NetBSD. !


    powerpc-*-eabisim

    Embedded PowerPC system in big endian mode for use in running under the PSIM simulator. !


    powerpc-*-eabi

    Embedded PowerPC system in big endian mode. !


    powerpcle-*-elf

    PowerPC system in little endian mode, running System V.4. !


    powerpcle-*-eabisim

    Embedded PowerPC system in little endian mode for use in running under the PSIM simulator. !


    powerpcle-*-eabi

    Embedded PowerPC system in little endian mode. !


    rl78-*-elf

    The Renesas RL78 processor. This configuration is intended for embedded systems. !


    riscv32-*-elf

    *************** 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. !


    riscv32-*-linux

    --- 1046,1052 ---- This (and all other RISC-V) targets are supported upstream as of the binutils 2.28 release. !


    riscv32-*-linux

    *************** binutils 2.28 release. *** 1054,1060 **** This (and all other RISC-V) targets are supported upstream as of the binutils 2.28 release. !


    riscv64-*-elf

    --- 1054,1060 ---- This (and all other RISC-V) targets are supported upstream as of the binutils 2.28 release. !


    riscv64-*-elf

    *************** 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. !


    riscv64-*-linux

    --- 1063,1069 ---- This (and all other RISC-V) targets are supported upstream as of the binutils 2.28 release. !


    riscv64-*-linux

    *************** binutils 2.28 release. *** 1071,1095 **** This (and all other RISC-V) targets are supported upstream as of the binutils 2.28 release. !


    rx-*-elf

    The Renesas RX processor. !


    s390-*-linux*

    S/390 system running GNU/Linux for S/390. !


    s390x-*-linux*

    zSeries system (64-bit) running GNU/Linux for zSeries. !


    s390x-ibm-tpf*

    --- 1071,1095 ---- This (and all other RISC-V) targets are supported upstream as of the binutils 2.28 release. !


    rx-*-elf

    The Renesas RX processor. !


    s390-*-linux*

    S/390 system running GNU/Linux for S/390. !


    s390x-*-linux*

    zSeries system (64-bit) running GNU/Linux for zSeries. !


    s390x-ibm-tpf*

    *************** supported as cross-compilation target on *** 1100,1106 **** !

    *-*-solaris2*

    --- 1100,1106 ---- !

    *-*-solaris2*

    *************** program which is used only by the GCC te *** 1186,1192 **** causes the expect program to miss anticipated output, extra testsuite failures appear. !


    sparc*-*-*

    --- 1186,1192 ---- causes the expect program to miss anticipated output, extra testsuite failures appear. !


    sparc*-*-*

    *************** versions of GCC on these platforms. We *** 1200,1206 **** of the exact versions of these libraries listed as minimal versions in the prerequisites. !


    sparc-sun-solaris2*

    --- 1200,1206 ---- of the exact versions of these libraries listed as minimal versions in the prerequisites. !


    sparc-sun-solaris2*

    *************** not that of GMP or MPFR or MPC). For ex *** 1225,1231 ****
         % ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
      
    !


    sparc-sun-solaris2.10

    --- 1225,1231 ----
         % ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
      
    !


    sparc-sun-solaris2.10

    *************** thread-local storage (TLS). A typical e *** 1237,1247 ****

    This bug is fixed in Sun patch 118683-03 or later. !


    sparc-*-linux*

    !


    sparc64-*-solaris2*

    --- 1237,1247 ----

    This bug is fixed in Sun patch 118683-03 or later. !


    sparc-*-linux*

    !


    sparc64-*-solaris2*

    *************** on a Solaris 9 system: *** 1252,1298 ****
         % ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
      
    !


    sparcv9-*-solaris2*

    This is a synonym for ‘sparc64-*-solaris2*’. !


    c6x-*-*

    The C6X family of processors. This port requires binutils-2.22 or newer. !


    tilegx-*-linux*

    The TILE-Gx processor in little endian mode, running GNU/Linux. This port requires binutils-2.22 or newer. !


    tilegxbe-*-linux*

    The TILE-Gx processor in big endian mode, running GNU/Linux. This port requires binutils-2.23 or newer. !


    tilepro-*-linux*

    The TILEPro processor running GNU/Linux. This port requires binutils-2.22 or newer. !


    visium-*-elf

    CDS VISIUMcore processor. This configuration is intended for embedded systems. !


    *-*-vxworks*

    --- 1252,1298 ----
         % ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
      
    !


    sparcv9-*-solaris2*

    This is a synonym for ‘sparc64-*-solaris2*’. !


    c6x-*-*

    The C6X family of processors. This port requires binutils-2.22 or newer. !


    tilegx-*-linux*

    The TILE-Gx processor in little endian mode, running GNU/Linux. This port requires binutils-2.22 or newer. !


    tilegxbe-*-linux*

    The TILE-Gx processor in big endian mode, running GNU/Linux. This port requires binutils-2.23 or newer. !


    tilepro-*-linux*

    The TILEPro processor running GNU/Linux. This port requires binutils-2.22 or newer. !


    visium-*-elf

    CDS VISIUMcore processor. This configuration is intended for embedded systems. !


    *-*-vxworks*

    *************** module, contrib *** 1327,1333 **** that file to add the module to your kernel build. (Future versions of VxWorks will incorporate this module.) !


    x86_64-*-*, amd64-*-*

    --- 1327,1333 ---- that file to add the module to your kernel build. (Future versions of VxWorks will incorporate this module.) !


    x86_64-*-*, amd64-*-*

    *************** 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 -m32 switch). !


    x86_64-*-solaris2.1[0-9]*

    --- 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 -m32 switch). !


    x86_64-*-solaris2.1[0-9]*

    *************** this way, you have to provide all suppor *** 1351,1357 **** as 64-bit code, configure with --target=x86_64-pc-solaris2.1x and ‘CC=gcc -m64’. !


    xtensa*-*-elf

    --- 1351,1357 ---- as 64-bit code, configure with --target=x86_64-pc-solaris2.1x and ‘CC=gcc -m64’. !


    xtensa*-*-elf

    *************** 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. !


    xtensa*-*-linux*

    --- 1368,1374 ---- downloaded files include a customized copy of this header file, which you can use to replace the default header file. !


    xtensa*-*-linux*

    *************** be inactive. See

    *-*-cygwin

    --- 1434,1440 ----

    UWIN support has been removed due to a lack of maintenance. !


    *-*-cygwin

    *************** 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. !


    *-*-mingw32

    --- 1450,1456 ---- the latest official GNU binutils release in the Cygwin distribution, or version 2.20 or above if building your own. !


    *-*-mingw32

    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, 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 has been renamed to . ! * 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 has been renamed to . ! * 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 , 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 , 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 , __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 , __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 and . ! * 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 and . ! * 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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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 + + 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 + + Backport from mainline + 2018-08-22 Iain Sandoe + + 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 + + 2018-08-15 Iain Sandoe + + * 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 + + Backport from mainline + 2018-11-20 Andreas Krebbel + + * config/s390/s390.md ("clztidi2"): Swap the RTX's written to the + DImode parts of the target operand. + + 2018-11-26 Andreas Krebbel + + Backport from mainline + 2018-11-26 Andreas Krebbel + + * doc/invoke.texi: Document z14/arch12 -march option. + + 2018-10-19 Richard Biener + + PR middle-end/87645 + Backport from mainline + 2018-07-12 Richard Biener + + * gimple-match-head.c (gimple_resimplify1): Apply recursion + limit. + (gimple_resimplify2): Likewise. + (gimple_resimplify3): Likewise. + (gimple_resimplify4): Likewise. + + 2018-11-26 Richard Biener + + Backport from mainline + 2018-10-15 Richard Biener + + 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 + + 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 + + PR tree-optimization/87665 + * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Adjust + to reflect reality. + + 2018-11-26 Richard Biener + + Backport from mainline + 2018-06-14 Richard Biener + + 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 + + PR middle-end/86076 + * tree-cfg.c (move_stmt_op): unshare invariant addresses + before adjusting their block. + + 2018-11-22 Uros Bizjak + + Backport from mainline + 2018-11-16 Uros Bizjak + + 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 + + backport from trunk: + 2017-11-19 Tom de Vries + + 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 + + PR target/87867 + Backport from mainiline + 2018-09-26 Eric Botcazou + + * 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 + + Backport from mainline + 2018-03-12 Richard Biener + + 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 + + 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 + + Backport from mainline + 2018-11-05 Xuepeng Guo + + 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 + + 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 + + Backport from mainline + 2018-11-11 Uros Bizjak + + 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 + + PR debug/88006 + PR debug/87462 + * dwarf2out.c (dwarf2out_finish): Apply resolve_addr to comdat + type list. + + 2018-11-11 Uros Bizjak + + Backport from mainline + 2018-11-04 Uros Bizjak + + 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 + + Backport from mainline + 2018-11-05 Max Filippov + + * config/xtensa/uclinux.h (XTENSA_ALWAYS_PIC): Change to 0. + + 2018-10-26 Bill Schmidt + + Backport from mainline + 2018-10-19 Bill Schmidt + + 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 + + Backport from mainline + 2018-10-15 Andreas Krebbel + + * 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 + + 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 + + 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 + + Backported from mainline + 2018-10-10 Jakub Jelinek + + PR target/87550 + * config/i386/i386-builtin.def (IX86_BUILTIN_RDPMC): Move from args set + to special_args set. + + 2018-09-12 Jakub Jelinek + + PR middle-end/87248 + * fold-const.c (fold_ternary_loc) : Verify also that + BIT_AND_EXPR's second operand is a power of two. Formatting fix. + + 2018-08-27 Jakub Jelinek + + 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 + + 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 + + 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 + + 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 + + Backport from mainline + 2018-08-23 Richard Biener + + PR middle-end/87024 + * tree-inline.c (copy_bb): Drop unused __builtin_va_arg_pack_len + calls. + + 2018-08-17 Richard Biener + + 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 + + Backport from mainline + 2018-09-29 H.J. Lu + + PR target/87370 + * config/i386/i386.c (construct_container): Use TImode for + BLKmode values in 2 integer registers. + + 2018-10-08 H.J. Lu + + Backport from mainline + 2018-10-08 H.J. Lu + + PR target/87517 + * config/i386/avx512fintrin.h (_mm512_mask_fmaddsub_round_pd): + Defined with __builtin_ia32_vfmaddsubpd512_mask. + + 2018-10-05 H.J. Lu + + Backport from mainline + 2018-10-05 H.J. Lu + + 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 + + Backport from mainline + 2018-09-28 Uros Bizjak + + * 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 + + PR other/87353 + * doc/invoke.texi (Link Options): Fix formatting and grammar. + + 2018-10-01 Kyrylo Tkachov + + Backport from mainline + 2018-06-29 Kyrylo Tkachov + + * config/arm/arm.c (output_move_double): Don't allow STRD instructions + if starting source register is not even. + + 2018-09-29 Jakub Jelinek + + 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 + + Backport from mainline + 2018-08-20 Michael Meissner + + PR target/87033 + * config/rs6000/rs6000.md (extendsi2): Change constraints + from 'Y' to 'YZ' to enable the LWAX instruction to be generated + for indexed loads. + + 2018-09-21 Eric Botcazou + + * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Return false + if the call takes a static chain. + + 2018-09-19 John David Anglin + + * 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 + + Backport from trunk + 2018-08-24 Segher Boessenkool + + PR target/86989 + * config/rs6000/rs6000.c (toc_relative_expr_p): Check that the base is + the TOC register. + + 2018-09-12 Andreas Krebbel + + Backport from mainline + 2018-09-12 Andreas Krebbel + + * config/s390/s390.md (PFPO_RND_MODE_DFP, PFPO_RND_MODE_BFP): New + constants. + ("trunc2") + ("trunc2") + ("extend2") + ("extend2"): Set proper rounding mode + according to the target operand type. + + 2018-09-04 Max Filippov + + Backport from mainline + 2018-09-04 Max Filippov + + * config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and + XOR operations in NAND case. + + 2018-09-04 Jonathan Wakely + + * doc/invoke.texi (Option Summary): Add -Waligned-new. + + 2018-09-03 Tom de Vries + + backport from trunk: + 2018-06-21 Tom de Vries + + 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 + + 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 + + Backport from mainline + 2018-08-20 H.J. Lu + + PR target/87014 + * config/i386/i386.md (eh_return): Always update EH return + address in word_mode. + + 2018-08-17 John David Anglin + + Backport from mainline + 2018-08-11 John David Anglin + + * 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 + + Backport from mainline + 2018-05-09 Segher Boessenkool + + 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 + + Backport from mainline + 2018-06-19 Segher Boessenkool + + 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 + + Backport from mainline + 2018-07-31 Jozef Lawrynowicz + + 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 + + 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 + + * 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 + + Backport from mainline + PR target/84168 + 2017-09-28 Joseph Myers + + * 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 + + PR target/84829 + * config/gnu-user.h (GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC): + Remove -mieee-fp handling. + + 2018-07-10 Carl Love + + Backport from mainline + 2017-09-07 Carl Love + + * config/rs6000/vsx.md (define_insn "*stxvl"): Add missing argument to + the sldi instruction. + + 2018-06-29 Martin Liska + + Backport from mainline + 2018-01-10 Kelvin Nilsen + + * 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 + + 2018-06-19 Tony Reix + Damien Bergamini + David Edelsohn + + * 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 + + Backported from mainline + 2018-06-20 Kelvin Nilsen + + * 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 + + * config/s390/s390.h (enum processor_flags): Do not use + default tune parameter when -march was specified. + + 2018-06-26 Jakub Jelinek + + 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 + + Back port from trunk + 2018-04-17 Michael Meissner + + PR target/85424 + * config/rs6000/rs6000.md (pack): Do not try handle a pack + where the inputs overlap with the output. + + 2018-06-25 Jakub Jelinek + + PR target/84786 + * config/i386/sse.md (vshift_count): New mode attr. + (3): Use 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 + + 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 + + Backported from mainline + 2018-06-20 Jakub Jelinek + + 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 + + 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 + + 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 + + PR c++/86025 + * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE. + + 2018-05-06 Jakub Jelinek + + 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 + + PR web/85578 + * doc/install.texi2html: Replace _002d with - and _002a with * in + generated html files using sed. + + 2018-04-27 Jakub Jelinek + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + PR target/85095 + * config/i386/i386.md (*add3_carry_0, *addsi3_carry_zext_0, + *sub3_carry_0, *subsi3_carry_zext_0): New patterns. + + 2018-03-23 Jakub Jelinek + + 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 + + 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 + + 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 + + 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 + + PR sanitizer/78651 + * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before + calling assemble_variable. + + 2018-03-16 Jakub Jelinek + + 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 + + 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 + + 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 (round2): 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 + + 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 + + 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 + + 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 + + Backport from mainline + 2018-06-05 Andre Vieira + + * config/arm/arm_cmse.h (cmse_nsfptr_create): Change typeof to + __typeof__. + (cmse_check_pointed_object): Likewise. + + 2018-06-22 Andre Vieira + + Backport from mainline + 2018-05-17 Jerome Lambourg + + * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove + #include . Replace intptr_t with __INTPTR_TYPE__. + + 2018-06-21 Sebastian Huber + + Backport from mainline + 2018-06-15 Sebastian Huber + + * config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom + multilibs for *-*-rtems*. + * config/riscv/t-rtems: New file. + + 2018-06-19 Max Filippov + + Backport from mainline + 2018-06-19 Max Filippov + + * config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec + constant. + (allocate_stack, frame_blockage, *frame_blockage): New patterns. + + 2018-06-19 Eric Botcazou + + * gimplify.c (gimplify_init_constructor): Really never clear for an + incomplete constructor if CONSTRUCTOR_NO_CLEARING is set. + + 2018-06-18 Martin Sebor + + 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 + + Backport from mainline + 2018-06-14 Sebastian Huber + + * config/rtems.h (STDINT_LONG32): Define. + + 2018-06-11 Peter Bergner + + Backport from mainline + 2018-06-08 Peter Bergner + + PR target/85755 + * config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC + addresses. + + 2018-06-07 Peter Bergner + + Backport from mainline + 2018-06-06 Peter Bergner + + 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 + + Backport from mainline + 2018-05-04 Richard Biener + + 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 + + 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 + + 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 + + Backport from mainline + 2018-06-05 Andreas Krebbel + + * 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 + + PR tree-optimization/85712 + Backport from mainline: + 2018-05-23 Bill Schmidt + + 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 + + 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 + + * config/i386/sse.md (cvtusi264): + Add {q} suffix to insn mnemonic. + + 2018-05-24 Uros Bizjak + + 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 + + Backport from mainline + 2018-05-17 Pat Haugen + Segher Boessenkool + + PR target/85698 + * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check + dest operand. + + 2018-05-17 Martin Jambor + + Backport from mainline + 2018-05-11 Martin Jambor + + PR ipa/85655 + * ipa-cp.c (intersect_with_plats): Check that the lattice contains + single const. + + 2018-05-01 Tom de Vries + + backport from trunk: + 2018-04-16 Cesar Philippidis + Tom de Vries + + 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 + + Backport from mainline + 2018-04-09 Richard Biener + + 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 + + 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 + + PR tree-optimization/85168 + * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid + propagating abnormals. + + 2018-04-24 Martin Liska + + Backport from mainline + 2018-04-17 Martin Liska + + 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 + + Backport from mainline + 2018-04-17 Jan Hubicka + + PR lto/85405 + * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields. + + 2018-04-24 Martin Liska + + Backport from mainline + 2018-03-28 Jakub Jelinek + Martin Liska + + 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 + + Backport from mainline + 2018-03-21 Martin Liska + + PR ipa/84963 + * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove + not intended return statement. + + 2018-04-24 Martin Liska + + Backport from mainline + 2018-03-13 Martin Liska + + 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 + + Backport from mainline + 2018-04-16 Aaron Sawdey + + 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 + + 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 + + Backport from mainline + 2018-03-09 Peter Bergner + + 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 + + Backport from mainline + 2018-04-11 Thomas Preud'homme + + PR target/85261 + * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand + into register. + + 2018-04-12 Andreas Krebbel + + Backport from mainline + 2018-04-12 Andreas Krebbel + + * config/s390/s390.c (s390_output_indirect_thunk_function): Check + also for flag_dwarf2_cfi_asm. + + 2018-04-11 Uros Bizjak + + * config/alpha/alpha.md (stack_probe_internal): Rename + from "probe_stack". Update all callers. + + 2018-04-11 Thomas Preud'homme + + Backport from mainline + 2018-04-04 Thomas Preud'homme + + 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 + + Backport from mainline + 2018-03-08 Kyrylo Tkachov + + PR target/84748 + * config/aarch64/aarch64.md (*compare_cstore_insn): Mark pattern + as clobbering CC_REGNUM. + + 2018-04-06 Eric Botcazou + + 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 + + * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for + custom LIB_SPEC setup. + + 2018-04-05 Uros Bizjak + + PR target/85193 + * config/i386/i386.md (define_attr "memory"): Handle rotate1 type. + + 2018-04-04 Peter Bergner + + Backport from mainline + 2018-04-04 Peter Bergner + + 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 + + * 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 + + Backport from mainline + 2018-03-27 Cesar Philippidis + + PR target/85056 + * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to + extern array declarations. + + 2018-04-02 Peter Bergner + + Backport from mainline + 2018-03-28 Peter Bergner + + 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 + + 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 + + Backport from mainline + 2018-03-30 Peter Bergner + + PR target/80546 + * config/rs6000/vsx.md (??r): New mode attribute. + (*vsx_mov_64bit): Use it. + (*vsx_mov_32bit): Likewise. + + 2018-03-29 Sebastian Peryt + + PR c++/84783 + * config/i386/avx512vlintrin.h (_mm256_permutexvar_epi64) + (_mm256_permutexvar_epi32, _mm256_permutex_epi64): New intrinsics. + + 2018-03-29 Sudakshina Das + + Backport from mainline + 2018-03-22 Sudakshina Das + + 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 + + 2018-03-19 Sudakshina Das + PR target/81647 + + * config/aarch64/aarch64-simd.md (vec_cmp): Modify + instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED. + + 2018-03-28 Kyrylo Tkachov + + Backport from mainline + 2018-03-23 Kyrylo Tkachov + + PR target/85026 + * config/arm/arm.md (unaligned_loadhis): Remove first alternative. + Clean up attributes. + + 2018-03-28 Segher Boessenkool + + Backport from mainline + 2018-03-08 Segher Boessenkool + + 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 + + Backport from mainline: + 2018-03-20 Sudakshina Das + + PR target/82989 + * config/arm/neon.md (ashldi3_neon): Update ?s for constraints + to favor GPR over NEON registers. + (di3_neon): Likewise. + + 2018-03-27 Kyrylo Tkachov + + Backport from mainline + 2018-03-20 Kyrylo Tkachov + + PR target/82518 + * config/arm/arm.c (arm_array_mode_supported_p): Return false for + BYTES_BIG_ENDIAN. + + 2018-03-23 Peter Bergner + + Backport from mainline + 2018-03-20 Peter Bergner + + PR target/83789 + * config/rs6000/altivec.md (altivec_lvx__2op): Delete define_insn. + (altivec_lvx__1op): Likewise. + (altivec_stvx__2op): Likewise. + (altivec_stvx__1op): Likewise. + (altivec_lvx_): New define_expand. + (altivec_stvx_): Likewise. + (altivec_lvx__2op_): New define_insn. + (altivec_lvx__1op_): Likewise. + (altivec_stvx__2op_): Likewise. + (altivec_stvx__1op_): 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 + + Backport from mainline: + 2018-03-14 Carl Love + + * config/rs6000/r6000.c (rtx_is_swappable_p): Add case UNSPEC_VPERMXOR. + + 2018-03-22 Tom de Vries + + backport from trunk: + 2018-03-22 Tom de Vries + + 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 + + Backport from mainline + 2018-03-15 H.J. Lu + + 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 + + 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 + + * doc/invoke.texi (-mclflushopt): Fix spelling of option. + + 2018-03-12 Richard Sandiford + + 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 + + Backport from mainline + 2018-02-14 John David Anglin + + 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 + + * 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 + + Backport from mainline + 2017-09-13 Kugan Vivekanandarajah + + * 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 + + Backport from mainline + 2018-02-07 Georg-Johann Lay + + 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 + + Backport from mainline + 2/16/18 commit 257748 Carl Love + + * 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 + + Backport from mainline + 2018-02-20 Martin Liska + + 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 + + Backport from mainline + 2018-02-19 Martin Liska + + PR other/80589 + * doc/invoke.texi: Fix typo. + * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise. + + 2018-03-06 Martin Liska + + Backport from mainline + 2018-02-05 Martin Liska + + PR gcov-profile/84137 + * doc/gcov.texi: Fix typo in documentation. + + 2018-03-06 Martin Liska + + Backport from mainline + 2018-02-05 Martin Liska + + PR gcov-profile/83879 + * doc/gcov.texi: Document necessity of --dynamic-list-data when + using dlopen functionality. + + 2018-03-06 Martin Liska + + Backport from mainline + 2017-12-19 Martin Liska + + PR rtl-optimization/82675 + * loop-unroll.c (unroll_loop_constant_iterations): Allocate one + more element in sbitmap. + + 2018-03-06 Martin Liska + + Backport from mainline + 2018-03-05 Martin Liska + + * ipa-utils.c (ipa_merge_profiles): Do not merge alias or + a function without profile. + + 2018-03-06 Martin Liska + + Backport from mainline + 2018-02-21 Jan Hubicka + + PR c/84229 + * ipa-cp.c (determine_versionability): Do not version functions caling + va_arg_pack. + + 2018-03-06 Martin Liska + + Backport from mainline + 2018-02-08 Jan Hubicka + + 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 + + Backport from mainline + 2018-02-22 Vladimir Makarov + + 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 + + Backport from mainline + 2018-03-05 Richard Biener + + 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 + + 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 + + PR target/84524 + * config/i386/sse.md (*3): Replace with + orig,vex. + (*3): Likewise. Remove uses. + + 2018-03-03 Jakub Jelinek + + Backported from mainline + 2018-03-02 Jakub Jelinek + Richard Biener + + PR ipa/84628 + * expr.c (expand_expr_real_1) : Don't emit diagnostics + for error or warning attributes if CALL_FROM_THUNK_P is set. + Formatting fixes. + + 2018-03-02 Jakub Jelinek + + 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 + + * 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 + + 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 + + PR c++/84444 + * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t) + is ADDR_EXPR. + + 2018-02-16 Jakub Jelinek + + PR ipa/84425 + * ipa-inline.c (inline_small_functions): Fix a typo. + + 2018-02-13 Jakub Jelinek + + 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 + + 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 + + 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 + Jakub Jelinek + + 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 + + * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for + *DIV_EXPR and *MOD_EXPR. + + 2018-02-01 Jakub Jelinek + + 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 + + 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 + + PR middle-end/84040 + * sched-deps.c (sched_macro_fuse_insns): Return immediately if + !insn_set. + + 2018-01-24 Jakub Jelinek + + 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 + + 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) : Use + UINTVAL (trueop1) instead of INTVAL (op1). + + 2018-01-09 Jakub Jelinek + + 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 + + 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 + + Backport from mainline + 2018-02-26 H.J. Lu + + 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 + + Backport from mainline + 2018-02-26 H.J. Lu + + * config/i386/i386.c (ix86_output_indirect_jmp): Update comments. + + 2018-02-26 H.J. Lu + + 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 + + Backport from trunk r256891: + 2018-01-19 Cesar Philippidis + + PR target/83790 + * config/nvptx/nvptx.c (output_init_frag): Don't use generic address + spaces for function labels. + + 2018-02-26 Carl Love + + 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 + + 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 + Bin Cheng + + Backport from mainline: + 2017-12-14 Sudakshina Das + Bin Cheng + + PR target/81228 + * config/aarch64/aarch64.c (aarch64_select_cc_mode): Move LTGT to + CCFPEmode. + * config/aarch64/aarch64-simd.md (vec_cmp): Add + LTGT. + + 2018-02-16 Jozef Lawrynowicz + + 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 + + Backport from trunk + 2018-01-10 Sudakshina Das + + 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 + + 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 + + Back port from trunk + 2018-02-07 Michael Meissner + + PR target/84154 + * config/rs6000/rs6000.md (fix_trunc2): + 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_truncsi2_p8): Likewise. + (fixuns_trunc2): Likewise. + (fix_trunc2): Likewise. + (fix_trunc2): Likewise. + (fix_di2_hw): Likewise. + (fixuns_di2_hw): Likewise. + (fix_si2_hw): Likewise. + (fixuns_si2_hw): Likewise. + (fix_2_hw): Likewise. + (fix_trunc2): Likewise. + (fctiwz__smallint): Rename fctiwz__smallint to + fix_truncsi2_p8. + (fix_trunc2_internal): Delete, no longer + used. + (fixuns_trunc2_internal): Likewise. + (fix__mem): Likewise. + (fctiwz__mem): Likewise. + (fix__mem): Likewise. + (fix_trunc2_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_trunc2_mem): Likewise. + + 2018-02-15 Aaron Sawdey + + Back port from mainline + 2018-01-30 Aaron Sawdey + + PR target/83758 + * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return + a reg rtx. + + 2018-02-14 Peter Bergner + + Back port from mainline + 2018-02-13 Peter Bergner + + PR target/84279 + * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses. + + 2018-02-14 Martin Jambor + + 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 + + * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as + function label. + + Backport from mainline + 2018-02-01 Aldy Hernandez + + PR target/84089 + * config/pa/predicates.md (base14_operand): Handle VOIDmode. + + 2018-02-09 Martin Jambor + + Backport from mainline + 2018-02-08 Martin Jambor + + * hsa-gen.c (get_symbol_for_decl): Set program allocation for + static local variables. + + 2018-02-09 Andreas Krebbel + + Backport from mainline + 2018-02-09 Andreas Krebbel + + 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 + + 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 + + Backport from mainline + 2018-02-08 Andreas Krebbel + + * 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", "*sibcall_br", "*sibcall_value_br", "*return"): Emit + indirect branch via thunk if requested. + ("indirect_jump", ""): Expand patterns for branch conversion. + ("*indirect_jump"): Disable for branch conversion using out of + line thunks. + ("indirect_jump_via_thunk_z10") + ("indirect_jump_via_thunk") + ("indirect_jump_via_inlinethunk_z10") + ("indirect_jump_via_inlinethunk", "*casesi_jump") + ("casesi_jump_via_thunk_z10", "casesi_jump_via_thunk") + ("casesi_jump_via_inlinethunk_z10") + ("casesi_jump_via_inlinethunk", "*basr_via_thunk_z10") + ("*basr_via_thunk", "*basr_r_via_thunk_z10") + ("*basr_r_via_thunk", "return_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"): ... this one. + * config/s390/s390.opt: Add new options and and enum for the + option values. + + 2018-02-08 Richard Biener + + 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 + + Backport from mainline + 2018-02-06 Bill Schmidt + + * config/rs6000/rs6000.c (rs6000_option_override_internal): + Display warning message for -mno-speculate-indirect-jumps. + + 2018-02-05 Rainer Orth + + Backport from mainline + 2018-01-30 Rainer Orth + + PR bootstrap/84017 + * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86. + * configure: Regenerate. + + 2018-02-05 Peter Bergner + + Back port from mainline + 2018-02-01 Peter Bergner + + 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) : 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 + + Backport from mainline + 2018-02-02 H.J. Lu + + * 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 + + Backport from mainline + 2018-01-31 Uros Bizjak + + 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 + + Backport from mainline + 2018-02-01 Renlin Li + + 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 + + Backport from mainline + 2017-11-02 Richard Biener + + PR tree-optimization/82795 + * tree-if-conv.c (predicate_mem_writes): Remove bogus assert. + + 2018-01-31 Richard Biener + Kelvin Nilsen + + Backport from mainline + 2018-01-29 Richard Biener + Kelvin Nilsen + + 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 + + PR rtl-optimization/84071 + * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case. + * doc/tm.texi: Regenerate. + + 2018-01-31 Eric Botcazou + + 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 + + Backport from mainline + 2018-01-24 Joseph Myers + + PR target/68467 + * config/m68k/m68k.c (m68k_promote_function_mode): New function. + (TARGET_PROMOTE_FUNCTION_MODE): New macro. + + 2018-01-29 Uros Bizjak + + Backport from mainline + 2018-01-26 Uros Bizjak + + 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 + + Backport from mainline + 2018-01-26 Alan Modra + PR target/84033 + * config/rs6000/rs6000.c (rtx_is_swappable_p): Exclude + UNSPEC_VBPERMQ. + + 2018-01-27 H.J. Lu + + Backport from mainline + 2018-01-27 H.J. Lu + + * doc/invoke.texi: Replace -mfunction-return==@var{choice} with + -mfunction-return=@var{choice}. + + 2018-01-27 H.J. Lu + + Backport from mainline + 2018-01-23 H.J. Lu + + 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 + + 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 + + Backport from mainline + 2018-01-17 Uros Bizjak + + * 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 + + Back port from trunk + 2018-01-22 Michael Meissner + + 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 (signbit2): 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. + (signbit2_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. + (signbit2_dm_mem_be): New combiner insns to combine load + with signbit move. Split big and little endian case. + (signbit2_dm_mem_le): Likewise. + (signbit2_dm_ext): Delete, no longer used. + (signbit2_dm2): Likewise. + + 2018-01-25 Peter Bergner + + Back port from mainline + 2018-01-10 Peter Bergner + + 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_ for VSX_D): Use + indexed_or_indirect_operand predicate. + (*vsx_le_perm_load_ for VSX_W): Likewise. + (*vsx_le_perm_load_v8hi): Likewise. + (*vsx_le_perm_load_v16qi): Likewise. + (*vsx_le_perm_store_ for VSX_D): Likewise. + (*vsx_le_perm_store_ 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 + + Backport from mainline + 2018-01-02 Bill Schmidt + + * 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 + + * 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 + + * 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 + + * 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 + + * 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) : Remove support for aggressive + loop optimizations. + + 2018-10-22 Eric Botcazou + + * 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 + + * gcc-interface/trans.c (Pragma_to_gnu) : Use + a simple memory constraint in all cases. + + 2018-09-13 Eric Botcazou + + Backport from mainline + 2018-07-31 Eric Botcazou + + * 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 + + * 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 + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Deal with + more rvalues in the expression of a renaming. + + 2018-06-12 Eric Botcazou + + * 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 + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Do not get + the expression of a dispatch table that is not being defined. + : Remove obsolete kludge. + + 2018-06-12 Eric Botcazou + + Backpor from mainline + 2018-06-02 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : 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 + + Backport from mainline + 2018-06-11 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : 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 + + * 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 + + Backport from mainline + 2018-05-31 Eric Botcazou + + * 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 + + Backport from mainline + 2018-03-07 Sebastian Huber + + * gcc-interface/Makefile.in (OSCONS_CPP): Remove redundant + $(GNATLIBCFLAGS). + (OSCONS_EXTRACT): Add $(GNATLIBCFLAGS_FOR_C). + + 2018-03-12 Eric Botcazou + + PR ada/82813 + * gcc-interface/misc.c (gnat_post_options): Disable string overflow + warnings. + + 2018-03-10 Eric Botcazou + + * gcc-interface/trans.c (node_has_volatile_full_access) : + Consider only entities for objects. + + 2018-03-06 Eric Botcazou + + * 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 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 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 *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 *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 *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 + + 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 + + Backported from mainline + 2018-05-11 Jakub Jelinek + + 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 + + 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 + + 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 + + PR c/84853 + * c-typeck.c (build_binary_op) : + 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 + + Backported from mainline + 2018-06-20 Jakub Jelinek + + PR c++/86210 + * c-common.c (check_nonnull_arg): Use fold_for_warn. Adjust obsolete + comment. + + 2018-05-11 Jakub Jelinek + + 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 + + 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 + + Backport from mainline + 2018-03-16 Richard Biener + + PR c/84873 + * c-gimplify.c (c_gimplify_expr): Revert previous change. Instead + unshare the possibly folded expression. + + 2018-03-15 Richard Biener + + PR c/84873 + * c-gimplify.c (c_gimplify_expr): Do not fold expressions. + + 2018-03-03 Jakub Jelinek + + Backported from mainline + 2018-01-27 Jakub Jelinek + + * 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 % 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 % 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; /* .c for constructor/destructor list. */ static const char *o_file; /* .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; break; --- 2462,2471 ---- break; } /* Fall through. */ ! case UNLT: std::swap (operands[2], operands[3]); /* Fall through. */ ! case UNGT: case GT: comparison = gen_aarch64_cmgt; break; *************** *** 2476,2485 **** break; } /* Fall through. */ ! case UNGT: std::swap (operands[2], operands[3]); /* Fall through. */ ! case UNLT: case GE: comparison = gen_aarch64_cmge; break; --- 2476,2485 ---- break; } /* Fall through. */ ! case UNLE: std::swap (operands[2], operands[3]); /* Fall through. */ ! case UNGE: case GE: comparison = gen_aarch64_cmge; 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_cmpl2 (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 (a, b) -> UNORDERED (a, b) | ! (cm (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 (mode); ! rtx tmp1 = gen_reg_rtx (mode); ! rtx tmp2 = gen_reg_rtx (mode); ! emit_insn (gen_aarch64_cmeq (tmp0, operands[2], operands[2])); ! emit_insn (gen_aarch64_cmeq (tmp1, operands[3], operands[3])); ! emit_insn (gen_and3 (tmp2, tmp0, tmp1)); ! emit_insn (gen_and3 (tmp0, tmp0, ! lowpart_subreg (mode, operands[2], mode))); ! emit_insn (gen_and3 (tmp1, tmp1, ! lowpart_subreg (mode, operands[3], mode))); ! gcc_assert (comparison != NULL); ! emit_insn (comparison (operands[0], ! lowpart_subreg (mode, tmp0, mode), ! lowpart_subreg (mode, tmp1, mode))); ! emit_insn (gen_orn3 (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 (operands[0], operands[2], operands[3])); emit_insn (gen_aarch64_cmgt (tmp, operands[3], operands[2])); emit_insn (gen_ior3 (operands[0], operands[0], tmp)); - emit_insn (gen_one_cmpl2 (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 (tmp, operands[2], operands[3])); ! emit_insn (gen_aarch64_cmge (operands[0], ! operands[3], operands[2])); ! emit_insn (gen_ior3 (operands[0], operands[0], tmp)); ! emit_insn (gen_one_cmpl2 (operands[0], operands[0])); ! break; ! case ORDERED: ! emit_insn (gen_aarch64_cmgt (tmp, operands[2], operands[3])); ! emit_insn (gen_aarch64_cmge (operands[0], ! operands[3], operands[2])); ! emit_insn (gen_ior3 (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_cmpl2 (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 (operands[0], operands[2], operands[3])); emit_insn (gen_aarch64_cmgt (tmp, operands[3], operands[2])); emit_insn (gen_ior3 (operands[0], operands[0], tmp)); break; + case ORDERED: case UNORDERED: ! case UNEQ: ! /* cmeq (a, a) & cmeq (b, b). */ ! emit_insn (gen_aarch64_cmeq (operands[0], ! operands[2], operands[2])); ! emit_insn (gen_aarch64_cmeq (tmp, operands[3], operands[3])); ! emit_insn (gen_and3 (operands[0], operands[0], tmp)); ! if (code == UNORDERED) ! emit_insn (gen_one_cmpl2 (operands[0], operands[0])); ! else if (code == UNEQ) ! { ! emit_insn (gen_aarch64_cmeq (tmp, operands[2], operands[3])); ! emit_insn (gen_orn3 (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_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) && !aarch64_plus_operand (operands[2], mode) && !reload_completed" --- 3093,3100 ---- (define_insn_and_split "*compare_cstore_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) && !aarch64_plus_operand (operands[2], 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 - #include #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 "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 "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" "")]) + (define_insn "*add3_carry_0" + [(set (match_operand:SWI 0 "nonimmediate_operand" "=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, operands)" + "adc{}\t{$0, %0|%0, 0}" + [(set_attr "type" "alu") + (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "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" *************** *** 6741,6746 **** --- 6769,6788 ---- (set_attr "pent_pair" "pu") (set_attr "mode" "")]) + (define_insn "*sub3_carry_0" + [(set (match_operand:SWI 0 "nonimmediate_operand" "=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, operands)" + "sbb{}\t{$0, %0|%0, 0}" + [(set_attr "type" "alu") + (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "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" [(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) && TARGET_SSE_MATH) || TARGET_MIX_SSE_I387) ! && flag_unsafe_math_optimizations) || (SSE_FLOAT_MODE_P (mode) && TARGET_SSE_MATH && !flag_trapping_math && !flag_rounding_math)" { --- 15598,15605 ---- "(TARGET_USE_FANCY_MATH_387 && (!(SSE_FLOAT_MODE_P (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) && 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\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "sseicvt") (set_attr "prefix" "evex") (set_attr "mode" "")]) --- 4398,4404 ---- (match_operand:VF_128 1 "register_operand" "v") (const_int 1)))] "TARGET_AVX512F && TARGET_64BIT" ! "vcvtusi2{q}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "sseicvt") (set_attr "prefix" "evex") (set_attr "mode" "")]) *************** *** 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 (, mode, operands)" "@ p\t{%2, %0|%0, %2} ! vp\t{%2, %1, %0|%0, %1, %2}" [(set_attr "isa" "noavx,avx") (set_attr "type" "sseiadd") (set_attr "prefix_data16" "1,*") ! (set_attr "prefix" "") (set_attr "mode" "")]) (define_insn "*3_mask" --- 9938,9948 ---- && ix86_binary_operator_ok (, mode, operands)" "@ p\t{%2, %0|%0, %2} ! vp\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" "")]) (define_insn "*3_mask" *************** *** 10683,10693 **** (const_string "0"))) (set_attr "mode" "")]) (define_insn "3" [(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 && && " "@ p\t{%2, %0|%0, %2} --- 10683,10696 ---- (const_string "0"))) (set_attr "mode" "")]) + (define_mode_attr vshift_count + [(V32HI "v") (V16HI "Yv") (V8HI "Yv")]) + (define_insn "3" [(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,N")))] "TARGET_SSE2 && && " "@ p\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 && " "@ p\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 && " "@ p\t{%2, %0|%0, %2} *************** *** 11822,11828 **** (eq_attr "mode" "TI")) (const_string "1") (const_string "*"))) ! (set_attr "prefix" "") (set (attr "mode") (cond [(and (match_test " == 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 " == 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__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__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__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__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_" ! [(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__2op_di (operand0, op1, op2)); ! else ! emit_insn (gen_altivec_lvx__2op_si (operand0, op1, op2)); ! } ! else ! { ! if (TARGET_64BIT) ! emit_insn (gen_altivec_lvx__1op_di (operand0, addr)); ! else ! emit_insn (gen_altivec_lvx__1op_si (operand0, addr)); ! } ! DONE; ! }) ! ; The next two patterns embody what lvx should usually look like. ! (define_insn "altivec_lvx__2op_" [(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__1op_" [(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__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__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__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__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_" ! [(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__2op_di (operand0, op1, op2)); ! else ! emit_insn (gen_altivec_stvx__2op_si (operand0, op1, op2)); ! } ! else ! { ! if (TARGET_64BIT) ! emit_insn (gen_altivec_stvx__1op_di (operand0, addr)); ! else ! emit_insn (gen_altivec_stvx__1op_si (operand0, addr)); ! } ! DONE; ! }) ! ; The next two patterns embody what stvx should usually look like. ! (define_insn "altivec_stvx__2op_" ! [(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__1op_" ! [(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 #ifdef _AIX *************** along with GCC; see the file COPYING3. *** 36,41 **** --- 38,81 ---- # include #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= 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 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 "extendsi2" [(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 "extendsi2" [(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)) { if (mode == KFmode) ! emit_insn (gen_signbitkf2_dm (operands[0], operands[1])); else if (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)) { + rtx dest = operands[0]; + rtx src = operands[1]; + rtx tmp = gen_reg_rtx (DImode); + rtx dest_di = gen_lowpart (DImode, dest); + if (mode == KFmode) ! emit_insn (gen_signbitkf2_dm (tmp, src)); else if (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 "signbit2_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)" + [(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 "*signbit2_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 "copysign3" [(set (match_dup 3) (abs:SFDF (match_operand:SFDF 1 "gpc_reg_operand" ""))) *************** *** 4812,4865 **** operands[5] = CONST0_RTX (mode); }) - ;; Optimize signbit on 64-bit systems with direct move to avoid doing the store - ;; and load. - (define_insn_and_split "signbit2_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 "*signbit2_dm_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 "signbit2_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 "copysign3_fcpsgn" --- 4877,4882 ---- *************** *** 5694,5738 **** xscvdpsxds %x0,%x1" [(set_attr "type" "fp")]) ! (define_expand "fix_trunc2" ! [(parallel [(set (match_operand: 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_trunc2_internal" ! [(set (match_operand: 0 "reg_or_indexed_operand" "=wIwJ,rZ") ! (fix:QHI ! (match_operand:SFDF 1 "gpc_reg_operand" ","))) ! (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, mode)) ! { ! rtx di_dest = gen_rtx_REG (DImode, REGNO (dest)); ! emit_insn (gen_fix_truncdi2 (di_dest, src)); ! } ! else ! { ! rtx tmp = operands[2]; ! rtx tmp2 = gen_rtx_REG (mode, REGNO (tmp)); ! ! emit_insn (gen_fix_truncdi2 (tmp, src)); ! emit_move_insn (dest, tmp2); ! } ! DONE; }) (define_expand "fixuns_truncsi2" --- 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_trunc2" ! [(set (match_operand: 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" ! "@ ! fctiwz %0,%1 ! xscvdpxws %x0,%x1 ! #" ! "&& reload_completed && int_reg_operand (operands[0], 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_truncsi2_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" ! "@ ! fctiwz %0,%1 ! xscvdpxws %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_trunc2_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"))] ! "(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] = (mode == SImode ! ? operands[2] ! : gen_rtx_REG (mode, REGNO (operands[2]))); }) (define_expand "fixuns_truncsi2" *************** *** 5801,5875 **** xscvdpuxds %x0,%x1" [(set_attr "type" "fp")]) - (define_expand "fixuns_trunc2" - [(parallel [(set (match_operand: 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_trunc2_internal" - [(set (match_operand: 0 "reg_or_indexed_operand" "=wIwJ,rZ") - (unsigned_fix:QHI - (match_operand:SFDF 1 "gpc_reg_operand" ","))) - (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, mode)) - { - rtx di_dest = gen_rtx_REG (DImode, REGNO (dest)); - emit_insn (gen_fixuns_truncdi2 (di_dest, src)); - } - else - { - rtx tmp = operands[2]; - rtx tmp2 = gen_rtx_REG (mode, REGNO (tmp)); - - emit_insn (gen_fixuns_truncdi2 (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 "*fctiwz__smallint" - [(set (match_operand:SI 0 "vsx_register_operand" "=d,wi") - (any_fix:SI (match_operand:SFDF 1 "gpc_reg_operand" ",")))] - "TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT - && TARGET_VSX_SMALL_INTEGER" - "@ - fctiwz %0,%1 - xscvdpxws %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 "*fctiwz__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_" [(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_" [(set (match_operand:GPR 0 "register_operand" "=r") *************** *** 14505,14520 **** (set_attr "length" "4")]) (define_insn_and_split "pack" ! [(set (match_operand:FMOVE128 0 "register_operand" "=d,&d") (unspec:FMOVE128 ! [(match_operand: 1 "register_operand" "0,d") ! (match_operand: 2 "register_operand" "d,d")] UNSPEC_PACK_128BIT))] "FLOAT128_2REG_P (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" ! [(set (match_operand:FMOVE128 0 "register_operand" "=&d") (unspec:FMOVE128 ! [(match_operand: 1 "register_operand" "d") ! (match_operand: 2 "register_operand" "d")] UNSPEC_PACK_128BIT))] "FLOAT128_2REG_P (mode)" ! "#" ! "&& reload_completed" [(set (match_dup 3) (match_dup 1)) (set (match_dup 4) (match_dup 2))] { *************** *** 14527,14534 **** operands[3] = gen_rtx_REG (mode, dest_hi); operands[4] = gen_rtx_REG (mode, dest_lo); } ! [(set_attr "type" "fpsimple,fp") ! (set_attr "length" "4,8")]) (define_insn "unpack" [(set (match_operand:DI 0 "register_operand" "=d,d") --- 14483,14490 ---- operands[3] = gen_rtx_REG (mode, dest_hi); operands[4] = gen_rtx_REG (mode, dest_lo); } ! [(set_attr "type" "fp") ! (set_attr "length" "8")]) (define_insn "unpack" [(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_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)" - "xscvqpsdz %0,%1" - [(set_attr "type" "vecfloat") - (set_attr "size" "128")]) - - (define_insn "fixuns_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)" - "xscvqpudz %0,%1" - [(set_attr "type" "vecfloat") - (set_attr "size" "128")]) ! (define_insn "fix_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)" ! "xscvqpswz %0,%1" [(set_attr "type" "vecfloat") (set_attr "size" "128")]) ! (define_insn "fixuns_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)" ! "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__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)" "#" "&& 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_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 (mode)" ! "xscvqpz %0,%1" [(set_attr "type" "vecfloat") (set_attr "size" "128")]) ! (define_insn "fix_trunc2" ! [(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 (mode)" ! "xscvqpwz %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_trunc2_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)" "#" "&& 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__2op (operands[0], XEXP (addr, 0), ! XEXP (addr, 1))); ! else ! emit_insn (gen_altivec_lvx__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_ (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__2op (operands[1], XEXP (addr, 0), ! XEXP (addr, 1))); ! else ! emit_insn (gen_altivec_stvx__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_ (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_" [(set (match_operand:VSX_D 0 "vsx_register_operand" "=") ! (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_" [(set (match_operand:VSX_D 0 "vsx_register_operand" "=") ! (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_" [(set (match_operand:VSX_W 0 "vsx_register_operand" "=") ! (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_" [(set (match_operand:VSX_W 0 "vsx_register_operand" "=") ! (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_" ! [(set (match_operand:VSX_D 0 "memory_operand" "=Z") (match_operand:VSX_D 1 "vsx_register_operand" "+"))] "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR" "#" --- 514,520 ---- (set_attr "length" "8")]) (define_insn "*vsx_le_perm_store_" ! [(set (match_operand:VSX_D 0 "indexed_or_indirect_operand" "=Z") (match_operand:VSX_D 1 "vsx_register_operand" "+"))] "!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_" ! [(set (match_operand:VSX_W 0 "memory_operand" "=Z") (match_operand:VSX_W 1 "vsx_register_operand" "+"))] "!BYTES_BIG_ENDIAN && TARGET_VSX && !TARGET_P9_VECTOR" "#" --- 559,565 ---- "") (define_insn "*vsx_le_perm_store_" ! [(set (match_operand:VSX_W 0 "indexed_or_indirect_operand" "=Z") (match_operand:VSX_W 1 "vsx_register_operand" "+"))] "!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_64bit" [(set (match_operand:VSX_M 0 "nonimmediate_operand" "=ZwO, , , r, we, ?wQ, ! ?&r, ??r, ??Y, ??r, wo, v, ?, *r, v, ??r, wZ, v") (match_operand:VSX_M 1 "input_operand" --- 977,983 ---- (define_insn "*vsx_mov_64bit" [(set (match_operand:VSX_M 0 "nonimmediate_operand" "=ZwO, , , r, we, ?wQ, ! ?&r, ??r, ??Y, , wo, v, ?, *r, v, ??r, wZ, v") (match_operand:VSX_M 1 "input_operand" *************** *** 990,996 **** ;; LVX (VMX) STVX (VMX) (define_insn "*vsx_mov_32bit" [(set (match_operand:VSX_M 0 "nonimmediate_operand" ! "=ZwO, , , ??r, ??Y, ??r, wo, v, ?, *r, v, ??r, wZ, v") --- 1006,1012 ---- ;; LVX (VMX) STVX (VMX) (define_insn "*vsx_mov_32bit" [(set (match_operand:VSX_M 0 "nonimmediate_operand" ! "=ZwO, , , ??r, ??Y, , wo, v, ?, *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 */ + 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_ << PFPO_OP0_TYPE_SHIFT | ! PFPO_OP_TYPE_ << 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_ << PFPO_OP0_TYPE_SHIFT | ! PFPO_OP_TYPE_ << 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_ << PFPO_OP0_TYPE_SHIFT | ! PFPO_OP_TYPE_ << 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_ << PFPO_OP0_TYPE_SHIFT | ! PFPO_OP_TYPE_ << 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_ << PFPO_OP0_TYPE_SHIFT | ! PFPO_OP_TYPE_ << 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_ << PFPO_OP0_TYPE_SHIFT | ! PFPO_OP_TYPE_ << 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_ << PFPO_OP0_TYPE_SHIFT | ! PFPO_OP_TYPE_ << 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_ << PFPO_OP0_TYPE_SHIFT | ! PFPO_OP_TYPE_ << 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__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__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_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" ! [(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_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" ! [(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_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" + [(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_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" + [(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_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" + [(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 "" [(ANY_RETURN)] "s390_can_use__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 "" [(ANY_RETURN)] "s390_can_use__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" [(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_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 < gcc-driver-name.h < gcc-driver-name.h < gcc-driver-name.h < + + 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 + + PR c++/87075 - ICE with constexpr array initialization. + * constexpr.c (cxx_eval_vec_init_1): Handle trivial initialization. + + 2018-10-23 Tom de Vries + + backport from trunk: + 2018-07-31 Tom de Vries + + PR debug/86687 + * optimize.c (update_cloned_parm): Copy DECL_BY_REFERENCE. + + 2018-10-12 Jakub Jelinek + + Backported from mainline + 2018-07-16 Jakub Jelinek + + 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 + + Backport from mainline + 2018-08-02 Richard Biener + + PR c++/86763 + * class.c (layout_class_type): Copy TYPE_TYPELESS_STORAGE + to the CLASSTYPE_AS_BASE. + + 2018-08-10 Jason Merrill + + 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 + + PR c++/86378 - functional cast in noexcept-specifier. + * tree.c (strip_typedefs_expr) [TREE_LIST]: Fix iteration. + + 2018-06-26 Jason Merrill + + 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 + + PR c++/86291 + * parser.c (cp_parser_omp_for_loop_init): Change for_block argument + type from vec * to vec *&. + + 2018-06-22 Jakub Jelinek + + Backported from mainline + 2018-05-29 Jakub Jelinek + + 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 + + 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 + + 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 + + PR c++/84463 + * typeck.c (cp_build_addr_expr_1): Move handling of offsetof-like + tricks from here to ... + * cp-gimplify.c (cp_fold) : ... here. Only use it + if INDIRECT_REF's operand is INTEGER_CST cast to pointer type. + + 2018-04-06 Jakub Jelinek + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + Jakub Jelinek + + 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 + Jakub Jelinek + + 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 + + PR c++/84662 + * pt.c (tsubst_copy_and_build) : Use + RETURN instead of return. + : Likewise. + : If op0 is error_mark_node, just return + it instead of wrapping it into CONVERT_EXPR. + + 2018-06-12 Jason Merrill + + 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 + + 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 + + Backport from mainline + 2018-04-05 Ville Voutilainen + + Implement P0969 + * decl.c (find_decomp_class_base): Check accessibility instead + of declared access, adjust diagnostic. + + 2018-04-23 Jakub Jelinek + Jason Merrill + + 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 + + Backport from mainline + 2018-04-05 Ville Voutilainen + + Implement P0961 + * decl.c (get_tuple_decomp_init): Check the templatedness + of a member get. + + 2018-04-19 Jonathan Wakely + + 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 + + PR c++/85279 - dump_expr doesn't understand decltype. + * error.c (dump_expr): Handle DECLTYPE_TYPE. + + 2018-04-05 Jason Merrill + + 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 return type + * pt.c (tsubst_pack_expansion): Allow unsubstituted auto pack. + + 2018-04-04 Jason Merrill + + 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 + + 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 + + Backport from mainline + 2018-03-23 Ville Voutilainen + + Implement P0962 + * parser.c (cp_parser_perform_range_for_lookup): Change + the condition for deciding whether to use members. + + 2018-03-23 Jason Merrill + + 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 + Jason Merrill + + PR c++/82336 - link error with list-init default argument. + * decl.c (check_default_argument): Unshare an initializer list. + + 2018-03-22 Marek Polacek + + Backported from mainline + 2018-03-22 Marek Polacek + + PR c++/84854 + * semantics.c (finish_if_stmt_cond): Check if the type of the condition + is boolean. + + 2018-03-19 Marek Polacek + + 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 + + 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 + + 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 + + Backported from mainline + 2018-03-06 Marek Polacek + + PR c++/84684 + * constexpr.c (cxx_bind_parameters_in_call): Unshare evaluated + arguments. + + 2018-03-03 Jason Merrill + + PR c++/84686 - missing volatile loads. + * cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref. + + 2018-03-03 Jakub Jelinek + + Backported from mainline + 2018-02-26 Jakub Jelinek + + 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 + + PR c++/84445 + * class.c (fixed_type_or_null) : 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 + + 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 + Jakub Jelinek + + PR c++/84192 + * constexpr.c (cxx_eval_constant_expression) : Don't + set *jump_target to anything if jump_target is NULL. + + 2018-02-12 Jakub Jelinek + + 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 + + PR sanitizer/83987 + * tree.c (cp_free_lang_data): Revert 2018-01-23 change. + + 2018-02-09 Marek Polacek + Jakub Jelinek + + 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 + + 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 + Jakub Jelinek + + 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 + + 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 + + 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 + + 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 + + PR c++/83817 + * pt.c (tsubst_copy_and_build) : 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 + + Fix MIPS16 ICE. + * pt.c (type_dependent_expression_p): Check DECL_LANG_SPECIFIC. + + 2018-02-27 Jason Merrill + + PR c++/84489 - dependent default template argument + * pt.c (type_unification_real): Handle early substitution failure. + + 2018-03-01 Jason Merrill + + PR c++/71569 - decltype of template. + * parser.c (cp_parser_decltype_expr): Handle missing template args. + + 2018-03-01 Jason Merrill + Alexandre Oliva + + 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 + + PR c++/71784 - ICE with ref-qualifier and explicit specialization. + * pt.c (determine_specialization): Check ref-qualifier. + + 2018-02-27 Jason Merrill + + 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 + + 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 + Ville Voutilainen + + PR c++/81589 - error with is_trivially_constructible. + * method.c (constructible_expr): Set cp_unevaluated. + + 2018-02-25 Jason Merrill + + 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 + + Backport from mainline + 2017-08-29 Jason Merrill + + 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 + + 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 + + PR c++/82461 - constexpr list-initialized member + * constexpr.c (potential_constant_expression_1): Check + TARGET_EXPR_DIRECT_INIT_P. + + 2018-01-26 Nathan Sidwell + + 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 **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 */ 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 */ 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 *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 % 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 % 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, ¶meter->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 *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 *&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 (); 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 (); 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 */ ! 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 */ ! 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 */ ! 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 */ ! 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 + + 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 + + Backport from mainline + PR fortran/88143 + * resolve.c (resolve_variable): Check for associate names with + NULL target. + + 2019-11-03 Tobias Burnus + Thomas Koenig + + 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 + + Backported from mainline + 2018-07-10 Jakub Jelinek + + 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 + + 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 + + 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 + + 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 + + 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 + + PR fortran/82969 + PR fortran/86242 + * trans-array.c (structure_alloc_comps): Do not explicitly copy + procedure pointer components. + + 2018-06-25 Fritz Reese + + 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 + + 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 + + Backported from mainline + 2018-04-10 Jakub Jelinek + + 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 + + PR fortran/86110 + * array.c (gfc_resolve_character_array_constructor): Avoid NULL + pointer dereference. + + 2018-06-12 Steven G. Kargl + + PR fortran/44491 + * expr.c (gfc_check_assign): Select non-NULL locus. + + 2018-06-09 Steven G. Kargl + + 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 + + PR fortran/63514 + * symbol.c (gfc_add_volatile): Enforce F2008:C1282 and F2018:C1588. + + 2018-06-09 Steven G. Kargl + + 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 + + PR fortran/86059 + * array.c (match_array_cons_element): NULL() cannot be in an + array constructor. + + 2018-06-09 Steven G. Kargl + + 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 + + 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 + + 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 + + PR fortran/85981 + * resolve.c (resolve_allocate_deallocate): Check errmsg is default + character kind. + + 2018-05-25 Steven G. Kargl + + PR fortran/85543 + Backport from trunk + * resolve.c (update_current_proc_array_outer_dependency): Avoid NULL + pointer dereference. + + 2018-05-25 Steven G. Kargl + + PR fortran/85779 + Backport from trunk + * decl.c (gfc_match_derived_decl): Fix NULL point dereference. + + 2018-05-25 Steven G. Kargl + + PR fortran/85780 + Backport from trunk + * resolve.c (resolve_fl_procedure): Avoid NULL dereference. + + 2018-05-25 Steven G. Kargl + + PR fortran/85895 + Backport from trunk + * resolve.c (resolve_sync): Resolve expression before checking for + an error. + + 2018-05-20 Paul Thomas + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + PR fortran/85542 + Backport from trunk + * expr.c (check_inquiry): Avoid NULL pointer dereference. + + 2018-05-12 Paul Thomas + + 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 + + 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 + + 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 + + PR fortran/85687 + Backport from trunk + * check.c (gfc_check_rank): Check that the argument is a data object. + + 2018-05-06 Andre Vehreschild + + 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 + + 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 + + PR fortran/85520 + * decl.c (gfc_match_char_spec): Check for negative length and set to 0. + + 2018-03-28 Thomas Koenig + + 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 + + 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 + + PR fortran/84931 + Backport from trunk + * simplify.c (gfc_convert_constant): Correctly handle iterators + for type conversion. + + 2018-03-19 Steven G. Kargl + + 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 + + PR fortran/65453 + * decl.c (get_proc_name): Catch clash between a procedure statement + and a contained subprogram + + 2018-03-15 Steven G. Kargl + + PR fortran/78741 + * decl.c (get_proc_name): Check for clash of entry name with + subroutine name. + + 2018-03-12 Steven G. Kargl + + PR fortran/83939 + * resolve.c (resolve_fl_procedure): Enforce F2018:C15100. + + 2018-03-10 Steven G. Kargl + + 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 + + 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 + + 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 + + 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 + + PR fortran/71085 + * trans-expr.c (gfc_apply_interface_mapping_to_expr): Do not + dereference NULL pointer. + + 2018-03-03 Steven G. Kargl + + PR fortran/51434 + * simplify.c (gfc_simplify_transfer): Resolve mold. + + 2018-03-03 Paul Thomas + + PR fortran/80965 + * resolve.c (build_loc_call): Change symtree name from 'loc' to + '_loc'. + + 2018-03-03 Paul Thomas + + 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 + + Backported from mainline + 2018-02-16 Jakub Jelinek + + 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 + + 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 + + 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 + + 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 + + PR fortran/30792 + * decl.c (gfc_match_data): Check for invalid substring in + data-implied-do + + 2018-02-23 Steven G. Kargl + + PR fortran/84511 + * trans-io.c (transfer_expr): Deal with C_LOC in transfer statement. + + 2018-02-23 Steven G. Kargl + + PR fortran/84346 + * interface.c (compare_actual_formal): Issue error if keyword is + used in a statement function. + + 2018-02-23 Jerry DeLisle + + 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 + + PR fortran/81116 + PR fortran/84495 + * gfortran.dg/realloc_on_assignment_29.f90: New test. + + 2018-02-19 Jerry DeLisle + + 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 + + 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 + Janne Blomqvist + + * module.c (dump_module): Use lbasename to ensure that module + files are reproducible. + + 2018-02-12 Thomas Koenig + + PR fortran/68560 + * trans-intrinsic.c (gfc_conv_intrinsic_shape): New function. + (gfc_conv_intrinsic_function): Call it. + + 2018-02-12 Francois-Xavier Coudert + + PR fortran/35299 + ChangeLog for r257566 + * resolve.c (resolve_formal_arglist): Update error message. + + 2018-02-12 Steven G. Kargl + + 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 + + PR fortran/82994 + * match.c (gfc_match_deallocate): Check for NULL pointer. + + 2018-02-07 Steven G. Kargl + + 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 % or %"); + 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 . */ #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 . */ #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 (c->what))) { ! info[where].expr_p = true; info[where].force_single_use |= e->force_single_use; } } --- 2054,2064 ---- if (c->what && (e = dyn_cast (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 m_worklist; *************** backprop::intersect_uses (tree var, usag *** 500,507 **** { if (is_gimple_debug (stmt)) continue; ! if (is_a (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 (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 (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 (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 (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 (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 #include #include + #include + #include 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 (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_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 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 remove_edges; --- 477,483 ---- exit_mod = niter % (max_unroll + 1); ! auto_sbitmap wont_exit (max_unroll + 2); bitmap_ones (wont_exit); auto_vec 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 + + Backport from mainline + 2018-04-19 Martin Liska + + * lto-symtab.c (lto_symtab_resolve_symbols): Do not bail out + for multiple PREVAILING_DEF_IRONLY for common symbols. + + 2018-04-24 Martin Liska + + Backport from mainline + 2018-04-10 Martin Liska + + PR lto/85248 + * lto-symtab.c (lto_symtab_merge_p): Do not check for + TREE_VALUES of error attributes. + + 2018-04-24 Martin Liska + + Backport from mainline + 2018-04-10 Richard Biener + Martin Liska + + PR lto/85248 + * lto-symtab.c (lto_symtab_merge_p): Handle noreturn attribute. + + 2018-03-06 Martin Liska + + Backport from mainline + 2018-01-23 Martin Liska + + 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 + + Backport from mainline + 2018-02-08 Jan Hubicka + + * lto-partition.c (lto_balanced_map): Watch overflow. + + 2018-03-06 Martin Liska + + Backport from mainline + 2018-02-08 Jan Hubicka + + 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 + + Backport from mainline + 2018-01-30 Jan Hubicka + + * lto.c (register_resolution): Remove forgotten sanity check. + + 2018-03-06 Martin Liska + + Backport from mainline + 2018-01-30 Jan Hubicka + + 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 + + Backport from mainline + 2018-02-02 Eric Botcazou + + 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 + + Backport from mainline + 2018-01-30 Jan Hubicka + + 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 + + Backport from mainline + 2017-10-13 Jan Hubicka + + * 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; ! 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; ! 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 (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 (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 (stmt)), ctx); + maybe_remove_omp_member_access_dummy_vars (as_a (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 *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 *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 (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 (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 + + PR tree-optimization/79351 + * gcc.dg/torture/pr79351.c: New testcase. + + 2018-11-26 Andreas Krebbel + + Backport from mainline + 2018-11-20 Andreas Krebbel + + * gcc.target/s390/flogr-1.c: New test. + + 2018-10-19 Richard Biener + + PR middle-end/87645 + Backport from mainline + 2018-07-12 Richard Biener + + * gcc.dg/torture/pr87645.c: New testcase. + + 2018-11-26 Richard Biener + + Backport from mainline + 2018-10-15 Richard Biener + + PR middle-end/87610 + * gcc.dg/torture/restrict-6.c: New testcase. + + 2018-10-25 Richard Biener + + PR tree-optimization/87665 + PR tree-optimization/87745 + * gfortran.dg/20181025-1.f: New testcase. + + 2018-10-24 Richard Biener + + PR tree-optimization/87665 + * gcc.dg/torture/pr87665.c: New testcase. + + 2018-11-26 Richard Biener + + Backport from mainline + 2018-06-15 Richard Biener + + PR middle-end/86076 + * gcc.dg/pr86076.c: New testcase. + + 2018-11-26 Matthias Klose + + * jit.dg/test-long-names.c: Fix build with -Wformat-security. + + 2018-11-25 Thomas Koenig + + Backport from trunk + PR fortran/88073 + * gfortran.dg/where_7.f90: New test. + + 2018-11-24 Paul Thomas + + Backport from mainline + PR fortran/88143 + * gfortran.dg/associate_46.f90: New test. + + 2018-11-22 Eric Botcazou + + Backport from mainline + 2018-11-21 Jakub Jelinek + + 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 + + PR target/87867 + Backport from mainiline + 2018-09-17 Eric Botcazou + + * g++.dg/other/thunk2a.C: New test. + * g++.dg/other/thunk2b.C: Likewise. + + 2018-11-20 Richard Biener + + Backport from mainline + 2018-01-26 Richard Biener + + 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 + + * gcc.c-torture/execute/20181120-1.c: New test. + + 2018-11-18 Uros Bizjak + + Backport from mainline + 2018-11-11 Uros Bizjak + + PR target/87928 + * gcc.target/i386/pr87928.c: New test. + + 2018-11-15 Nathan Sidwell + + 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 + + Backport from mainline + 2018-11-04 Uros Bizjak + + PR middle-end/58372 + * g++.dg/pr58372.C: New test. + + 2018-11-08 Eric Botcazou + + * 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 + Thomas Koenig + + Backport from trunk + PR fortran/87597 + * gfortran.dg/inline_matmul_24.f90: New. + + 2018-10-26 Bill Schmidt + + Backport from mainline + 2018-10-19 Bill Schmidt + + PR tree-optimization/87473 + * gcc.c-torture/compile/pr87473.c: New file. + + 2018-10-23 Tom de Vries + + backport from trunk: + 2018-07-31 Tom de Vries + + PR debug/86687 + * g++.dg/guality/pr86687.C: New test. + + 2018-10-22 Eric Botcazou + + * gnat.dg/sso14.adb: New test. + * gnat.dg/sso15.adb: Likewise. + + 2018-10-19 Andreas Krebbel + + Backport from mainline + 2018-10-15 Andreas Krebbel + + * g++.dg/vec-init-1.C: New test. + + 2018-10-17 Eric Botcazou + + * gcc.c-torture/execute/pr87623.c: New test. + + 2018-10-16 Wilco Dijkstra + + Backported from mainline + PR target/87511 + * gcc.target/aarch64/pr87511.c: Add new test. + + 2018-10-12 Jakub Jelinek + + Backported from mainline + 2018-10-10 Jakub Jelinek + + PR target/87550 + * gcc.target/i386/pr87550.c: New test. + + 2018-09-12 Jakub Jelinek + + PR middle-end/87248 + * c-c++-common/torture/pr87248.c: New test. + + 2018-08-27 Jakub Jelinek + + PR rtl-optimization/87065 + * gcc.target/i386/pr87065.c: New test. + + 2018-07-24 Jakub Jelinek + + PR middle-end/86627 + * gcc.target/i386/pr86627.c: New test. + + 2018-07-10 Jakub Jelinek + + PR fortran/86421 + * gfortran.dg/vect/pr86421.f90: New test. + + 2018-07-16 Jakub Jelinek + + PR c++/3698 + PR c++/86208 + * g++.dg/opt/pr3698.C: New test. + + 2018-10-12 Richard Biener + + Backport from mainline + 2018-08-23 Richard Biener + + PR middle-end/87024 + * gcc.dg/pr87024.c: New testcase. + + 2018-08-17 Richard Biener + + PR middle-end/86505 + * gcc.dg/torture/pr86505.c: New testcase. + + 2018-10-09 H.J. Lu + + Backport from mainline + 2018-09-29 H.J. Lu + + PR target/87370 + * gcc.target/i386/pr87370.c: New test. + + 2018-10-01 Kyrylo Tkachov + + Backport from mainline + 2018-07-02 Christophe Lyon + + * gcc.target/arm/arm-soft-strd-even.c: Skip if -mfloat-abi is + overriden. + 2018-06-29 Kyrylo Tkachov + + * gcc.target/arm/arm-soft-strd-even.c: New test. + + 2018-09-29 Jakub Jelinek + + 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 + + Backport from mainline + 2018-08-20 Michael Meissner + + PR target/87033 + * gcc.target/powerpc/pr87033.c: New test. + + 2018-09-21 Eric Botcazou + + * gcc.dg/nested-func-11.c: New test. + + 2018-09-13 Paul Thomas + + Backported from trunk + PR fortran/87284 + * gfortran.dg/allocate_with_mold_2.f90: New test. + + 2018-09-12 Andreas Krebbel + + Backport from mainline + 2018-09-12 Andreas Krebbel + + * gcc.target/s390/dfp_to_bfp_rounding.c: New test. + + 2018-09-07 Janus Weil + + Backported from trunk + PR fortran/86116 + * gfortran.dg/generic_34.f90: New test case. + + 2018-09-03 Tom de Vries + + backport from trunk: + 2018-06-21 Tom de Vries + + PR tree-optimization/85859 + * gcc.dg/pr85859.c: New test. + + 2018-08-21 H.J. Lu + + Backport from mainline + 2018-08-20 H.J. Lu + + PR target/87014 + * g++.dg/torture/pr87014.C: New file. + + 2018-08-21 Szabolcs Nagy + + Backport from mainline + 2018-08-21 Szabolcs Nagy + + * g++.dg/torture/pr86763.C: Restrict to *-*-linux*. + + 2018-08-17 Richard Biener + + Backport from mainline + 2018-08-02 Richard Biener + + PR c++/86763 + * g++.dg/torture/pr86763.C: New testcase. + + 2018-07-17 Eric Botcazou + + * gnat.dg/discr55.adb: New test. + + 2018-07-16 Fritz Reese + + 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 + + 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 + + PR target/84829 + * gcc.target/i386/pr84829.c: New testcase. + + 2018-07-03 Paul Thomas + + PR fortran/82969 + PR fortran/86242 + * gfortran.dg/proc_ptr_50.f90: New test. + + 2018-06-26 Kelvin Nilsen + + Backported from mainline + 2018-06-20 Kelvin Nilsen + + * gcc.target/powerpc/builtins-1.c: Add dg directives to scan + for vpkudus. + + 2018-06-26 Jakub Jelinek + + PR target/86314 + * gcc.dg/pr86314.c: New test. + + 2018-06-25 Fritz Reese + + 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 + + PR target/84786 + * gcc.target/i386/avx512f-pr84786-3.c: New test. + + 2018-06-25 Paul Thomas + + PR fortran/83118 + Back port from trunk + * gfortran.dg/unlimited_polymorphic_30.f03: New test. + + 2018-06-23 Richard Sandiford + + PR tree-optimization/85989 + * gcc.dg/torture/pr85989.c: New test. + + 2018-06-22 Jakub Jelinek + + Backported from mainline + 2018-06-22 Jakub Jelinek + + PR c++/85662 + * g++.dg/ext/offsetof3.C: New test. + + 2018-06-20 Jakub Jelinek + + 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 + + PR middle-end/85878 + * gfortran.fortran-torture/compile/pr85878.f90: New test. + + 2018-06-14 Jakub Jelinek + + PR target/85945 + * gcc.c-torture/compile/pr85945.c: New test. + + 2018-06-04 Jakub Jelinek + + PR c++/86025 + * c-c++-common/gomp/pr86025.c: New test. + + 2018-05-29 Jakub Jelinek + + PR c++/85952 + * g++.dg/warn/Wunused-var-33.C: New test. + + 2018-05-11 Jakub Jelinek + + PR c/85696 + * c-c++-common/gomp/pr85696.c: New test. + + 2018-05-10 Jakub Jelinek + + PR c++/85662 + * g++.dg/ext/offsetof2.C: New test. + + 2018-05-06 Jakub Jelinek + + 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 + + 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 + + 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 + + PR target/85430 + * gcc.dg/pr85430.c: New test. + + 2018-04-10 Jakub Jelinek + + 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 + + PR tree-optimization/85257 + * gcc.dg/pr85257.c: New test. + + 2018-04-06 Jakub Jelinek + + 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 + + PR c++/85208 + * g++.dg/cpp1z/decomp41.C: New test. + + 2018-04-04 Jakub Jelinek + + PR inline-asm/85172 + * g++.dg/ext/builtin13.C: New test. + * g++.dg/ext/atomic-4.C: New test. + + 2018-04-03 Jakub Jelinek + + 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 + + PR c++/84791 + * g++.dg/gomp/pr84791.C: New test. + + 2018-03-28 Jakub Jelinek + + 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 + + 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 + + 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 + + PR inline-asm/84941 + * gcc.dg/pr84941.c: New test. + + 2018-03-21 Jakub Jelinek + + 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 + + PR debug/84875 + * gcc.dg/pr84875.c: New test. + + PR c/84953 + * gcc.dg/pr84953.c: New test. + + 2018-03-19 Maxim Ostapenko + + PR sanitizer/78651 + * g++.dg/asan/pr78651.C: New test. + + 2018-03-16 Jakub Jelinek + + 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 + + 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 + + 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 + + PR target/84772 + * gcc.dg/pr84772.c: New test. + + 2018-03-09 Jason Merrill + Jakub Jelinek + + PR c++/84076 + * g++.dg/warn/Wformat-2.C: New test. + + 2018-03-09 Jakub Jelinek + + PR c++/84767 + * g++.dg/ext/vla18.C: New test. + + 2018-03-08 Jason Merrill + Jakub Jelinek + + PR c++/80598 + * g++.dg/warn/Wunused-function4.C: New test. + + 2018-03-08 Jakub Jelinek + + PR tree-optimization/84739 + * gcc.dg/pr84739.c: New test. + + 2018-03-05 Jakub Jelinek + + PR target/84700 + * gcc.target/powerpc/pr84700.c: New test. + + 2018-03-02 Jakub Jelinek + + PR c++/84662 + * g++.dg/cpp1y/pr84662.C: New test. + + 2018-06-22 Andre Vieira + + Backport from mainline + 2018-06-05 Andre Vieira + + * gcc.target/arm/cmse/cmse-1c99.c: New test. + + 2018-06-19 Eric Botcazou + + * gnat.dg/aggr24.adb: New test. + * gnat.dg/aggr24_pkg.ad[sb]: New helper. + + 2018-06-18 Martin Sebor + + 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 + + PR fortran/86110 + * gfortran.dg/pr86110.f90: New test. + + 2018-06-12 Steven G. Kargl + + PR fortran/44491 + * gfortran.dg/pr44491.f90: New testcase + + 2018-06-11 Peter Bergner + + Backport from mainline + 2018-06-08 Peter Bergner + + PR target/85755 + * gcc.target/powerpc/pr85755.c: New test. + + 2018-06-09 Steven G. Kargl + + 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 + + PR fortran/63514 + * gfortran.dg/pr63514.f90: New test. + + 2018-06-09 Steven G. Kargl + + 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 + + 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 + + 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 + + PR fortran/86045 + Backport from trunk. + * gfortran.dg/pr86045.f90: New test. + + 2018-06-07 Thomas Koenig + + PR fortran/85641 + Backport from trunk. + * gfortran.dg/realloc_on_assign_30.f90: New test. + + 2018-06-07 Richard Biener + + Backport from mainline + 2018-05-04 Richard Biener + + 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 + + PR middle-end/85567 + * gcc.dg/torture/pr85567.c: New testcase. + + 2018-05-02 Richard Biener + + PR tree-optimization/85597 + * gcc.dg/vect/pr85597.c: New testcase. + + 2018-06-05 Andreas Krebbel + + Backport from mainline + 2018-06-05 Andreas Krebbel + + * gcc.target/s390/htm-builtins-compile-4.c: New test. + + 2018-06-04 Steven G. Kargl + + 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 + + * gnat.dg/specs/opt3.ads: New test. + * gnat.dg/specs/opt3_pkg.ads: New helper. + + 2018-06-02 Eric Botcazou + + * gnat.dg/discr53.ad[sb]: New test. + * gnat.dg/discr53_pkg.ads: New helper. + + 2018-05-25 Steven G. Kargl + + PR fortran/85543 + Backport from trunk + * gfortran.dg/pr85543.f90: New test. + + 2018-05-25 Steven G. Kargl + + 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 + + PR fortran/85780 + Backport from trunk + * gfortran.dg/pr85780.f90: New test. + + 2018-05-25 Steven G. Kargl + + 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 + + * gcc.target/i386/avx512f-vcvtusi2sd64-1.c: Update scan string. + * gcc.target/i386/avx512f-vcvtusi2ss64-1.c: Ditto. + + 2018-05-21 Pat Haugen + + Backport from mainline: + 2018-05-17 Pat Haugen + + PR target/85698 + * gcc.target/powerpc/pr85698.c: New test. + + 2018-05-20 Paul Thomas + + PR fortran/80657 + Backport from trunk + * gfortran.dg/char_result_18.f90: New test. + + 2018-05-20 Paul Thomas + + PR fortran/82275 + Backport from trunk + * gfortran.dg/select_type_42.f90: New test. + + 2018-05-19 Paul Thomas + + 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 + + PR fortran/82814 + Backport from trunk + * gfortran.dg/submodule_31.f08: New test. + + 2018-05-16 Paul Thomas + + 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 + + PR fortran/83898 + Backport from trunk + * gfortran.dg/associate_33.f03 : New test. + + 2018-05-16 Paul Thomas + + PR fortran/84546 + Backport from trunk + * gfortran.dg/unlimited_polymorphic_29.f90 : New test. + + 2018-05-12 Steven G. Kargl + + PR fortran/85542 + Backport from trunk + * gfortran.dg/pr85542.f90: New test. + + 2018-05-12 Paul Thomas + + 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 + + PR fortran/70870 + Backport from trunk + * gfortran.dg/pr70870_1.f90: New test. + + 2018-05-11 Steven G. Kargl + + 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 + + PR fortran/85687 + Backport from trunk + * gfortran.dg/pr85687.f90: new test. + + 2018-05-06 Andre Vehreschild + + 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 + + Backport from trunk + 2018-04-27 Kyrylo Tkachov + + 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 + + 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 + + Backport from mainline + 2018-04-09 Richard Biener + + PR tree-optimization/85284 + * gcc.dg/torture/pr85284.c: New testcase. + + 2018-04-06 Richard Biener + + PR middle-end/85244 + * gcc.dg/torture/pr85244-1.c: New testcase. + * gcc.dg/torture/pr85244-2.c: Likewise. + + 2018-04-04 Richard Biener + + PR tree-optimization/85168 + * gcc.dg/torture/pr85168.c: New testcase. + + 2018-03-15 Richard Biener + + PR c/84873 + * c-c++-common/pr84873.c: New testcase. + + 2018-04-24 Steven G. Kargl + + PR fortran/85520 + * gfortran.dg/pr85520.f90: New test. + + 2018-04-24 Martin Liska + + Backport from mainline + 2018-04-10 Jakub Jelinek + + PR lto/85248 + * gcc.dg/lto/pr85248_0.c: New test. + * gcc.dg/lto/pr85248_1.c: New test. + + 2018-04-24 Martin Liska + + Backport from mainline + 2018-03-28 Jakub Jelinek + Martin Liska + + PR sanitizer/85081 + * g++.dg/asan/pr85081.C: New test. + + 2018-04-24 Martin Liska + + Backport from mainline + 2018-03-21 Martin Liska + + PR ipa/84963 + * gfortran.dg/goacc/pr84963.f90: New test. + + 2018-04-24 Martin Liska + + Backport from mainline + 2018-03-13 Martin Liska + + PR ipa/84658. + * g++.dg/ipa/pr84658.C: New test. + + 2018-04-23 Aaron Sawdey + + Backport from mainline + 2018-04-16 Aaron Sawdey + + PR target/83660 + * gcc.target/powerpc/pr83660.C: New test. + + 2018-04-23 Eric Botcazou + + * g++.dg/torture/pr85496.C: New test. + + 2018-04-20 Peter Bergner + + PR target/85436 + * go.dg/pr85436.go: New test. + + Backport from mainline + 2018-03-09 Peter Bergner + + PR target/83969 + * gcc.target/powerpc/pr83969.c: New test. + + 2018-04-19 Jonathan Wakely + + PR c++/85464 - missing location for -Wignored-qualifiers diagnostic + * g++.dg/diagnostic/pr85464.C: New. + + 2018-04-18 Thomas Preud'homme + + Backport from mainline + 2018-04-11 Thomas Preud'homme + + 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 + + Backport from mainline + 2018-04-12 Andreas Krebbel + + * gcc.target/s390/nobp-no-dwarf2-cfi.c: New test. + + 2018-04-11 Thomas Preud'homme + + Backport from mainline + 2018-04-04 Thomas Preud'homme + + 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 + + PR target/85056 + * gcc.target/nvptx/pr85056.c (main): Initialize "sum". + + 2018-04-10 Kyrylo Tkachov + + Backport from mainline + 2018-03-08 Kyrylo Tkachov + + PR target/84748 + * gcc.c-torture/execute/pr84748.c: New test. + + 2018-04-06 Eric Botcazou + + * g++.dg/opt/pr85196.C: New test. + + 2018-04-05 Uros Bizjak + + PR target/85193 + * gcc.target/i386/pr85193.c: New test. + + 2018-04-04 Peter Bergner + + Backport from mainline + 2018-04-04 Peter Bergner + + PR rtl-optimization/84878 + * gcc.target/powerpc/pr84878.c: New test. + + 2018-04-03 Cesar Philippidis + + Backport from mainline + 2018-03-27 Cesar Philippidis + + PR target/85056 + * testsuite/gcc.target/nvptx/pr85056.c: New test. + * testsuite/gcc.target/nvptx/pr85056a.c: New test. + + 2018-04-02 Peter Bergner + + Backport from mainline + 2018-03-28 Peter Bergner + + 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 + + Backport from mainline + 2018-02-08 Peter Bergner + + PR target/81143 + * gcc.target/powerpc/pr79799-2.c: Use __LITTLE_ENDIAN__. + + 2018-03-29 Sebastian Peryt + + 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 + + * gcc.target/arm/pr84826.c: Change dg-option to -fstack-check. + + Backport from mainline + 2018-03-23 Sudakshina Das + + PR target/84826 + * gcc.target/arm/pr84826.c: Add dg directive. + + Backport from mainline + 2018-03-22 Sudakshina Das + + PR target/84826 + * gcc.target/arm/pr84826.c: New test. + + 2018-03-28 Carl Love + + * gcc.target/powerpc/crypto-builtin-1-runnable: Add + p8vector_hw to dg-do run. + + 2018-03-28 Thomas Koenig + + PR fortran/85084 + Backport from trunk. + * gfortran.dg/matmul_rank_1.f90: New test. + + 2018-03-28 Sudakshina Das + Christophe Lyon + + 2018-03-20 Christophe Lyon + + PR target/81647 + * gcc.target/aarch64/pr81647.c: Require fenv_exceptions. + + 2018-03-19 Sudakshina Das + + PR target/81647 + * gcc.target/aarch64/pr81647.c: New. + + 2018-03-28 Kyrylo Tkachov + + Backport from mainline + 2018-03-23 Kyrylo Tkachov + + PR target/85026 + * g++.dg/pr85026.C: New test. + + 2018-03-28 Segher Boessenkool + + Backport from mainline + 2018-03-08 Segher Boessenkool + + PR target/82411 + * gcc.target/powerpc/ppc-sdata-2.c: Skip if -mno-readonly-in-sdata. + + 2018-03-27 Sudakshina Das + + Backport from mainline: + 2018-03-20 Sudakshina Das + + PR target/82989 + * gcc.target/arm/pr82989.c: New test. + + Backport from mainline: + 2018-03-21 Sudakshina Das + + PR target/82989 + * gcc.target/arm/pr82989.c: Change dg scan-assembly directives. + + 2018-03-27 Kyrylo Tkachov + + Backport from mainline + 2018-03-20 Kyrylo Tkachov + + 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 + + * gcc.target/powerpc/crypto-builtin-1-runnable.c: New test file. + + 2018-03-22 Tom de Vries + + backport from trunk: + 2018-03-22 Tom de Vries + + PR tree-optimization/84956 + * gcc.dg/pr84956.c: New test. + + 2018-03-20 Steven G. Kargl + + PR fortran/85001 + * gfortran.dg/interface_41.f90: New test. + + 2018-03-19 Thomas Koenig + + PR fortran/84931 + Backport from trunk + * gfortran.dg/array_constructor_52.f90: New test. + + 2018-03-19 Steven G. Kargl + + PR fortran/77414 + * gfortran.dg/pr77414.f90: New test. + * gfortran.dg/internal_references_1.f90: Adjust error message. + + 2018-03-19 Steven G. Kargl + + PR fortran/65453 + * gfortran.dg/pr65453.f90: New test. + + 2018-03-19 H.J. Lu + + Backport from mainline + 2018-03-15 H.J. Lu + + 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 + + PR fortran/78741 + * gfortran.dg/pr78741.f90: New test. + + 2018-03-12 Steven G. Kargl + + PR fortran/83939 + * gfortran.dg/pr83939.f90 + + 2018-03-12 Richard Sandiford + + PR tree-optimization/84485 + * gcc.dg/vect/pr84485.c: New test. + + 2018-03-10 Steven G. Kargl + + PR fortran/84734 + * gfortran.dg/pr84734.f90: New test. + + 2018-03-10 Eric Botcazou + + * gnat.dg/prot3.adb: New test. + * gnat.dg/prot3_pkg.ad[sb]: New helper. + + 2018-03-09 Kugan Vivekanandarajah + + Backport from mainline + 2017-09-13 Kugan Vivekanandarajah + + * gcc.target/aarch64/pr63304_1.c: Remove-mno-fix-cortex-a53-843419. + + 2018-03-08 Steven G. Kargl + + PR fortran/64124 + PR fortran/70409 + * gfortran.dg/pr64124.f90: New tests. + * gfortran.dg/pr70409.f90: New tests. + + 2018-03-06 Carl Love + + Backport from mainline + 2/16/18 commit 257748 Carl Love + + * 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 + + Backport from mainline + 2018-02-23 Segher Boessenkool + + 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 + + Backport from mainline + 2018-02-20 Martin Liska + + 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 + + Backport from mainline + 2018-01-23 Martin Liska + + 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 + + Backport from mainline + 2017-04-27 Martin Liska + + PR testsuite/79455 + * c-c++-common/tsan/race_on_mutex.c: Make the scanned pattern + more generic. + + 2018-03-06 Martin Liska + + Backport from mainline + 2018-01-30 Jan Hubicka + + 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 + + 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 + + Backport from mainline + 2018-02-22 Vladimir Makarov + + PR target/81572 + * gcc.target/powerpc/pr81572.c: New. + + 2018-03-06 Richard Biener + + Backport from mainline + 2018-02-28 Richard Biener + + PR middle-end/84607 + * gcc.dg/pr84607.c: New testcase. + + 2018-03-05 Will Schmidt + + Backport from trunk. + + 2018-02-16 Will Schmidt + + 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 + + PR target/84524 + * gcc.c-torture/execute/pr84524.c: New test. + * gcc.target/i386/avx512bw-pr84524.c: New test. + + 2018-03-04 Paul Thomas + + 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 + + PR fortran/71085 + * gfortran.dg/pr71085.f90: New test. + + 2018-03-03 Steven G. Kargl + + PR fortran/51434 + * gfortran.dg/pr51434.f90: New test. + + 2018-03-03 Paul Thomas + + PR fortran/80965 + * gfortran.dg/select_type_41.f90: New test. + + 2018-03-03 Paul Thomas + + Backported from trunk. + PR fortran/78990 + * gfortran.dg/class_67.f90: New test. + + 2018-03-03 Jakub Jelinek + + Backported from mainline + 2018-03-02 Jakub Jelinek + + 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 + + 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 + + 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 + + PR tree-optimization/84503 + * gcc.dg/pr84503-1.c: New test. + * gcc.dg/pr84503-2.c: New test. + + 2017-11-10 Jakub Jelinek + + PR bootstrap/82916 + * gcc.dg/pr82916.c: New test. + + 2018-02-20 Jakub Jelinek + + 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 + + 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 + + PR ipa/84425 + * gcc.c-torture/compile/pr84425.c: New test. + + 2018-02-16 Marek Polacek + Jakub Jelinek + + PR c++/84192 + * g++.dg/cpp1y/constexpr-84192.C: New test. + + 2018-02-13 Jakub Jelinek + + PR c/82210 + * gcc.c-torture/execute/pr82210.c: New test. + + 2018-02-12 Jakub Jelinek + + PR c++/84341 + * c-c++-common/gomp/pr84341.c: New test. + + 2018-02-10 Jakub Jelinek + + PR sanitizer/83987 + * g++.dg/ubsan/pr83987-2.C: New test. + + 2018-02-09 Marek Polacek + Jakub Jelinek + + PR c++/83659 + * g++.dg/torture/pr83659.C: New test. + + 2018-02-07 Jakub Jelinek + + 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 + + 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 + + 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 + + PR rtl-optimization/83986 + * gcc.dg/pr83986.c: New test. + + 2018-01-25 Jakub Jelinek + + PR c++/84031 + * g++.dg/cpp1z/decomp36.C: New test. + + 2018-01-24 Jakub Jelinek + + 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 + + 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 + + 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 + + PR c++/83824 + * g++.dg/cpp0x/pr83824.C: New test. + + 2018-01-16 Jakub Jelinek + + PR c++/83817 + * g++.dg/cpp1y/pr83817.C: New test. + + 2018-01-05 Jakub Jelinek + + PR tree-optimization/83605 + * gcc.dg/pr83605.c: New test. + + 2018-03-01 H.J. Lu + + Backport from mainline + 2018-02-26 H.J. Lu + + 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 + + Backport from mainline + 2018-02-26 H.J. Lu + + 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 + + Backport from trunk r256891: + 2018-01-19 Cesar Philippidis + + PR target/83790 + * gcc.target/nvptx/indirect_call.c: New test. + + 2017-03-01 Thomas Preud'homme + + Backport from mainline + 2017-12-05 Matthew Gretton-Dann + with follow-up r255433 commit. + + * gcc.c-torture/unsorted/dump-noaddr.x: Generate dump files in + tmpdir. + + 2018-02-28 Alan Modra + + * 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 + + 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 + + * gcc.c-torture/execute/20180226-1.c: New test. + + 2018-02-25 Steven G. Kargl + + 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 + + PR fortran/78238 + Backport from trunk + * gfortran.dg/select_type_40.f90: New test. + + 2018-02-24 Steven G. Kargl + + PR fortran/30792 + * gfortran.dg/data_substring.f90: New test. + + 2018-02-23 Steven G. Kargl + + PR fortran/84346 + * gfortran.dg/statement_function_1.f90: Update test. + + 2018-02-23 Jerry DeLisle + + Backport from trunk + PR fortran/84506 + * gfortran.dg/inquire_19.f90: New test. + + 2018-02-22 Thomas Koenig + + PR fortran/81116 + PR fortran/84495 + * gfortran.dg/realloc_on_assignment_29.f90: New test. + + 2017-02-22 Sudakshina Das + + Backport from mainline: + 2017-12-14 Sudakshina Das + + PR target/81228 + * gcc.dg/pr81228.c: New. + + 2018-02-19 Jonathan Wakely + + Backport from mainline + 2018-01-02 Marek Polacek + + PR c++/81860 + * g++.dg/cpp0x/inh-ctor30.C: New test. + + 2018-02-18 Jerry DeLisle + + Backport from trunk + PR libgfortran/84412 + * gfortran.dg/inquire_18.f90: New test. + + 2018-02-17 Thomas Koenig + + Backport from trunk + PR fortran/84270 + * gfortran.dg/inline_matmul_22.f90: New test. + + 2018-02-16 Jozef Lawrynowicz + + PR target/79242 + gcc.target/msp430/pr79242.c: New test. + + 2018-02-16 Eric Botcazou + + 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 + + Backport from trunk + 2018-01-12 Sudakshina Das + + * gcc.c-torture/compile/pr82096.c: Add dg-skip-if + directive. + + Backport from trunk + 2018-01-10 Sudakshina Das + + PR target/82096 + * gcc.c-torture/compile/pr82096.c: New test. + + 2018-02-16 Richard Biener + + PR tree-optimization/84190 + * g++.dg/torture/pr84190.C: New testcase. + + 2018-02-15 Michael Meissner + + Back port from trunk + 2018-02-07 Michael Meissner + + 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 + + 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 + + PR target/84390 + * gcc.target/powerpc/vsxcopy.c: Also match lxv when compiling + with -mcpu=power9. + + 2018-02-14 Peter Bergner + + Back port from mainline + 2018-02-13 Peter Bergner + + PR target/84279 + * g++.dg/pr84279.C: New test. + + 2018-02-12 Thomas Koenig + + PR fortran/68560 + * gfortran.dg/shape_9.f90: New test. + + 2018-02-12 Francois-Xavier Coudert + + PR fortran/35299 + ChangeLog for r257566 + * gfortran.dg/statement_function_3.f: New test. + + 2018-02-12 Steven G. Kargl + + 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 + + Backport from mainline + 2018-02-09 Andreas Krebbel + + PR target/PR84295 + * gcc.target/s390/pr84295.c: New test. + + 2018-02-08 Andreas Krebbel + + Backport from mainline + 2018-02-08 Andreas Krebbel + + * 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 + + PR tree-optimization/84233 + * g++.dg/torture/pr84233.C: New testcase. + + 2018-02-07 Steven G. Kargl + + 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 + + PR fortran/82049 + * gfortran.dg/assumed_charlen_parameter.f90: New test. + + 2018-02-07 Bill Schmidt + + Backport from mainline + 2018-02-06 Bill Schmidt + + * 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 + + PR target/79975 + * gcc.dg/rtl/x86_64/final.c: Add -fdwarf2-cfi-asm to dg-options. + + 2017-02-02 Uros Bizjak + + * 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 + + Backport from mainline + 2018-02-01 Richard Sandiford + + PR target/83370 + * gcc.target/aarch64/pr83370.c: New. + + 2018-02-01 Richard Biener + + Backport from mainline + 2017-11-02 Richard Biener + + PR tree-optimization/82795 + * gcc.target/i386/pr82795.c: New testcase. + + 2018-02-01 Rainer Orth + + Backport from mainline + 2018-01-12 Rainer Orth + + * 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 + + * gcc.c-torture/execute/20180131-1.c: New test. + + 2018-01-29 Alan Modra + + PR target/84033 + * gcc.target/powerpc/swaps-p8-46.c: New. + + 2018-01-26 Segher Boessenkool + + Backport from trunk + 2018-01-26 Segher Boessenkool + + * 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 + + PR target/83946 + * gcc.target/powerpc/safe-indirect-jump-8.c: Skip for AIX. + + 2018-01-26 Nathan Sidwell + + PR c++/82878 + * g++.dg/cpp0x/pr82878.C: New. + * g++.dg/cpp1z/inh-ctor38.C: Check moves too. + + 2018-01-26 Jakub Jelinek + + PR rtl-optimization/83985 + * gcc.dg/pr83985.c: New test. + + 2018-01-25 Michael Meissner + + Back port from trunk + 2018-01-22 Michael Meissner + + PR target/83862 + * gcc.target/powerpc/pr83862.c: New test. + + 2018-01-25 Peter Bergner + + Back port from mainline + 2018-01-10 Peter Bergner + + 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 --- 2914,2920 ---- Backported from trunk PR fortran/80850 ! * gfortran.dg/class_64_f90: New test. 2017-10-30 Paolo Carlini *************** *** 971,977 **** Backport from trunk PR fortran/82312 ! * gfortran.dg/typebound_proc_36.f90 : New test. 2017-10-20 Thomas Koenig --- 2965,2971 ---- Backport from trunk PR fortran/82312 ! * gfortran.dg/typebound_proc_36.f90: New test. 2017-10-20 Thomas Koenig 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 struct A {}; + + template A 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 + struct S { + static constexpr T value = 0; + }; + + constexpr auto x = S::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::a(1))>::b(A::a(1)); ! int y = B::b(A::a(2)); // { dg-error "template argument" } return x + y; } --- 22,27 ---- int main() { int x = B::a(1))>::b(A::a(1)); ! int y = B::b(A::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 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 + struct StaticObject + { + static T& create() + { + static T t; + return t; + } + + static T & instance; + }; + + template T & StaticObject::instance = StaticObject::create(); + + extern template class StaticObject; + + void test() + { + StaticObject::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 + int foo (T); + + template + 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 + struct A + { + A() {} + }; + + struct B + { + template + B(D, const A& a = A()) : a(a) {} + + A 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 + + template struct f { + f(std::initializer_list) {} + }; + + struct h {}; + struct i : h { + i(); + }; + void foo(f); + 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 A { + static A* INSTANCE; + void foobar(); + void moo() {} + }; + + template + A* A::INSTANCE = nullptr; + + template + void A::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 struct A + { + template + A(U, U = []{ return 42; }()); + }; + + struct B: A + { + 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 struct K { + static const bool d = true; + }; + template struct B { + typedef K D; + void foo () noexcept (D::d); + }; + template struct P { + P () noexcept (K::d); + }; + P 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 + 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 struct A + { + template class...> struct B {}; // { dg-error "expected|mismatch" } + }; + + A::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 int *begin(T &t) - { - T::fail; - } - template 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 int *begin(T &t) + { + return 0; + } + template 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 void foo(T (&a)[8]) { + for (int i : a) // { dg-warning "range-based" "" { target c++98_only } } + i; + } + void fn1() { foo; } 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 struct A { + template void f(U const&) & { } + template void f(U const&) && { } + }; + + template void A::f(int const&) &; + template void A::f(int const&) &&; + + template struct B { + void f(int const&) & { } + void f(int const&) && { } + }; + + template void B::f(int const&) &; + template void B::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 struct enable_if { using type = T; }; + template struct enable_if {}; + + template struct use_type { using type = int; }; + + template + struct get_type { + static_assert(Pred, ""); + using type = int; + }; + + template ::type, // Evaluation/Substitution should end here + class ValT = typename get_type::type, // This should not be instantiated + typename use_type::type = 0 // This NTTP causes ValT to be required + > + constexpr bool test(int) { return false; } + + template + constexpr bool test(long) { return true; } + + static_assert(test(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 + struct S { + using fptr = void(*)(T... x, decltype(x)... y); + }; + + using F = S::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 + struct vec + { + struct { T y; } n; + vec() = default; + }; + + template + struct S + { + vec value[2]; + template + constexpr S(const U&); + }; + + template + template + constexpr S::S(const X&) + { + value[0] = vec(); + } + + Sm(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 + struct remove_const + { typedef _Tp type; }; + + template + struct remove_const<_Tp const> + { typedef _Tp type; }; + + + template + struct remove_volatile + { typedef _Tp type; }; + + template + struct remove_volatile<_Tp volatile> + { typedef _Tp type; }; + + + template + struct remove_cv + { + typedef typename + remove_const::type>::type type; + }; + + template + struct remove_reference + { typedef _Tp type; }; + + template + struct remove_reference<_Tp&> + { typedef _Tp type; }; + + template + struct remove_reference<_Tp&&> + { typedef _Tp type; }; + + template + struct decay + { + using type = typename remove_reference::type>::type; + }; + + template + _Tp&& + declval() noexcept; + + template + constexpr _Tp&& + forward(typename std::remove_reference<_Tp>::type& __t) noexcept + { return static_cast<_Tp&&>(__t); } + + + template + struct _Mu + { + template + _CVArg&& + operator()(_CVArg&& __arg, _Tuple&) const volatile + { return std::forward<_CVArg>(__arg); } + }; + + template + struct _Bind + { + _Functor _M_f; + _Bound_args _M_bound_args; + + template()( + _Mu<_Bound_args>()( std::declval<_Bound_args&>(), + std::declval<_Args&>() ) ) )> + _Result + operator()(_Args&& __args) { return {}; } + + template()( + _Mu<_Bound_args>()( std::declval(), + std::declval<_Args&>() ) ) )> + _Result + operator()(_Args&& __args) volatile; + + }; + + template + _Bind::type, typename decay<_BoundArgs>::type> + bind(_Func&& __f, _BoundArgs&& __args) + { + return { + std::forward<_Func>(__f), + std::forward<_BoundArgs>(__args) + }; + } + + } // namespace std + + + template + bool isOneOf(const T& ) + { + return false; + } + + template + 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(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 struct A + { + T x[1]{(__PTRDIFF_TYPE__)this}; + }; + + void foo() + { + A> 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 using C = A; }; + struct D : B { struct F { typedef C 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 struct C { static constexpr T D = n; }; + struct E : C {}; + template struct F : C {}; + template T foo (); + template struct H { typedef int G; }; + template class I; + struct L; + template struct J; + template struct K; + struct R { + template + static J () (foo...)), L> o; + }; + template struct K : R { + typedef decltype (o) G; + }; + template + struct D : K::G>::D, P, Q...> {}; + template struct I

    : D {}; + template class function; + template struct function { + template ::G> struct C; + template using U = int; + template , typename = U, void>> + function (P); + }; + template + template + function::function (P) + { + } + void bar (function); + + 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 struct A*; // { dg-error "expected unqualified-id before" } + + auto a = [](A) {}; // { 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 + struct A { + template + static const U u; + }; + + template + template + const U A::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 + struct A { + template + static const U u; + }; + + template + template + const U* A::u = 0; + + const int *p = A::u; 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 + struct A { + template + static U u; + }; + + int main() + { + decltype(A::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 + struct A { }; + + template + struct B + { + templateclass T> + B(T); + }; + + 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 struct same; + template struct same {}; + + template struct A + { + template struct B + { + B(U); + }; + + A() { + B b(0); + same>{}; + } + }; + + struct C {}; + + A 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 struct A {}; + + template struct B + { + template B(A); + }; + + 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 + 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 + 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 + 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 + constexpr + inline T + max (std::initializer_list 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 + constexpr char to_char(alphabet_type const alph) + { + return alph.to_char(); + } + + template + struct union_composition + { + static constexpr size_t value_size = (alphabet_types::value_size + ... ); + unsigned char _value; + template + static constexpr auto value_to_char_helper(alphabet_t alphabet) + { + array 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 alphabet_sizes { alphabet_types::value_size... }; + constexpr size_t fixed_size = max({alphabet_types::value_size...}); + array value_to_char_tables = array, N> { + value_to_char_helper(alphabet_types{})... + }; + array 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::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::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::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::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::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 + 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 { 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 { 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 struct A; + class B; + template > class C; + template struct D; + template + struct E { + using X = W; + X operator* (); + T operator++ (); + template + bool operator!= (E); + }; + template + struct F { + class G; + using H = D; + using I = E; + class G : public I {}; + G begin (); + G end (); + }; + template struct C : F { + using J = F; + using J::begin; + using J::end; + }; + using K = class L; + struct M { + void foo () { for (auto & [ a ] : m) {} } // { dg-error "incomplete type" } + C 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 + #include + #include + + struct X : private std::shared_ptr + { + std::string fun_payload; + }; + + template std::string& get(X& x) + { + if constexpr(N==0) return x.fun_payload; + } + + namespace std { + template<> class tuple_size : public std::integral_constant {}; + template<> class tuple_element<0, X> {public: using type = std::string;}; + } + + struct X2 : private std::shared_ptr + { + int fun_payload; + template void get(); + }; + + template int& get(X2& x) + { + if constexpr(N==0) return x.fun_payload; + } + + namespace std { + template<> class tuple_size : public std::integral_constant {}; + template<> class tuple_element<0, X2> {public: using type = int;}; + } + + class X3 + { + double fun_payload; + public: + template double& get() + { + if constexpr(N==0) return fun_payload; + } + }; + + namespace std { + template<> class tuple_size : public std::integral_constant {}; + 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 + 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(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(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 void f(T*); + + int main() + { + f(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 + class TestWrapper { + public: + static T func() __attribute((noinline)) { return (*funcImpl)(); } + }; + + int main() { + return TestWrapper::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 struct B { typedef int Type; }; + + class Arg + { + template struct Local : A {}; + + public: + template ::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 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 + 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 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 + struct z { + z() { + k::error; + } + }; + + int x = __is_trivially_constructible(z); 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 + void foo() { + struct inner { + inner() { + (void)([this] { }); + } + }; + } + + int main() { foo(); } 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 struct A {}; + template 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 + 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 + + // { dg-do compile } + // { dg-options "-O -fpermissive -w" } + // { dg-additional-options "-fPIC" { target fpic } } + + class a; + template class b; + template class d : public b {}; + class e {}; + void f(int); + template class g { + public: + h(); + a i(); + }; + template <> class b : public g {}; + typedef (*j)(d); + template 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 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 am() { return q; } + class an : F { + public: + static ao(d u) { + int *ap; + m aq = am(); + ap = &ah[aq]; + return u.h() && u.i().t(ap); + } + template static as() { + F at; + ar(&at); + } + template static au(int *, unsigned, e *) { + j av = ao; + d aw; + if (av(aw)) + as(); + } + }; + int *ax; + int ay; + e az; + ba() { an::au(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 x2() { // { dg-error "declared|type" } ! x0 x3 = x3. // { dg-error "expected" } --- 2,5 ---- class x0; template 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 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 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 a; + class b; + struct c { + typedef a &g; + }; + template struct e { typedef typename d::f iter; }; + class h { + public: + void __attribute__((noreturn)) i(); + } ab; + template 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 &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>::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 + struct CB : CA { }; + + template + struct CC : CB { + constexpr int bar() const { + const int m = CA::foo(); + return m; + } + + constexpr int baz() const { + const T m = CA::foo(); + return m; + } + }; + + constexpr CC 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 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 (&a)[-1] += 1; + } + + int + bar () + { + return reinterpret_cast (&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 void c(b); + struct d { + long e; + template union f; + template union f { + f(h *i) : j(i) {} + h *j; + long bits; + }; + static int k(volatile long &i) { return *(int *)f(&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 + + template class complex; + template complex<_Tp> operator*(complex<_Tp>, complex<_Tp>); + template <> struct complex { _Complex float _M_value; }; + class A { + complex _f0, _f1; + + public: + complex &m_fn1() { return _f1; } + }; + complex a; + void cos() { + A b; + complex 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 + #include + #include + 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 + 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 + 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 + void + D::foo // { dg-bogus "is deprecated" "" { xfail *-*-* } } + (const D &x, const D &y) // { dg-bogus "is deprecated" } + { + D z = x; // { dg-bogus "is deprecated" } + } + + template + void + bar (const D &x, const D &y) // { dg-warning "is deprecated" } + { + D 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 */ + + 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 */ + + 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 */ + + 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 */ + + 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 + + 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; jb.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 + + 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 + + (insn (set (reg:SI ) + (and:SI (reg:SI ) + (const_int 1 ) + > + (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 + + 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 + + __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 --- 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 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 --- 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 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 + + 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 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 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 --- 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 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 + #define TRUE 1 + #define FALSE 0 + + #ifdef DEBUG + #include + #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 + #define TRUE 1 + #define FALSE 0 + + #define DEBUG 1 + + #ifdef DEBUG + #include + #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 - - 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 - - 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 + + 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 + + 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 + + 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 + #include + + 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" + ! + 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 + ! + 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 + ! + 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 + 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 ! 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 ! + ! 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 + ! + 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 + ! + 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 ! 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 ! ! 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 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 + ! + 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 + + 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 + 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 + 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 + 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 + ! + 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 + 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 + ! + 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 + ! + 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 + 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 + ! + 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 + 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 + 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 + ! + 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 + ! + 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" + ! + 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 + ! + 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 + ! + 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 + ! + 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 + ! + 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 *) 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 pset; + if (!walk_tree (&expr, find_trapping_overflow, &pset, &pset)) + return expr; + expr = unshare_expr (expr); + hash_set 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 (©_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 (©_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 (©_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 (©_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 *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 *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 + ... + if (k_32 >= 0) + goto ; [26.46%] + else + goto ; [73.54%] + + [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 ; [84.48%] + else + goto ; [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 *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 *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 ops(3); + ops.quick_push (op0); + ops.quick_push (op1); + ops.quick_push (op2); + auto_vec > 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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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 + + Backported from mainline + 2018-04-18 David Malcolm + + PR jit/85384 + * configure: Regenerate. + + 2018-03-09 Andreas Krebbel + + Backport from mainline + 2018-03-09 Andreas Krebbel + + * 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 + + 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 + . */ + + #include + + + /* 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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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 + + Backported from mainline + 2018-01-31 Jakub Jelinek + + 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 + + * 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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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 + + Backport from mainline + 2018-08-11 John David Anglin + + * 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 + + Backported from mainline + 2018-04-18 David Malcolm + + PR jit/85384 + * configure: Regenerate. + + 2018-06-22 Andre Vieira + + Backport from mainline + 2018-05-17 Jerome Lambourg + + * 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 + + Backport from mainline + 2018-03-29 H.J. Lu + + 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 + + Backport from mainline + 2018-03-06 John David Anglin + + * config/pa/fptr.c (_dl_read_access_allowed): New. + (__canonicalize_funcptr_for_compare): Use it. + + 2018-02-20 Max Filippov + + Backport from mainline + 2018-02-20 Max Filippov + + * 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 + + Backport from trunk + * io/close.c [!HAVE_UNLINK_OPEN_FILE]: Include . + + 2018-09-18 Kyrylo Tkachov + + Backport from trunk + 2018-09-14 Kyrylo Tkachov + + * io/unix.c (fallback_access): Avoid calling close on + uninitialized file descriptor. + + 2018-06-22 Jakub Jelinek + + Backported from mainline + 2018-04-18 David Malcolm + + PR jit/85384 + * configure: Regenerate. + + 2018-06-09 Jerry DeLisle + + Backport from trunk. + PR libgfortran/86070 + * io/write_float.def (build_float_string): Initialize *len. + + 2018-06-01 Jerry DeLisle + + 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 + + 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 + #if !HAVE_UNLINK_OPEN_FILE + #include + #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 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 can be used" >&5 - $as_echo_n "checking whether 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 - #ifdef HAVE_LINUX_FILTER_H - #include - #endif - #include - - _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 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 - #ifdef HAVE_LINUX_FILTER_H - #include - #endif - #include - ])], [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 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 . - 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 #endif - #if defined(HAVE_USTAT_H) - #include - #endif #if defined(HAVE_UTIME_H) #include #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 + + Backported from mainline + 2018-07-17 Jakub Jelinek + + 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 + + PR middle-end/86660 + * testsuite/libgomp.c/pr86660.c: New test. + + 2018-06-26 Jakub Jelinek + + PR c++/86291 + * testsuite/libgomp.c++/pr86291.C: New test. + + 2018-06-22 Jakub Jelinek + + Backported from mainline + 2018-04-18 David Malcolm + + PR jit/85384 + * configure: Regenerate. + + 2018-05-01 Tom de Vries + + backport from trunk: + 2018-04-16 Cesar Philippidis + Tom de Vries + + 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 + + Backported from mainline + 2018-02-16 Jakub Jelinek + + PR fortran/84418 + * libgomp.fortran/pr84418-1.f90: New test. + * libgomp.fortran/pr84418-2.f90: New test. + + 2018-01-29 Christoph Spiel + Jakub Jelinek + + 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 + + Backport from mainline + 2018-02-08 Martin Jambor + + * 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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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 + + Backport from mainline + 2018-08-02 Martin Liska + + PR sanitizer/86022 + * sanitizer_common/sanitizer_linux_libcdep.cc (ThreadDescriptorSize): + Cherry-pick compiler-rt revision 338606. + + 2018-06-22 Jakub Jelinek + + Backported from mainline + 2018-04-18 David Malcolm + + PR jit/85384 + * configure: Regenerate. + + 2018-06-07 Richard Biener + + Backport from mainline + 2018-03-19 Jakub Jelinek + + 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 + + PR sanitizer/86012 + * sanitizer_common/sanitizer_platform_limits_posix.cc: Define + SIZEOF_STRUCT_USTAT for 32bit sparc. + + 2018-05-24 H.J. Lu + + PR sanitizer/85835 + * sanitizer_common/sanitizer_platform_limits_posix.cc: Don't + include for Linux. + (SIZEOF_STRUCT_USTAT): New. + (struct_ustat_sz): Use SIZEOF_STRUCT_USTAT for Linux. + + 2018-04-24 Martin Liska + + Backport from mainline + 2018-04-18 Bill Seurer + + 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 #endif #include - #include #include #include #include --- 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 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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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 + + 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 + + Backport from mainline + 2018-10-31 Jonathan Wakely + + 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 + + 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 + + PR libstdc++/87704 + * include/bits/unique_ptr.h (unique_ptr::unique_ptr(nullptr_t)): Do + not delegate to default constructor. + (unique_ptr::unique_ptr(nullptr_t)): Likewise. + * testsuite/20_util/unique_ptr/cons/incomplete.cc: New test. + + 2018-10-22 Jonathan Wakely + + Backport from mainline + 2017-09-12 Jonathan Wakely + + PR libstdc++/79433 + * include/Makefile.am: Remove . + * include/Makefile.in: Regenerate. + * include/bits/c++14_warning.h: Remove. + * include/experimental/algorithm: Do not include . + * 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 . + * include/experimental/forward_list: Do not include . + * 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 + + Backport from mainline + 2018-10-18 Jonathan Wakely + + 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 + + * 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 + + Backport from mainline + 2018-07-31 Jonathan Wakely + + 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 + + Backport from mainline + 2018-09-03 Jonathan Wakely + + 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 + + Backport from mainline + 2018-08-30 Jonathan Wakely + + * 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 + + Backport from mainline + 2018-08-23 Jonathan Wakely + + * 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 + + 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 + + * 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 + + Backport from mainline + 2018-07-24 Jonathan Wakely + + 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 + + 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 + + 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 + + Backport from mainline + 2018-10-02 Joseph Myers + + * testsuite/lib/libstdc++.exp (libstdc++_init): Use + -fno-show-column in default cxxflags. + + 2018-10-08 Jonathan Wakely + + Backport from mainline + 2018-10-08 Jonathan Wakely + + 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 + + Revert + 2018-08-10 Sebastian Huber + + PR target/85904 + * configure.ac: Define HAVE_ALIGNED_ALLOC if building for + Newlib. + * configure: Regenerate. + + 2018-08-10 Sebastian Huber + + Backport from mainline + 2018-08-10 Sebastian Huber + + PR target/85904 + * configure.ac: Define HAVE_ALIGNED_ALLOC if building for + Newlib. + * configure: Regenerate. + + 2018-08-08 Jonathan Wakely + + * 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 + + Backport from mainline + 2018-06-27 Jonathan Wakely + + 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 + + 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 + + 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 + + PR libstdc++/80893 + * testsuite/23_containers/vector/bool/80893.cc: Add { target c++11 }. + + Backport from mainline + 2017-05-31 Jonathan Wakely + + PR libstdc++/80893 + * include/bits/stl_bvector.h (vector::_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 + + 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 + + PR libstdc++/86292 + * include/bits/stl_vector.h (vector::_M_range_initialize): + Add try-catch block. + * testsuite/23_containers/vector/cons/86292.cc: New. + + Backport from mainline + 2018-07-31 Jonathan Wakely + + * 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 + + * 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 + + 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 + + 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 + + * 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 + + 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 + + * src/c++11/codecvt.cc (__codecvt_utf8_base::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 + + Backport from mainline + 2018-07-04 François Dumont + + 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 + + Backport from mainline + 2018-03-09 Jonathan Wakely + + src/filesystem/ops.cc (create_dir): Pass error_code to is_directory. + + Backport from mainline + 2018-06-18 Jonathan Wakely + + 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 + + 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 + + * include/std/variant (__erased_dtor): Qualify call to __get. + + Backport from mainline + 2018-05-15 Jonathan Wakely + + * include/std/variant (__gen_vtable_impl::__visit_invoke): Qualify + __invoke to prevent ADL. + + Backport from mainline + 2018-04-05 Jonathan Wakely + + * 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 + + * 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 + + PR target/85904 + * crossconfig.m4: Test for aligned_alloc on netbsd. + * configure: Regenerate. + + Backport from mainline + 2018-05-18 Jonathan Wakely + + 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 + + PR libstdc++/85671 + * include/experimental/bits/fs_path.h (operator/): Likewise. + + Backport from mainline + 2018-06-14 Daniel Trebbien + Jonathan Wakely + + 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 + + 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 + + Backported from mainline + 2018-04-18 David Malcolm + + PR jit/85384 + * configure: Regenerate. + + 2018-06-22 Jonathan Wakely + + Backport from mainline + 2018-06-22 Jonathan Wakely + + PR libstdc++/86138 + * include/bits/basic_string.tcc: + [__cplusplus > 201402 && !_GLIBCXX_USE_CXX11_ABI] + (basic_string::_Rep::_S_empty_rep_storage) + (basic_string::_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 + + * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update. + + 2018-06-19 Jonathan Wakely + + * include/std/utility: Remove unused header. + + 2018-06-15 Jonathan Wakely + + 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 + + * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Only + define for C++17 and above. + + 2018-05-17 Jonathan Wakely + + 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 + + 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 + + * 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 + + 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 + + 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 + Jakub Jelinek + + 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 + + * 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 + + * 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 + + 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 + + PR libstdc++/77691 + * testsuite/experimental/memory_resource/resource_adaptor.cc: + xfail execution on 32-bit Solaris/x86. + + 2018-03-13 Jonathan Wakely + + Backport from mainline + 2018-03-09 Jonathan Wakely + + 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 + + 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 + + Backport from mainline + 2018-03-02 Jonathan Wakely + + 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 + + Backport from mainline + 2018-02-23 Jonathan Wakely + + 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 + + Backport from mainline + 2018-02-15 Jonathan Wakely + + 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 + + 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 + + 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 + + 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 + + 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 . */ #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 struct same { typedef T2 type; }; --- 15626,15632 ---- # unnecessary for this test. cat > conftest.$ac_ext << EOF ! #line 15629 "configure" template struct same { typedef T2 type; }; *************** $as_echo "$enable_int128" >&6; } *** 15656,15662 **** rm -f conftest* cat > conftest.$ac_ext << EOF ! #line 15659 "configure" template struct same { typedef T2 type; }; --- 15660,15666 ---- rm -f conftest* cat > conftest.$ac_ext << EOF ! #line 15663 "configure" template 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 locale may be incomplete on some non-GNU platforms. Also dependent on the underlying platform is support ! for wchar_t and long ! long specializations, and details of thread support.

    Long answer: See the implementation status pages for C++98, ! TR1, and ! C++11. ! C++14.

    5.2.

    Bugs in the ISO C++ language or library specification

    --- 534,548 ---- except for some corner cases. Support for localization in locale may be incomplete on some non-GNU platforms. Also dependent on the underlying platform is support ! for wchar_t and long long specializations, ! and details of thread support.

    Long answer: See the implementation status pages for C++98, ! TR1, ! C++11, ! C++14, and ! C++17.

    5.2.

    Bugs in the ISO C++ language or library specification

    *************** *** 633,639 **** without other drawbacks, send us a patch.

    6.3.

    Ambiguous overloads after including an old-style header !

    Another problem is the rel_ops 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.

    6.3.

    Ambiguous overloads after including an old-style header !

    Note

    This answer is old and probably no longer be relevant.

    Another problem is the rel_ops 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:

    Table 17.1. Debugging Containers

    ContainerHeaderDebug containerDebug header
    std::bitsetbitset__gnu_debug::bitset<debug/bitset>
    std::dequedeque__gnu_debug::deque<debug/deque>
    std::listlist__gnu_debug::list<debug/list>
    std::mapmap__gnu_debug::map<debug/map>
    std::multimapmap__gnu_debug::multimap<debug/map>
    std::multisetset__gnu_debug::multiset<debug/set>
    std::setset__gnu_debug::set<debug/set>
    std::stringstring__gnu_debug::string<debug/string>
    std::wstringstring__gnu_debug::wstring<debug/string>
    std::basic_stringstring__gnu_debug::basic_string<debug/string>
    std::vectorvector__gnu_debug::vector<debug/vector>

    In addition, when compiling in C++11 mode, these additional containers have additional debug capability. !

    Table 17.2. Debugging Containers C++11

    ContainerHeaderDebug containerDebug header
    std::unordered_mapunordered_map__gnu_debug::unordered_map<debug/unordered_map>
    std::unordered_multimapunordered_map__gnu_debug::unordered_multimap<debug/unordered_map>
    std::unordered_setunordered_set__gnu_debug::unordered_set<debug/unordered_set>
    std::unordered_multisetunordered_set__gnu_debug::unordered_multiset<debug/unordered_set>

    \ No newline at end of file --- 20,23 ---- containers:

    Table 17.1. Debugging Containers

    ContainerHeaderDebug containerDebug header
    std::bitsetbitset__gnu_debug::bitset<debug/bitset>
    std::dequedeque__gnu_debug::deque<debug/deque>
    std::listlist__gnu_debug::list<debug/list>
    std::mapmap__gnu_debug::map<debug/map>
    std::multimapmap__gnu_debug::multimap<debug/map>
    std::multisetset__gnu_debug::multiset<debug/set>
    std::setset__gnu_debug::set<debug/set>
    std::stringstring__gnu_debug::string<debug/string>
    std::wstringstring__gnu_debug::wstring<debug/string>
    std::basic_stringstring__gnu_debug::basic_string<debug/string>
    std::vectorvector__gnu_debug::vector<debug/vector>

    In addition, when compiling in C++11 mode, these additional containers have additional debug capability. !

    Table 17.2. Debugging Containers C++11

    ContainerHeaderDebug containerDebug header
    std::arrayarray__gnu_debug::array<debug/array>
    std::forward_listforward_list__gnu_debug::forward_list<debug/forward_list>
    std::unordered_mapunordered_map__gnu_debug::unordered_map<debug/unordered_map>
    std::unordered_multimapunordered_map__gnu_debug::unordered_multimap<debug/unordered_map>
    std::unordered_setunordered_set__gnu_debug::unordered_set<debug/unordered_set>
    std::unordered_multisetunordered_set__gnu_debug::unordered_multiset<debug/unordered_set>

    \ 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 ****
    22.10. Non-unique Mapping Containers
    22.11. Point Iterator Hierarchy
    22.12. Invalidation Guarantee Tags Hierarchy
    22.13. Container Tag Hierarchy
    22.14. Hash functions, ranged-hash functions, and range-hashing functions
    22.15. Insert hash sequence diagram
    22.16. Insert hash sequence diagram with a null policy
    22.17. Hash policy class diagram
    22.18. Balls and bins
    22.19. Insert resize sequence diagram
    22.20. Standard resize policy trigger sequence diagram
    22.21. Standard resize policy size sequence ! diagram
    22.22. Tree node invariants
    22.23. Tree node invalidation
    22.24. A tree and its update policy
    22.25. Restoring node invariants
    22.26. Insert update sequence
    22.27. Useless update path
    22.28. A PATRICIA trie
    22.29. A trie and its update policy
    22.30. A simple list
    22.31. The counter algorithm
    22.32. Underlying Priority-Queue Data-Structures.
    22.33. Priority-Queue Data-Structure Tags.
    B.1. Configure and Build File Dependencies

    List of Equations

    22.1. Ranged Hash Function
    22.2. Range-Hashing, Division Method
    22.3. Division via Prime Modulo
    22.4. Division via Bit Mask
    22.5. A Standard String Hash Function
    22.6. 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 ----

    [22.*] Anything and everything we have on locale implementation will be described under Localization. +

    [23.*] All of the containers in this clause + define size_type as std::size_t and + difference_type as std::ptrdiff_t.

    [26.2.8]/9 I have no idea what complex<T>'s pow(0,0) returns.

    [27.4.2.4]/2 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.

    Similarly, tests which depend on a newer standard than the default ! should use dg-options instead of an effective target, ! so that they are not skipped by default. For example, tests for C++17 features should use

        // { dg-options "-std=gnu++17" }

    ! and not !

        // { dg-do run "c++1z" }

    Examples of Test Directives

    Example 1: Testing compilation only:

    --- 456,470 ----
          possible variations.
        

    Similarly, tests which depend on a newer standard than the default ! must use dg-options 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

        // { dg-options "-std=gnu++17" }

    ! before any dg-do such as: !

        // { dg-do run "c++17" }

    ! The dg-options directive must come first, so that ! the -std flag has already been added to the options ! before checking the c++17 target.

    Examples of Test Directives

    Example 1: Testing compilation only:

    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.
      

    The _GLIBCXX_USE_CXX11_ABI macro (see ! 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. --- 14,20 ---- for the new implementations have different names the definitions for both versions can be present in the same library.

    The _GLIBCXX_USE_CXX11_ABI macro (see ! 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. *************** *** 43,52 **** facet that derives from one or other version of time_get is installed in the locale).

    Although the standard exception types defined in ! <stdexcept> use strings, they are not defined twice, so that a std::out_of_range 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.

    Troubleshooting

    If you get linker errors about undefined references to symbols that involve types in the std::__cxx11 namespace or the tag [abi:cxx11] then it probably indicates that you are trying to --- 43,77 ---- facet that derives from one or other version of time_get is installed in the locale).

    Although the standard exception types defined in ! <stdexcept> use strings, most are not defined twice, so that a std::out_of_range 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. +

    One exception type does change when using the new ABI, namely + std::ios_base::failure. + This is necessary because the 2011 standard changed its base class from + std::exception to + std::system_error, which causes its layout to change. + Exceptions due to iostream errors are thrown by a function inside + libstdc++.so, so whether the thrown + exception uses the old std::ios_base::failure type + or the new one depends on the ABI that was active when + libstdc++.so was built, + not 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 + std::ios_base::failure type, + and for GCC 5.x and 6.x the library throws the old type. + Catch handlers of type std::ios_base::failure + 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 std::exception will always catch + iostreams exceptions, because the old and new type both inherit from + std::exception.

    Troubleshooting

    If you get linker errors about undefined references to symbols that involve types in the std::__cxx11 namespace or the tag [abi:cxx11] 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 #include's a header, the contents of that header become available, no matter how.

    --- 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 #includes a header, the contents of that header become available, no matter how.

    *************** *** 12,36 ****

    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).

    ! Two dialects of standard headers are supported, corresponding to ! the 1998 standard as updated for 2003, and the current 2011 standard.

    ! C++98/03 include files. These are available in the default compilation mode, i.e. -std=c++98 or -std=gnu++98. !

    Table 3.2. C++ 1998 Library Headers

    algorithmbitsetcomplexdequeexception
    fstreamfunctionaliomanipiosiosfwd
    iostreamistreamiteratorlimitslist
    localemapmemorynewnumeric
    ostreamqueuesetsstreamstack
    stdexceptstreambufstringutilitytypeinfo
    valarrayvector   

    Table 3.3. C++ 1998 Library Headers for C Library Facilities

    cassertcerrnocctypecfloatciso646
    climitsclocalecmathcsetjmpcsignal
    cstdargcstddefcstdiocstdlibcstring
    ctimecwcharcwctype  

    ! C++11 include files. These are only available in C++11 compilation mode, i.e. -std=c++11 or -std=gnu++11. !

    Table 3.4. C++ 2011 Library Headers

    algorithmarraybitsetchronocomplex
    condition_variabledequeexceptionforward_listfstream
    functionalfutureinitalizer_listiomanipios
    iosfwdiostreamistreamiteratorlimits
    listlocalemapmemorymutex
    newnumericostreamqueuerandom
    ratioregexsetsstreamstack
    stdexceptstreambufstringsystem_errorthread
    tupletype_traitstypeinfounordered_mapunordered_set
    utilityvalarrayvector  

    Table 3.5. C++ 2011 Library Headers for C Library Facilities

    cassertccomplexcctypecerrnocfenv
    cfloatcinttypesciso646climitsclocale
    cmathcsetjmpcsignalcstdargcstdbool
    cstddefcstdintcstdlibcstdiocstring
    ctgmathctimecucharcwcharcwctype

    In addition, TR1 includes as: !

    Table 3.6. C++ TR 1 Library Headers

    tr1/arraytr1/complextr1/memorytr1/functionaltr1/random
    tr1/regextr1/tupletr1/type_traitstr1/unordered_maptr1/unordered_set
    tr1/utility    

    Table 3.7. C++ TR 1 Library Headers for C Library Facilities

    tr1/ccomplextr1/cfenvtr1/cfloattr1/cmathtr1/cinttypes
    tr1/climitstr1/cstdargtr1/cstdbooltr1/cstdinttr1/cstdio
    tr1/cstdlibtr1/ctgmathtr1/ctimetr1/cwchartr1/cwctype

    Decimal floating-point arithmetic is available if the C++ compiler supports scalar decimal floating-point types defined via __attribute__((mode(SD|DD|LD))). !

    Table 3.8. C++ TR 24733 Decimal Floating-Point Header

    decimal/decimal

    Also included are files for the C++ ABI interface: !

    Table 3.9. C++ ABI Headers

    cxxabi.hcxxabi_forced.h

    And a large variety of extensions. !

    Table 3.10. Extension Headers

    ext/algorithmext/atomicity.hext/array_allocator.hext/bitmap_allocator.hext/cast.h
    ext/codecvt_specializations.hext/concurrence.hext/debug_allocator.hext/enc_filebuf.hext/extptr_allocator.h
    ext/functionalext/iteratorext/malloc_allocator.hext/memoryext/mt_allocator.h
    ext/new_allocator.hext/numericext/numeric_traits.hext/pb_ds/assoc_container.hext/pb_ds/priority_queue.h
    ext/pod_char_traits.hext/pool_allocator.hext/rb_treeext/ropeext/slist
    ext/stdio_filebuf.hext/stdio_sync_filebuf.hext/throw_allocator.hext/typelist.hext/type_traits.h
    ext/vstring.h    

    Table 3.11. Extension Debug Headers

    debug/bitsetdebug/dequedebug/listdebug/mapdebug/set
    debug/stringdebug/unordered_mapdebug/unordered_setdebug/vector 

    Table 3.12. Extension Profile Headers

    profile/bitsetprofile/dequeprofile/listprofile/map
    profile/setprofile/unordered_mapprofile/unordered_setprofile/vector

    Table 3.13. Extension Parallel Headers

    parallel/algorithmparallel/numeric

    Mixing Headers

    A few simple rules.

    First, mixing different dialects of the standard headers is not possible. It's an all-or-nothing affair. Thus, code like

    --- 12,82 ----
         

    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).

    ! 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.

    ! Table 3.2, “C++ 1998 Library Headers” and ! Table 3.3, “C++ 1998 Library Headers for C Library Facilities” and ! Table 3.4, “C++ 1998 Deprecated Library Header” ! show the C++98/03 include files. ! These are available in the C++98 compilation mode, ! i.e. -std=c++98 or -std=gnu++98. ! Unless specified otherwise below, they are also available in later modes ! (C++11, C++14 etc). !

    Table 3.2. C++ 1998 Library Headers

    algorithmbitsetcomplexdequeexception
    fstreamfunctionaliomanipiosiosfwd
    iostreamistreamiteratorlimitslist
    localemapmemorynewnumeric
    ostreamqueuesetsstreamstack
    stdexceptstreambufstringutilitytypeinfo
    valarrayvector 

    Table 3.3. C++ 1998 Library Headers for C Library Facilities

    cassertcerrnocctypecfloatciso646
    climitsclocalecmathcsetjmpcsignal
    cstdargcstddefcstdiocstdlibcstring
    ctimecwcharcwctype 

    ! The following header is deprecated ! and might be removed from a future C++ standard. !

    Table 3.4. C++ 1998 Deprecated Library Header

    strstream

    ! Table 3.5, “C++ 2011 Library Headers” and ! Table 3.6, “C++ 2011 Library Headers for C Library Facilities” show the C++11 include files. ! These are available in C++11 compilation mode, i.e. -std=c++11 or -std=gnu++11. ! 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). !

    Table 3.5. C++ 2011 Library Headers

    arrayatomicchronocodecvtcondition_variable
    forward_listfutureinitalizer_listmutexrandom
    ratioregexscoped_allocatorsystem_errorthread
    tupletypeindextype_traitsunordered_mapunordered_set

    Table 3.6. C++ 2011 Library Headers for C Library Facilities

    ccomplexcfenvcinttypescstdaligncstdbool
    cstdintctgmathcuchar 

    ! Table 3.7, “C++ 2014 Library Header” shows the C++14 include file. ! This is available in C++14 compilation ! mode, i.e. -std=c++14 or -std=gnu++14. ! 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). !

    Table 3.7. C++ 2014 Library Header

    shared_mutex

    ! Table 3.8, “C++ 2017 Library Headers” shows the C++17 include files. ! These are available in C++17 compilation ! mode, i.e. -std=c++17 or -std=gnu++17. ! 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). !

    Table 3.8. C++ 2017 Library Headers

    anyoptionalstring_viewvariant

    ! Table 3.9, “File System TS Header”, ! 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. !

    Table 3.9. File System TS Header

    experimental/filesystem

    ! Table 3.10, “Library Fundamentals TS 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. !

    Table 3.10. Library Fundamentals TS Headers

    experimental/algorithmexperimental/anyexperimental/arrayexperimental/chronoexperimental/deque
    experimental/forward_listexperimental/functionalexperimental/iteratorexperimental/listexperimental/map
    experimental/memoryexperimental/memory_resourceexperimental/numericexperimental/optionalexperimental/propagate_const
    experimental/randomexperimental/ratioexperimental/regexexperimental/setexperimental/source_location
    experimental/stringexperimental/string_viewexperimental/system_errorexperimental/tupleexperimental/type_traits
    experimental/unordered_mapexperimental/unordered_setexperimental/utilityexperimental/vector 

    In addition, TR1 includes as: !

    Table 3.11. C++ TR 1 Library Headers

    tr1/arraytr1/complextr1/memorytr1/functionaltr1/random
    tr1/regextr1/tupletr1/type_traitstr1/unordered_maptr1/unordered_set
    tr1/utility 

    Table 3.12. C++ TR 1 Library Headers for C Library Facilities

    tr1/ccomplextr1/cfenvtr1/cfloattr1/cmathtr1/cinttypes
    tr1/climitstr1/cstdargtr1/cstdbooltr1/cstdinttr1/cstdio
    tr1/cstdlibtr1/ctgmathtr1/ctimetr1/cwchartr1/cwctype

    Decimal floating-point arithmetic is available if the C++ compiler supports scalar decimal floating-point types defined via __attribute__((mode(SD|DD|LD))). !

    Table 3.13. C++ TR 24733 Decimal Floating-Point Header

    decimal/decimal

    Also included are files for the C++ ABI interface: !

    Table 3.14. C++ ABI Headers

    cxxabi.hcxxabi_forced.h

    And a large variety of extensions. !

    Table 3.15. Extension Headers

    ext/algorithmext/atomicity.hext/array_allocator.hext/bitmap_allocator.hext/cast.h
    ext/codecvt_specializations.hext/concurrence.hext/debug_allocator.hext/enc_filebuf.hext/extptr_allocator.h
    ext/functionalext/iteratorext/malloc_allocator.hext/memoryext/mt_allocator.h
    ext/new_allocator.hext/numericext/numeric_traits.hext/pb_ds/assoc_container.hext/pb_ds/priority_queue.h
    ext/pod_char_traits.hext/pool_allocator.hext/rb_treeext/ropeext/slist
    ext/stdio_filebuf.hext/stdio_sync_filebuf.hext/throw_allocator.hext/typelist.hext/type_traits.h
    ext/vstring.h 

    Table 3.16. Extension Debug Headers

    debug/arraydebug/bitsetdebug/dequedebug/forward_listdebug/list
    debug/mapdebug/setdebug/stringdebug/unordered_mapdebug/unordered_set
    debug/vector 

    Table 3.17. Extension Profile Headers

    profile/bitsetprofile/dequeprofile/listprofile/map
    profile/setprofile/unordered_mapprofile/unordered_setprofile/vector

    Table 3.18. Extension Parallel Headers

    parallel/algorithmparallel/numeric

    Mixing Headers

    A few simple rules.

    First, mixing different dialects of the standard headers is not possible. It's an all-or-nothing affair. Thus, code like

    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 locale may be incomplete on some non-GNU
          platforms. Also dependent on the underlying platform is support
    !     for wchar_t and long
    !     long specializations, and details of thread support.
          
              
          Long answer: See the implementation status pages for 
          C++98,
    !     TR1, and 
    !     C++11.
    !     C++14.
           
        
      
    --- 734,749 ----
          except for some corner cases.  Support for localization
          in locale may be incomplete on some non-GNU
          platforms. Also dependent on the underlying platform is support
    !     for wchar_t and long long specializations,
    !     and details of thread support.
          
              
          Long answer: See the implementation status pages for 
          C++98,
    !     TR1,
    !     C++11,
    !     C++14, and
    !     C++17.
           
        
      
    ***************
    *** 875,880 ****
    --- 876,884 ----
          
        
        
    +     
    +       This answer is old and probably no longer be relevant.
    +     
          
          Another problem is the rel_ops 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 ****
        
      
      
    !     
          std::unordered_map
          unordered_map
          __gnu_debug::unordered_map
    --- 285,303 ----
        
      
      
    !   
    !     std::array
    !     array
    !     __gnu_debug::array
    !     <debug/array>
    !   
    !   
    !     std::forward_list
    !     forward_list
    !     __gnu_debug::forward_list
    !     <debug/forward_list>
    !   
    !   
          std::unordered_map
          unordered_map
          __gnu_debug::unordered_map
    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
            Localization.
         
    +    [23.*] All of the containers in this clause
    +      define size_type as std::size_t and
    +      difference_type as std::ptrdiff_t.
    +    
         [26.2.8]/9 I have no idea what
            complex<T>'s pow(0,0) returns.
         
    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 ****
      
        
          Similarly, tests which depend on a newer standard than the default
    !     should use dg-options instead of an effective target,
    !     so that they are not skipped by default.
          For example, tests for C++17 features should use
          // { dg-options "-std=gnu++17" }
    !     and not
    !     // { dg-do run "c++1z" }
        
      
      
    Examples of Test Directives --- 753,767 ---- Similarly, tests which depend on a newer standard than the default ! must use dg-options 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 // { dg-options "-std=gnu++17" } ! before any dg-do such as: ! // { dg-do run "c++17" } ! The dg-options directive must come first, so that ! the -std flag has already been added to the options ! before checking the c++17 target.
    Examples of Test Directives 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 #include's a header, the contents of that header become available, no matter how. --- 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 #includes a header, the contents of that header become available, no matter how. *************** *** 138,153 **** 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). ! Two dialects of standard headers are supported, corresponding to ! the 1998 standard as updated for 2003, and the current 2011 standard. ! C++98/03 include files. These are available in the default compilation mode, i.e. -std=c++98 or -std=gnu++98. --- 138,161 ---- 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). ! 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. ! and ! and ! ! show the C++98/03 include files. ! These are available in the C++98 compilation mode, ! i.e. -std=c++98 or -std=gnu++98. ! Unless specified otherwise below, they are also available in later modes ! (C++11, C++14 etc).
    *************** *** 205,210 **** --- 213,219 ---- valarray vector + *************** *** 246,259 **** ctimecwcharcwctype
    ! C++11 include files. These are only available in C++11 compilation mode, i.e. -std=c++11 or -std=gnu++11. --- 255,292 ---- ctime cwchar cwctype + ! The following header is deprecated ! and might be removed from a future C++ standard. ! ! ! ! C++ 1998 Deprecated Library Header ! ! ! ! ! ! strstream ! ! ! !
    ! ! ! and ! show the C++11 include files. ! These are available in C++11 compilation mode, i.e. -std=c++11 or -std=gnu++11. + 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). *************** mode, i.e. -std=c++11 *** 269,341 **** - algorithm array ! bitset chrono ! complex ! ! condition_variable - deque - exception - forward_list - fstream ! functional future initalizer_list - iomanip - ios - - - iosfwd - iostream - istream - iterator - limits - - - list - locale - map - memory mutex - - - new - numeric - ostream - queue random ratio regex ! set ! sstream ! stack ! ! ! stdexcept ! streambuf ! string system_error thread tuple type_traits - typeinfo unordered_map unordered_set - - utility - valarray - vector - --- 302,334 ---- array ! atomic chrono ! codecvt condition_variable ! forward_list future initalizer_list mutex random ratio regex ! scoped_allocator system_error thread tuple + typeindex type_traits unordered_map unordered_set *************** mode, i.e. -std=c++11 *** 354,392 **** - cassert ccomplex - cctype - cerrno cfenv ! cfloat ! cinttypes ! ciso646 ! climits ! clocale ! cmath ! csetjmp ! csignal ! cstdarg ! cstdbool ! cstddef ! cstdint ! cstdlib ! cstdio ! cstring ! ctgmath ! ctime ! cuchar ! cwchar ! cwctype --- 347,508 ---- ccomplex cfenv + cinttypes + cstdalign + cstdbool ! cstdint ! ctgmath ! cuchar ! + + + + + + shows the C++14 include file. + This is available in C++14 compilation + mode, i.e. -std=c++14 or -std=gnu++14. + 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). + + + + + C++ 2014 Library Header + + + + ! shared_mutex + + +
    + + + shows the C++17 include files. + These are available in C++17 compilation + mode, i.e. -std=c++17 or -std=gnu++17. + 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). + + + + + C++ 2017 Library Headers + + + + + + + ! any ! optional ! string_view ! variant + + +
    + + + + , + 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. + + + + + File System TS Header + + + + ! experimental/filesystem ! ! ! !
    ! ! ! ! , ! 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. ! ! ! ! ! Library Fundamentals TS Headers ! ! ! ! ! ! ! ! ! ! experimental/algorithm ! experimental/any ! experimental/array ! experimental/chrono ! experimental/deque ! ! ! experimental/forward_list ! experimental/functional ! experimental/iterator ! experimental/list ! experimental/map ! ! ! experimental/memory ! experimental/memory_resource ! experimental/numeric ! experimental/optional ! experimental/propagate_const ! ! ! experimental/random ! experimental/ratio ! experimental/regex ! experimental/set ! experimental/source_location ! ! ! experimental/string ! experimental/string_view ! experimental/system_error ! experimental/tuple ! experimental/type_traits ! ! ! experimental/unordered_map ! experimental/unordered_set ! experimental/utility ! experimental/vector ! *************** mode, i.e. -std=c++11 *** 424,429 **** --- 540,546 ---- tr1/utility + *************** compiler supports scalar decimal floatin *** 564,569 **** --- 681,687 ---- ext/vstring.h + *************** compiler supports scalar decimal floatin *** 584,601 **** debug/bitset debug/deque debug/list - debug/map - debug/set - debug/string debug/unordered_map debug/unordered_set debug/vector --- 702,723 ---- + debug/array debug/bitset debug/deque + debug/forward_list debug/list + debug/map + debug/set debug/string debug/unordered_map debug/unordered_set + + debug/vector + *************** g++ -Winvalid-pch -I. -include stdc++.h *** 1016,1022 **** The _GLIBCXX_USE_CXX11_ABI macro (see ! ) 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 ---- The _GLIBCXX_USE_CXX11_ABI macro (see ! ) 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 **** Although the standard exception types defined in ! <stdexcept> use strings, they are not defined twice, so that a std::out_of_range 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.
    Troubleshooting If you get linker errors about undefined references to symbols --- 1173,1211 ---- Although the standard exception types defined in ! <stdexcept> use strings, most are not defined twice, so that a std::out_of_range 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. + One exception type does change when using the new ABI, namely + std::ios_base::failure. + This is necessary because the 2011 standard changed its base class from + std::exception to + std::system_error, which causes its layout to change. + Exceptions due to iostream errors are thrown by a function inside + libstdc++.so, so whether the thrown + exception uses the old std::ios_base::failure type + or the new one depends on the ABI that was active when + libstdc++.so was built, + not 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 + std::ios_base::failure type, + and for GCC 5.x and 6.x the library throws the old type. + Catch handlers of type std::ios_base::failure + 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 std::exception will always catch + iostreams exceptions, because the old and new type both inherit from + std::exception. + +
    Troubleshooting 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; extern template basic_istream& operator>>(basic_istream&, 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; + # 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::size_type + basic_string::_Rep::_S_empty_rep_storage[]; + # endif + extern template basic_istream& operator>>(basic_istream&, string&); *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 1613,1619 **** --- 1626,1638 ---- getline(basic_istream&, string&); #ifdef _GLIBCXX_USE_WCHAR_T + # if __cplusplus <= 201402L && _GLIBCXX_EXTERN_TEMPLATE > 0 extern template class basic_string; + # elif ! _GLIBCXX_USE_CXX11_ABI + extern template basic_string::size_type + basic_string::_Rep::_S_empty_rep_storage[]; + # endif + extern template basic_istream& operator>>(basic_istream&, wstring&); *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 1626,1633 **** extern template basic_istream& getline(basic_istream&, wstring&); ! #endif ! #endif _GLIBCXX_END_NAMESPACE_VERSION } // namespace std --- 1645,1652 ---- extern template basic_istream& getline(basic_istream&, 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 - // . - - /** @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 _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 + struct _Number_help<_Base, _Pow, '\'', _Dig, _Digs...> + : _Number_help<_Base, _Pow, _Dig, _Digs...> + { }; + + // Terminating case for recursion: template 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::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 + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::icase; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::nosubs; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::optimize; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::collate; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::ECMAScript; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::basic; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::extended; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::awk; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::grep; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::egrep; + #endif // ! C++17 + /** @brief Standard regular expressions. */ typedef basic_regex 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 *** 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::value>::type> ! std::pair 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 ! __enable_if_t::value, ! pair> 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::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 ! __enable_if_t::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::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 ! __enable_if_t::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::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 ! __enable_if_t::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 class __pair_base ! { ! #if __cplusplus >= 201103L ! template 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 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<_T2>>>::value, - const pair&, const __nonesuch_no_braces&>::type __p) = delete; - - pair& - operator=(typename conditional< __and_, is_move_assignable<_T2>>::value, pair&&, __nonesuch_no_braces&&>::type __p) noexcept(__and_, ! is_nothrow_move_assignable<_T2>>::value) { first = std::forward(__p.first); second = std::forward(__p.second); --- 387,397 ---- pair& operator=(typename conditional< __and_, is_move_assignable<_T2>>::value, pair&&, __nonesuch_no_braces&&>::type __p) noexcept(__and_, ! is_nothrow_move_assignable<_T2>>::value) { first = std::forward(__p.first); second = std::forward(__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 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 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 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 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 > ! constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { } // Move constructors. --- 230,236 ---- /// Creates a unique_ptr that owns nothing. template > ! 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 > ! constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { } template>> --- 511,517 ---- /// Creates a unique_ptr that owns nothing. template > ! constexpr unique_ptr(nullptr_t) noexcept : _M_t() { } template>> 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::value>::type> ! std::pair 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 ! __enable_if_t::value, ! pair> 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::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 ! __enable_if_t::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::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 ! __enable_if_t::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::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 ! __enable_if_t::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 --- 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 *************** _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 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 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 struct __byte_operand; template<> struct __byte_operand { using __type = byte; }; template<> struct __byte_operand { using __type = byte; }; template<> struct __byte_operand { using __type = byte; }; --- 65,71 ---- /// std::byte enum class byte : unsigned char {}; ! template struct __byte_operand { }; template<> struct __byte_operand { using __type = byte; }; template<> struct __byte_operand { using __type = byte; }; template<> struct __byte_operand { 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 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::__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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include namespace std --- 32,38 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include 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 --- 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 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 ! #else #include #if _GLIBCXX_INLINE_VERSION --- 27,33 ---- * Do not attempt to use it directly. */ ! #if __cplusplus >= 201402L #include #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 ! #else #include #include --- 32,38 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #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 ! #else #include #include --- 35,41 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201103L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 35,41 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 35,41 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 #include #include - #include #include namespace std { --- 33,38 ---- *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 258,263 **** --- 257,278 ---- template class __resource_adaptor_imp : public memory_resource { + static_assert(is_same::value_type>::value, + "Allocator's value_type is char"); + static_assert(is_same::pointer>::value, + "Allocator's pointer type is value_type*"); + static_assert(is_same::const_pointer>::value, + "Allocator's const_pointer type is value_type const*"); + static_assert(is_same::void_pointer>::value, + "Allocator's void_pointer type is void*"); + static_assert(is_same::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& - __get_default_resource() - { - static atomic _S_default_resource(new_delete_resource()); - return _S_default_resource; - } inline memory_resource* new_delete_resource() noexcept { ! static resource_adaptor> __r; ! return static_cast(&__r); } ! template ! 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 __r; ! return static_cast(&__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>; ! 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& + __get_default_resource() + { + using type = atomic; + 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 ! #else #include #include --- 35,41 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 for these features. */ ! #if __cplusplus <= 201103L ! # include ! #else #include #include --- 41,47 ---- * between different GCC releases for these features. */ ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 35,41 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include *************** namespace experimental *** 44,53 **** { inline namespace fundamentals_v2 { namespace pmr { _GLIBCXX_BEGIN_NAMESPACE_VERSION - _GLIBCXX_BEGIN_NAMESPACE_CXX11 template using match_results --- 42,51 ---- { inline namespace fundamentals_v2 { + #if _GLIBCXX_USE_CXX11_ABI namespace pmr { _GLIBCXX_BEGIN_NAMESPACE_VERSION template using match_results *************** _GLIBCXX_BEGIN_NAMESPACE_CXX11 *** 59,68 **** typedef match_results smatch; typedef match_results wsmatch; - _GLIBCXX_END_NAMESPACE_CXX11 _GLIBCXX_END_NAMESPACE_VERSION } // namespace pmr ! } // namespace fundamentals_v2 } // namespace experimental } // namespace std --- 57,65 ---- typedef match_results smatch; typedef match_results 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include *************** _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> --- 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> *************** _GLIBCXX_BEGIN_NAMESPACE_CXX11 *** 82,91 **** typedef basic_string u32string; typedef basic_string wstring; - _GLIBCXX_END_NAMESPACE_CXX11 _GLIBCXX_END_NAMESPACE_VERSION } // namespace pmr ! } // namespace fundamentals_v2 } // namespace experimental } // namespace std --- 80,88 ---- typedef basic_string u32string; typedef basic_string 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 ! #else #include #include --- 35,41 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 35,41 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 35,41 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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 ! #else #include #include --- 31,37 ---- #pragma GCC system_header ! #if __cplusplus >= 201402L #include #include 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::value && (treat_as_floating_point::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::value && (treat_as_floating_point::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::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::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& __lock, const chrono::duration<_Rep, _Period>& __rtime) ! { return wait_until(__lock, __clock_t::now() + __rtime); } template bool wait_for(unique_lock& __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& __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 bool wait_for(unique_lock& __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 \ 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 \ 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> template ! using __invoker_type ! = _Invoker()...))>; public: ! // Returns a call wrapper that does ! // INVOKE(DECAY_COPY(__callable), DECAY_COPY(__args)). template ! 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 ! using __decayed_tuple = tuple::type...>; public: ! // Returns a call wrapper that stores ! // tuple{DECAY_COPY(__callable), DECAY_COPY(__args)...}. template ! 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::__type)> --- 2458,2464 ---- : public __invoke_result<_Functor, _ArgTypes...> { }; ! #if __cplusplus >= 201402L /// Alias template for aligned_storage template::__type)> *************** _GLIBCXX_BEGIN_NAMESPACE_VERSION *** 2490,2500 **** /// Alias template for result_of template using result_of_t = typename result_of<_Tp>::type; ! #endif template 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 using void_t = void; --- 2490,2505 ---- /// Alias template for result_of template using result_of_t = typename result_of<_Tp>::type; ! #endif // C++14 ! ! // __enable_if_t (std::enable_if_t for C++11) ! template ! using __enable_if_t = typename enable_if<_Cond, _Tp>::type; + // __void_t (std::void_t for C++11) template 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 using void_t = void; *************** template *** 3069,3074 **** --- 3074,3083 ---- remove_cv_t> )> { }; + + template + 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 #include - #if __cplusplus > 201402L - #include - #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 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 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 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 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 void __erased_dtor(_Variant&& __v) ! { std::_Destroy(std::__addressof(__get<_Np>(__v))); } template void --- 255,261 ---- template void __erased_dtor(_Variant&& __v) ! { std::_Destroy(std::__addressof(__variant::__get<_Np>(__v))); } template 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 using __select_index = ! typename __select_int::_Select_int_base ! ::type::value_type; template struct _Variant_storage --- 328,336 ---- template using __select_index = ! typename __select_int::_Select_int_base::type::value_type; template struct _Variant_storage *************** _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 --- 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 *************** _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 --- 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 *************** _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 --- 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 *************** _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 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(&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(&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 #include #include #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 #include + #include #include #include "new" + #if !_GLIBCXX_HAVE_ALIGNED_ALLOC && !_GLIBCXX_HAVE__ALIGNED_MALLOC \ + && !_GLIBCXX_HAVE_POSIX_MEMALIGN && _GLIBCXX_HAVE_MEMALIGN + # if _GLIBCXX_HOSTED && __has_include() + // Some C libraries declare memalign in + # include + # 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 ! #else ! extern "C" void *memalign(std::size_t boundary, std::size_t size); #endif ! #define aligned_alloc memalign ! #else ! #include // 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(__to), reinterpret_cast(__to_end) }; ! auto res = ucs2_in(from, to, _M_maxcode, _M_mode); #elif __SIZEOF_WCHAR_T__ == 4 range to{ reinterpret_cast(__to), --- 1086,1097 ---- reinterpret_cast(__to), reinterpret_cast(__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 to{ reinterpret_cast(__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 + #include + #include + + #ifdef _GLIBCXX_USE_NLS + # include + # 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 #include - #include - - #ifdef _GLIBCXX_USE_NLS - # include - # 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 #include #include + #include #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 + #if _GLIBCXX_USE_DUAL_ABI && __cpp_rtti + #include + #include + #endif + + #ifdef _GLIBCXX_USE_NLS + # include + # 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(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 + // . + + // { dg-options "-std=gnu++17" } + // { dg-do run { target c++1z } } + + #include + #include + #include + + void + test01() + { + #ifdef _GLIBCXX_HAVE_ALIGNED_ALLOC + void* p = std::aligned_alloc(256, 1); + if (p) + { + VERIFY( (reinterpret_cast(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 + // . + + // { dg-options "-std=gnu++17" } + // { dg-do compile { target c++1z } } + + #include + + template void to_integer(...); + + using T = decltype(to_integer(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 + // . + + // { dg-options "-std=gnu++17" } + // { dg-do run { target c++1z } } + + #include + #include + #include + + 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 + // . + + // { dg-do run { target c++11 } } + + #include + #include + #include + + 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 + // . + + // { dg-do run { target c++11 } } + + #include + #include + #include + + 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(y); // { dg-error "invalid static_cast" "" { target { *-*-* } } 461 } } --- 26,30 ---- using std::any_cast; const any y(1); ! any_cast(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 + // . + + // { dg-options "-std=gnu++17" } + // { dg-do run { target c++1z } } + + #include + #include + #include + + struct E : std::bad_alloc { }; + + struct X + { + X() = default; + X(std::initializer_list) { } + + // 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(); + VERIFY(false); + } + catch (const E&) + { + VERIFY( !a.has_value() ); + } + } + + void + test02() + { + std::any a; + try + { + a.emplace(std::initializer_list{}); + 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 + // . + + // { dg-do compile { target c++11 } } + + #include + + struct X { operator int64_t() /* not const */; }; + static_assert(!std::is_constructible::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 + // . + + // { dg-do compile { target c++14 } } + + #include + + // 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 - // . - - #include - - void - test01() - { - using namespace std::literals::chrono_literals; - - // std::numeric_limits::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 + // . + + #include + + void + test01() + { + using namespace std::literals::chrono_literals; + + // std::numeric_limits::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 + // . + + // { dg-options "-std=gnu++17" } + // { dg-do run { target c++1z } } + + #include + #include + + 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(false), ""); } + + void + test02() + { + using std::has_unique_object_representations; + using std::has_unique_object_representations_v; + + static_assert(has_unique_object_representations_v + == has_unique_object_representations::value); + static_assert(has_unique_object_representations_v + == has_unique_object_representations::value); + static_assert(has_unique_object_representations_v + == has_unique_object_representations::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 + // . + + // { dg-do compile { target c++11 } } + + #include + + struct X { + template operator T() const; + }; + + + void + test01() + { + std::pair 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 + // . + + #include + #include + + void + test01() + { + std::pair, 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, 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_pair; + typedef std::pair int_pair_pair; + std::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 + // . + + // { dg-do run { target c++11 } } + + #include + #include + + void + test01() + { + typedef std::pair 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 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 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 + // . + + // { dg-do compile { target c++11 } } + + #include + + struct Incomplete; + + void f(void** p) + { + ::new (p[0]) std::unique_ptr(); + ::new (p[1]) std::unique_ptr(); + + // PR libstdc++/87704 + ::new (p[2]) std::unique_ptr(nullptr); + ::new (p[3]) std::unique_ptr(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 + // . + + // { 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 + + 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 + // . + + // { 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 + + 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 + // . + + // { dg-do run { target c++11 } } + + #include + #include + + 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 #include 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 + // . + + // { dg-do run { target c++11 } } + + // PR libstdc++/87749 + + #include + #include + + bool oom = false; + + template + 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 + struct rebind { using other = alloc; }; + #endif + + int not_empty = 0; // this makes is_always_equal false + + alloc() = default; + template + alloc(const alloc&) { } + + T* allocate(unsigned long n) + { + if (oom) + throw std::bad_alloc(); + return std::allocator().allocate(n); + } + + void deallocate(T* p, unsigned long n) + { + std::allocator().deallocate(p, n); + } + }; + + template + bool operator==(const alloc&, const alloc&) { return true; } + + template + bool operator!=(const alloc&, const alloc&) { return false; } + + int main() + { + using string = std::basic_string, alloc>; + + 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 + // . + + // { 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 + #undef _GLIBCXX_EXTERN_TEMPLATE + #include + + 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 + // . + + // { dg-do run { target c++11 } } + + // PR libstdc++/87749 + + #include + #include + + bool oom = false; + + template + 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 + struct rebind { using other = alloc; }; + #endif + + int not_empty = 0; // this makes is_always_equal false + + alloc() = default; + template + alloc(const alloc&) { } + + T* allocate(unsigned long n) + { + if (oom) + throw std::bad_alloc(); + return std::allocator().allocate(n); + } + + void deallocate(T* p, unsigned long n) + { + std::allocator().deallocate(p, n); + } + }; + + template + bool operator==(const alloc&, const alloc&) { return true; } + + template + bool operator!=(const alloc&, const alloc&) { return false; } + + int main() + { + using string + = std::basic_string, alloc>; + + 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 + // . + + // { 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 + #undef _GLIBCXX_EXTERN_TEMPLATE + #include + + 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 + // . + + // { 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 + #include + + 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 + // . + + // { dg-do run { target c++11 } } + + #include + #include + #include + + void + test01() + { + const char out[] = u8"\u00A33.50"; + wchar_t in[8] = {}; + std::codecvt_utf8 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 --- 1,4 ---- ! // { dg-require-namedlocale "nl_NL.ISO8859-15" } // 2001-01-24 Benjamin Kosnik *************** void test02() *** 28,39 **** { using namespace std; ! locale loc_it = locale(ISO_8859(15,it_IT)); const numpunct& nump_it = use_facet >(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& nump_it = use_facet >(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 + // . + + // { dg-do run { target c++11 } } + + #include + #include + + void + test01() + { + struct X { + mutable int conversions = 0; + + operator std::pair() const { + if (++conversions > 1) + throw 1; + return {}; + } + }; + + std::map 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() && { + if (++conversions > 1) + throw 1; + return {}; + } + }; + + std::map 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 { return { { z }, 0 }; } + int z; + }; + + template + struct Alloc + { + Alloc() = default; + + template + Alloc(const Alloc&) { } + + using value_type = T; + + T* allocate(std::size_t n) { return std::allocator().allocate(n); } + + void deallocate(T* p, std::size_t n) { std::allocator().deallocate(p, n); } + + template + void construct(U* p, const Z& z) { ::new (p) U{ { z.z+1 }, 0}; } + + template + bool operator==(const Alloc&) { return true; } + + template + bool operator!=(const Alloc&) { return false; } + }; + + void + test03() + { + std::map, Alloc>> 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 + // . + + // { dg-do run { target c++11 } } + + #include + #include + + void + test01() + { + struct X { + mutable int conversions = 0; + + operator std::pair() const { + if (++conversions > 1) + throw 1; + return {}; + } + }; + + std::multimap 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() && { + if (++conversions > 1) + throw 1; + return {}; + } + }; + + std::multimap 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 { return { { z }, 0 }; } + int z; + }; + + template + struct Alloc + { + Alloc() = default; + + template + Alloc(const Alloc&) { } + + using value_type = T; + + T* allocate(std::size_t n) { return std::allocator().allocate(n); } + + void deallocate(T* p, std::size_t n) { std::allocator().deallocate(p, n); } + + template + void construct(U* p, const Z& z) { ::new (p) U{ { z.z+1 }, 0}; } + + template + bool operator==(const Alloc&) { return true; } + + template + bool operator!=(const Alloc&) { return false; } + }; + + void + test03() + { + std::multimap, Alloc>> 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 + // . + + // { dg-options "-std=gnu++17" } + // { dg-do run { target c++1z } } + + #include + #include + + void + test01() + { + // PR libstdc++/82966 + std::set::node_type n1, n2; + n1.swap(n2); + VERIFY( n1.empty() ); + VERIFY( n2.empty() ); + } + + void + test02() + { + std::set s{1, 2}; + std::set::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 + // . + + // { dg-do run { target c++11 } } + + #include + #include + + void + test01() + { + struct X { + mutable int conversions = 0; + + operator std::pair() const { + if (++conversions > 1) + throw 1; + return {}; + } + }; + + std::unordered_map 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() && { + if (++conversions > 1) + throw 1; + return {}; + } + }; + + std::unordered_map 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 { + size_t operator()(const Key& k) const { return std::hash()(k.key); } + }; + } + + struct Z { + operator std::pair() const { return { { z }, 0 }; } + int z; + }; + + template + struct Alloc + { + Alloc() = default; + + template + Alloc(const Alloc&) { } + + using value_type = T; + + T* allocate(std::size_t n) { return std::allocator().allocate(n); } + + void deallocate(T* p, std::size_t n) { std::allocator().deallocate(p, n); } + + template + void construct(U* p, const Z& z) { ::new (p) U{ { z.z+1 }, 0}; } + + template + bool operator==(const Alloc&) { return true; } + + template + bool operator!=(const Alloc&) { return false; } + }; + + void + test03() + { + std::unordered_map, std::equal_to, + Alloc>> 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 + // . + + // { dg-do run { target c++11 } } + + #include + #include + + void + test01() + { + struct X { + mutable int conversions = 0; + + operator std::pair() const { + if (++conversions > 1) + throw 1; + return {}; + } + }; + + std::unordered_multimap 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() && { + if (++conversions > 1) + throw 1; + return {}; + } + }; + + std::unordered_multimap 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 { + size_t operator()(const Key& k) const { return std::hash()(k.key); } + }; + } + + struct Z { + operator std::pair() const { return { { z }, 0 }; } + int z; + }; + + template + struct Alloc + { + Alloc() = default; + + template + Alloc(const Alloc&) { } + + using value_type = T; + + T* allocate(std::size_t n) { return std::allocator().allocate(n); } + + void deallocate(T* p, std::size_t n) { std::allocator().deallocate(p, n); } + + template + void construct(U* p, const Z& z) { ::new (p) U{ { z.z+1 }, 0}; } + + template + bool operator==(const Alloc&) { return true; } + + template + bool operator!=(const Alloc&) { return false; } + }; + + void + test03() + { + std::unordered_multimap, std::equal_to, + Alloc>> 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 #include #include #include using __gnu_test::propagating_allocator; using __gnu_test::counter_type; void test01() { ! typedef propagating_allocator alloc_type; ! typedef __gnu_test::counter_type_hasher hash; ! typedef std::unordered_set, ! 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 alloc_type; ! typedef __gnu_test::counter_type_hasher hash; ! typedef std::unordered_set, ! 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 + #include #include #include 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> alloc_type; ! typedef __gnu_test::counter_type_hasher hash; ! typedef std::unordered_set, ! 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> alloc_type; ! typedef __gnu_test::counter_type_hasher hash; ! typedef std::unordered_set, ! 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> alloc_type; ! typedef __gnu_test::counter_type_hasher hash; ! typedef std::unordered_set, ! 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 + // . + + // { dg-do run { target c++11 } } + + // libstdc++/80893 + + #include + #include + + struct DereferencedInvalidPointer { }; + + // User-defined pointer type that throws if a null pointer is dereferenced. + template + struct Pointer : __gnu_test::PointerBase, T> + { + using __gnu_test::PointerBase, T>::PointerBase; + + T& operator*() const + { + if (!this->value) + throw DereferencedInvalidPointer(); + return *this->value; + } + }; + + // Minimal allocator using Pointer + template + struct Alloc + { + typedef T value_type; + typedef Pointer pointer; + + Alloc() = default; + template + Alloc(const Alloc&) { } + + pointer allocate(std::size_t n) + { + if (n) + return pointer(std::allocator().allocate(n)); + return nullptr; + } + + void deallocate(pointer p, std::size_t n) + { + if (n) + std::allocator().deallocate(p.value, n); + } + }; + + template + bool operator==(Alloc, Alloc) { return true; } + + template + bool operator!=(Alloc, Alloc) { return false; } + + int main() + { + std::vector> v(0); + std::vector> 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 + // . + + #include + #include + + struct X + { + X() : data(1) + { + if (fail) + throw 1; + } + + static bool fail; + + std::vector data; + }; + + bool X::fail = false; + + void + test01() + { + std::vector 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 + // . + + // { dg-do run } + + #include + #include + #include + + 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 + x_input(x, x+3); + bool caught = false; + try + { + std::vector 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 + // . + + // { dg-do run { target c++11 } } + + // PR libstdc++/86734 + + #include + #include + + 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 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 + // . + + // { dg-do run { target c++11 } } + // { dg-additional-options "-ffloat-store" { target { m68*-*-* || ia32 } } } + + #include + #include + + void + test01() + { + std::default_random_engine r1, r2; + using chi = std::chi_squared_distribution; + 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 + // . + + #include + #include + + void + test01() + { + // PR libstdc++/87641 + std::valarray v1(3); + v1[0] = 1; + v1[1] = 2; + v1[2] = 3; + std::valarray< std::valarray > v2(v1, 3); + std::valarray 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 v1(1); + VERIFY( v1.sum() == v1[0] ); + + std::valarray v2(2); + VERIFY( v2.sum().val == 2 ); + } + + struct Y + { + X& operator+=(const Y&) { throw 1; } + }; + + void + test03() + { + std::valarray 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(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(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(0); VERIFY(false); } ! catch (exception_type&) { } --- 35,46 ---- istringstream stream; stream.exceptions(ios_base::failbit); try { stream >> static_cast(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(0); VERIFY( false ); } ! catch (exception_type&) { } --- 35,46 ---- wistringstream stream; stream.exceptions(ios_base::failbit); try { stream >> static_cast(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(0); VERIFY( false ); } ! catch (exception_type&) { } --- 37,48 ---- ostringstream stream; stream.exceptions(ios_base::badbit); try { stream << static_cast(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(0); VERIFY( false ); } ! catch (exception_type&) { } --- 37,48 ---- wostringstream stream; stream.exceptions(ios_base::badbit); try { stream << static_cast(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 + // . + + // { dg-options "-D_GLIBCXX_USE_CXX11_ABI=0" } + // { dg-do run { target c++11 } } + + #include + #include + #include + + 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::max()); } ! catch(exception_type&) { // Ok. VERIFY( ios.bad() ); --- 73,79 ---- { v = ios.pword(std::numeric_limits::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::max()); } ! catch(exception_type&) { // Ok. VERIFY( ios.bad() ); --- 111,117 ---- { l = ios.iword(std::numeric_limits::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 + // . + + // { dg-options "-O0" } + // { dg-do link { target c++11 } } + + #include + + 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 + // . + + #include + + // PR libstdc++/84532 + + struct F + { + template + void operator()(T, U, int&) + { + using std::is_same; + using std::reference_wrapper; + static_assert(is_same>::value, ""); + static_assert(is_same>::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 + // . + + // { dg-do run } + // { dg-options "-pthread" } + // { dg-require-effective-target c++11 } + // { dg-require-effective-target pthread } + // { dg-require-cstdint "" } + // { dg-require-gthreads "" } + + #include + #include + + // 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 l(mx); + auto start = std::chrono::system_clock::now(); + cv.wait_for(l, std::chrono::duration(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 + // . + + #include + + // PR libstdc++/84532 + + struct F + { + template + void operator()(T, U, int&) + { + using std::is_same; + using std::reference_wrapper; + static_assert(is_same>::value, ""); + static_assert(is_same>::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(y); // { dg-error "qualifiers" "" { target { *-*-* } } 359 } } --- 25,29 ---- using std::experimental::any_cast; const any y(1); ! any_cast(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 + // . + + // { 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 + #include + #include + + 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(-1) ); + VERIFY( s.free == static_cast(-1) ); + VERIFY( s.available == static_cast(-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 + // . + + // { dg-do run { target c++14 } } + + #include + #include + + 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 + // . + + // { dg-do run { target c++14 } } + + #include + + 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 + // . + + // { dg-do compile { target c++14 } } + + #include + + namespace xpmr = std::experimental::pmr; + + struct X { }; + + static_assert(std::is_same, + std::deque>>::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 + // . + + // { dg-do compile { target c++14 } } + + #include + + namespace xpmr = std::experimental::pmr; + + struct X { }; + + static_assert(std::is_same, + std::forward_list>>::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 + // . + + // { dg-do compile { target c++14 } } + + #include + + namespace xpmr = std::experimental::pmr; + + struct X { }; + + static_assert(std::is_same, + std::list>>::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 + // . + + // { dg-do compile { target c++14 } } + + #include + + namespace xpmr = std::experimental::pmr; + + struct X { }; + struct Y { }; + struct Cmp { bool operator()(X, X) const { return false; } }; + + static_assert(std::is_same, + std::map, + xpmr::polymorphic_allocator>>>::value, + "pmr::map"); + static_assert(std::is_same, + std::map>>>::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 + // . + + // { dg-do compile { target c++14 } } + // { dg-require-effective-target cxx11-abi } + + #include + + namespace xpmr = std::experimental::pmr; + + struct X; + static_assert(std::is_same, + std::match_results>>>::value, + "pmr::match_results"); + + static_assert(std::is_same>>>::value, + "pmr::cmatch"); + static_assert(std::is_same>>>::value, + "pmr::smatch"); + #ifdef _GLIBCXX_USE_WCHAR_T + static_assert(std::is_same>>>::value, + "pmr::wcmatch"); + static_assert(std::is_same>>>::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 + // . + + // { dg-do compile { target c++14 } } + + #include + + namespace xpmr = std::experimental::pmr; + + struct X { }; + struct Y { }; + struct Cmp { bool operator()(X, X) const { return false; } }; + + static_assert(std::is_same, + std::multimap, + xpmr::polymorphic_allocator>>>::value, + "pmr::multimap"); + static_assert(std::is_same, + std::multimap>>>::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 + // . + + // { dg-do compile { target c++14 } } + + #include + + namespace xpmr = std::experimental::pmr; + + struct X { }; + struct Cmp { bool operator()(X, X) const { return false; } }; + + static_assert(std::is_same, + std::multiset, xpmr::polymorphic_allocator>>::value, + "pmr::multiset"); + static_assert(std::is_same, + std::multiset>>::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 + // . + + // { dg-do compile { target c++14 } } + + #include + + namespace xpmr = std::experimental::pmr; + + struct X { }; + struct Cmp { bool operator()(X, X) const { return false; } }; + + static_assert(std::is_same, + std::set, xpmr::polymorphic_allocator>>::value, + "pmr::set"); + static_assert(std::is_same, + std::set>>::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 + // . + + // { dg-do compile { target c++14 } } + // { dg-require-effective-target cxx11-abi } + + #include + + namespace xpmr = std::experimental::pmr; + + struct T : std::char_traits { }; + + static_assert(std::is_same, + std::basic_string, + xpmr::polymorphic_allocator>>::value, + "pmr::basic_string"); + static_assert(std::is_same, + std::basic_string>>::value, + "pmr::basic_string"); + + static_assert(std::is_same, + xpmr::polymorphic_allocator>>::value, + "pmr::string"); + static_assert(std::is_same, + xpmr::polymorphic_allocator>>::value, + "pmr::u16string"); + static_assert(std::is_same, + xpmr::polymorphic_allocator>>::value, + "pmr::u32string"); + + #ifdef _GLIBCXX_USE_WCHAR_T + static_assert(std::is_same, + std::basic_string, + xpmr::polymorphic_allocator>>::value, + "pmr::basic_string"); + static_assert(std::is_same, + std::basic_string>>::value, + "pmr::basic_string"); + + static_assert(std::is_same, + xpmr::polymorphic_allocator>>::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 + // . + + // { dg-do compile { target c++14 } } + + #include + + 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, + std::unordered_map, std::equal_to, + xpmr::polymorphic_allocator>>>::value, + "pmr::unordered_map"); + static_assert(std::is_same, + std::unordered_map, + xpmr::polymorphic_allocator>>>::value, + "pmr::unordered_map"); + static_assert(std::is_same, + std::unordered_map>>>::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 + // . + + // { dg-do compile { target c++14 } } + + #include + + 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, + std::unordered_multimap, std::equal_to, + xpmr::polymorphic_allocator>>>::value, + "pmr::unordered_multimap"); + static_assert(std::is_same, + std::unordered_multimap, + xpmr::polymorphic_allocator>>>::value, + "pmr::unordered_multimap"); + static_assert(std::is_same, + std::unordered_multimap>>>::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 + // . + + // { dg-do compile { target c++14 } } + + #include + + 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, + std::unordered_multiset, std::equal_to, + xpmr::polymorphic_allocator>>::value, + "pmr::unordered_multiset"); + static_assert(std::is_same, + std::unordered_multiset, + xpmr::polymorphic_allocator>>::value, + "pmr::unordered_multiset"); + static_assert(std::is_same, + std::unordered_multiset>>::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 + // . + + // { dg-do compile { target c++14 } } + + #include + + 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, + std::unordered_set, std::equal_to, + xpmr::polymorphic_allocator>>::value, + "pmr::unordered_set"); + static_assert(std::is_same, + std::unordered_set, + xpmr::polymorphic_allocator>>::value, + "pmr::unordered_set"); + static_assert(std::is_same, + std::unordered_set>>::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 + // . + + // { dg-do compile { target c++14 } } + + #include + + namespace xpmr = std::experimental::pmr; + + struct X { }; + + static_assert(std::is_same, + std::vector>>::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 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 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 test1; --- 21,26 ---- using std::experimental::propagate_const; ! // { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 105 } propagate_const 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 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 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 test1; --- 21,26 ---- using std::experimental::propagate_const; ! // { dg-error "requires a class or a pointer to an object type" "" { target *-*-* } 105 } propagate_const 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 - // 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 void ! test(const testcase_comp_ellint_3 (&data)[Num], Tp toler) { ! const Tp eps = std::numeric_limits::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 // 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 void ! test(const testcase_comp_ellint_3 (&data)[Num], Ret toler) { ! bool test __attribute__((unused)) = true; ! const Ret eps = std::numeric_limits::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 + #include + + 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 - // 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 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 // 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 void ! test(const testcase_ellint_3 (&data)[Num], Tp toler) { ! const Tp eps = std::numeric_limits::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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 void ! test(const testcase_ellint_3 (&data)[Num], Ret toler) { ! bool test __attribute__((unused)) = true; ! const Ret eps = std::numeric_limits::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 + #include + + 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 + // . + + // PR libstdc++/68397 - std::tr1::expint fails in __expint_En_cont_frac + // for some long double arguments due to low __max_iter value + + #include + #include + + 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 **** // . // 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 #if defined(__TEST_DEBUG) ! #include ! #define VERIFY(A) \ ! if (!(A)) \ ! { \ ! std::cout << "line " << __LINE__ \ ! << " max_abs_frac = " << max_abs_frac \ ! << std::endl; \ ! } #else ! #include #endif ! #include "../testcase.h" ! // Test data for k=-0.90000000000000002. ! testcase_comp_ellint_3 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 ! void test001() ! { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data001) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test002() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data002) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test003() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data003) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test004() ! { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data004) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test005() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data005) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test006() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data006) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test007() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data007) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test008() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data008) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test009() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data009) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test010() ! { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data010) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test011() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data011) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test012() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data012) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test013() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data013) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test014() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data014) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test015() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data015) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test016() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data016) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test017() ! { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data017) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test018() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data018) ! / sizeof(testcase_comp_ellint_3); ! 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 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 ! void test019() ! { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data019) ! / sizeof(testcase_comp_ellint_3); ! 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(); ! test002(); ! test003(); ! test004(); ! test005(); ! test006(); ! test007(); ! test008(); ! test009(); ! test010(); ! test011(); ! test012(); ! test013(); ! test014(); ! test015(); ! test016(); ! test017(); ! test018(); ! test019(); return 0; } --- 19,508 ---- // . // 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 #include #if defined(__TEST_DEBUG) ! # include ! # define VERIFY(A) \ ! if (!(A)) \ ! { \ ! std::cout << "line " << __LINE__ \ ! << " max_abs_frac = " << max_abs_frac \ ! << std::endl; \ ! } #else ! # include #endif ! #include // 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! void ! test(const testcase_comp_ellint_3 (&data)[Num], Ret toler) ! { ! bool test __attribute__((unused)) = true; ! const Ret eps = std::numeric_limits::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 + #include + + 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 **** // . // 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 #if defined(__TEST_DEBUG) ! #include ! #define VERIFY(A) \ ! if (!(A)) \ ! { \ ! std::cout << "line " << __LINE__ \ ! << " max_abs_frac = " << max_abs_frac \ ! << std::endl; \ ! } #else ! #include #endif ! #include "../testcase.h" ! // Test data for k=-0.90000000000000002, nu=0.0000000000000000. ! testcase_ellint_3 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 ! void test001() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data001) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test002() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data002) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test003() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data003) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test004() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data004) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test005() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data005) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test006() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data006) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test007() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data007) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test008() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data008) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test009() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data009) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test010() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data010) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test011() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data011) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test012() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data012) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test013() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data013) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test014() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data014) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test015() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data015) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test016() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data016) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test017() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data017) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test018() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data018) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test019() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data019) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test020() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data020) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test021() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data021) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test022() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data022) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test023() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data023) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test024() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data024) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test025() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data025) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test026() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data026) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test027() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data027) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test028() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data028) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test029() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data029) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test030() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data030) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test031() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data031) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test032() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data032) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test033() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data033) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test034() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data034) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test035() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data035) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test036() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data036) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test037() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data037) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test038() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data038) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test039() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data039) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test040() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data040) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test041() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data041) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test042() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data042) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test043() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data043) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test044() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data044) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test045() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data045) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test046() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data046) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test047() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data047) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test048() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data048) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test049() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data049) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test050() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data050) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test051() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data051) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test052() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data052) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test053() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data053) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test054() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data054) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test055() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data055) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test056() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data056) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test057() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data057) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test058() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data058) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test059() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data059) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test060() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data060) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test061() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data061) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test062() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data062) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test063() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data063) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test064() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data064) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test065() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data065) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test066() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data066) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test067() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data067) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test068() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data068) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test069() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data069) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test070() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data070) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test071() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data071) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test072() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data072) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test073() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data073) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test074() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data074) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test075() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data075) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test076() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data076) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test077() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data077) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test078() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data078) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test079() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data079) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test080() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data080) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test081() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data081) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test082() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data082) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test083() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data083) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test084() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data084) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test085() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data085) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test086() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data086) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test087() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data087) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test088() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data088) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test089() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data089) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test090() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data090) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test091() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data091) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test092() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data092) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test093() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data093) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test094() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data094) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test095() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data095) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test096() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data096) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test097() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data097) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test098() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data098) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test099() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data099) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test100() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data100) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test101() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data101) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test102() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data102) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test103() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data103) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test104() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data104) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test105() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data105) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test106() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data106) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test107() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data107) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test108() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data108) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test109() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data109) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test110() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data110) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test111() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data111) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test112() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data112) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test113() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data113) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test114() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data114) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test115() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data115) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test116() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data116) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test117() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data117) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test118() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data118) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test119() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data119) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test120() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data120) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test121() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data121) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test122() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data122) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test123() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data123) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test124() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data124) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test125() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data125) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test126() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data126) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test127() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data127) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test128() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data128) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test129() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data129) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test130() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data130) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test131() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data131) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test132() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data132) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test133() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data133) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test134() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data134) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test135() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data135) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test136() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data136) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test137() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data137) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test138() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data138) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test139() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data139) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test140() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data140) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test141() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data141) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test142() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data142) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test143() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data143) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test144() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data144) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test145() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data145) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test146() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data146) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test147() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data147) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test148() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data148) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test149() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data149) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test150() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data150) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test151() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data151) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test152() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data152) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test153() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data153) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test154() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data154) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test155() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data155) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test156() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data156) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test157() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data157) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test158() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data158) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test159() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data159) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test160() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data160) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test161() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data161) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test162() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data162) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test163() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data163) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test164() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data164) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test165() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data165) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test166() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data166) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test167() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data167) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test168() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data168) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test169() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data169) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test170() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data170) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test171() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data171) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test172() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data172) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test173() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data173) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test174() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data174) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test175() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data175) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test176() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data176) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test177() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data177) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test178() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data178) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test179() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data179) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test180() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data180) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test181() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data181) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test182() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data182) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test183() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data183) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test184() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data184) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test185() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data185) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test186() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data186) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test187() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data187) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test188() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data188) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test189() { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data189) ! / sizeof(testcase_ellint_3); ! 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 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 ! void test190() ! { ! const Tp eps = std::numeric_limits::epsilon(); ! Tp max_abs_diff = -Tp(1); ! Tp max_abs_frac = -Tp(1); ! unsigned int num_datum = sizeof(data190) ! / sizeof(testcase_ellint_3); ! 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(); ! test002(); ! test003(); ! test004(); ! test005(); ! test006(); ! test007(); ! test008(); ! test009(); ! test010(); ! test011(); ! test012(); ! test013(); ! test014(); ! test015(); ! test016(); ! test017(); ! test018(); ! test019(); ! test020(); ! test021(); ! test022(); ! test023(); ! test024(); ! test025(); ! test026(); ! test027(); ! test028(); ! test029(); ! test030(); ! test031(); ! test032(); ! test033(); ! test034(); ! test035(); ! test036(); ! test037(); ! test038(); ! test039(); ! test040(); ! test041(); ! test042(); ! test043(); ! test044(); ! test045(); ! test046(); ! test047(); ! test048(); ! test049(); ! test050(); ! test051(); ! test052(); ! test053(); ! test054(); ! test055(); ! test056(); ! test057(); ! test058(); ! test059(); ! test060(); ! test061(); ! test062(); ! test063(); ! test064(); ! test065(); ! test066(); ! test067(); ! test068(); ! test069(); ! test070(); ! test071(); ! test072(); ! test073(); ! test074(); ! test075(); ! test076(); ! test077(); ! test078(); ! test079(); ! test080(); ! test081(); ! test082(); ! test083(); ! test084(); ! test085(); ! test086(); ! test087(); ! test088(); ! test089(); ! test090(); ! test091(); ! test092(); ! test093(); ! test094(); ! test095(); ! test096(); ! test097(); ! test098(); ! test099(); ! test100(); ! test101(); ! test102(); ! test103(); ! test104(); ! test105(); ! test106(); ! test107(); ! test108(); ! test109(); ! test110(); ! test111(); ! test112(); ! test113(); ! test114(); ! test115(); ! test116(); ! test117(); ! test118(); ! test119(); ! test120(); ! test121(); ! test122(); ! test123(); ! test124(); ! test125(); ! test126(); ! test127(); ! test128(); ! test129(); ! test130(); ! test131(); ! test132(); ! test133(); ! test134(); ! test135(); ! test136(); ! test137(); ! test138(); ! test139(); ! test140(); ! test141(); ! test142(); ! test143(); ! test144(); ! test145(); ! test146(); ! test147(); ! test148(); ! test149(); ! test150(); ! test151(); ! test152(); ! test153(); ! test154(); ! test155(); ! test156(); ! test157(); ! test158(); ! test159(); ! test160(); ! test161(); ! test162(); ! test163(); ! test164(); ! test165(); ! test166(); ! test167(); ! test168(); ! test169(); ! test170(); ! test171(); ! test172(); ! test173(); ! test174(); ! test175(); ! test176(); ! test177(); ! test178(); ! test179(); ! test180(); ! test181(); ! test182(); ! test183(); ! test184(); ! test185(); ! test186(); ! test187(); ! test188(); ! test189(); ! test190(); return 0; } --- 19,6342 ---- // . // 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 #include #if defined(__TEST_DEBUG) ! # include ! # define VERIFY(A) \ ! if (!(A)) \ ! { \ ! std::cout << "line " << __LINE__ \ ! << " max_abs_frac = " << max_abs_frac \ ! << std::endl; \ ! } #else ! # include #endif ! #include // 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! 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 ! void ! test(const testcase_ellint_3 (&data)[Num], Ret toler) ! { ! bool test __attribute__((unused)) = true; ! const Ret eps = std::numeric_limits::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 + #include + + 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 + // . + + // PR libstdc++/68397 - std::tr1::expint fails in __expint_En_cont_frac + // for some long double arguments due to low __max_iter value + + #include + #include + + 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(std::declval()))> PointerBase(const PointerBase& p) : value(p.value) { } *************** namespace __gnu_test *** 603,609 **** } private: ! Derived& derived() { return static_cast(*this); } }; template --- 605,615 ---- } private: ! Derived& ! derived() { return static_cast(*this); } ! ! const Derived& ! derived() const { return static_cast(*this); } }; template 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 + + Backported from mainline + 2018-04-18 David Malcolm + + 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.