diff -Nru gcc-4.8-4.8.0/debian/README.gnat gcc-4.8-4.8.1/debian/README.gnat --- gcc-4.8-4.8.0/debian/README.gnat 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/README.gnat 2013-06-05 12:12:51.000000000 +0000 @@ -1,7 +1,7 @@ If you want to develop Ada programs and libraries on Debian, please read the Debian Policy for Ada: -http://www.ada-france.org/debian/debian-ada-policy.html +http://people.debian.org/~lbrenta/debian-ada-policy.html The default Ada compiler is and always will be the package `gnat'. Debian contains many programs and libraries compiled with it, which diff -Nru gcc-4.8-4.8.0/debian/changelog gcc-4.8-4.8.1/debian/changelog --- gcc-4.8-4.8.0/debian/changelog 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/changelog 2013-06-05 12:12:51.000000000 +0000 @@ -1,4 +1,154 @@ -gcc-4.8 (4.8.0-4ubuntu1) raring; urgency=low +gcc-4.8 (4.8.1-2ubuntu1~13.04) raring; urgency=low + + * Build for raring. + + -- Matthias Klose Wed, 05 Jun 2013 11:14:36 +0200 + +gcc-4.8 (4.8.1-2ubuntu1) saucy; urgency=low + + * Merge with Debian, remaining changes: + - Build from the upstream source. + + -- Matthias Klose Tue, 04 Jun 2013 17:30:35 +0200 + +gcc-4.8 (4.8.1-2) unstable; urgency=low + + * Update to SVN 20130643 (r199596) from the gcc-4_8-branch. + * Force arm mode for libjava on armhf. + * Fix gdc build failure on kFreeBSD and the Hurd. + + -- Matthias Klose Tue, 04 Jun 2013 17:28:06 +0200 + +gcc-4.8 (4.8.1-1ubuntu1) saucy; urgency=low + + * Merge with Debian, remaining changes: + - Build from the upstream source. + + -- Matthias Klose Mon, 03 Jun 2013 18:01:09 +0200 + +gcc-4.8 (4.8.1-1) unstable; urgency=low + + * GCC 4.8.1 release. + Support for C++11 ref-qualifiers has been added to GCC 4.8.1, making G++ + the first C++ compiler to implement all the major language features of + the C++11 standard. + * Update to SVN 20130603 (r199596) from the gcc-4_8-branch. + * Build java packages from this source package. Works aroud ftp-master's + overly strict interpretation of the Built-Using attribute. + * Build D and libphobos packages from this source package. + * Disable the non-default multilib test runs for libjava and gnat. + + -- Matthias Klose Mon, 03 Jun 2013 09:28:11 +0200 + +gcc-4.8 (4.8.0-8ubuntu1) saucy; urgency=low + + * Merge with Debian, remaining changes: + - Build from the upstream source. + + -- Matthias Klose Mon, 27 May 2013 20:07:08 +0200 + +gcc-4.8 (4.8.0-8) unstable; urgency=medium + + * Update to SVN 20130527 (r199350) from the gcc-4_8-branch (4.8.1 rc2). + - Fix PR tree-optimization/57230 (closes: #707118). + + * Remove gdc-doc.diff. + * libgo: Overwrite the setcontext_clobbers_tls check on mips*, fails + on some buildds. + * Update the Linaro support to the 4.8-2013.05 release. + * Use the %I spec when building the object file for the gcj main function. + * Fix PR c++/57211, don't warn about unused parameters of defaulted + functions. Taken from the trunk. Closes: #705066. + * Update symbols files for powerpcspe (Roland Stigge). Closes: #709383. + * Build zh_TW.UTF-8 locale to fix libstdc++ test failures. + * Keep prev-* symlinks to fix plugin.exp test failures. + + -- Matthias Klose Mon, 27 May 2013 15:43:08 +0200 + +gcc-4.8 (4.8.0-7ubuntu1) saucy; urgency=low + + * Update to SVN 20130517 (r199023) from the gcc-4_8-branch. + * Update the Linaro support to the 4.8-2013.05 release. + + -- Matthias Klose Sat, 18 May 2013 17:40:49 +0200 + +gcc-4.8 (4.8.0-7) unstable; urgency=medium + + * Update to SVN 20130512 (r198804) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Revert the r195826 patch, backported for the 4.8 branch. + * Tighten build dependency on libmpc-dev to ensure using libmpc3. + * Re-add build dependency on locales. + * Enable multilib build for gdc. + * Add build-deps on libn32gcc1 and lib64gcc1 on mips/mipsel. + * Fix libgcc-dbg dependencies on hppa and m68k. Closes: #707745. + * Install host specific libstdc++ headers into the host include dir. + Closes: #707753. + * Enable Go for sparc64. + * Fix host specific c++ include dir on kfreebsd-amd64. Closes: #707957. + + [ Thorsten Glaser ] + * Regenerate m68k patches. Closes: #707766. + + [ Aurelien Jarno ] + * Fix libgcc1 symbols file for sparc64. + + -- Matthias Klose Sun, 12 May 2013 19:26:50 +0200 + +gcc-4.8 (4.8.0-6ubuntu1) saucy; urgency=low + + * Update to SVN 20130508 (r198714) from the gcc-4_8-branch. + + -- Matthias Klose Wed, 08 May 2013 18:39:15 +0200 + +gcc-4.8 (4.8.0-6) unstable; urgency=low + + * Update to SVN 20130507 (r198699) from the gcc-4_8-branch. + + [ Samuel Thibault ] + * Backport r195826 to fix gdb build on hurd-i386. + + [ Matthias Klose ] + * Drop build dependency on locales for this upload. + + -- Matthias Klose Wed, 08 May 2013 01:17:15 +0200 + +gcc-4.8 (4.8.0-5) unstable; urgency=low + + * Update to SVN 20130506 (r198641) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Stop building the spu cross compilers on powerpc and ppc64. + * Merge back changes from gnat-4.8 4.8.0-1~exp2. + + [Ludovic Brenta] + * debian/patches/ada-libgnatprj.diff: do not include indepsw.o in the + library, it is used only in the gnattools. + + -- Matthias Klose Mon, 06 May 2013 21:49:44 +0200 + +gcc-4.8 (4.8.0-4ubuntu4) saucy; urgency=low + + * Update to SVN 20130503 (r198582) from the gcc-4_8-branch. + + -- Matthias Klose Fri, 03 May 2013 20:49:45 +0200 + +gcc-4.8 (4.8.0-4ubuntu3) saucy; urgency=low + + * Update to SVN 20130501 (r198500) from the gcc-4_8-branch. + + -- Matthias Klose Wed, 01 May 2013 19:12:39 +0200 + +gcc-4.8 (4.8.0-4ubuntu2) saucy; urgency=low + + * Update to SVN 20130426 (r198340) from the gcc-4_8-branch. + * Stop building the spu cross compilers on powerpc and ppc64. + * Merge back changes from gnat-4.8 4.8.0-1~exp2. + + -- Matthias Klose Fri, 26 Apr 2013 16:59:06 +0200 + +gcc-4.8 (4.8.0-4ubuntu1) saucy; urgency=low * Merge with Debian, remaining changes: - Build from the upstream source. diff -Nru gcc-4.8-4.8.0/debian/changelog-4.4 gcc-4.8-4.8.1/debian/changelog-4.4 --- gcc-4.8-4.8.0/debian/changelog-4.4 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/changelog-4.4 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ - * Closing reports reported against gcc-4.1 and fixed in gcc-4.4: - - General - + - - C - + - - C++/libstdc++ - + - - Fortran - - Java - - Architecture specific: - - mips - - sparc - * Closing reports reported against gcc-4.2 and fixed in gcc-4.4: - - General - + - - C - + - - C++/libstdc++ - + - - Fortran - - Java - - Architecture specific: - - mips - - sparc - * Closing reports reported against gcc-4.3 and fixed in gcc-4.4: - - General - + - - C - + - - C++/libstdc++ - + - - Fortran - - Java - - Architecture specific: - - mips - - sparc diff -Nru gcc-4.8-4.8.0/debian/control gcc-4.8-4.8.1/debian/control --- gcc-4.8-4.8.0/debian/control 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/control 2013-06-05 12:12:51.000000000 +0000 @@ -6,14 +6,16 @@ Uploaders: Matthias Klose Standards-Version: 3.9.4 Build-Depends: debhelper (>= 5.0.62), g++-multilib [amd64 armel armhf i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 s390x sparc x32], - libc6.1-dev (>= 2.13-0ubuntu6) [alpha ia64] | libc0.3-dev (>= 2.13-0ubuntu6) [hurd-i386] | libc0.1-dev (>= 2.13-0ubuntu6) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= 2.13-0ubuntu6), libc6-dev (>= 2.13-31) [armel armhf], libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-s390 [s390x], libc6-dev-s390x [s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64 s390x x32], lib64gcc1 [i386 powerpc sparc s390 x32], libc6-dev-mips64 [mips mipsel], libc6-dev-mipsn32 [mips mipsel], libc6-dev-x32 [amd64 i386], libx32gcc1 [amd64 i386], libc6-dev-armhf [armel], libc6-dev-armel [armhf], - m4, libtool, autoconf2.64, automake (>= 1:1.11), automake (<< 1:1.12), + libc6.1-dev (>= 2.13-0ubuntu6) [alpha ia64] | libc0.3-dev (>= 2.13-0ubuntu6) [hurd-i386] | libc0.1-dev (>= 2.13-0ubuntu6) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= 2.13-0ubuntu6), libc6-dev (>= 2.13-31) [armel armhf], + libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-s390 [s390x], libc6-dev-s390x [s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64 s390x x32], libn32gcc1 [mips mipsel], lib64gcc1 [i386 mips mipsel powerpc sparc s390 x32], libc6-dev-mips64 [mips mipsel], libc6-dev-mipsn32 [mips mipsel], libc6-dev-x32 [amd64 i386], libx32gcc1 [amd64 i386], libc6-dev-armhf [armel], libhfgcc1 [armel], libc6-dev-armel [armhf], libsfgcc1 [armhf], + libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-i386] | libc0.1-dbg [kfreebsd-i386 kfreebsd-amd64] | libc6-dbg, + m4, libtool, autoconf2.64, libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], zlib1g-dev, gawk, lzma, xz-utils, patchutils, binutils (>= 2.22) | binutils-multiarch (>= 2.22), binutils-hppa64 (>= 2.22) [hppa], gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, texinfo (>= 4.3), locales, sharutils, - procps, netbase, binutils-spu (>= 2.22) [powerpc ppc64], newlib-spu (>= 1.16.0) [powerpc ppc64], + procps, zlib1g-dev, libantlr-java, python, libffi-dev, fastjar, libmagic-dev, libecj-java (>= 3.3.0-2), zip, libasound2-dev [ !hurd-any !kfreebsd-any], libxtst-dev, libxt-dev, libgtk2.0-dev (>= 2.4.4-2), libart-2.0-dev, libcairo2-dev, g++-4.8 [armel armhf], netbase, libcloog-isl-dev (>= 0.18), libmpc-dev, libmpfr-dev (>= 3.0.0-9~), libgmp-dev (>= 2:5.0.1~), dejagnu [!m68k !hurd-i386 !hurd-alpha], autogen, realpath (>= 1.9.12), chrpath, lsb-release, quilt Build-Depends-Indep: doxygen (>= 1.7.2), graphviz (>= 2.2), ghostscript, texlive-latex-base, xsltproc, libxml2-utils, docbook-xsl-ns, @@ -294,7 +296,7 @@ Priority: optional Depends: gcc-4.8-base (= ${gcc:Version}), cpp-4.8 (= ${gcc:Version}), binutils (>= ${binutils:Version}), libgcc-4.8-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} Recommends: ${dep:libcdev} -Suggests: ${gcc:multilib}, libmudflap0-4.8-dev (= ${gcc:Version}), gcc-4.8-doc (>= ${gcc:SoftVersion}), gcc-4.8-locales (>= ${gcc:SoftVersion}), libgcc1-dbg (>= ${gcc:EpochVersion}), libgomp1-dbg (>= ${gcc:Version}), libitm1-dbg (>= ${gcc:Version}), libatomic1-dbg (>= ${gcc:Version}), libasan0-dbg (>= ${gcc:Version}), libtsan0-dbg (>= ${gcc:Version}), libbacktrace1-dbg (>= ${gcc:Version}), libquadmath0-dbg (>= ${gcc:Version}), libmudflap0-dbg (>= ${gcc:Version}), ${dep:libcloog}, ${dep:gold} +Suggests: ${gcc:multilib}, libmudflap0-4.8-dev (= ${gcc:Version}), gcc-4.8-doc (>= ${gcc:SoftVersion}), gcc-4.8-locales (>= ${gcc:SoftVersion}), libgcc1-dbg (>= ${libgcc:Version}), libgomp1-dbg (>= ${gcc:Version}), libitm1-dbg (>= ${gcc:Version}), libatomic1-dbg (>= ${gcc:Version}), libasan0-dbg (>= ${gcc:Version}), libtsan0-dbg (>= ${gcc:Version}), libbacktrace1-dbg (>= ${gcc:Version}), libquadmath0-dbg (>= ${gcc:Version}), libmudflap0-dbg (>= ${gcc:Version}), ${dep:libcloog}, ${dep:gold} Provides: c-compiler Description: GNU C compiler This is the GNU C compiler, a fairly portable optimizing compiler for C. @@ -330,34 +332,6 @@ Description: GNU C compiler (cross compiler for hppa64) This is the GNU C compiler, a fairly portable optimizing compiler for C. -Package: gcc-4.8-spu -Architecture: powerpc ppc64 -Section: devel -Priority: optional -Depends: gcc-4.8-base (= ${gcc:Version}), binutils-spu (>= 2.18.1~cvs20080103-3), newlib-spu, ${shlibs:Depends}, ${misc:Depends} -Provides: spu-gcc -Description: SPU cross-compiler (preprocessor and C compiler) - GNU Compiler Collection for the Cell Broadband Engine SPU (preprocessor - and C compiler). - -Package: g++-4.8-spu -Architecture: powerpc ppc64 -Section: devel -Priority: optional -Depends: gcc-4.8-base (= ${gcc:Version}), gcc-4.8-spu (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} -Provides: spu-g++ -Description: SPU cross-compiler (C++ compiler) - GNU Compiler Collection for the Cell Broadband Engine SPU (C++ compiler). - -Package: gfortran-4.8-spu -Architecture: powerpc ppc64 -Section: devel -Priority: optional -Depends: gcc-4.8-base (= ${gcc:Version}), gcc-4.8-spu (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} -Provides: spu-gfortran -Description: SPU cross-compiler (Fortran compiler) - GNU Compiler Collection for the Cell Broadband Engine SPU (Fortran compiler). - Package: cpp-4.8 Architecture: any Section: interpreters @@ -1405,7 +1379,7 @@ Multi-Arch: same Provides: libobjc4-dbg-armel [armel], libobjc4-dbg-armhf [armhf] Priority: extra -Depends: gcc-4.8-base (= ${gcc:Version}), libobjc4 (= ${gcc:Version}), libgcc1-dbg (>= ${gcc:EpochVersion}), ${misc:Depends} +Depends: gcc-4.8-base (= ${gcc:Version}), libobjc4 (= ${gcc:Version}), libgcc1-dbg (>= ${libgcc:Version}), ${misc:Depends} Description: Runtime library for GNU Objective-C applications (debug symbols) Library needed for GNU ObjC applications linked against the shared library. @@ -1624,7 +1598,7 @@ Multi-Arch: same Provides: libgfortran3-dbg-armel [armel], libgfortran3-dbg-armhf [armhf] Priority: extra -Depends: gcc-4.8-base (= ${gcc:Version}), libgfortran3 (= ${gcc:Version}), ${misc:Depends} +Depends: gcc-4.8-base (= ${gcc:Version}), libgfortran3 (= ${gcc:Version}), libgcc1-dbg (>= ${libgcc:Version}), ${misc:Depends} Description: Runtime library for GNU Fortran applications (debug symbols) Library needed for GNU Fortran applications linked against the shared library. @@ -1869,6 +1843,144 @@ Library needed for GNU Go applications linked against the shared library. +Package: gcj-4.8-jdk +Section: java +Architecture: any +Priority: optional +Depends: gcc-4.8-base (= ${gcc:Version}), ${dep:gcj}, ${dep:libcdev}, gcj-4.8-jre (= ${gcj:Version}), libgcj14-dev (= ${gcj:Version}), ${dep:ecj}, fastjar, libgcj-bc, java-common, libantlr-java, ${shlibs:Depends}, dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Recommends: libecj-java-gcj +Suggests: gcj-4.8-source (>= ${gcj:SoftVersion}), libgcj14-dbg (>= ${gcc:Version}) +Provides: java-compiler, java-sdk, java2-sdk, java5-sdk +Conflicts: gcj-4.4, cpp-4.1 (<< 4.1.1), gcc-4.1 (<< 4.1.1) +Replaces: libgcj11 (<< 4.5-20100101-1) +Description: gcj and classpath development tools for Java(TM) + GCJ is a front end to the GCC compiler which can natively compile both + Java(tm) source and bytecode files. The compiler can also generate class + files. Other java development tools from classpath are included in this + package. + . + The package contains as well a collection of wrapper scripts and symlinks. + It is meant to provide a Java-SDK-like interface to the GCJ tool set. + +Package: gcj-4.8-jre-headless +Priority: optional +Section: java +Architecture: any +Depends: gcc-4.8-base (= ${gcc:Version}), gcj-4.8-jre-lib (>= ${gcj:SoftVersion}), libgcj14 (= ${gcj:Version}), ${dep:prctl}, ${shlibs:Depends}, ${misc:Depends} +Suggests: fastjar, gcj-4.8-jdk (= ${gcj:Version}), libgcj14-awt (= ${gcj:Version}) +Conflicts: gij-4.4, java-gcj-compat (<< 1.0.76-4) +Replaces: gcj-4.8-jre-lib (<< 4.8-20121219-0) +Provides: java5-runtime-headless, java2-runtime-headless, java1-runtime-headless, java-runtime-headless +Description: Java runtime environment using GIJ/classpath (headless version) + GIJ is a Java bytecode interpreter, not limited to interpreting bytecode. + It includes a class loader which can dynamically load shared objects, so + it is possible to give it the name of a class which has been compiled and + put into a shared library on the class path. + . + The package contains as well a collection of wrapper scripts and symlinks. + It is meant to provide a Java-RTE-like interface to the GIJ/GCJ tool set, + limited to the headless tools and libraries. + +Package: gcj-4.8-jre +Section: java +Architecture: any +Priority: optional +Depends: gcc-4.8-base (= ${gcc:Version}), gcj-4.8-jre-headless (= ${gcj:Version}), libgcj14-awt (= ${gcj:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: java5-runtime, java2-runtime, java1-runtime, java-runtime +Description: Java runtime environment using GIJ/classpath + GIJ is a Java bytecode interpreter, not limited to interpreting bytecode. + It includes a class loader which can dynamically load shared objects, so + it is possible to give it the name of a class which has been compiled and + put into a shared library on the class path. + . + The package contains as well a collection of wrapper scripts and symlinks. + It is meant to provide a Java-RTE-like interface to the GIJ/GCJ tool set. + +Package: libgcj14 +Section: libs +Architecture: any +Priority: optional +Pre-Depends: multiarch-support +Multi-Arch: same +Depends: gcc-4.8-base (>= ${gcc:SoftVersion}), libgcj-common (>= 1:4.1.1-21), ${shlibs:Depends}, ${misc:Depends} +Recommends: gcj-4.8-jre-lib (>= ${gcj:SoftVersion}) +Suggests: libgcj14-dbg (>= ${gcc:Version}), libgcj14-awt (= ${gcj:Version}) +Replaces: gij-4.4 (<< 4.4.0-1) +Description: Java runtime library for use with gcj + This is the runtime that goes along with the gcj front end to + gcc. libgcj includes parts of the Java Class Libraries, plus glue to + connect the libraries to the compiler and the underlying OS. + . + To show file names and line numbers in stack traces, the packages + libgcj14-dbg and binutils are required. + +Package: gcj-4.8-jre-lib +Section: java +Architecture: all +Priority: optional +Depends: gcc-4.8-base (>= ${gcc:SoftVersion}), libgcj14 (>= ${gcj:SoftVersion}), ${misc:Depends} +Description: Java runtime library for use with gcj (jar files) + This is the jar file that goes along with the gcj front end to gcc. + +Package: libgcj14-awt +Section: libs +Architecture: any +Priority: optional +Pre-Depends: multiarch-support +Multi-Arch: same +Depends: gcc-4.8-base (>= ${gcc:SoftVersion}), libgcj14 (= ${gcj:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: ${pkg:gcjqt} +Description: AWT peer runtime libraries for use with gcj + These are runtime libraries holding the AWT peer implementations + for libgcj (currently the GTK+ based peer library is required, the + QT bases library is not built). + +Package: libgcj14-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Priority: optional +Depends: gcc-4.8-base (= ${gcc:Version}), gcj-4.8-jdk (= ${gcj:Version}), gcj-4.8-jre-lib (>= ${gcj:SoftVersion}), libgcj14-awt (= ${gcj:Version}), libgcj-bc, ${pkg:gcjgtk}, ${pkg:gcjqt}, zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} +Suggests: libgcj-doc +Description: Java development headers for use with gcj + These are the development headers that go along with the gcj front end + to gcc. libgcj includes parts of the Java Class Libraries, plus glue + to connect the libraries to the compiler and the underlying OS. + +Package: libgcj14-dbg +Section: debug +Architecture: any +Priority: extra +Pre-Depends: multiarch-support +Multi-Arch: same +Depends: gcc-4.8-base (= ${gcc:Version}), libgcj14 (= ${gcj:Version}), ${misc:Depends} +Recommends: binutils, libc6-dbg | libc-dbg +Description: Debugging symbols for libraries provided in libgcj14-dev + The package provides debugging symbols for the libraries provided + in libgcj14-dev. + . + binutils is required to show file names and line numbers in stack traces. + +Package: gcj-4.8-source +Section: java +Architecture: all +Priority: optional +Depends: gcc-4.8-base (>= ${gcc:SoftVersion}), gcj-4.8-jdk (>= ${gcj:SoftVersion}), ${misc:Depends} +Description: GCJ java sources for use in IDEs like eclipse and netbeans + These are the java source files packaged as a zip file for use in development + environments like eclipse and netbeans. + +Package: libgcj-doc +Section: doc +Architecture: all +Priority: optional +Depends: gcc-4.8-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Enhances: libgcj14-dev +Provides: classpath-doc +Description: libgcj API documentation and example programs + Autogenerated documentation describing the API of the libgcj library. + Sources and precompiled example programs from the classpath library. + Package: libstdc++6 Architecture: any Section: libs @@ -1997,7 +2109,7 @@ Architecture: any Section: debug Priority: extra -Depends: gcc-4.8-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), libgcc1-dbg (>= ${gcc:EpochVersion}), ${shlibs:Depends}, ${misc:Depends} +Depends: gcc-4.8-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), libgcc1-dbg (>= ${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends} Multi-Arch: same Provides: libstdc++6-4.8-dbg-armel [armel], libstdc++6-4.8-dbg-armhf [armhf] Recommends: libstdc++-4.8-dev (= ${gcc:Version}) @@ -2158,6 +2270,41 @@ alphabetical list, compound list, file list, namespace members, compound members and file members. +Package: gdc-4.8 +Architecture: any +Priority: optional +Depends: gcc-4.8-base (>= ${gcc:SoftVersion}), g++-4.8 (>= ${gcc:SoftVersion}), libphobos-4.8-dev (= ${gdc:Version}) [!avr !hppa !ia64 !m68k !mips !mipsel !powerpc !powerpcspe !ppc64 !s390 !s390x !sh4 !sparc !sparc64 !alpha !hurd-alpha !arm !armel !armhf !hurd-i386 !hurd-alpha], ${shlibs:Depends}, ${misc:Depends} +Provides: gdc, d-compiler, d-v2-compiler +Replaces: gdc (<< 4.4.6-5) +Description: GNU D compiler (version 2), based on the GCC backend + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: libphobos-4.8-dev +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gdc-4.8 (= ${gdc:Version}), zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} +Provides: libphobos-dev +Suggests: libphobos-4.8-dbg +Description: Phobos D standard library + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libphobos-4.8-dbg +Section: debug +Architecture: amd64 i386 +Priority: extra +Depends: gdc-4.8 (= ${gdc:Version}), libphobos-4.8-dev (= ${gdc:Version}), ${misc:Depends} +Provides: libphobos-dbg +Description: The Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + Package: gcc-4.8-soft-float Architecture: arm armel armhf Priority: optional @@ -2194,7 +2341,7 @@ Package: gcc-4.8-source Architecture: all Priority: optional -Depends: make (>= 3.81), autoconf2.64, automake, quilt, patchutils, gawk, ${misc:Depends} +Depends: make (>= 3.81), autoconf2.64, quilt, patchutils, gawk, ${misc:Depends} Description: Source of the GNU Compiler Collection This package contains the sources and patches which are needed to build the GNU Compiler Collection (GCC). diff -Nru gcc-4.8-4.8.0/debian/control.m4 gcc-4.8-4.8.1/debian/control.m4 --- gcc-4.8-4.8.0/debian/control.m4 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/control.m4 2013-06-05 12:12:51.000000000 +0000 @@ -61,14 +61,16 @@ bison (>= 1:2.3), flex, realpath (>= 1.9.12), lsb-release, quilt ',`dnl native Build-Depends: debhelper (>= 5.0.62), GCC_MULTILIB_BUILD_DEP - LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP + LIBC_BUILD_DEP, + LIBC_BIARCH_BUILD_DEP + LIBC_DBG_DEP AUTO_BUILD_DEP AUTOGEN_BUILD_DEP libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], zlib1g-dev, gawk, lzma, xz-utils, patchutils, BINUTILS_BUILD_DEP, binutils-hppa64 (>= BINUTILSV) [hppa], gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, texinfo (>= 4.3), locales, sharutils, - procps, FORTRAN_BUILD_DEP JAVA_BUILD_DEP GNAT_BUILD_DEP GO_BUILD_DEP GDC_BUILD_DEP SPU_BUILD_DEP + procps, FORTRAN_BUILD_DEP JAVA_BUILD_DEP GNAT_BUILD_DEP GO_BUILD_DEP GDC_BUILD_DEP CLOOG_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP CHECK_BUILD_DEP realpath (>= 1.9.12), chrpath, lsb-release, quilt Build-Depends-Indep: LIBSTDCXX_BUILD_INDEP JAVA_BUILD_INDEP @@ -638,8 +640,10 @@ This package contains files for TARGET architecture, for use in cross-compile environment. ')`'dnl +')`'dnl libx32gcc ifenabled(`cdev',` +ifenabled(`x32dev',` Package: libx32gcc`'PV-dev`'LS Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') Section: libdevel @@ -650,8 +654,8 @@ Description: GCC support library (x32 development files) This package contains the headers and static library files necessary for building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl x32dev ')`'dnl cdev -')`'dnl libx32gcc ifdef(`TARGET', `', ` ifenabled(`libgmath',` @@ -694,7 +698,7 @@ Priority: ifdef(`TARGET',`extra',`PRI(optional)') Depends: BASEDEP, cpp`'PV`'TS (= ${gcc:Version}), binutils`'TS (>= ${binutils:Version}), libdevdep(gcc`'PV-dev`',), ${shlibs:Depends}, ${misc:Depends} Recommends: ${dep:libcdev} -Suggests: ${gcc:multilib}, libdevdep(mudflap`'MF_SO`'PV-dev,,=), gcc`'PV-doc (>= ${gcc:SoftVersion}), gcc`'PV-locales (>= ${gcc:SoftVersion}), libdbgdep(gcc`'GCC_SO-dbg,,>=,${gcc:EpochVersion}), libdbgdep(gomp`'GOMP_SO-dbg,), libdbgdep(itm`'ITM_SO-dbg,), libdbgdep(atomic`'ATOMIC_SO-dbg,), libdbgdep(asan`'ASAN_SO-dbg,), libdbgdep(tsan`'TSAN_SO-dbg,), libdbgdep(backtrace`'BTRACE_SO-dbg,), libdbgdep(quadmath`'QMATH_SO-dbg,), libdbgdep(mudflap`'MF_SO-dbg,), ${dep:libcloog}, ${dep:gold} +Suggests: ${gcc:multilib}, libdevdep(mudflap`'MF_SO`'PV-dev,,=), gcc`'PV-doc (>= ${gcc:SoftVersion}), gcc`'PV-locales (>= ${gcc:SoftVersion}), libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), libdbgdep(gomp`'GOMP_SO-dbg,), libdbgdep(itm`'ITM_SO-dbg,), libdbgdep(atomic`'ATOMIC_SO-dbg,), libdbgdep(asan`'ASAN_SO-dbg,), libdbgdep(tsan`'TSAN_SO-dbg,), libdbgdep(backtrace`'BTRACE_SO-dbg,), libdbgdep(quadmath`'QMATH_SO-dbg,), libdbgdep(mudflap`'MF_SO-dbg,), ${dep:libcloog}, ${dep:gold} Provides: c-compiler`'TS BUILT_USING`'dnl Description: GNU C compiler`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') @@ -743,40 +747,6 @@ BUILT_USING`'dnl Description: GNU C compiler (cross compiler for hppa64) This is the GNU C compiler, a fairly portable optimizing compiler for C. - -ifdef(`TARGET', `', ` -Package: gcc`'PV-spu -Architecture: powerpc ppc64 -Section: devel -Priority: PRI(optional) -Depends: BASEDEP, binutils-spu (>= 2.18.1~cvs20080103-3), newlib-spu, ${shlibs:Depends}, ${misc:Depends} -Provides: spu-gcc -BUILT_USING`'dnl -Description: SPU cross-compiler (preprocessor and C compiler) - GNU Compiler Collection for the Cell Broadband Engine SPU (preprocessor - and C compiler). - -Package: g++`'PV-spu -Architecture: powerpc ppc64 -Section: devel -Priority: PRI(optional) -Depends: BASEDEP, gcc`'PV-spu (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} -Provides: spu-g++ -BUILT_USING`'dnl -Description: SPU cross-compiler (C++ compiler) - GNU Compiler Collection for the Cell Broadband Engine SPU (C++ compiler). - -Package: gfortran`'PV-spu -Architecture: powerpc ppc64 -Section: devel -Priority: PRI(optional) -Depends: BASEDEP, gcc`'PV-spu (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} -Provides: spu-gfortran -BUILT_USING`'dnl -Description: SPU cross-compiler (Fortran compiler) - GNU Compiler Collection for the Cell Broadband Engine SPU (Fortran compiler). - -')`'dnl native ')`'dnl cdev ifenabled(`cdev',` @@ -2438,7 +2408,7 @@ This package contains the headers and static library files needed to build GNU ObjC applications. -ifenabled(`libx32objc',` +ifenabled(`x32dev',` Package: libx32objc`'PV-dev`'LS Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') Section: libdevel @@ -2495,7 +2465,7 @@ ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same ')`Provides: libobjc'OBJC_SO`-dbg-armel [armel], libobjc'OBJC_SO`-dbg-armhf [armhf]') Priority: extra -Depends: BASEDEP, libdep(objc`'OBJC_SO,,=), libdbgdep(gcc`'GCC_SO-dbg,,>=,${gcc:EpochVersion}), ${misc:Depends} +Depends: BASEDEP, libdep(objc`'OBJC_SO,,=), libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} BUILT_USING`'dnl Description: Runtime library for GNU Objective-C applications (debug symbols) Library needed for GNU ObjC applications linked against the shared library. @@ -2722,7 +2692,7 @@ This package contains the headers and static library files needed to build GNU Fortran applications. -ifenabled(`libx32gfortran',` +ifenabled(`x32dev',` Package: libx32gfortran`'PV-dev`'LS Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') Section: libdevel @@ -2780,7 +2750,7 @@ ifdef(`TARGET',`dnl',ifdef(`MULTIARCH', `Multi-Arch: same ')`Provides: libgfortran'FORTRAN_SO`-dbg-armel [armel], libgfortran'FORTRAN_SO`-dbg-armhf [armhf]') Priority: extra -Depends: BASEDEP, libdep(gfortran`'FORTRAN_SO,,=), ${misc:Depends} +Depends: BASEDEP, libdep(gfortran`'FORTRAN_SO,,=), libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} BUILT_USING`'dnl Description: Runtime library for GNU Fortran applications (debug symbols) Library needed for GNU Fortran applications linked against the @@ -3303,7 +3273,7 @@ Section: java Architecture: all Priority: PRI(optional) -Depends: gcj`'PV-base (>= ${gcj:SoftVersion}), gcj`'PV-jdk (>= ${gcj:SoftVersion}), ${misc:Depends} +Depends: SOFTBASEDEP, gcj`'PV-jdk (>= ${gcj:SoftVersion}), ${misc:Depends} BUILT_USING`'dnl Description: GCJ java sources for use in IDEs like eclipse and netbeans These are the java source files packaged as a zip file for use in development @@ -3315,7 +3285,7 @@ Section: doc Architecture: all Priority: PRI(optional) -Depends: gcj`'PV-base (>= ${gcj:SoftVersion}), ${misc:Depends} +Depends: SOFTBASEDEP, ${misc:Depends} Enhances: libgcj`'GCJ_SO-dev Provides: classpath-doc BUILT_USING`'dnl @@ -3558,7 +3528,7 @@ Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') Section: debug Priority: extra -Depends: BASEDEP, libdep(stdc++CXX_SO,), libdbgdep(gcc`'GCC_SO-dbg,,>=,${gcc:EpochVersion}), ${shlibs:Depends}, ${misc:Depends} +Depends: BASEDEP, libdep(stdc++CXX_SO,), libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends} ifdef(`TARGET',`Provides: libstdc++CXX_SO-dbg-TARGET-dcv1',`dnl ifdef(`MULTIARCH', `Multi-Arch: same',`dnl') Provides: libstdc++'CXX_SO`'PV`-dbg-armel [armel], libstdc++'CXX_SO`'PV`-dbg-armhf [armhf]dnl @@ -3686,7 +3656,7 @@ environment. ')`'dnl -ifenabled(`libx32dbgcxx',` +ifenabled(`x32dev',` Package: libx32stdc++`'PV-dev`'LS Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') Section: ifdef(`TARGET',`devel',`libdevel') @@ -3705,7 +3675,9 @@ This package contains files for TARGET architecture, for use in cross-compile environment. ')`'dnl +')`'dnl x32dev +ifenabled(`libx32dbgcxx',` Package: libx32stdc++CXX_SO`'PV-dbg`'LS Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') Section: debug @@ -3829,7 +3801,6 @@ ')`'dnl Depends: gnat`'PV-base (= ${gnat:Version}), gcc`'PV (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} Suggests: gnat`'PV-doc, ada-reference-manual-html, ada-reference-manual-info, ada-reference-manual-pdf, ada-reference-manual-text, gnat`'-GNAT_V-sjlj -Provides: ada-compiler Conflicts: gnat (<< 4.1), gnat-3.1, gnat-3.2, gnat-3.3, gnat-3.4, gnat-3.5, gnat-4.0, gnat-4.1, gnat-4.2, gnat-4.3, gnat-4.4, gnat-4.6 BUILT_USING`'dnl Description: GNU Ada compiler @@ -3895,7 +3866,7 @@ Section: libdevel Architecture: any Priority: extra -Depends: gnat`'PV-base (= ${gnat:Version}), gnat`'PV (= ${gnat:Version}), ada-compiler, +Depends: gnat`'PV-base (= ${gnat:Version}), gnat`'PV (= ${gnat:Version}), libgnatvsn`'GNAT_V (= ${gnat:Version}), ${misc:Depends} Conflicts: libgnatvsn-dev (<< `'GNAT_V), libgnatvsn4.1-dev, libgnatvsn4.3-dev, libgnatvsn4.4-dev, libgnatvsn4.5-dev, libgnatvsn4.6-dev BUILT_USING`'dnl @@ -3936,7 +3907,7 @@ Priority: extra Section: debug Depends: gnat`'PV-base (= ${gnat:Version}), libgnatvsn`'GNAT_V (= ${gnat:Version}), ${misc:Depends} -Suggests: gnat, ada-compiler +Suggests: gnat BUILT_USING`'dnl Description: GNU Ada compiler selected components (debugging symbols) GNAT is a compiler for the Ada programming language. It produces optimized @@ -3952,7 +3923,7 @@ Section: libdevel Architecture: any Priority: extra -Depends: gnat`'PV-base (= ${gnat:Version}), gnat`'PV (= ${gnat:Version}), ada-compiler, +Depends: gnat`'PV-base (= ${gnat:Version}), gnat`'PV (= ${gnat:Version}), libgnatprj`'GNAT_V (= ${gnat:Version}), libgnatvsn`'GNAT_V-dev (= ${gnat:Version}), ${misc:Depends} Conflicts: libgnatprj-dev (<< `'GNAT_V), libgnatprj4.1-dev, libgnatprj4.3-dev, libgnatprj4.4-dev, libgnatprj4.5-dev, libgnatprj4.6-dev BUILT_USING`'dnl @@ -3999,7 +3970,7 @@ Priority: extra Section: debug Depends: gnat`'PV-base (= ${gnat:Version}), libgnatprj`'GNAT_V (= ${gnat:Version}), ${misc:Depends} -Suggests: gnat, ada-compiler +Suggests: gnat BUILT_USING`'dnl Description: GNU Ada compiler Project Manager (debugging symbols) GNAT is a compiler for the Ada programming language. It produces optimized @@ -4068,11 +4039,12 @@ ifenabled(`libphobos',` Package: libphobos`'PHOBOS_V`'PV`'TS-dev -Architecture: any +Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') Section: libdevel Priority: PRI(optional) Depends: gdc`'PV`'TS (= ${gdc:Version}), zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} Provides: libphobos`'PHOBOS_V`'TS-dev +Suggests: libphobos`'PHOBOS_V`'PV`'TS-dbg BUILT_USING`'dnl Description: Phobos D standard library This is the Phobos standard library that comes with the D2 compiler. @@ -4081,7 +4053,7 @@ Package: libphobos`'PHOBOS_V`'PV`'TS-dbg Section: debug -Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') Priority: extra Depends: gdc`'PV`'TS (= ${gdc:Version}), libphobos`'PHOBOS_V`'PV-dev (= ${gdc:Version}), ${misc:Depends} Provides: libphobos`'PHOBOS_V`'TS-dbg @@ -4158,7 +4130,7 @@ Package: gcc`'PV-source Architecture: all Priority: PRI(optional) -Depends: make (>= 3.81), autoconf2.64, automake, quilt, patchutils, gawk, ${misc:Depends} +Depends: make (>= 3.81), autoconf2.64, quilt, patchutils, gawk, ${misc:Depends} Description: Source of the GNU Compiler Collection This package contains the sources and patches which are needed to build the GNU Compiler Collection (GCC). diff -Nru gcc-4.8-4.8.0/debian/g++-BV-spu.overrides gcc-4.8-4.8.1/debian/g++-BV-spu.overrides --- gcc-4.8-4.8.0/debian/g++-BV-spu.overrides 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/g++-BV-spu.overrides 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -g++-@BV@-spu binary: non-standard-dir-in-usr usr/spu/ -g++-@BV@-spu binary: file-in-unusual-dir diff -Nru gcc-4.8-4.8.0/debian/gcc-BV-spu.overrides gcc-4.8-4.8.1/debian/gcc-BV-spu.overrides --- gcc-4.8-4.8.0/debian/gcc-BV-spu.overrides 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/gcc-BV-spu.overrides 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -gcc-@BV@-spu binary: non-standard-dir-in-usr usr/spu/ -gcc-@BV@-spu binary: file-in-unusual-dir diff -Nru gcc-4.8-4.8.0/debian/gfortran-BV-spu.overrides gcc-4.8-4.8.1/debian/gfortran-BV-spu.overrides --- gcc-4.8-4.8.0/debian/gfortran-BV-spu.overrides 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/gfortran-BV-spu.overrides 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -gfortran-@BV@-spu binary: non-standard-dir-in-usr usr/spu/ -gfortran-@BV@-spu binary: file-in-unusual-dir diff -Nru gcc-4.8-4.8.0/debian/libgcc1.symbols.powerpcspe gcc-4.8-4.8.1/debian/libgcc1.symbols.powerpcspe --- gcc-4.8-4.8.0/debian/libgcc1.symbols.powerpcspe 1970-01-01 00:00:00.000000000 +0000 +++ gcc-4.8-4.8.1/debian/libgcc1.symbols.powerpcspe 2013-06-05 12:12:51.000000000 +0000 @@ -0,0 +1,142 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.1.0@GCC_4.1.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __adddf3@GCC_3.0 1:4.1.1 + __addsf3@GCC_3.0 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clrsbdi2@GCC_4.7.0 1:4.7 + __clrsbsi2@GCC_4.7.0 1:4.7 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divtc3@GCC_4.1.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqdf2@GCC_3.0 1:4.1.1 + __eqsf2@GCC_3.0 1:4.1.1 + __extendsfdf2@GCC_3.0 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfsi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfsi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.1.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.1.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.1.0 1:4.1.1 + __floatsidf@GCC_3.0 1:4.1.1 + __floatsisf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __floatunsidf@GCC_4.2.0 1:4.2.1 + __floatunsisf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gcc_qadd@GCC_4.1.0 1:4.1.1 + __gcc_qdiv@GCC_4.1.0 1:4.1.1 + __gcc_qmul@GCC_4.1.0 1:4.1.1 + __gcc_qsub@GCC_4.1.0 1:4.1.1 + __gedf2@GCC_3.0 1:4.1.1 + __gesf2@GCC_3.0 1:4.1.1 + __gtdf2@GCC_3.0 1:4.1.1 + __gtsf2@GCC_3.0 1:4.1.1 + __ledf2@GCC_3.0 1:4.1.1 + __lesf2@GCC_3.0 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __ltdf2@GCC_3.0 1:4.1.1 + __ltsf2@GCC_3.0 1:4.1.1 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldf3@GCC_3.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulsf3@GCC_3.0 1:4.1.1 + __multc3@GCC_4.1.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __nedf2@GCC_3.0 1:4.1.1 + __negdf2@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negsf2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __nesf2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.1.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subdf3@GCC_3.0 1:4.1.1 + __subsf3@GCC_3.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __trampoline_setup@GCC_3.4.2 1:4.1.1 + __truncdfsf2@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unorddf2@GCC_3.3.4 1:4.1.1 + __unordsf2@GCC_3.3.4 1:4.1.1 diff -Nru gcc-4.8-4.8.0/debian/libgcc1.symbols.sparc64 gcc-4.8-4.8.1/debian/libgcc1.symbols.sparc64 --- gcc-4.8-4.8.0/debian/libgcc1.symbols.sparc64 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/libgcc1.symbols.sparc64 2013-06-05 12:12:51.000000000 +0000 @@ -44,8 +44,6 @@ __clzdi2@GCC_3.4 1:4.1.1 __clzti2@GCC_3.4 1:4.1.1 __cmpti2@GCC_3.0 1:4.1.1 - __cpu_indicator_init@GCC_4.8.0 1:4.8 - __cpu_model@GCC_4.8.0 1:4.8 __ctzdi2@GCC_3.4 1:4.1.1 __ctzti2@GCC_3.4 1:4.1.1 __deregister_frame@GLIBC_2.2 1:4.1.1 diff -Nru gcc-4.8-4.8.0/debian/libgcj-doc.doc-base gcc-4.8-4.8.1/debian/libgcj-doc.doc-base --- gcc-4.8-4.8.0/debian/libgcj-doc.doc-base 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/libgcj-doc.doc-base 2013-06-05 12:12:51.000000000 +0000 @@ -2,9 +2,9 @@ Title: The GNU LibGCJ Classpath library Author: Various Abstract: Autogenerated documentation describing the libgcj - library (GCC 4.7), based on the classpath library. + library (GCC 4.8), based on the classpath library. Section: Programming/Java Format: html -Index: /usr/share/doc/gcj-4.7-base/api/index.html -Files: /usr/share/doc/gcj-4.7-base/api/*.html +Index: /usr/share/doc/gcc-4.8-base/api/index.html +Files: /usr/share/doc/gcc-4.8-base/api/*.html diff -Nru gcc-4.8-4.8.0/debian/libgfortran3.symbols.powerpcspe gcc-4.8-4.8.1/debian/libgfortran3.symbols.powerpcspe --- gcc-4.8-4.8.0/debian/libgfortran3.symbols.powerpcspe 1970-01-01 00:00:00.000000000 +0000 +++ gcc-4.8-4.8.1/debian/libgfortran3.symbols.powerpcspe 2013-06-05 12:12:51.000000000 +0000 @@ -0,0 +1,2 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" diff -Nru gcc-4.8-4.8.0/debian/libstdc++6.symbols.common gcc-4.8-4.8.1/debian/libstdc++6.symbols.common --- gcc-4.8-4.8.0/debian/libstdc++6.symbols.common 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/libstdc++6.symbols.common 2013-06-05 12:12:51.000000000 +0000 @@ -16,6 +16,7 @@ GLIBCXX_3.4.16@GLIBCXX_3.4.16 4.6.0 GLIBCXX_3.4.17@GLIBCXX_3.4.17 4.7 GLIBCXX_3.4.18@GLIBCXX_3.4.18 4.8 + GLIBCXX_3.4.19@GLIBCXX_3.4.19 4.8 GLIBCXX_3.4.1@GLIBCXX_3.4.1 4.1.1 GLIBCXX_3.4.2@GLIBCXX_3.4.2 4.1.1 GLIBCXX_3.4.3@GLIBCXX_3.4.3 4.1.1 @@ -2078,7 +2079,10 @@ _ZNSt6__norm15_List_node_base7reverseEv@GLIBCXX_3.4.9 4.2.1 _ZNSt6__norm15_List_node_base8transferEPS0_S1_@GLIBCXX_3.4.9 4.2.1 _ZNSt6__norm15_List_node_base9_M_unhookEv@GLIBCXX_3.4.14 4.5 - (arch=amd64 armel armhf i386 x32)_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 4.8 + _ZNSt6chrono3_V212steady_clock3nowEv@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono3_V212steady_clock9is_steadyE@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono3_V212system_clock3nowEv@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono3_V212system_clock9is_steadyE@GLIBCXX_3.4.19 4.8.1 _ZNSt6chrono12system_clock12is_monotonicE@GLIBCXX_3.4.11 4.4.0 _ZNSt6chrono12system_clock3nowEv@GLIBCXX_3.4.11 4.4.0 _ZNSt6locale11_M_coalesceERKS_S1_i@GLIBCXX_3.4 4.1.1 diff -Nru gcc-4.8-4.8.0/debian/libstdc++6.symbols.powerpcspe gcc-4.8-4.8.1/debian/libstdc++6.symbols.powerpcspe --- gcc-4.8-4.8.0/debian/libstdc++6.symbols.powerpcspe 1970-01-01 00:00:00.000000000 +0000 +++ gcc-4.8-4.8.1/debian/libstdc++6.symbols.powerpcspe 2013-06-05 12:12:51.000000000 +0000 @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 diff -Nru gcc-4.8-4.8.0/debian/locale-gen gcc-4.8-4.8.1/debian/locale-gen --- gcc-4.8-4.8.0/debian/locale-gen 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/locale-gen 2013-06-05 12:12:51.000000000 +0000 @@ -43,6 +43,7 @@ se_NO.UTF-8 UTF-8 ta_IN UTF-8 zh_TW BIG5 +zh_TW UTF-8 EOF echo "Generation complete." diff -Nru gcc-4.8-4.8.0/debian/patches/ada-default-project-path.diff gcc-4.8-4.8.1/debian/patches/ada-default-project-path.diff --- gcc-4.8-4.8.0/debian/patches/ada-default-project-path.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/ada-default-project-path.diff 2013-06-05 12:12:51.000000000 +0000 @@ -1,54 +1,92 @@ # DP: - Change the default search path for project files to the one specified # DP: by the Debian Policy for Ada: /usr/share/ada/adainclude. +Index: b/src/gcc/ada/Make-generated.in +=================================================================== --- a/src/gcc/ada/Make-generated.in +++ b/src/gcc/ada/Make-generated.in -@@ -104,7 +104,7 @@ +@@ -105,7 +105,7 @@ $(ECHO) " S1 : constant String := \"$(ADA_INCLUDE_DIR)/\";" >>tmp-sdefault.adb $(ECHO) " S2 : constant String := \"$(ADA_RTL_OBJ_DIR)/\";" >>tmp-sdefault.adb - $(ECHO) " S3 : constant String := \"$(target)/\";" >>tmp-sdefault.adb + $(ECHO) " S3 : constant String := \"$(target_noncanonical)/\";" >>tmp-sdefault.adb - $(ECHO) " S4 : constant String := \"$(libsubdir)/\";" >>tmp-sdefault.adb + $(ECHO) " S4 : constant String := \"/usr/share/ada/adainclude/\";" >>tmp-sdefault.adb $(ECHO) " function Include_Dir_Default_Name return String_Ptr is" >>tmp-sdefault.adb $(ECHO) " begin" >>tmp-sdefault.adb $(ECHO) " return Relocate_Path (S0, S1);" >>tmp-sdefault.adb +Index: b/src/gcc/ada/prj-env.adb +=================================================================== --- a/src/gcc/ada/prj-env.adb +++ b/src/gcc/ada/prj-env.adb -@@ -1923,41 +1923,10 @@ +@@ -25,7 +25,6 @@ + + with Fmap; + with Hostparm; +-with Makeutl; use Makeutl; + with Opt; + with Osint; use Osint; + with Output; use Output; +@@ -1884,6 +1883,7 @@ + (Self : in out Project_Search_Path; + Target_Name : String) + is ++ pragma Unreferenced (Target_Name); + Add_Default_Dir : Boolean := True; + First : Positive; + Last : Positive; +@@ -2018,59 +2018,10 @@ -- Set the initial value of Current_Project_Path - if Add_Default_Dir then - declare -- Prefix : String_Ptr := Sdefault.Search_Dir_Prefix; +- Prefix : String_Ptr; - - begin -- if Prefix = null then +- if Sdefault.Search_Dir_Prefix = null then +- +- -- gprbuild case +- - Prefix := new String'(Executable_Prefix_Path); - -- if Prefix.all /= "" then -- if Target_Name /= "" then -- Add_Str_To_Name_Buffer -- (Path_Separator & Prefix.all & -- "lib" & Directory_Separator & "gpr" & -- Directory_Separator & Target_Name); -- end if; +- else +- Prefix := new String'(Sdefault.Search_Dir_Prefix.all +- & ".." & Dir_Separator +- & ".." & Dir_Separator +- & ".." & Dir_Separator +- & ".." & Dir_Separator); +- end if; +- +- if Prefix.all /= "" then +- if Target_Name /= "" then +- +- -- $prefix/$target/lib/gnat - - Add_Str_To_Name_Buffer -- (Path_Separator & Prefix.all & -- "share" & Directory_Separator & "gpr"); +- (Path_Separator & Prefix.all & Target_Name); +- +- -- Note: Target_Name has a trailing / when it comes from +- -- Sdefault. +- +- if Name_Buffer (Name_Len) /= '/' then +- Add_Char_To_Name_Buffer (Directory_Separator); +- end if; +- - Add_Str_To_Name_Buffer -- (Path_Separator & Prefix.all & -- "lib" & Directory_Separator & "gnat"); +- ("lib" & Directory_Separator & "gnat"); - end if; - -- else -- Self.Path := -- new String'(Name_Buffer (1 .. Name_Len) & Path_Separator & -- Prefix.all & -- ".." & Directory_Separator & -- ".." & Directory_Separator & -- ".." & Directory_Separator & "gnat"); +- -- $prefix/share/gpr +- +- Add_Str_To_Name_Buffer +- (Path_Separator & Prefix.all & +- "share" & Directory_Separator & "gpr"); +- +- -- $prefix/lib/gnat +- +- Add_Str_To_Name_Buffer +- (Path_Separator & Prefix.all & +- "lib" & Directory_Separator & "gnat"); - end if; - - Free (Prefix); @@ -59,55 +97,4 @@ + Sdefault.Search_Dir_Prefix.all); end if; - if Self.Path = null then ---- a/src/gcc/ada/gnatls.adb -+++ b/src/gcc/ada/gnatls.adb -@@ -1617,9 +1617,6 @@ - declare - Project_Path : String_Access := Getenv (Gpr_Project_Path); - -- Lib : constant String := -- Directory_Separator & "lib" & Directory_Separator; -- - First : Natural; - Last : Natural; - -@@ -1679,36 +1676,8 @@ - if Add_Default_Dir then - Name_Len := 0; - Add_Str_To_Name_Buffer (Sdefault.Search_Dir_Prefix.all); -- -- -- On Windows, make sure that all directory separators are '\' -- -- if Directory_Separator /= '/' then -- for J in 1 .. Name_Len loop -- if Name_Buffer (J) = '/' then -- Name_Buffer (J) := Directory_Separator; -- end if; -- end loop; -- end if; -- -- -- Find the sequence "/lib/" -- -- while Name_Len >= Lib'Length -- and then Name_Buffer (Name_Len - 4 .. Name_Len) /= Lib -- loop -- Name_Len := Name_Len - 1; -- end loop; -- -- -- If the sequence "/lib"/ was found, display the default -- -- directory /lib/gnat/. -- -- if Name_Len >= 5 then -- Name_Buffer (Name_Len + 1 .. Name_Len + 4) := "gnat"; -- Name_Buffer (Name_Len + 5) := Directory_Separator; -- Name_Len := Name_Len + 5; -- Write_Str (" "); -- Write_Line -- (To_Host_Dir_Spec (Name_Buffer (1 .. Name_Len), True).all); -- end if; -+ Write_Str (" "); -+ Write_Line (Name_Buffer (1 .. Name_Len)); - end if; - end; - + Self.Path := new String'(Name_Buffer (1 .. Name_Len)); diff -Nru gcc-4.8-4.8.0/debian/patches/ada-gcc-name.diff gcc-4.8-4.8.1/debian/patches/ada-gcc-name.diff --- gcc-4.8-4.8.0/debian/patches/ada-gcc-name.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/ada-gcc-name.diff 2013-06-05 12:12:51.000000000 +0000 @@ -4,7 +4,7 @@ =================================================================== --- a/src/gcc/ada/comperr.adb +++ b/src/gcc/ada/comperr.adb -@@ -356,7 +356,7 @@ +@@ -371,7 +371,7 @@ End_Line; Write_Str @@ -26,7 +26,7 @@ Read_Mode : constant String := "r" & ASCII.NUL; -@@ -1411,7 +1411,8 @@ +@@ -1438,7 +1438,8 @@ end if; Write_Line (" --GCC=comp Use comp as the compiler"); @@ -40,20 +40,20 @@ =================================================================== --- a/src/gcc/ada/make.adb +++ b/src/gcc/ada/make.adb -@@ -670,7 +670,7 @@ +@@ -669,7 +669,7 @@ -- Compiler, Binder & Linker Data and Subprograms -- ---------------------------------------------------- -- Gcc : String_Access := Program_Name ("gcc", "gnatmake"); -+ Gcc : String_Access := Program_Name ("gcc-4.8", "gnatmake"); - Gnatbind : String_Access := Program_Name ("gnatbind", "gnatmake"); - Gnatlink : String_Access := Program_Name ("gnatlink", "gnatmake"); - -- Default compiler, binder, linker programs +- Gcc : String_Access := Program_Name ("gcc", "gnatmake"); ++ Gcc : String_Access := Program_Name ("gcc-4.8", "gnatmake"); + Original_Gcc : constant String_Access := Gcc; + -- Original_Gcc is used to check if Gcc has been modified by a switch + -- --GCC=, so that for VM platforms, it is not modified again, as it can Index: b/src/gcc/ada/gnatchop.adb =================================================================== --- a/src/gcc/ada/gnatchop.adb +++ b/src/gcc/ada/gnatchop.adb -@@ -44,7 +44,7 @@ +@@ -45,7 +45,7 @@ Config_File_Name : constant String_Access := new String'("gnat.adc"); -- The name of the file holding the GNAT configuration pragmas @@ -88,7 +88,7 @@ =================================================================== --- a/src/gcc/ada/mlib-utl.adb +++ b/src/gcc/ada/mlib-utl.adb -@@ -412,7 +412,7 @@ +@@ -439,7 +439,7 @@ if Driver_Name = No_Name then if Gcc_Exec = null then if Gcc_Name = null then @@ -101,7 +101,7 @@ =================================================================== --- a/src/gcc/ada/prj-makr.adb +++ b/src/gcc/ada/prj-makr.adb -@@ -109,7 +109,7 @@ +@@ -114,7 +114,7 @@ procedure Dup2 (Old_Fd, New_Fd : File_Descriptor); diff -Nru gcc-4.8-4.8.0/debian/patches/ada-libgnatprj.diff gcc-4.8-4.8.1/debian/patches/ada-libgnatprj.diff --- gcc-4.8-4.8.0/debian/patches/ada-libgnatprj.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/ada-libgnatprj.diff 2013-06-05 12:12:51.000000000 +0000 @@ -12,7 +12,7 @@ =================================================================== --- a/src/gcc/ada/gcc-interface/config-lang.in +++ b/src/gcc/ada/gcc-interface/config-lang.in -@@ -36,8 +36,8 @@ +@@ -34,8 +34,8 @@ outputs="ada/gcc-interface/Makefile ada/Makefile" @@ -27,7 +27,7 @@ =================================================================== --- a/src/gnattools/Makefile.in +++ b/src/gnattools/Makefile.in -@@ -36,13 +36,13 @@ +@@ -37,13 +37,13 @@ target_noncanonical=@target_noncanonical@ CFLAGS=-O2 -Wall @@ -37,13 +37,13 @@ +ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn -I../libgnatprj LIB_VERSION=$(strip $(shell grep ' Library_Version :' \ ../libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) - ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) - ADA_LIBS += -L../libgnatvsn -lgnatvsn -+ADA_LIBS += -L../libgnatprj -lgnatprj - - # We will use the just-built compiler to compile and link everything. - GCC=../gcc/xgcc -B../gcc/ -@@ -67,74 +67,18 @@ + SHARED_ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) + SHARED_ADA_LIBS += -L../libgnatvsn -lgnatvsn ++SHARED_ADA_LIBS += -L../libgnatprj -lgnatprj + STATIC_ADA_LIBS := ../gcc/ada/rts/libgnat.a + STATIC_GCC_LIBS := ../gcc/libcommon-target.a ../gcc/libcommon.a ../libcpp/libcpp.a \ + ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a +@@ -71,78 +71,22 @@ # Since we don't have gnatmake, we must specify the full list of # object files necessary to build gnatmake and gnatlink. @@ -56,7 +56,6 @@ gnatlink.o \ indepsw.o \ -osint.o \ --prefix.o \ -rident.o \ -sdefault.o \ -stylesw.o \ @@ -67,9 +66,11 @@ GNATMAKE_OBJS = \ -ali-util.o \ -ali.o \ + aspects.o \ -binderr.o \ -butil.o \ -err_vars.o \ + errout.o \ -erroutc.o \ -errutil.o \ -fmap.o \ @@ -87,10 +88,10 @@ -mlib.o \ osint-m.o \ -osint.o \ --prefix.o \ -prj-attr-pm.o \ -prj-attr.o \ -prj-com.o \ +-prj-conf.o \ -prj-dect.o \ -prj-env.o \ -prj-err.o \ @@ -98,14 +99,17 @@ -prj-nmsc.o \ -prj-pars.o \ -prj-part.o \ +-prj-pp.o \ -prj-proc.o \ -prj-strt.o \ -prj-tree.o \ -prj-util.o \ -prj.o \ + restrict.o \ -rident.o \ -scng.o \ -sdefault.o \ + sem_aux.o \ -sfn_scan.o \ -sinput-c.o \ -sinput-p.o \ @@ -118,60 +122,39 @@ usage.o \ validsw.o \ $(EXTRA_GNATMAKE_OBJS) -@@ -176,11 +120,6 @@ - for file in $(BODIES) $(SPECS); do \ - $(LN_S) -f $$file .; \ - done -- rm -f sdefault.adb; $(LN_S) ../gcc/ada/sdefault.adb . -- $(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ -- rm -f $(word 1,$(subst <, ,$(PAIR)));\ -- $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \ -- $(word 1,$(subst <, ,$(PAIR)));) - touch $@ - - gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so -@@ -193,19 +132,16 @@ - vpath %.c @srcdir@/../gcc/ada:@srcdir@/../gcc - vpath %.h @srcdir@/../gcc/ada - --# Because the just-built gcc is a host tool like us, we can use some --# of its object files, e.g. prefix.o. --vpath prefix.o ../gcc -- +@@ -203,12 +142,13 @@ + # gnatlink -gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o link.o +gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o $(GCC) -o $@ $^ \ -+ ../libgnatprj/libgnatprj.a \ - ../libgnatvsn/libgnatvsn.a \ - ../gcc/ada/rts/libgnat.a \ - ../libiberty/libiberty.a ++ ../libgnatprj/libgnatprj.a \ + ../libgnatvsn/libgnatvsn.a \ + ../gcc/ada/rts/libgnat.a $(STATIC_GCC_LIBS) -gnatlink: $(GNATLINK_OBJS) b_gnatl.o link.o +gnatlink: $(GNATLINK_OBJS) b_gnatl.o - $(GCC) -o $@ $^ $(ADA_LIBS) ../libiberty/libiberty.a + $(GCC) -o $@ $^ $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) - b_gnatl.o: b_gnatl.c adaint.h -@@ -216,13 +152,14 @@ + b_gnatl.adb: $(GNATLINK_OBJS) +@@ -216,31 +156,24 @@ # gnatmake -gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o link.o +gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o $(GCC) -o $@ $(ADA_CFLAGS) $^ \ -+ ../libgnatprj/libgnatprj.a \ - ../libgnatvsn/libgnatvsn.a \ - ../gcc/ada/rts/libgnat.a \ - ../libiberty/libiberty.a ++ ../libgnatprj/libgnatprj.a \ + ../libgnatvsn/libgnatvsn.a \ + $(STATIC_ADA_LIBS) $(STATIC_GCC_LIBS) -gnatmake: $(GNATMAKE_OBJS) b_gnatm.o link.o +gnatmake: $(GNATMAKE_OBJS) b_gnatm.o - $(GCC) -o $@ $(ADA_CFLAGS) $^ $(ADA_LIBS) ../libiberty/libiberty.a + $(GCC) -o $@ $(ADA_CFLAGS) $^ $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) - b_gnatm.o: b_gnatm.c adaint.h -@@ -232,19 +169,11 @@ - ../gcc/gnatbind -C -o $@ $(ADA_INCLUDES) gnatmake.ali + b_gnatm.adb: $(GNATMAKE_OBJS) + ../gcc/gnatbind -o $@ $(ADA_INCLUDES) gnatmake.ali # Other tools -gnatkr: @@ -179,21 +162,21 @@ - ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ - --GCC="$(GCC)" \ - --GNATBIND=../gcc/gnatbind -- ./gnatlink-static -o $@ $@.ali $^ $(ADA_INCLUDES) $(ADA_LIBS) \ -- --GCC="$(GCC) $(ADA_INCLUDES)" +- ./gnatlink-static -o $@ $@.ali $(ADA_INCLUDES) $(SHARED_ADA_LIBS) \ +- --GCC="$(GCC) $(ADA_INCLUDES)" $(STATIC_GCC_LIBS) - gnat: gnatcmd cp -lp $< $@ -gnatbind gnatchop gnatclean gnatcmd gnatfind gnatls gnatname gnatprep gnatxref: \ --link.o prefix.o +-link.o +gnatbind gnatchop gnatclean gnatcmd gnatfind gnatkr gnatls gnatname gnatprep \ +gnatxref: if [ ! -f $@.adb ] ; then $(LN_S) ../../src/gcc/ada/$@.ad[bs] .; fi ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ --GCC="$(GCC)" \ -@@ -253,22 +182,12 @@ - ../libiberty/libiberty.a \ +@@ -249,20 +182,12 @@ + $(ADA_INCLUDES) $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) \ --GCC="$(GCC) $(ADA_INCLUDES)" -# Force compiling sdefault.adb, not .ads, to produce sdefault.o @@ -210,8 +193,6 @@ -%.o: %.c - $(GCC) -c -o $@ $< $(CFLAGS) $(INCLUDES) - --prefix.o: -- # Other # ----- @@ -271,10 +252,10 @@ +lib-util.adb makeutl.adb mlib.adb mlib-fil.adb mlib-tgt.adb \ +mlib-tgt-specific.adb mlib-utl.adb osint.adb osint-c.adb prj.adb prj-attr.adb \ +prj-attr-pm.adb prj-com.ads prj-conf.adb prj-dect.adb prj-env.adb prj-err.adb \ -+prj-ext.adb prj-nmsc.adb prj-pars.adb prj-part.adb prj-pp.adb prj-proc.adb \ -+prj-strt.adb prj-tree.adb prj-util.adb rident.ads scng.adb sfn_scan.adb \ -+sinfo-cn.adb sinput-c.adb sinput-p.adb style.adb styleg.adb stylesw.adb \ -+switch.adb switch-m.adb targparm.adb tempdir.adb ++prj-ext.adb prj-makr.adb prj-nmsc.adb prj-pars.adb prj-part.adb prj-pp.adb \ ++prj-proc.adb prj-strt.adb prj-tree.adb prj-util.adb restrict.adb rident.ads \ ++scng.adb sfn_scan.adb sinfo-cn.adb sinput-c.adb sinput-p.adb style.adb \ ++styleg.adb stylesw.adb switch.adb switch-m.adb targparm.adb tempdir.adb + +# Source files generated in build/gcc/ada, not src/gcc/ada. +GENERATED_SOURCES := sdefault.adb @@ -312,7 +293,7 @@ + +obj-shared/prefix.o: @srcdir@/../gcc/prefix.c + $(GCC) -c -fPIC $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \ -+ -I@srcdir@/../gcc -I@srcdir@/../include -I../gcc -I../libiberty \ ++ -I@srcdir@/../gcc -I@srcdir@/../include -I../gcc -I@srcdir@/../libcpp/include \ + $< -o $@ + +obj-shared/%.o: @srcdir@/../libiberty/%.c @@ -340,7 +321,7 @@ + +obj-static/prefix.o: @srcdir@/../gcc/prefix.c + $(GCC) -c $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \ -+ -I@srcdir@/../gcc -I@srcdir@/../include -I../gcc -I../libiberty \ ++ -I@srcdir@/../gcc -I@srcdir@/../include -I../gcc -I@srcdir@/../libcpp/include \ + $< -o $@ + +obj-static/%.o: @srcdir@/../libiberty/%.c @@ -402,7 +383,7 @@ =================================================================== --- a/src/Makefile.def +++ b/src/Makefile.def -@@ -158,6 +158,13 @@ +@@ -124,6 +124,13 @@ missing= TAGS; missing= install-info; missing= installcheck; }; @@ -416,7 +397,7 @@ host_modules= { module= gnattools; no_check=true; missing= info; missing= dvi; -@@ -210,6 +217,13 @@ +@@ -178,6 +185,13 @@ missing= TAGS; missing= install-info; missing= installcheck; }; @@ -428,9 +409,9 @@ + missing= install-info; + missing= installcheck; }; target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; - - // These are (some of) the make targets to be done in each subdirectory. -@@ -397,7 +411,10 @@ + target_modules = { module= libitm; lib_path=.libs; }; + target_modules = { module= libatomic; lib_path=.libs; }; +@@ -366,7 +380,10 @@ dependencies = { module=all-gnattools; on=all-libada; }; dependencies = { module=all-gnattools; on=all-libgnatvsn; }; @@ -445,7 +426,7 @@ =================================================================== --- a/src/Makefile.in +++ b/src/Makefile.in -@@ -952,6 +952,7 @@ +@@ -920,6 +920,7 @@ maybe-configure-utils \ maybe-configure-libada \ maybe-configure-libgnatvsn \ @@ -453,15 +434,15 @@ maybe-configure-gnattools \ maybe-configure-lto-plugin .PHONY: configure-target -@@ -979,6 +980,7 @@ +@@ -945,6 +946,7 @@ maybe-configure-target-rda \ maybe-configure-target-libada \ maybe-configure-target-libgnatvsn \ + maybe-configure-target-libgnatprj \ - maybe-configure-target-libgomp - - # The target built for a native non-bootstrap build. -@@ -1132,6 +1134,7 @@ + maybe-configure-target-libgomp \ + maybe-configure-target-libitm \ + maybe-configure-target-libatomic +@@ -1067,6 +1069,7 @@ all-host: maybe-all-utils all-host: maybe-all-libada all-host: maybe-all-libgnatvsn @@ -469,7 +450,7 @@ all-host: maybe-all-gnattools @if lto-plugin-no-bootstrap all-host: maybe-all-lto-plugin -@@ -1166,6 +1169,7 @@ +@@ -1101,6 +1104,7 @@ all-target: maybe-all-target-rda all-target: maybe-all-target-libada all-target: maybe-all-target-libgnatvsn @@ -477,7 +458,7 @@ @if target-libgomp-no-bootstrap all-target: maybe-all-target-libgomp @endif target-libgomp-no-bootstrap -@@ -1264,6 +1268,7 @@ +@@ -1167,6 +1171,7 @@ info-host: maybe-info-utils info-host: maybe-info-libada info-host: maybe-info-libgnatvsn @@ -485,15 +466,15 @@ info-host: maybe-info-gnattools info-host: maybe-info-lto-plugin -@@ -1292,6 +1297,7 @@ +@@ -1193,6 +1198,7 @@ info-target: maybe-info-target-rda info-target: maybe-info-target-libada info-target: maybe-info-target-libgnatvsn +info-target: maybe-info-target-libgnatprj info-target: maybe-info-target-libgomp - - .PHONY: do-dvi -@@ -1383,6 +1389,7 @@ + info-target: maybe-info-target-libitm + info-target: maybe-info-target-libatomic +@@ -1252,6 +1258,7 @@ dvi-host: maybe-dvi-utils dvi-host: maybe-dvi-libada dvi-host: maybe-dvi-libgnatvsn @@ -501,15 +482,15 @@ dvi-host: maybe-dvi-gnattools dvi-host: maybe-dvi-lto-plugin -@@ -1411,6 +1418,7 @@ +@@ -1278,6 +1285,7 @@ dvi-target: maybe-dvi-target-rda dvi-target: maybe-dvi-target-libada dvi-target: maybe-dvi-target-libgnatvsn +dvi-target: maybe-dvi-target-libgnatprj dvi-target: maybe-dvi-target-libgomp - - .PHONY: do-pdf -@@ -1502,6 +1510,7 @@ + dvi-target: maybe-dvi-target-libitm + dvi-target: maybe-dvi-target-libatomic +@@ -1337,6 +1345,7 @@ pdf-host: maybe-pdf-utils pdf-host: maybe-pdf-libada pdf-host: maybe-pdf-libgnatvsn @@ -517,15 +498,15 @@ pdf-host: maybe-pdf-gnattools pdf-host: maybe-pdf-lto-plugin -@@ -1530,6 +1539,7 @@ +@@ -1363,6 +1372,7 @@ pdf-target: maybe-pdf-target-rda pdf-target: maybe-pdf-target-libada pdf-target: maybe-pdf-target-libgnatvsn +pdf-target: maybe-pdf-target-libgnatprj pdf-target: maybe-pdf-target-libgomp - - .PHONY: do-html -@@ -1621,6 +1631,7 @@ + pdf-target: maybe-pdf-target-libitm + pdf-target: maybe-pdf-target-libatomic +@@ -1422,6 +1432,7 @@ html-host: maybe-html-utils html-host: maybe-html-libada html-host: maybe-html-libgnatvsn @@ -533,15 +514,15 @@ html-host: maybe-html-gnattools html-host: maybe-html-lto-plugin -@@ -1649,6 +1660,7 @@ +@@ -1448,6 +1459,7 @@ html-target: maybe-html-target-rda html-target: maybe-html-target-libada html-target: maybe-html-target-libgnatvsn +html-target: maybe-html-target-libgnatprj html-target: maybe-html-target-libgomp - - .PHONY: do-TAGS -@@ -1740,6 +1752,7 @@ + html-target: maybe-html-target-libitm + html-target: maybe-html-target-libatomic +@@ -1507,6 +1519,7 @@ TAGS-host: maybe-TAGS-utils TAGS-host: maybe-TAGS-libada TAGS-host: maybe-TAGS-libgnatvsn @@ -549,15 +530,15 @@ TAGS-host: maybe-TAGS-gnattools TAGS-host: maybe-TAGS-lto-plugin -@@ -1768,6 +1781,7 @@ +@@ -1533,6 +1546,7 @@ TAGS-target: maybe-TAGS-target-rda TAGS-target: maybe-TAGS-target-libada TAGS-target: maybe-TAGS-target-libgnatvsn +TAGS-target: maybe-TAGS-target-libgnatprj TAGS-target: maybe-TAGS-target-libgomp - - .PHONY: do-install-info -@@ -1859,6 +1873,7 @@ + TAGS-target: maybe-TAGS-target-libitm + TAGS-target: maybe-TAGS-target-libatomic +@@ -1592,6 +1606,7 @@ install-info-host: maybe-install-info-utils install-info-host: maybe-install-info-libada install-info-host: maybe-install-info-libgnatvsn @@ -565,15 +546,15 @@ install-info-host: maybe-install-info-gnattools install-info-host: maybe-install-info-lto-plugin -@@ -1887,6 +1902,7 @@ +@@ -1618,6 +1633,7 @@ install-info-target: maybe-install-info-target-rda install-info-target: maybe-install-info-target-libada install-info-target: maybe-install-info-target-libgnatvsn +install-info-target: maybe-install-info-target-libgnatprj install-info-target: maybe-install-info-target-libgomp - - .PHONY: do-install-pdf -@@ -1978,6 +1994,7 @@ + install-info-target: maybe-install-info-target-libitm + install-info-target: maybe-install-info-target-libatomic +@@ -1677,6 +1693,7 @@ install-pdf-host: maybe-install-pdf-utils install-pdf-host: maybe-install-pdf-libada install-pdf-host: maybe-install-pdf-libgnatvsn @@ -581,15 +562,15 @@ install-pdf-host: maybe-install-pdf-gnattools install-pdf-host: maybe-install-pdf-lto-plugin -@@ -2006,6 +2023,7 @@ +@@ -1703,6 +1720,7 @@ install-pdf-target: maybe-install-pdf-target-rda install-pdf-target: maybe-install-pdf-target-libada install-pdf-target: maybe-install-pdf-target-libgnatvsn +install-pdf-target: maybe-install-pdf-target-libgnatprj install-pdf-target: maybe-install-pdf-target-libgomp - - .PHONY: do-install-html -@@ -2097,6 +2115,7 @@ + install-pdf-target: maybe-install-pdf-target-libitm + install-pdf-target: maybe-install-pdf-target-libatomic +@@ -1762,6 +1780,7 @@ install-html-host: maybe-install-html-utils install-html-host: maybe-install-html-libada install-html-host: maybe-install-html-libgnatvsn @@ -597,15 +578,15 @@ install-html-host: maybe-install-html-gnattools install-html-host: maybe-install-html-lto-plugin -@@ -2125,6 +2144,7 @@ +@@ -1788,6 +1807,7 @@ install-html-target: maybe-install-html-target-rda install-html-target: maybe-install-html-target-libada install-html-target: maybe-install-html-target-libgnatvsn +install-html-target: maybe-install-html-target-libgnatprj install-html-target: maybe-install-html-target-libgomp - - .PHONY: do-installcheck -@@ -2216,6 +2236,7 @@ + install-html-target: maybe-install-html-target-libitm + install-html-target: maybe-install-html-target-libatomic +@@ -1847,6 +1867,7 @@ installcheck-host: maybe-installcheck-utils installcheck-host: maybe-installcheck-libada installcheck-host: maybe-installcheck-libgnatvsn @@ -613,15 +594,15 @@ installcheck-host: maybe-installcheck-gnattools installcheck-host: maybe-installcheck-lto-plugin -@@ -2244,6 +2265,7 @@ +@@ -1873,6 +1894,7 @@ installcheck-target: maybe-installcheck-target-rda installcheck-target: maybe-installcheck-target-libada installcheck-target: maybe-installcheck-target-libgnatvsn +installcheck-target: maybe-installcheck-target-libgnatprj installcheck-target: maybe-installcheck-target-libgomp - - .PHONY: do-mostlyclean -@@ -2335,6 +2357,7 @@ + installcheck-target: maybe-installcheck-target-libitm + installcheck-target: maybe-installcheck-target-libatomic +@@ -1932,6 +1954,7 @@ mostlyclean-host: maybe-mostlyclean-utils mostlyclean-host: maybe-mostlyclean-libada mostlyclean-host: maybe-mostlyclean-libgnatvsn @@ -629,15 +610,15 @@ mostlyclean-host: maybe-mostlyclean-gnattools mostlyclean-host: maybe-mostlyclean-lto-plugin -@@ -2363,6 +2386,7 @@ +@@ -1958,6 +1981,7 @@ mostlyclean-target: maybe-mostlyclean-target-rda mostlyclean-target: maybe-mostlyclean-target-libada mostlyclean-target: maybe-mostlyclean-target-libgnatvsn +mostlyclean-target: maybe-mostlyclean-target-libgnatprj mostlyclean-target: maybe-mostlyclean-target-libgomp - - .PHONY: do-clean -@@ -2454,6 +2478,7 @@ + mostlyclean-target: maybe-mostlyclean-target-libitm + mostlyclean-target: maybe-mostlyclean-target-libatomic +@@ -2017,6 +2041,7 @@ clean-host: maybe-clean-utils clean-host: maybe-clean-libada clean-host: maybe-clean-libgnatvsn @@ -645,15 +626,15 @@ clean-host: maybe-clean-gnattools clean-host: maybe-clean-lto-plugin -@@ -2482,6 +2507,7 @@ +@@ -2043,6 +2068,7 @@ clean-target: maybe-clean-target-rda clean-target: maybe-clean-target-libada clean-target: maybe-clean-target-libgnatvsn +clean-target: maybe-clean-target-libgnatprj clean-target: maybe-clean-target-libgomp - - .PHONY: do-distclean -@@ -2573,6 +2599,7 @@ + clean-target: maybe-clean-target-libitm + clean-target: maybe-clean-target-libatomic +@@ -2102,6 +2128,7 @@ distclean-host: maybe-distclean-utils distclean-host: maybe-distclean-libada distclean-host: maybe-distclean-libgnatvsn @@ -661,15 +642,15 @@ distclean-host: maybe-distclean-gnattools distclean-host: maybe-distclean-lto-plugin -@@ -2601,6 +2628,7 @@ +@@ -2128,6 +2155,7 @@ distclean-target: maybe-distclean-target-rda distclean-target: maybe-distclean-target-libada distclean-target: maybe-distclean-target-libgnatvsn +distclean-target: maybe-distclean-target-libgnatprj distclean-target: maybe-distclean-target-libgomp - - .PHONY: do-maintainer-clean -@@ -2692,6 +2720,7 @@ + distclean-target: maybe-distclean-target-libitm + distclean-target: maybe-distclean-target-libatomic +@@ -2187,6 +2215,7 @@ maintainer-clean-host: maybe-maintainer-clean-utils maintainer-clean-host: maybe-maintainer-clean-libada maintainer-clean-host: maybe-maintainer-clean-libgnatvsn @@ -677,15 +658,15 @@ maintainer-clean-host: maybe-maintainer-clean-gnattools maintainer-clean-host: maybe-maintainer-clean-lto-plugin -@@ -2720,6 +2749,7 @@ +@@ -2213,6 +2242,7 @@ maintainer-clean-target: maybe-maintainer-clean-target-rda maintainer-clean-target: maybe-maintainer-clean-target-libada maintainer-clean-target: maybe-maintainer-clean-target-libgnatvsn +maintainer-clean-target: maybe-maintainer-clean-target-libgnatprj maintainer-clean-target: maybe-maintainer-clean-target-libgomp - - -@@ -2866,6 +2896,7 @@ + maintainer-clean-target: maybe-maintainer-clean-target-libitm + maintainer-clean-target: maybe-maintainer-clean-target-libatomic +@@ -2327,6 +2357,7 @@ maybe-check-utils \ maybe-check-libada \ maybe-check-libgnatvsn \ @@ -693,15 +674,15 @@ maybe-check-gnattools \ maybe-check-lto-plugin -@@ -2894,6 +2925,7 @@ +@@ -2353,6 +2384,7 @@ maybe-check-target-rda \ maybe-check-target-libada \ maybe-check-target-libgnatvsn \ + maybe-check-target-libgnatprj \ - maybe-check-target-libgomp - - do-check: -@@ -3011,6 +3043,7 @@ + maybe-check-target-libgomp \ + maybe-check-target-libitm \ + maybe-check-target-libatomic +@@ -2438,6 +2470,7 @@ maybe-install-utils \ maybe-install-libada \ maybe-install-libgnatvsn \ @@ -709,7 +690,7 @@ maybe-install-gnattools \ maybe-install-lto-plugin -@@ -3094,6 +3127,7 @@ +@@ -2487,6 +2520,7 @@ maybe-install-utils \ maybe-install-libada \ maybe-install-libgnatvsn \ @@ -717,15 +698,15 @@ maybe-install-gnattools \ maybe-install-lto-plugin -@@ -3122,6 +3156,7 @@ +@@ -2513,6 +2547,7 @@ maybe-install-target-rda \ maybe-install-target-libada \ maybe-install-target-libgnatvsn \ + maybe-install-target-libgnatprj \ - maybe-install-target-libgomp - - uninstall: -@@ -3232,6 +3267,7 @@ + maybe-install-target-libgomp \ + maybe-install-target-libitm \ + maybe-install-target-libatomic +@@ -2592,6 +2627,7 @@ maybe-install-strip-utils \ maybe-install-strip-libada \ maybe-install-strip-libgnatvsn \ @@ -733,15 +714,15 @@ maybe-install-strip-gnattools \ maybe-install-strip-lto-plugin -@@ -3260,6 +3296,7 @@ +@@ -2618,6 +2654,7 @@ maybe-install-strip-target-rda \ maybe-install-strip-target-libada \ maybe-install-strip-target-libgnatvsn \ + maybe-install-strip-target-libgnatprj \ - maybe-install-strip-target-libgomp - - -@@ -45502,6 +45539,343 @@ + maybe-install-strip-target-libgomp \ + maybe-install-strip-target-libitm \ + maybe-install-strip-target-libatomic +@@ -30140,6 +30177,343 @@ @@ -792,7 +773,7 @@ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(HOST_EXPORTS) \ + (cd $(HOST_SUBDIR)/libgnatprj && \ -+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS) \ + $(TARGET-libgnatprj)) +@endif libgnatprj + @@ -1085,7 +1066,7 @@ .PHONY: configure-gnattools maybe-configure-gnattools maybe-configure-gnattools: @if gcc-bootstrap -@@ -57992,6 +58366,361 @@ +@@ -42211,6 +42585,361 @@ @@ -1150,7 +1131,7 @@ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ + (cd $(TARGET_SUBDIR)/libgnatprj && \ -+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ + $(TARGET-target-libgnatprj)) +@endif target-libgnatprj + @@ -1447,7 +1428,7 @@ .PHONY: configure-target-libgomp maybe-configure-target-libgomp maybe-configure-target-libgomp: @if gcc-bootstrap -@@ -61056,6 +61785,7 @@ +@@ -46265,6 +46994,7 @@ configure-target-rda: stage_last configure-target-libada: stage_last configure-target-libgnatvsn: stage_last @@ -1455,15 +1436,15 @@ configure-stage1-target-libgomp: maybe-all-stage1-gcc configure-stage2-target-libgomp: maybe-all-stage2-gcc configure-stage3-target-libgomp: maybe-all-stage3-gcc -@@ -61088,6 +61818,7 @@ +@@ -46297,6 +47027,7 @@ configure-target-rda: maybe-all-gcc configure-target-libada: maybe-all-gcc configure-target-libgnatvsn: maybe-all-gcc +configure-target-libgnatprj: maybe-all-gcc configure-target-libgomp: maybe-all-gcc - @endif gcc-no-bootstrap - -@@ -61389,7 +62120,10 @@ + configure-target-libitm: maybe-all-gcc + configure-target-libatomic: maybe-all-gcc +@@ -46591,7 +47322,10 @@ all-fixincludes: maybe-all-libiberty all-gnattools: maybe-all-libada all-gnattools: maybe-all-libgnatvsn @@ -1474,15 +1455,15 @@ all-lto-plugin: maybe-all-libiberty all-stage1-lto-plugin: maybe-all-stage1-libiberty -@@ -61935,6 +62669,7 @@ +@@ -47128,6 +47862,7 @@ configure-target-rda: maybe-all-target-libgcc configure-target-libada: maybe-all-target-libgcc configure-target-libgnatvsn: maybe-all-target-libgcc +configure-target-libgnatprj: maybe-all-target-libgcc configure-target-libgomp: maybe-all-target-libgcc - @endif gcc-no-bootstrap - -@@ -61983,6 +62718,8 @@ + configure-target-libitm: maybe-all-target-libgcc + configure-target-libatomic: maybe-all-target-libgcc +@@ -47174,6 +47909,8 @@ configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss @@ -1490,21 +1471,21 @@ + configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss - + configure-target-libitm: maybe-all-target-newlib maybe-all-target-libgloss Index: b/src/configure.ac =================================================================== --- a/src/configure.ac +++ b/src/configure.ac -@@ -168,7 +168,7 @@ +@@ -133,7 +133,7 @@ # these libraries are used by various programs built for the host environment # --host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr mpc ppl cloog libelf libiconv libada libgnatvsn" -+host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr mpc ppl cloog libelf libiconv libada libgnatvsn libgnatprj" +-host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libdecnumber gmp mpfr mpc isl cloog libelf libiconv libada libgnatvsn" ++host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libdecnumber gmp mpfr mpc isl cloog libelf libiconv libada libgnatvsn libgnatprj" # these tools are built for the host environment # Note, the powerpc-eabi build depends on sim occurring before gdb in order to -@@ -202,6 +202,7 @@ +@@ -169,6 +169,7 @@ target-libobjc \ target-libada \ target-libgnatvsn \ @@ -1512,16 +1493,16 @@ target-libgo" # these tools are built using the target libraries, and are intended to -@@ -303,7 +304,7 @@ +@@ -265,7 +266,7 @@ - # Similarly, some are only suitable for cross toolchains. + # Some are only suitable for cross toolchains. # Remove these if host=target. -cross_only="target-libgloss target-newlib target-opcodes target-libada target-libgnatvsn" +cross_only="target-libgloss target-newlib target-opcodes target-libada target-libgnatvsn target-libgnatprj" case $is_cross_compiler in no) skipdirs="${skipdirs} ${cross_only}" ;; -@@ -487,7 +488,7 @@ +@@ -421,7 +422,7 @@ ENABLE_LIBADA=$enableval, ENABLE_LIBADA=yes) if test "${ENABLE_LIBADA}" != "yes" ; then @@ -1534,7 +1515,7 @@ =================================================================== --- /dev/null +++ b/src/libgnatprj/configure.ac -@@ -0,0 +1,149 @@ +@@ -0,0 +1,145 @@ +# Configure script for libada. +# Copyright 2003, 2004 Free Software Foundation, Inc. +# @@ -1553,7 +1534,7 @@ +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +AC_INIT -+AC_PREREQ([2.59]) ++AC_PREREQ([2.63]) + +AC_CONFIG_SRCDIR([Makefile.in]) + @@ -1619,21 +1600,20 @@ + | sparc*-*-linux* \ + | hppa*-*-linux* \ + | mips*-*-linux* \ ++ | m68k-*-linux \ + | *x86_64-*-linux* \ + | *86-*-kfreebsd*-gnu \ + | *86-*-gnu \ + | *x86_64-*-kfreebsd*-gnu ) + TOOLS_TARGET_PAIRS="\ -+ mlib-tgt-specific.adb $(RTSDIR)/s.ads -- $(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads +- sed -e 's/\(pragma Linker.*crtbe.*\)/-- \1/' $(RTSDIR)/s.ads > $(RTSDIR)/s2.ads +- $(RM) $(RTSDIR)/s.ads +- $(MV) $(RTSDIR)/s2.ads $(RTSDIR)/system.ads +gnatlib-static-sjlj: rts = $(subst gnatlib,rts,$@) +gnatlib-static-sjlj: gnatlib-sources-sjlj/a-except.ads + if [ ! -d $(rts) ] ; then \ @@ -563,17 +561,17 @@ $(MAKE) $(FLAGS_TO_PASS) \ EH_MECHANISM="" \ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ -@@ -2576,13 +2503,15 @@ - GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ +@@ -2703,13 +2603,15 @@ + FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ MULTISUBDIR="$(MULTISUBDIR)" \ THREAD_KIND="$(THREAD_KIND)" \ -- TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" gnatlib -+ TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ -+ $(rts)/libgnat$(arext) +- PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" gnatlib ++ PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \ ++ $(rts)/libgnat.a -gnatlib-zcx: - $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="-gcc" \ -- THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR) +- THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR) - sed -e 's/ZCX_By_Default.*/ZCX_By_Default : constant Boolean := True;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads - $(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads +gnatlib-static-zcx: rts = $(subst gnatlib,rts,$@) @@ -585,18 +583,14 @@ $(MAKE) $(FLAGS_TO_PASS) \ EH_MECHANISM="-gcc" \ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ -@@ -2590,7 +2519,8 @@ - GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ +@@ -2718,10 +2620,15 @@ + FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ MULTISUBDIR="$(MULTISUBDIR)" \ THREAD_KIND="$(THREAD_KIND)" \ -- TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" gnatlib -+ TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ +- PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" gnatlib ++ PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \ + $(rts)/libgnat$(arext) - # .s files for cross-building - gnat-cross: force -@@ -2598,6 +2528,10 @@ - ADA_INCLUDE_DIR = $(libsubdir)/adainclude ADA_RTL_OBJ_DIR = $(libsubdir)/adalib +ADA_NATIVE_INCLUDE_DIR = $(libsubdir)/rts-native/adainclude @@ -604,13 +598,13 @@ +ADA_SJLJ_INCLUDE_DIR = $(libsubdir)/rts-sjlj/adainclude +ADA_SJLJ_RTL_OBJ_DIR = $(libsubdir)/rts-sjlj/adalib - # force no sibling call optimization on s-traceb.o so the number of stack - # frames to be skipped when computing a call chain is not modified by + # Special flags + Index: b/src/gnattools/Makefile.in =================================================================== --- a/src/gnattools/Makefile.in +++ b/src/gnattools/Makefile.in -@@ -35,12 +35,13 @@ +@@ -36,15 +36,16 @@ LN_S=@LN_S@ target_noncanonical=@target_noncanonical@ @@ -621,12 +615,16 @@ +ADA_INCLUDES=-nostdinc -I- -I. -I$(RTS) -I../libgnatvsn -I../libgnatprj LIB_VERSION=$(strip $(shell grep ' Library_Version :' \ ../libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) --ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) -+ADA_LIBS := -L$(RTS) -lgnat-$(LIB_VERSION) - ADA_LIBS += -L../libgnatvsn -lgnatvsn - ADA_LIBS += -L../libgnatprj -lgnatprj +-SHARED_ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++SHARED_ADA_LIBS := -L$(RTS) -lgnat-$(LIB_VERSION) + SHARED_ADA_LIBS += -L../libgnatvsn -lgnatvsn + SHARED_ADA_LIBS += -L../libgnatprj -lgnatprj +-STATIC_ADA_LIBS := ../gcc/ada/rts/libgnat.a ++STATIC_ADA_LIBS := ../gcc/ada/rts-static-zcx/libgnat.a + STATIC_GCC_LIBS := ../gcc/libcommon-target.a ../gcc/libcommon.a ../libcpp/libcpp.a \ + ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a -@@ -110,6 +111,7 @@ +@@ -118,6 +119,7 @@ .PHONY: gnattools gnattools-native gnattools-cross regnattools gnattools: @default_gnattools_target@ @@ -634,10 +632,10 @@ BODIES := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.adb,$(f)))) SPECS := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.ads,$(f)))) -@@ -120,9 +122,12 @@ - for file in $(BODIES) $(SPECS); do \ - $(LN_S) -f $$file .; \ - done +@@ -133,9 +135,12 @@ + rm -f $(word 1,$(subst <, ,$(PAIR)));\ + $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \ + $(word 1,$(subst <, ,$(PAIR)));) +# Move the RTS object files away lest they be linked statically into the +# tools. Only the .ali, .a and .so files must remain. + (cd $(RTS); mkdir obj; mv *.o obj; chmod a-wx *.ali) @@ -648,24 +646,15 @@ gnattools-native: ../libgnatvsn/libgnatvsn.so gnattools-native: stamp-gnattools-sources gnattools-native: $(TOOLS) -@@ -138,7 +143,7 @@ +@@ -151,7 +156,7 @@ $(GCC) -o $@ $^ \ - ../libgnatprj/libgnatprj.a \ - ../libgnatvsn/libgnatvsn.a \ -- ../gcc/ada/rts/libgnat.a \ -+ ../gcc/ada/rts-static-zcx/libgnat.a \ - ../libiberty/libiberty.a + ../libgnatprj/libgnatprj.a \ + ../libgnatvsn/libgnatvsn.a \ +- ../gcc/ada/rts/libgnat.a $(STATIC_GCC_LIBS) ++ $(STATIC_ADA_LIBS) $(STATIC_GCC_LIBS) gnatlink: $(GNATLINK_OBJS) b_gnatl.o -@@ -156,7 +161,7 @@ - $(GCC) -o $@ $(ADA_CFLAGS) $^ \ - ../libgnatprj/libgnatprj.a \ - ../libgnatvsn/libgnatvsn.a \ -- ../gcc/ada/rts/libgnat.a \ -+ ../gcc/ada/rts-static-zcx/libgnat.a \ - ../libiberty/libiberty.a - - gnatmake: $(GNATMAKE_OBJS) b_gnatm.o + $(GCC) -o $@ $^ $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) Index: b/src/libgnatprj/Makefile.in =================================================================== --- a/src/libgnatprj/Makefile.in @@ -716,7 +705,7 @@ =================================================================== --- a/src/gcc/ada/gcc-interface/Make-lang.in +++ b/src/gcc/ada/gcc-interface/Make-lang.in -@@ -70,7 +70,8 @@ +@@ -85,7 +85,8 @@ "ADA_FOR_TARGET=$(ADA_FOR_TARGET)" \ "INSTALL=$(INSTALL)" \ "INSTALL_DATA=$(INSTALL_DATA)" \ @@ -724,5 +713,5 @@ + "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ + "GCC_FOR_TARGET=$(GCC_FOR_TARGET)" - # Say how to compile Ada programs. - .SUFFIXES: .ada .adb .ads + # List of Ada tools to build and install + ADA_TOOLS=gnatbind gnatchop gnat gnatkr gnatlink gnatls gnatmake \ diff -Nru gcc-4.8-4.8.0/debian/patches/ada-symbolic-tracebacks.diff gcc-4.8-4.8.1/debian/patches/ada-symbolic-tracebacks.diff --- gcc-4.8-4.8.0/debian/patches/ada-symbolic-tracebacks.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/ada-symbolic-tracebacks.diff 2013-06-05 12:12:51.000000000 +0000 @@ -23,64 +23,38 @@ =================================================================== --- a/src/gcc/ada/gcc-interface/Makefile.in +++ b/src/gcc/ada/gcc-interface/Makefile.in -@@ -247,8 +247,8 @@ +@@ -273,7 +273,8 @@ # Both . and srcdir are used, in that order, # so that tm.h and config.h will be found in the compilation # subdirectory rather than in the source directory. --INCLUDES = -I- -I. -I.. -I$(srcdir)/ada -I$(srcdir) -I$(srcdir)/config \ -- -I$(srcdir)/../include +-INCLUDES = -I- -I. -I.. -I$(srcdir)/ada -I$(srcdir) -I$(srcdir)/../include $(GMPINC) +INCLUDES = -iquote . -iquote .. -iquote $(srcdir)/ada -iquote$(srcdir) \ -+ -iquote $(srcdir)/config -iquote $(srcdir)/../include ++ -iquote $(srcdir)/../include $(GMPINC) ADA_INCLUDES = -I- -I. -I$(srcdir)/ada -@@ -2235,7 +2235,7 @@ - a-nucoar.o a-nurear.o i-forbla.o i-forlap.o s-gearop.o - - GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \ -- $(GNATRTL_LINEARALGEBRA_OBJS) g-trasym.o memtrack.o -+ $(GNATRTL_LINEARALGEBRA_OBJS) g-trasym.o memtrack.o convert_addresses.o - - # Default run time files - -@@ -2358,7 +2358,6 @@ - for file in $(RTSDIR)/*.ali; do \ - $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ - done -- -$(INSTALL_DATA) $(RTSDIR)/g-trasym$(objext) $(DESTDIR)$(ADA_RTL_OBJ_DIR) - -cd $(RTSDIR); for file in *$(arext);do \ - $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ - $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_RTL_OBJ_DIR)/$$file; \ -@@ -2469,7 +2468,7 @@ - $(GNATRTL_OBJS) - $(RM) $(RTSDIR)/libgnat$(arext) $(RTSDIR)/libgnarl$(arext) - $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnat$(arext) \ -- $(addprefix $(RTSDIR)/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS)) -+ $(addprefix $(RTSDIR)/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) g-trasym.o convert_addresses.o) - $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnat$(arext) - $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnarl$(arext) \ - $(addprefix $(RTSDIR)/,$(GNATRTL_TASKING_OBJS)) -@@ -2499,6 +2498,7 @@ - $(TARGET_LIBGCC2_CFLAGS) \ - -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ - $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ -+ g-trasym.o convert_addresses.o \ - $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ - $(MISCLIB) -lm - cd $(RTSDIR); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ -@@ -2761,6 +2761,7 @@ +@@ -2317,7 +2318,7 @@ + # library. LIBGNAT_OBJS is the list of object files for libgnat. + # thread.c is special as put into GNATRTL_TASKING_OBJS by Makefile.rtl + LIBGNAT_OBJS = adadecode.o adaint.o argv.o aux-io.o \ +- cal.o cio.o cstreams.o ctrl_c.o \ ++ cal.o cio.o convert_addresses.o cstreams.o ctrl_c.o \ + env.o errno.o exit.o expect.o final.o \ + init.o initialize.o locales.o mkdir.o \ + raise.o seh_init.o socket.o sysdep.o \ +@@ -2996,6 +2997,7 @@ + socket.o : socket.c gsocket.h sysdep.o : sysdep.c - raise-gcc.o : raise-gcc.c raise.h raise.o : raise.c raise.h +convert_addresses.o : convert_addresses.c + sigtramp-ppcvxw.o : sigtramp-ppcvxw.c sigtramp.h + terminals.o : terminals.c vx_stack_info.o : vx_stack_info.c - - cio.o : cio.c Index: b/src/gcc/ada/adaint.c =================================================================== --- a/src/gcc/ada/adaint.c +++ b/src/gcc/ada/adaint.c -@@ -3421,37 +3421,6 @@ +@@ -3508,35 +3508,6 @@ } #endif @@ -95,10 +69,8 @@ - && ! defined (__hpux__) \ - && ! defined (__APPLE__) \ - && ! defined (_AIX) \ -- && ! (defined (__alpha__) && defined (__osf__)) \ - && ! defined (VMS) \ -- && ! defined (__MINGW32__) \ -- && ! (defined (__mips) && defined (__sgi))) +- && ! defined (__MINGW32__)) - -/* Dummy function to satisfy g-trasym.o. See the preprocessor conditional - just above for a list of native platforms that provide a non-dummy @@ -281,47 +253,144 @@ =================================================================== --- a/src/gcc/ada/g-trasym.adb +++ b/src/gcc/ada/g-trasym.adb -@@ -32,16 +32,16 @@ - ------------------------------------------------------------------------------ +@@ -33,40 +33,110 @@ + -- is not supported. It returns tracebacks as lists of LF separated strings of + -- the form "0x..." corresponding to the addresses. - -- Run-time symbolic traceback support -+-- This file has been modified by Juergen Pfeifer (31-Dec-1999) for -+-- the purpose to support the Ada for Linux Team implementation of -+-- convert_addresses. This implementation has the advantage to run -+-- on the binutils as they are deployed on Linux. - - with System.Soft_Links; ++with System.Soft_Links; with Ada.Exceptions.Traceback; use Ada.Exceptions.Traceback; +-with System.Address_Image; package body GNAT.Traceback.Symbolic is -- pragma Linker_Options ("-laddr2line"); -- pragma Linker_Options ("-lbfd"); -- pragma Linker_Options ("-liberty"); -- - package TSL renames System.Soft_Links; - - -- To perform the raw addresses to symbolic form translation we rely on a -@@ -80,10 +80,6 @@ - -- FILENAME. LEN points to an integer which contains the size of the - -- BUF buffer at input and the result length at output. - -- -- -- This procedure is provided by libaddr2line on targets that support -- -- it. A dummy version is in adaint.c for other targets so that build -- -- of shared libraries doesn't generate unresolved symbols. -- -- - -- Note that this procedure is *not* thread-safe. - - type Argv_Array is array (0 .. 0) of System.Address; -@@ -94,8 +90,9 @@ - (c_exename : System.Address) return System.Address; - pragma Import (C, locate_exec_on_path, "__gnat_locate_exec_on_path"); - -- Res : String (1 .. 256 * Traceback'Length); -- Len : Integer; ++ package TSL renames System.Soft_Links; ++ ++ -- To perform the raw addresses to symbolic form translation we rely on a ++ -- libaddr2line symbolizer which examines debug info from a provided ++ -- executable file name, and an absolute path is needed to ensure the file ++ -- is always found. This is "__gnat_locate_exec_on_path (gnat_argv [0])" ++ -- for our executable file, a fairly heavy operation so we cache the ++ -- result. ++ ++ Exename : System.Address; ++ -- Pointer to the name of the executable file to be used on all ++ -- invocations of the libaddr2line symbolization service. ++ ++ Exename_Resolved : Boolean := False; ++ -- Flag to indicate whether we have performed the executable file name ++ -- resolution already. Relying on a not null Exename for this purpose ++ -- would be potentially inefficient as this is what we will get if the ++ -- resolution attempt fails. ++ + ------------------------ + -- Symbolic_Traceback -- + ------------------------ + + function Symbolic_Traceback (Traceback : Tracebacks_Array) return String is ++ ++ procedure convert_addresses ++ (filename : System.Address; ++ addrs : System.Address; ++ n_addrs : Integer; ++ buf : System.Address; ++ len : System.Address); ++ pragma Import (C, convert_addresses, "convert_addresses"); ++ -- This is the procedure version of the Ada-aware addr2line. It places ++ -- in BUF a string representing the symbolic translation of the N_ADDRS ++ -- raw addresses provided in ADDRS, looked up in debug information from ++ -- FILENAME. LEN points to an integer which contains the size of the ++ -- BUF buffer at input and the result length at output. ++ -- ++ -- Note that this procedure is *not* thread-safe. ++ ++ type Argv_Array is array (0 .. 0) of System.Address; ++ gnat_argv : access Argv_Array; ++ pragma Import (C, gnat_argv, "gnat_argv"); ++ ++ function locate_exec_on_path ++ (c_exename : System.Address) return System.Address; ++ pragma Import (C, locate_exec_on_path, "__gnat_locate_exec_on_path"); ++ + B_Size : constant Integer := 256 * Traceback'Length; + Len : Integer := B_Size; + Res : String (1 .. B_Size); ++ ++ use type System.Address; ++ + begin ++ -- The symbolic translation of an empty set of addresses is an empty ++ -- string. ++ + if Traceback'Length = 0 then + return ""; ++ end if; + +- else +- declare +- Img : String := System.Address_Image (Traceback (Traceback'First)); ++ -- If our input set of raw addresses is not empty, resort to the ++ -- libaddr2line service to symbolize it all. + +- Result : String (1 .. (Img'Length + 3) * Traceback'Length); +- Last : Natural := 0; ++ -- Compute, cache and provide the absolute path to our executable file ++ -- name as the binary file where the relevant debug information is to be ++ -- found. If the executable file name resolution fails, we have no ++ -- sensible basis to invoke the symbolizer at all. ++ ++ -- Protect all this against concurrent accesses explicitly, as the ++ -- underlying services are potentially thread unsafe. ++ ++ TSL.Lock_Task.all; ++ ++ if not Exename_Resolved then ++ Exename := locate_exec_on_path (gnat_argv (0)); ++ Exename_Resolved := True; ++ end if; ++ ++ if Exename /= System.Null_Address then ++ Len := Res'Length; ++ convert_addresses ++ (Exename, Traceback'Address, Traceback'Length, ++ Res (1)'Address, Len'Address); ++ end if; ++ ++ TSL.Unlock_Task.all; + +- begin +- for J in Traceback'Range loop +- Img := System.Address_Image (Traceback (J)); +- Result (Last + 1 .. Last + 2) := "0x"; +- Last := Last + 2; +- Result (Last + 1 .. Last + Img'Length) := Img; +- Last := Last + Img'Length + 1; +- Result (Last) := ASCII.LF; +- end loop; ++ -- Return what the addr2line symbolizer has produced if we have called ++ -- it (the executable name resolution succeeded), or an empty string ++ -- otherwise. + +- return Result (1 .. Last); +- end; ++ if Exename /= System.Null_Address then ++ return Res (1 .. Len); ++ else ++ return ""; + end if; ++ + end Symbolic_Traceback; - use type System.Address; - + function Symbolic_Traceback (E : Exception_Occurrence) return String is +Index: b/src/gcc/ada/tracebak.c +=================================================================== +--- a/src/gcc/ada/tracebak.c ++++ b/src/gcc/ada/tracebak.c +@@ -425,7 +425,7 @@ + /* Starting with GCC 4.6, -fomit-frame-pointer is turned on by default for + 32-bit x86/Linux as well and DWARF 2 unwind tables are emitted instead. + See the x86-64 case below for the drawbacks with this approach. */ +-#if defined (linux) && (__GNUC__ * 10 + __GNUC_MINOR__ > 45) ++#if (defined (linux) || defined(__GNU__)) && (__GNUC__ * 10 + __GNUC_MINOR__ > 45) + #define USE_GCC_UNWINDER + #else + #define USE_GENERIC_UNWINDER diff -Nru gcc-4.8-4.8.0/debian/patches/config-ml.diff gcc-4.8-4.8.1/debian/patches/config-ml.diff --- gcc-4.8-4.8.0/debian/patches/config-ml.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/config-ml.diff 2013-06-05 12:12:51.000000000 +0000 @@ -3,8 +3,8 @@ Index: b/src/config-ml.in =================================================================== ---- a/src/config-ml.in -+++ b/src/config-ml.in +--- a/src/config-ml.in 2013-05-11 20:45:43.490271752 +0000 ++++ b/src/config-ml.in 2013-05-11 20:45:43.414271243 +0000 @@ -467,6 +467,25 @@ ;; esac @@ -91,9 +91,9 @@ exit 1 Index: b/src/libstdc++-v3/include/Makefile.am =================================================================== ---- a/src/libstdc++-v3/include/Makefile.am -+++ b/src/libstdc++-v3/include/Makefile.am -@@ -826,8 +826,9 @@ +--- a/src/libstdc++-v3/include/Makefile.am 2013-05-11 20:45:43.490271752 +0000 ++++ b/src/libstdc++-v3/include/Makefile.am 2013-05-11 20:47:20.646921114 +0000 +@@ -825,8 +825,9 @@ endif host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) @@ -106,42 +106,49 @@ ${host_srcdir}/ctype_base.h \ ${host_srcdir}/ctype_inline.h \ @@ -1047,6 +1048,7 @@ - stamp-${host_alias}: @-mkdir -p ${host_builddir} + @-mkdir -p ${host_builddir}/../ext + @test ${default_host_alias} = ${host_alias} || ln -sf ${default_host_alias} ${host_alias} @$(STAMP) stamp-${host_alias} # Host includes static. Index: b/src/libstdc++-v3/include/Makefile.in =================================================================== ---- a/src/libstdc++-v3/include/Makefile.in -+++ b/src/libstdc++-v3/include/Makefile.in -@@ -1103,8 +1103,9 @@ +--- a/src/libstdc++-v3/include/Makefile.in 2013-05-11 20:45:43.490271752 +0000 ++++ b/src/libstdc++-v3/include/Makefile.in 2013-05-11 20:47:36.843028205 +0000 +@@ -202,6 +202,7 @@ + check_msgfmt = @check_msgfmt@ + datadir = @datadir@ + datarootdir = @datarootdir@ ++default_host_alias = @default_host_alias@ + docdir = @docdir@ + dvidir = @dvidir@ + enable_shared = @enable_shared@ +@@ -1080,8 +1081,8 @@ # For --enable-cheaders=c_std @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@c_compatibility_headers_extra = ${c_compatibility_headers} host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) -host_builddir = ./${host_alias}/bits -host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits -+default_host_alias = @default_host_alias@ +host_builddir = ./${default_host_alias}/bits +host_installdir = ${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits host_headers = \ ${host_srcdir}/ctype_base.h \ ${host_srcdir}/ctype_inline.h \ -@@ -1488,6 +1489,7 @@ - +@@ -1460,6 +1461,7 @@ stamp-${host_alias}: @-mkdir -p ${host_builddir} + @-mkdir -p ${host_builddir}/../ext + @test ${default_host_alias} = ${host_alias} || ln -sf ${default_host_alias} ${host_alias} @$(STAMP) stamp-${host_alias} # Host includes static. Index: b/src/libstdc++-v3/configure.ac =================================================================== ---- a/src/libstdc++-v3/configure.ac -+++ b/src/libstdc++-v3/configure.ac -@@ -460,6 +460,16 @@ +--- a/src/libstdc++-v3/configure.ac 2013-05-11 20:45:43.490271752 +0000 ++++ b/src/libstdc++-v3/configure.ac 2013-05-11 20:45:43.490271752 +0000 +@@ -461,6 +461,16 @@ multilib_arg= fi diff -Nru gcc-4.8-4.8.0/debian/patches/gcc-base-version.diff gcc-4.8-4.8.1/debian/patches/gcc-base-version.diff --- gcc-4.8-4.8.0/debian/patches/gcc-base-version.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/gcc-base-version.diff 2013-06-05 12:12:51.000000000 +0000 @@ -5,14 +5,14 @@ --- a/src/gcc/BASE-VER +++ b/src/gcc/BASE-VER @@ -1 +1 @@ --4.8.0 +-4.8.1 +4.8 Index: b/src/gcc/FULL-VER =================================================================== --- /dev/null +++ b/src/gcc/FULL-VER @@ -0,0 +1 @@ -+4.8.0 ++4.8.1 Index: b/src/gcc/Makefile.in =================================================================== --- a/src/gcc/Makefile.in diff -Nru gcc-4.8-4.8.0/debian/patches/gcc-linaro-doc.diff gcc-4.8-4.8.1/debian/patches/gcc-linaro-doc.diff --- gcc-4.8-4.8.0/debian/patches/gcc-linaro-doc.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/gcc-linaro-doc.diff 2013-06-05 12:12:51.000000000 +0000 @@ -1,5 +1,46 @@ # DP: Changes for the Linaro 4.8-2013.04 release (documentation). +--- a/src/gcc/doc/tm.texi ++++ b/src/gcc/doc/tm.texi +@@ -10926,10 +10926,18 @@ + @samp{TARGET_INIT_BUILTINS}. @var{fndecl} is the declaration of the + built-in function. @var{n_args} is the number of arguments passed to + the function; the arguments themselves are pointed to by @var{argp}. +-The result is another tree containing a simplified expression for the +-call's result. If @var{ignore} is true the value will be ignored. ++The result is another tree, valid for both GIMPLE and GENERIC, ++containing a simplified expression for the call's result. If ++@var{ignore} is true the value will be ignored. + @end deftypefn + ++@deftypefn {Target Hook} bool TARGET_GIMPLE_FOLD_BUILTIN (gimple_stmt_iterator *@var{gsi}) ++Fold a call to a machine specific built-in function that was set up ++by @samp{TARGET_INIT_BUILTINS}. @var{gsi} points to the gimple ++statement holding the function call. Returns true if any change ++was made to the GIMPLE stream. ++@end deftypefn ++ + @deftypefn {Target Hook} int TARGET_COMPARE_VERSION_PRIORITY (tree @var{decl1}, tree @var{decl2}) + This hook is used to compare the target attributes in two functions to + determine which function's features get higher priority. This is used +--- a/src/gcc/doc/tm.texi.in ++++ b/src/gcc/doc/tm.texi.in +@@ -10772,10 +10772,13 @@ + @samp{TARGET_INIT_BUILTINS}. @var{fndecl} is the declaration of the + built-in function. @var{n_args} is the number of arguments passed to + the function; the arguments themselves are pointed to by @var{argp}. +-The result is another tree containing a simplified expression for the +-call's result. If @var{ignore} is true the value will be ignored. ++The result is another tree, valid for both GIMPLE and GENERIC, ++containing a simplified expression for the call's result. If ++@var{ignore} is true the value will be ignored. + @end deftypefn + ++@hook TARGET_GIMPLE_FOLD_BUILTIN ++ + @hook TARGET_COMPARE_VERSION_PRIORITY + This hook is used to compare the target attributes in two functions to + determine which function's features get higher priority. This is used --- a/src/gcc/doc/invoke.texi +++ b/src/gcc/doc/invoke.texi @@ -510,7 +510,8 @@ @@ -12,12 +53,14 @@ @emph{AVR Options} @gccoptlist{-mmcu=@var{mcu} -maccumulate-args -mbranch-cost=@var{cost} @gol -@@ -11264,7 +11265,7 @@ +@@ -11263,8 +11264,8 @@ + @samp{arm1136j-s}, @samp{arm1136jf-s}, @samp{mpcore}, @samp{mpcorenovfp}, @samp{arm1156t2-s}, @samp{arm1156t2f-s}, @samp{arm1176jz-s}, @samp{arm1176jzf-s}, @samp{cortex-a5}, @samp{cortex-a7}, @samp{cortex-a8}, @samp{cortex-a9}, - @samp{cortex-a15}, @samp{cortex-r4}, @samp{cortex-r4f}, @samp{cortex-r5}, +-@samp{cortex-a15}, @samp{cortex-r4}, @samp{cortex-r4f}, @samp{cortex-r5}, -@samp{cortex-m4}, @samp{cortex-m3}, -+@samp{cortex-r7}, @samp{cortex-m4}, @samp{cortex-m3}, ++@samp{cortex-a15}, @samp{cortex-a53}, @samp{cortex-r4}, @samp{cortex-r4f}, ++@samp{cortex-r5}, @samp{cortex-r7}, @samp{cortex-m4}, @samp{cortex-m3}, @samp{cortex-m1}, @samp{cortex-m0}, @samp{cortex-m0plus}, @@ -33,3 +76,24 @@ @end table @node AVR Options +--- a/src/gcc/doc/arm-neon-intrinsics.texi ++++ b/src/gcc/doc/arm-neon-intrinsics.texi +@@ -5748,6 +5748,18 @@ + + + @itemize @bullet ++@item float16x4_t vcvt_f16_f32 (float32x4_t) ++@*@emph{Form of expected instruction(s):} @code{vcvt.f16.f32 @var{d0}, @var{q0}} ++@end itemize ++ ++ ++@itemize @bullet ++@item float32x4_t vcvt_f32_f16 (float16x4_t) ++@*@emph{Form of expected instruction(s):} @code{vcvt.f32.f16 @var{q0}, @var{d0}} ++@end itemize ++ ++ ++@itemize @bullet + @item float32x2_t vcvt_n_f32_u32 (uint32x2_t, const int) + @*@emph{Form of expected instruction(s):} @code{vcvt.f32.u32 @var{d0}, @var{d0}, #@var{0}} + @end itemize diff -Nru gcc-4.8-4.8.0/debian/patches/gcc-linaro.diff gcc-4.8-4.8.1/debian/patches/gcc-linaro.diff --- gcc-4.8-4.8.0/debian/patches/gcc-linaro.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/gcc-linaro.diff 2013-06-05 12:12:51.000000000 +0000 @@ -1,12 +1,992 @@ -# DP: Changes for the Linaro 4.8-2013.04 release. +# DP: Changes for the Linaro 4.8-2013.05 release. -LANG=C svn diff svn://gcc.gnu.org/svn/gcc/branches/gcc-4_8-branch@197294 \ - svn://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_8-branch@r197609 filterdiff \ - | --remove-timestamps --addoldprefix=a/src/ --addnewprefix=b/src/ +LANG=C svn diff svn://gcc.gnu.org/svn/gcc/branches/gcc-4_8-branch@198615 \ + svn://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_8-branch@r198871 \ + | filterdiff --remove-timestamps --addoldprefix=a/src/ --addnewprefix=b/src/ +--- a/src/libitm/ChangeLog.linaro ++++ b/src/libitm/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libgomp/ChangeLog.linaro ++++ b/src/libgomp/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libquadmath/ChangeLog.linaro ++++ b/src/libquadmath/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libsanitizer/ChangeLog.linaro ++++ b/src/libsanitizer/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/zlib/ChangeLog.linaro ++++ b/src/zlib/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libstdc++-v3/ChangeLog.linaro ++++ b/src/libstdc++-v3/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/intl/ChangeLog.linaro ++++ b/src/intl/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/ChangeLog.linaro ++++ b/src/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libmudflap/ChangeLog.linaro ++++ b/src/libmudflap/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/boehm-gc/ChangeLog.linaro ++++ b/src/boehm-gc/ChangeLog.linaro +@@ -0,0 +1,16 @@ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r197770. ++ ++ 2013-03-16 Yvan Roux ++ ++ * include/private/gcconfig.h (AARCH64): New macro (defined only if ++ __aarch64__). ++ (mach_type_known): Update comment adding ARM AArch64 target. ++ (NOSYS, mach_type_known,CPP_WORDSZ, MACH_TYPE, ALIGNMENT, HBLKSIZE, ++ OS_TYPE, LINUX_STACKBOTTOM, USE_GENERIC_PUSH_REGS, DYNAMIC_LOADING, ++ DATASTART, DATAEND, STACKBOTTOM): Define for AArch64. ++ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/boehm-gc/include/private/gcconfig.h ++++ b/src/boehm-gc/include/private/gcconfig.h +@@ -60,6 +60,13 @@ + # endif + + /* Determine the machine type: */ ++#if defined(__aarch64__) ++# define AARCH64 ++# if !defined(LINUX) ++# define NOSYS ++# define mach_type_known ++# endif ++# endif + # if defined(__arm__) || defined(__thumb__) + # define ARM32 + # if !defined(LINUX) && !defined(NETBSD) +@@ -239,6 +246,10 @@ + # define IA64 + # define mach_type_known + # endif ++# if defined(LINUX) && defined(__aarch64__) ++# define AARCH64 ++# define mach_type_known ++# endif + # if defined(LINUX) && defined(__arm__) + # define ARM32 + # define mach_type_known +@@ -500,6 +511,7 @@ + /* running Amdahl UTS4 */ + /* S390 ==> 390-like machine */ + /* running LINUX */ ++ /* AARCH64 ==> ARM AArch64 */ + /* ARM32 ==> Intel StrongARM */ + /* IA64 ==> Intel IPF */ + /* (e.g. Itanium) */ +@@ -1833,6 +1845,32 @@ + # define HEURISTIC1 + # endif + ++# ifdef AARCH64 ++# define CPP_WORDSZ 64 ++# define MACH_TYPE "AARCH64" ++# define ALIGNMENT 8 ++# ifndef HBLKSIZE ++# define HBLKSIZE 4096 ++# endif ++# ifdef LINUX ++# define OS_TYPE "LINUX" ++# define LINUX_STACKBOTTOM ++# define USE_GENERIC_PUSH_REGS ++# define DYNAMIC_LOADING ++ extern int __data_start[]; ++# define DATASTART ((ptr_t)__data_start) ++ extern char _end[]; ++# define DATAEND ((ptr_t)(&_end)) ++# endif ++# ifdef NOSYS ++ /* __data_start is usually defined in the target linker script. */ ++ extern int __data_start[]; ++# define DATASTART ((ptr_t)__data_start) ++ extern void *__stack_base__; ++# define STACKBOTTOM ((ptr_t)__stack_base__) ++# endif ++# endif ++ + # ifdef ARM32 + # define CPP_WORDSZ 32 + # define MACH_TYPE "ARM32" +--- a/src/include/ChangeLog.linaro ++++ b/src/include/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libiberty/ChangeLog.linaro ++++ b/src/libiberty/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/lto-plugin/ChangeLog.linaro ++++ b/src/lto-plugin/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/contrib/regression/ChangeLog.linaro ++++ b/src/contrib/regression/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/contrib/config-list.mk ++++ b/src/contrib/config-list.mk +@@ -11,7 +11,8 @@ + # nohup nice make -j25 -l36 -f ../gcc/contrib/config-list.mk > make.out 2>&1 & + # + # v850e1-elf is rejected by config.sub +-LIST = alpha-linux-gnu alpha-freebsd6 alpha-netbsd alpha-openbsd \ ++LIST = aarch64-elf aarch64-linux-gnu \ ++ alpha-linux-gnu alpha-freebsd6 alpha-netbsd alpha-openbsd \ + alpha64-dec-vms alpha-dec-vms am33_2.0-linux \ + arm-wrs-vxworks arm-netbsdelf \ + arm-linux-androideabi arm-uclinux_eabi arm-eabi \ +--- a/src/contrib/ChangeLog.linaro ++++ b/src/contrib/ChangeLog.linaro +@@ -0,0 +1,10 @@ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198443. ++ 2013-04-22 Sofiane Naci ++ ++ * config-list.mk (LIST): Add aarch64-elf and aarch64-linux-gnu. ++ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/contrib/reghunt/ChangeLog.linaro ++++ b/src/contrib/reghunt/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libatomic/ChangeLog.linaro ++++ b/src/libatomic/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/config/ChangeLog.linaro ++++ b/src/config/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libbacktrace/ChangeLog.linaro ++++ b/src/libbacktrace/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libjava/libltdl/ChangeLog.linaro ++++ b/src/libjava/libltdl/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libjava/ChangeLog.linaro ++++ b/src/libjava/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libjava/classpath/ChangeLog.linaro ++++ b/src/libjava/classpath/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/gnattools/ChangeLog.linaro ++++ b/src/gnattools/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/maintainer-scripts/ChangeLog.linaro ++++ b/src/maintainer-scripts/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libgcc/ChangeLog.linaro ++++ b/src/libgcc/ChangeLog.linaro +@@ -0,0 +1,13 @@ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198090. ++ 2013-04-19 Yufeng Zhang ++ ++ * config/aarch64/sfp-machine.h (_FP_W_TYPE): Change to define ++ as 'unsigned long long' instead of 'unsigned long'. ++ (_FP_WS_TYPE): Change to define as 'signed long long' instead of ++ 'signed long'. ++ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libgcc/config/aarch64/sfp-machine.h ++++ b/src/libgcc/config/aarch64/sfp-machine.h +@@ -19,8 +19,8 @@ + . */ + + #define _FP_W_TYPE_SIZE 64 +-#define _FP_W_TYPE unsigned long +-#define _FP_WS_TYPE signed long ++#define _FP_W_TYPE unsigned long long ++#define _FP_WS_TYPE signed long long + #define _FP_I_TYPE int + + typedef int TItype __attribute__ ((mode (TI))); +--- a/src/libgcc/config/libbid/ChangeLog.linaro ++++ b/src/libgcc/config/libbid/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libdecnumber/ChangeLog.linaro ++++ b/src/libdecnumber/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/gcc/LINARO-VERSION ++++ b/src/gcc/LINARO-VERSION +@@ -0,0 +1 @@ ++4.8-2013.05 +--- a/src/gcc/hooks.c ++++ b/src/gcc/hooks.c +@@ -147,6 +147,14 @@ + return false; + } + ++/* Generic hook that takes (gimple_stmt_iterator *) and returns ++ false. */ ++bool ++hook_bool_gsiptr_false (gimple_stmt_iterator *a ATTRIBUTE_UNUSED) ++{ ++ return false; ++} ++ + /* Used for the TARGET_ASM_CAN_OUTPUT_MI_THUNK hook. */ + bool + hook_bool_const_tree_hwi_hwi_const_tree_false (const_tree a ATTRIBUTE_UNUSED, +--- a/src/gcc/hooks.h ++++ b/src/gcc/hooks.h +@@ -42,6 +42,7 @@ + extern bool hook_bool_const_tree_false (const_tree); + extern bool hook_bool_tree_true (tree); + extern bool hook_bool_const_tree_true (const_tree); ++extern bool hook_bool_gsiptr_false (gimple_stmt_iterator *); + extern bool hook_bool_const_tree_hwi_hwi_const_tree_false (const_tree, + HOST_WIDE_INT, + HOST_WIDE_INT, +--- a/src/gcc/c-family/ChangeLog.linaro ++++ b/src/gcc/c-family/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/gcc/java/ChangeLog.linaro ++++ b/src/gcc/java/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/gcc/c/ChangeLog.linaro ++++ b/src/gcc/c/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/gcc/target.def ++++ b/src/gcc/target.def +@@ -1289,13 +1289,24 @@ + "", + tree, (unsigned int /*location_t*/ loc, tree fndecl, void *arglist), NULL) + +-/* Fold a target-specific builtin. */ ++/* Fold a target-specific builtin to a tree valid for both GIMPLE ++ and GENERIC. */ + DEFHOOK + (fold_builtin, + "", + tree, (tree fndecl, int n_args, tree *argp, bool ignore), + hook_tree_tree_int_treep_bool_null) + ++/* Fold a target-specific builtin to a valid GIMPLE tree. */ ++DEFHOOK ++(gimple_fold_builtin, ++ "Fold a call to a machine specific built-in function that was set up\n\ ++by @samp{TARGET_INIT_BUILTINS}. @var{gsi} points to the gimple\n\ ++statement holding the function call. Returns true if any change\n\ ++was made to the GIMPLE stream.", ++ bool, (gimple_stmt_iterator *gsi), ++ hook_bool_gsiptr_false) ++ + /* Target hook is used to compare the target attributes in two functions to + determine which function's features get higher priority. This is used + during function multi-versioning to figure out the order in which two +--- a/src/gcc/configure ++++ b/src/gcc/configure +@@ -1658,7 +1658,8 @@ + use sysroot as the system root during the build + --with-sysroot[=DIR] search for usr/lib, usr/include, et al, within DIR + --with-specs=SPECS add SPECS to driver command-line processing +- --with-pkgversion=PKG Use PKG in the version string in place of "GCC" ++ --with-pkgversion=PKG Use PKG in the version string in place of "Linaro ++ GCC `cat $srcdir/LINARO-VERSION`" + --with-bugurl=URL Direct users to URL to report a bug + --with-multilib-list select multilibs (SH and x86-64 only) + --with-gnu-ld assume the C compiler uses GNU ld default=no +@@ -7327,7 +7328,7 @@ + *) PKGVERSION="($withval) " ;; + esac + else +- PKGVERSION="(GCC) " ++ PKGVERSION="(Linaro GCC `cat $srcdir/LINARO-VERSION`) " + + fi + +--- a/src/gcc/objc/ChangeLog.linaro ++++ b/src/gcc/objc/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. --- a/src/gcc/ChangeLog.linaro +++ b/src/gcc/ChangeLog.linaro -@@ -0,0 +1,142 @@ +@@ -0,0 +1,732 @@ ++2013-05-14 Matthew Gretton-Dann ++ ++ Backport from trunk r198677. ++ 2013-05-07 Naveen H.S ++ ++ * config/aarch64/aarch64.md ++ (cmp_swp__shft_): Restrict the ++ shift value between 0-4. ++ ++2013-05-14 Matthew Gretton-Dann ++ ++ Backport from trunk r198574-198575. ++ 2013-05-03 Vidya Praveen ++ ++ * config/aarch64/aarch64-simd.md (simd_fabd): Correct the description. ++ ++ 2013-05-03 Vidya Praveen ++ ++ * config/aarch64/aarch64-simd.md (*fabd_scalar3): Support ++ scalar form of FABD instruction. ++ ++2013-05-14 Matthew Gretton-Dann ++ ++ Backport from trunk r198490-198496 ++ 2013-05-01 James Greenhalgh ++ ++ * config/aarch64/arm_neon.h ++ (vac_f<32, 64>): Rename to... ++ (vca_f<32, 64>): ...this, reimpliment in C. ++ (vca_f<32, 64>): Reimpliment in C. ++ ++ 2013-05-01 James Greenhalgh ++ ++ * config/aarch64/aarch64-simd.md (*aarch64_fac): New. ++ * config/aarch64/iterators.md (FAC_COMPARISONS): New. ++ ++ 2013-05-01 James Greenhalgh ++ ++ * config/aarch64/aarch64-simd.md ++ (vcond_internal): Handle special cases for constant masks. ++ (vcond): Allow nonmemory_operands for outcome vectors. ++ (vcondu): Likewise. ++ (vcond): New. ++ ++ 2013-05-01 James Greenhalgh ++ ++ * config/aarch64/aarch64-builtins.c (BUILTIN_VALLDI): Define. ++ (aarch64_fold_builtin): Add folding for cm. ++ * config/aarch64/aarch64-simd-builtins.def ++ (cmeq): Update to BUILTIN_VALLDI. ++ (cmgt): Likewise. ++ (cmge): Likewise. ++ (cmle): Likewise. ++ (cmlt): Likewise. ++ * config/aarch64/arm_neon.h ++ (vc_<8,16,32,64>): Remap ++ to builtins or C as appropriate. ++ ++ 2013-05-01 James Greenhalgh ++ ++ * config/aarch64/aarch64-simd-builtins.def (cmhs): Rename to... ++ (cmgeu): ...This. ++ (cmhi): Rename to... ++ (cmgtu): ...This. ++ * config/aarch64/aarch64-simd.md ++ (simd_mode): Add SF. ++ (aarch64_vcond_internal): Use new names for unsigned comparison insns. ++ (aarch64_cm): Rewrite to not use UNSPECs. ++ * config/aarch64/aarch64.md (*cstore_neg): Rename to... ++ (cstore_neg): ...This. ++ * config/aarch64/iterators.md ++ (VALLF): new. ++ (unspec): Remove UNSPEC_CM. ++ (COMPARISONS): New. ++ (UCOMPARISONS): Likewise. ++ (optab): Add missing comparisons. ++ (n_optab): New. ++ (cmp_1): Likewise. ++ (cmp_2): Likewise. ++ (CMP): Likewise. ++ (cmp): Remove. ++ (VCMP_S): Likewise. ++ (VCMP_U): Likewise. ++ (V_cmp_result): Add DF, SF modes. ++ (v_cmp_result): Likewise. ++ (v): Likewise. ++ (vmtype): Likewise. ++ * config/aarch64/predicates.md (aarch64_reg_or_fp_zero): New. ++ ++2013-05-14 Matthew Gretton-Dann ++ ++ Backport from trunk r198191. ++ 2013-04-23 Sofiane Naci ++ ++ * config/aarch64/aarch64.md (*mov_aarch64): Add simd attribute. ++ ++2013-05-14 Matthew Gretton-Dann ++ ++ Backport from trunk r197838. ++ 2013-04-11 Naveen H.S ++ ++ * config/aarch64/aarch64.c (aarch64_select_cc_mode): Allow NEG ++ code in CC_NZ mode. ++ * config/aarch64/aarch64.md (*neg_3_compare0): New ++ pattern. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198019. ++ 2013-04-16 Naveen H.S ++ ++ * config/aarch64/aarch64.md (*adds_mul_imm_): New pattern. ++ (*subs_mul_imm_): New pattern. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198424-198425. ++ 2013-04-29 Ian Bolton ++ ++ * config/aarch64/aarch64.md (movsi_aarch64): Support LDR/STR ++ from/to S register. ++ (movdi_aarch64): Support LDR/STR from/to D register. ++ ++ 2013-04-29 Ian Bolton ++ ++ * common/config/aarch64/aarch64-common.c: Enable REE pass at O2 ++ or higher by default. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198412. ++ 2013-04-29 Kyrylo Tkachov ++ ++ * config/arm/arm.md (store_minmaxsi): Use only when ++ optimize_insn_for_size_p. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk 198394,198396-198400,198402-198404. ++ 2013-04-29 James Greenhalgh ++ ++ * config/aarch64/arm_neon.h ++ (vcvt_f<32,64>_s<32,64>): Rewrite in C. ++ (vcvt_f<32,64>_s<32,64>): Rewrite using builtins. ++ (vcvt__f<32,64>_f<32,64>): Likewise. ++ (vcvt_<32,64>_f<32,64>): Likewise. ++ (vcvta_<32,64>_f<32,64>): Likewise. ++ (vcvtm_<32,64>_f<32,64>): Likewise. ++ (vcvtn_<32,64>_f<32,64>): Likewise. ++ (vcvtp_<32,64>_f<32,64>): Likewise. ++ ++ 2013-04-29 James Greenhalgh ++ ++ * config/aarch64/aarch64-simd.md ++ (2): New, maps to fix, fixuns. ++ (2): New, maps to ++ fix_trunc, fixuns_trunc. ++ (ftrunc2): New. ++ * config/aarch64/iterators.md (optab): Add fix, fixuns. ++ (fix_trunc_optab): New. ++ ++ 2013-04-29 James Greenhalgh ++ ++ * config/aarch64/aarch64-builtins.c ++ (aarch64_builtin_vectorized_function): Vectorize over ifloorf, ++ iceilf, lround, iroundf. ++ ++ 2013-04-29 James Greenhalgh ++ ++ * config/aarch64/aarch64-simd-builtins.def (vec_unpacks_hi_): New. ++ (float_truncate_hi_): Likewise. ++ (float_extend_lo_): Likewise. ++ (float_truncate_lo_): Likewise. ++ * config/aarch64/aarch64-simd.md (vec_unpacks_lo_v4sf): New. ++ (aarch64_float_extend_lo_v2df): Likewise. ++ (vec_unpacks_hi_v4sf): Likewise. ++ (aarch64_float_truncate_lo_v2sf): Likewise. ++ (aarch64_float_truncate_hi_v4sf): Likewise. ++ (vec_pack_trunc_v2df): Likewise. ++ (vec_pack_trunc_df): Likewise. ++ ++ 2013-04-29 James Greenhalgh ++ ++ * config/aarch64/aarch64-builtins.c ++ (aarch64_fold_builtin): Fold float conversions. ++ * config/aarch64/aarch64-simd-builtins.def ++ (floatv2si, floatv4si, floatv2di): New. ++ (floatunsv2si, floatunsv4si, floatunsv2di): Likewise. ++ * config/aarch64/aarch64-simd.md ++ (2): New, expands to float and floatuns. ++ * config/aarch64/iterators.md (FLOATUORS): New. ++ (optab): Add float, floatuns. ++ (su_optab): Likewise. ++ ++ 2013-04-29 James Greenhalgh ++ ++ * config/aarch64/aarch64-builtins.c ++ (aarch64_builtin_vectorized_function): Fold to standard pattern names. ++ * config/aarch64/aarch64-simd-builtins.def (frintn): New. ++ (frintz): Rename to... ++ (btrunc): ...this. ++ (frintp): Rename to... ++ (ceil): ...this. ++ (frintm): Rename to... ++ (floor): ...this. ++ (frinti): Rename to... ++ (nearbyint): ...this. ++ (frintx): Rename to... ++ (rint): ...this. ++ (frinta): Rename to... ++ (round): ...this. ++ * config/aarch64/aarch64-simd.md ++ (aarch64_frint): Delete. ++ (2): Convert to insn. ++ * config/aarch64/aarch64.md (unspec): Add UNSPEC_FRINTN. ++ * config/aarch64/iterators.md (FRINT): Add UNSPEC_FRINTN. ++ (frint_pattern): Likewise. ++ (frint_suffix): Likewise. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198302-198306,198316. ++ 2013-04-25 James Greenhalgh ++ ++ * config/aarch64/aarch64-simd.md ++ (aarch64_simd_bsl_internal): Rewrite RTL to not use UNSPEC_BSL. ++ (aarch64_simd_bsl): Likewise. ++ * config/aarch64/iterators.md (unspec): Remove UNSPEC_BSL. ++ ++ 2013-04-25 James Greenhalgh ++ ++ * config/aarch64/aarch64-simd.md (neg2): Use VDQ iterator. ++ ++ 2013-04-25 James Greenhalgh ++ ++ * config/aarch64/aarch64-builtins.c ++ (aarch64_fold_builtin): New. ++ * config/aarch64/aarch64-protos.h (aarch64_fold_builtin): New. ++ * config/aarch64/aarch64.c (TARGET_FOLD_BUILTIN): Define. ++ * config/aarch64/aarch64-simd-builtins.def (abs): New. ++ * config/aarch64/arm_neon.h ++ (vabs_): Implement using __builtin_aarch64_fabs. ++ ++ 2013-04-25 James Greenhalgh ++ Tejas Belagod ++ ++ * config/aarch64/aarch64-builtins.c ++ (aarch64_gimple_fold_builtin): New. ++ * config/aarch64/aarch64-protos.h (aarch64_gimple_fold_builtin): New. ++ * config/aarch64/aarch64-simd-builtins.def (addv): New. ++ * config/aarch64/aarch64-simd.md (addpv4sf): New. ++ (addvv4sf): Update. ++ * config/aarch64/aarch64.c (TARGET_GIMPLE_FOLD_BUILTIN): Define. ++ ++ 2013-04-25 Naveen H.S ++ ++ * config/aarch64/aarch64.md ++ (*cmp_swp__shft_): New pattern. ++ ++ 2013-04-25 Naveen H.S ++ ++ * config/aarch64/aarch64.md (*ngc): New pattern. ++ (*ngcsi_uxtw): New pattern. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk 198298. ++ 2013-04-25 Kyrylo Tkachov ++ Julian Brown ++ ++ * config/arm/arm.c (neon_builtin_type_mode): Add T_V4HF. ++ (TB_DREG): Add T_V4HF. ++ (v4hf_UP): New macro. ++ (neon_itype): Add NEON_FLOAT_WIDEN, NEON_FLOAT_NARROW. ++ (arm_init_neon_builtins): Handle NEON_FLOAT_WIDEN, ++ NEON_FLOAT_NARROW. ++ Handle initialisation of V4HF. Adjust initialisation of reinterpret ++ built-ins. ++ (arm_expand_neon_builtin): Handle NEON_FLOAT_WIDEN, ++ NEON_FLOAT_NARROW. ++ (arm_vector_mode_supported_p): Handle V4HF. ++ (arm_mangle_map): Handle V4HFmode. ++ * config/arm/arm.h (VALID_NEON_DREG_MODE): Add V4HF. ++ * config/arm/arm_neon_builtins.def: Add entries for ++ vcvtv4hfv4sf, vcvtv4sfv4hf. ++ * config/arm/neon.md (neon_vcvtv4sfv4hf): New pattern. ++ (neon_vcvtv4hfv4sf): Likewise. ++ * config/arm/neon-gen.ml: Handle half-precision floating point ++ features. ++ * config/arm/neon-testgen.ml: Handle Requires_FP_bit feature. ++ * config/arm/arm_neon.h: Regenerate. ++ * config/arm/neon.ml (type elts): Add F16. ++ (type vectype): Add T_float16x4, T_floatHF. ++ (type vecmode): Add V4HF. ++ (type features): Add Requires_FP_bit feature. ++ (elt_width): Handle F16. ++ (elt_class): Likewise. ++ (elt_of_class_width): Likewise. ++ (mode_of_elt): Refactor. ++ (type_for_elt): Handle F16, fix error messages. ++ (vectype_size): Handle T_float16x4. ++ (vcvt_sh): New function. ++ (ops): Add entries for vcvt_f16_f32, vcvt_f32_f16. ++ (string_of_vectype): Handle T_floatHF, T_float16, T_float16x4. ++ (string_of_mode): Handle V4HF. ++ * doc/arm-neon-intrinsics.texi: Regenerate. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198136-198137,198142,198176. ++ 2013-04-23 Andreas Schwab ++ ++ * coretypes.h (gimple_stmt_iterator): Add struct to make ++ compatible with C. ++ ++ 2013-04-22 James Greenhalgh ++ ++ * coretypes.h (gimple_stmt_iterator_d): Forward declare. ++ (gimple_stmt_iterator): New typedef. ++ * gimple.h (gimple_stmt_iterator): Rename to... ++ (gimple_stmt_iterator_d): ... This. ++ * doc/tm.texi.in (TARGET_FOLD_BUILTIN): Detail restriction that ++ trees be valid for GIMPLE and GENERIC. ++ (TARGET_GIMPLE_FOLD_BUILTIN): New. ++ * gimple-fold.c (gimple_fold_call): Call target hook ++ gimple_fold_builtin. ++ * hooks.c (hook_bool_gsiptr_false): New. ++ * hooks.h (hook_bool_gsiptr_false): New. ++ * target.def (fold_stmt): New. ++ * doc/tm.texi: Regenerate. ++ ++ 2013-04-22 James Greenhalgh ++ ++ * config/aarch64/aarch64-builtins.c ++ (CF): Remove. ++ (CF0, CF1, CF2, CF3, CF4, CF10): New. ++ (VAR<1-12>): Add MAP parameter. ++ (BUILTIN_*): Likewise. ++ * config/aarch64/aarch64-simd-builtins.def: Set MAP parameter. ++ * config/aarch64/aarch64-simd.md (aarch64_sshl_n): Remove. ++ (aarch64_ushl_n): Likewise. ++ (aarch64_sshr_n): Likewise. ++ (aarch64_ushr_n): Likewise. ++ (aarch64_): Likewise. ++ (aarch64_sqrt): Likewise. ++ * config/aarch64/arm_neon.h (vshl_n_*): Use new builtin names. ++ (vshr_n_*): Likewise. ++ ++ 2013-04-22 James Greenhalgh ++ ++ * config/aarch64/aarch64-builtins.c ++ (aarch64_simd_builtin_type_mode): Handle SF types. ++ (sf_UP): Define. ++ (BUILTIN_GPF): Define. ++ (aarch64_init_simd_builtins): Handle SF types. ++ * config/aarch64/aarch64-simd-builtins.def (frecpe): Add support. ++ (frecps): Likewise. ++ (frecpx): Likewise. ++ * config/aarch64/aarch64-simd.md ++ (simd_types): Update simd_frcp to simd_frecp. ++ (aarch64_frecpe): New. ++ (aarch64_frecps): Likewise. ++ * config/aarch64/aarch64.md (unspec): Add UNSPEC_FRECP. ++ (v8type): Add frecp. ++ (aarch64_frecp): New. ++ (aarch64_frecps): Likewise. ++ * config/aarch64/iterators.md (FRECP): New. ++ (frecp_suffix): Likewise. ++ * config/aarch64/arm_neon.h ++ (vrecp_<32, 64>): Convert to using builtins. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198030. ++ 2013-04-17 Greta Yorsh ++ ++ * config/arm/arm.md (movsicc_insn): Convert define_insn into ++ define_insn_and_split. ++ (and_scc,ior_scc,negscc): Likewise. ++ (cmpsi2_addneg, subsi3_compare): Convert to named patterns. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198020. ++ 2013-04-16 Naveen H.S ++ ++ * config/aarch64/aarch64.md (*adds__multp2): ++ New pattern. ++ (*subs__multp2): New pattern. ++ (*adds__): New pattern. ++ (*subs__): New pattern. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198004,198029. ++ 2013-04-17 Greta Yorsh ++ ++ * config/arm/arm.c (use_return_insn): Return 0 for targets that ++ can benefit from using a sequence of LDRD instructions in epilogue ++ instead of a single LDM instruction. ++ ++ 2013-04-16 Greta Yorsh ++ ++ * config/arm/arm.c (emit_multi_reg_push): New declaration ++ for an existing function. ++ (arm_emit_strd_push): New function. ++ (arm_expand_prologue): Used here. ++ (arm_emit_ldrd_pop): New function. ++ (arm_expand_epilogue): Used here. ++ (arm_get_frame_offsets): Update condition. ++ (arm_emit_multi_reg_pop): Add a special case for load of a single ++ register with writeback. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r197965. ++ 2013-04-15 Kyrylo Tkachov ++ ++ * config/arm/arm.c (const_ok_for_dimode_op): Handle AND case. ++ * config/arm/arm.md (*anddi3_insn): Change to insn_and_split. ++ * config/arm/constraints.md (De): New constraint. ++ * config/arm/neon.md (anddi3_neon): Delete. ++ (neon_vand): Expand to standard anddi3 pattern. ++ * config/arm/predicates.md (imm_for_neon_inv_logic_operand): ++ Move earlier in the file. ++ (neon_inv_logic_op2): Likewise. ++ (arm_anddi_operand_neon): New predicate. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r197925. ++ 2013-04-12 Greta Yorsh ++ ++ * config/arm/arm.md (mov_scc,mov_negscc,mov_notscc): Convert ++ define_insn into define_insn_and_split and emit movsicc patterns. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r197807. ++ 2013-04-11 Naveen H.S ++ ++ * config/aarch64/aarch64.h (REVERSIBLE_CC_MODE): Define. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r197642. ++ 2013-04-09 Kyrylo Tkachov ++ ++ * config/arm/arm.md (minmax_arithsi_non_canon): New pattern. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r197530,197921. ++ 2013-04-12 Greta Yorsh ++ ++ * config/arm/arm.c (gen_operands_ldrd_strd): Initialize "base". ++ ++ 2013-04-05 Greta Yorsh ++ ++ * config/arm/constraints.md (q): New constraint. ++ * config/arm/ldrdstrd.md: New file. ++ * config/arm/arm.md (ldrdstrd.md) New include. ++ (arm_movdi): Use "q" instead of "r" constraint ++ for double-word memory access. ++ (movdf_soft_insn): Likewise. ++ * config/arm/vfp.md (movdi_vfp): Likewise. ++ * config/arm/t-arm (MD_INCLUDES): Add ldrdstrd.md. ++ * config/arm/arm-protos.h (gen_operands_ldrd_strd): New declaration. ++ * config/arm/arm.c (gen_operands_ldrd_strd): New function. ++ (mem_ok_for_ldrd_strd): Likewise. ++ (output_move_double): Update assertion. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport of trunk r197518-197522,197526-197528. ++ 2013-04-05 Greta Yorsh ++ ++ * config/arm/arm.md (arm_smax_insn): Convert define_insn into ++ define_insn_and_split. ++ (arm_smin_insn,arm_umaxsi3,arm_uminsi3): Likewise. ++ ++ 2013-04-05 Greta Yorsh ++ ++ * config/arm/arm.md (arm_ashldi3_1bit): Convert define_insn into ++ define_insn_and_split. ++ (arm_ashrdi3_1bit,arm_lshrdi3_1bit): Likewise. ++ (shiftsi3_compare): New pattern. ++ (rrx): New pattern. ++ * config/arm/unspecs.md (UNSPEC_RRX): New. ++ ++ 2013-04-05 Greta Yorsh ++ ++ * config/arm/arm.md (negdi_extendsidi): New pattern. ++ (negdi_zero_extendsidi): Likewise. ++ ++ 2013-04-05 Greta Yorsh ++ ++ * config/arm/arm.md (andsi_iorsi3_notsi): Convert define_insn into ++ define_insn_and_split. ++ (arm_negdi2,arm_abssi2,arm_neg_abssi2): Likewise. ++ (arm_cmpdi_insn,arm_cmpdi_unsigned): Likewise. ++ ++ 2013-04-05 Greta Yorsh ++ ++ * config/arm/arm.md (arm_subdi3): Convert define_insn into ++ define_insn_and_split. ++ (subdi_di_zesidi,subdi_di_sesidi): Likewise. ++ (subdi_zesidi_di,subdi_sesidi_di,subdi_zesidi_zesidi): Likewise. ++ ++ 2013-04-05 Greta Yorsh ++ ++ * config/arm/arm.md (subsi3_carryin): New pattern. ++ (subsi3_carryin_const): Likewise. ++ (subsi3_carryin_compare,subsi3_carryin_compare_const): Likewise. ++ (subsi3_carryin_shift,rsbsi3_carryin_shift): Likewise. ++ ++ 2013-04-05 Greta Yorsh ++ ++ * config/arm/arm.md (incscc,arm_incscc,decscc,arm_decscc): Delete. ++ ++ 2013-04-05 Greta Yorsh ++ ++ * config/arm/arm.md (addsi3_carryin_): Set attribute predicable. ++ (addsi3_carryin_alt2_,addsi3_carryin_shift_): Likewise. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport of trunk r197517. ++ 2013-04-05 Kyrylo Tkachov ++ ++ * config/arm/arm.c (arm_expand_builtin): Change fcode ++ type to unsigned int. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport of trunk r197513. ++ 2013-04-05 Ramana Radhakrishnan ++ ++ * doc/invoke.texi (ARM Options): Document cortex-a53 support. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport of trunk r197489-197491. ++ 2013-04-04 Kyrylo Tkachov ++ ++ * config/arm/arm-protos.h (arm_builtin_vectorized_function): ++ New function prototype. ++ * config/arm/arm.c (TARGET_VECTORIZE_BUILTINS): Define. ++ (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Likewise. ++ (arm_builtin_vectorized_function): New function. ++ ++ 2013-04-04 Kyrylo Tkachov ++ ++ * config/arm/arm_neon_builtins.def: New file. ++ * config/arm/arm.c (neon_builtin_data): Move contents to ++ arm_neon_builtins.def. ++ (enum arm_builtins): Include neon builtin definitions. ++ (ARM_BUILTIN_NEON_BASE): Move from enum to macro. ++ * config/arm/t-arm (arm.o): Add dependency on ++ arm_neon_builtins.def. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport of trunk 196795-196797,196957 ++ 2013-03-19 Ian Bolton ++ ++ * config/aarch64/aarch64.md (*sub3_carryin): New pattern. ++ (*subsi3_carryin_uxtw): Likewise. ++ ++ 2013-03-19 Ian Bolton ++ ++ * config/aarch64/aarch64.md (*ror3_insn): New pattern. ++ (*rorsi3_insn_uxtw): Likewise. ++ ++ 2013-03-19 Ian Bolton ++ ++ * config/aarch64/aarch64.md (*extr5_insn): New pattern. ++ (*extrsi5_insn_uxtw): Likewise. ++ ++2013-04-10 Matthew Gretton-Dann ++ ++ * LINARO-VERSION: Bump version number. ++ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. ++ ++ * LINARO-VERSION: New file. ++ * configure.ac: Add Linaro version string. ++ * configure: Regenerate. ++ +2013-04-08 Matthew Gretton-Dann + + Backport of trunk r197346. @@ -14,14 +994,14 @@ + Ramana Radhakrishnan + + * config/arm/arm-arches.def (armv8-a): Default to cortex-a53. -+ * config/arm/t-arm (MD_INCLUDES): Depend on cortex-a53.md. -+ * config/arm/cortex-a53.md: New file. -+ * config/arm/bpabi.h (BE8_LINK_SPEC): Handle cortex-a53. -+ * config/arm/arm.md (generic_sched, generic_vfp): Handle cortex-a53. -+ * config/arm/arm.c (arm_issue_rate): Likewise. -+ * config/arm/arm-tune.md: Regenerate -+ * config/arm/arm-tables.opt: Regenerate. -+ * config/arm/arm-cores.def: Add cortex-a53. ++ * config/arm/t-arm (MD_INCLUDES): Depend on cortex-a53.md. ++ * config/arm/cortex-a53.md: New file. ++ * config/arm/bpabi.h (BE8_LINK_SPEC): Handle cortex-a53. ++ * config/arm/arm.md (generic_sched, generic_vfp): Handle cortex-a53. ++ * config/arm/arm.c (arm_issue_rate): Likewise. ++ * config/arm/arm-tune.md: Regenerate ++ * config/arm/arm-tables.opt: Regenerate. ++ * config/arm/arm-cores.def: Add cortex-a53. + +2013-04-08 Matthew Gretton-Dann + @@ -148,7 +1128,101 @@ + * config/aarch64/aarch64-elf.h (REGISTER_PREFIX): Remove. + * config/aarch64/aarch64.c (aarch64_print_operand): Remove all + occurrence of REGISTER_PREFIX as its empty string. +--- a/src/gcc/testsuite/gcc.target/arm/vect-rounding-floorf.c ++++ b/src/gcc/testsuite/gcc.target/arm/vect-rounding-floorf.c +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_v8_neon_ok } */ ++/* { dg-options "-O2 -ffast-math -ftree-vectorize" } */ ++/* { dg-add-options arm_v8_neon } */ ++ ++#define N 32 ++ ++void ++foo (float *output, float *input) ++{ ++ int i = 0; ++ /* Vectorizable. */ ++ for (i = 0; i < N; i++) ++ output[i] = __builtin_floorf (input[i]); ++} ++ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_call_floorf } } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvtf32_f16.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvtf32_f16.c +@@ -0,0 +1,20 @@ ++/* Test the `vcvtf32_f16' ARM Neon intrinsic. */ ++/* This file was autogenerated by neon-testgen. */ ++ ++/* { dg-do assemble } */ ++/* { dg-require-effective-target arm_neon_fp16_ok } */ ++/* { dg-options "-save-temps -O0" } */ ++/* { dg-add-options arm_neon_fp16 } */ ++ ++#include "arm_neon.h" ++ ++void test_vcvtf32_f16 (void) ++{ ++ float32x4_t out_float32x4_t; ++ float16x4_t arg0_float16x4_t; ++ ++ out_float32x4_t = vcvt_f32_f16 (arg0_float16x4_t); ++} ++ ++/* { dg-final { scan-assembler "vcvt\.f32.f16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvtf16_f32.c ++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvtf16_f32.c +@@ -0,0 +1,20 @@ ++/* Test the `vcvtf16_f32' ARM Neon intrinsic. */ ++/* This file was autogenerated by neon-testgen. */ ++ ++/* { dg-do assemble } */ ++/* { dg-require-effective-target arm_neon_fp16_ok } */ ++/* { dg-options "-save-temps -O0" } */ ++/* { dg-add-options arm_neon_fp16 } */ ++ ++#include "arm_neon.h" ++ ++void test_vcvtf16_f32 (void) ++{ ++ float16x4_t out_float16x4_t; ++ float32x4_t arg0_float32x4_t; ++ ++ out_float16x4_t = vcvt_f16_f32 (arg0_float32x4_t); ++} ++ ++/* { dg-final { scan-assembler "vcvt\.f16.f32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/arm/anddi3-opt.c ++++ b/src/gcc/testsuite/gcc.target/arm/anddi3-opt.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O1" } */ ++ ++unsigned long long ++muld (unsigned long long X, unsigned long long Y) ++{ ++ unsigned long long mask = 0xffffffffull; ++ return (X & mask) * (Y & mask); ++} + ++/* { dg-final { scan-assembler-not "and\[\\t \]+.+,\[\\t \]*.+,\[\\t \]*.+" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/peep-ldrd-1.c ++++ b/src/gcc/testsuite/gcc.target/arm/peep-ldrd-1.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_prefer_ldrd_strd } */ ++/* { dg-options "-O2" } */ ++int foo(int a, int b, int* p, int *q) ++{ ++ a = p[2] + p[3]; ++ *q = a; ++ *p = a; ++ return a; ++} ++/* { dg-final { scan-assembler "ldrd" } } */ --- a/src/gcc/testsuite/gcc.target/arm/vselgtdf.c +++ b/src/gcc/testsuite/gcc.target/arm/vselgtdf.c @@ -0,0 +1,13 @@ @@ -194,6 +1268,38 @@ +} + +/* { dg-final { scan-assembler-times "vselge.f32\ts\[0-9\]+" 1 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/peep-strd-1.c ++++ b/src/gcc/testsuite/gcc.target/arm/peep-strd-1.c +@@ -0,0 +1,9 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_prefer_ldrd_strd } */ ++/* { dg-options "-O2" } */ ++void foo(int a, int b, int* p) ++{ ++ p[2] = a; ++ p[3] = b; ++} ++/* { dg-final { scan-assembler "strd" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/negdi-1.c ++++ b/src/gcc/testsuite/gcc.target/arm/negdi-1.c +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm32 } */ ++/* { dg-options "-O2" } */ ++ ++signed long long extendsidi_negsi (signed int x) ++{ ++ return -x; ++} ++ ++/* ++Expected output: ++ rsb r0, r0, #0 ++ mov r1, r0, asr #31 ++*/ ++/* { dg-final { scan-assembler-times "rsb" 1 { target { arm_nothumb } } } } */ ++/* { dg-final { scan-assembler-times "negs\\t" 1 { target { ! { arm_nothumb } } } } } */ ++/* { dg-final { scan-assembler-times "asr" 1 } } */ --- a/src/gcc/testsuite/gcc.target/arm/atomic-comp-swap-release-acquire.c +++ b/src/gcc/testsuite/gcc.target/arm/atomic-comp-swap-release-acquire.c @@ -0,0 +1,10 @@ @@ -278,6 +1384,25 @@ +} + +/* { dg-final { scan-assembler-times "vseleq.f32\ts\[0-9\]+" 1 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/negdi-2.c ++++ b/src/gcc/testsuite/gcc.target/arm/negdi-2.c +@@ -0,0 +1,16 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm32 } */ ++/* { dg-options "-O2" } */ ++ ++signed long long zero_extendsidi_negsi (unsigned int x) ++{ ++ return -x; ++} ++/* ++Expected output: ++ rsb r0, r0, #0 ++ mov r1, #0 ++*/ ++/* { dg-final { scan-assembler-times "rsb\\tr0, r0, #0" 1 { target { arm_nothumb } } } } */ ++/* { dg-final { scan-assembler-times "negs\\tr0, r0" 1 { target { ! arm_nothumb } } } } */ ++/* { dg-final { scan-assembler-times "mov" 1 } } */ --- a/src/gcc/testsuite/gcc.target/arm/vselvcsf.c +++ b/src/gcc/testsuite/gcc.target/arm/vselvcsf.c @@ -0,0 +1,12 @@ @@ -293,6 +1418,21 @@ +} + +/* { dg-final { scan-assembler-times "vselvs.f32\ts\[0-9\]+" 1 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/minmax_minus.c ++++ b/src/gcc/testsuite/gcc.target/arm/minmax_minus.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++#define MAX(a, b) (a > b ? a : b) ++int ++foo (int a, int b, int c) ++{ ++ return c - MAX (a, b); ++} ++ ++/* { dg-final { scan-assembler "rsbge" } } */ ++/* { dg-final { scan-assembler "rsblt" } } */ --- a/src/gcc/testsuite/gcc.target/arm/atomic-op-release.c +++ b/src/gcc/testsuite/gcc.target/arm/atomic-op-release.c @@ -0,0 +1,10 @@ @@ -321,6 +1461,27 @@ +} + +/* { dg-final { scan-assembler-times "vselvs.f32\ts\[0-9\]+" 1 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/vect-rounding-roundf.c ++++ b/src/gcc/testsuite/gcc.target/arm/vect-rounding-roundf.c +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_v8_neon_ok } */ ++/* { dg-options "-O2 -ffast-math -ftree-vectorize" } */ ++/* { dg-add-options arm_v8_neon } */ ++ ++#define N 32 ++ ++void ++foo (float *output, float *input) ++{ ++ int i = 0; ++ /* Vectorizable. */ ++ for (i = 0; i < N; i++) ++ output[i] = __builtin_roundf (input[i]); ++} ++ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_call_roundf } } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ --- a/src/gcc/testsuite/gcc.target/arm/neon-for-64bits-1.c +++ b/src/gcc/testsuite/gcc.target/arm/neon-for-64bits-1.c @@ -0,0 +1,54 @@ @@ -378,6 +1539,26 @@ +/* { dg-final {scan-assembler-times "vorr" 0} } */ +/* { dg-final {scan-assembler-times "veor" 0} } */ +/* { dg-final {scan-assembler-times "vshr" 0} } */ +--- a/src/gcc/testsuite/gcc.target/arm/negdi-3.c ++++ b/src/gcc/testsuite/gcc.target/arm/negdi-3.c +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm32 } */ ++/* { dg-options "-O2" } */ ++ ++signed long long negdi_zero_extendsidi (unsigned int x) ++{ ++ return -((signed long long) x); ++} ++/* ++Expected output: ++ rsbs r0, r0, #0 ++ sbc r1, r1, r1 ++*/ ++/* { dg-final { scan-assembler-times "rsb" 1 } } */ ++/* { dg-final { scan-assembler-times "sbc" 1 } } */ ++/* { dg-final { scan-assembler-times "mov" 0 } } */ ++/* { dg-final { scan-assembler-times "rsc" 0 } } */ --- a/src/gcc/testsuite/gcc.target/arm/atomic-op-acq_rel.c +++ b/src/gcc/testsuite/gcc.target/arm/atomic-op-acq_rel.c @@ -0,0 +1,10 @@ @@ -438,6 +1619,27 @@ +} + +/* { dg-final { scan-assembler-times "vselvs.f64\td\[0-9\]+" 1 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/vect-rounding-btruncf.c ++++ b/src/gcc/testsuite/gcc.target/arm/vect-rounding-btruncf.c +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_v8_neon_ok } */ ++/* { dg-options "-O2 -ffast-math -ftree-vectorize" } */ ++/* { dg-add-options arm_v8_neon } */ ++ ++#define N 32 ++ ++void ++foo (float *output, float *input) ++{ ++ int i = 0; ++ /* Vectorizable. */ ++ for (i = 0; i < N; i++) ++ output[i] = __builtin_truncf (input[i]); ++} ++ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_call_btruncf } } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ --- a/src/gcc/testsuite/gcc.target/arm/vseleqsf.c +++ b/src/gcc/testsuite/gcc.target/arm/vseleqsf.c @@ -0,0 +1,13 @@ @@ -529,6 +1731,37 @@ +} + +/* { dg-final { scan-assembler-times "vselvs.f64\td\[0-9\]+" 1 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/anddi3-opt2.c ++++ b/src/gcc/testsuite/gcc.target/arm/anddi3-opt2.c +@@ -0,0 +1,9 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O1" } */ ++ ++long long muld(long long X, long long Y) ++{ ++ return X & ~1; ++} ++ ++/* { dg-final { scan-assembler-not "and\[\\t \]+.+,\[\\t \]*.+,\[\\t \]*.+" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/negdi-4.c ++++ b/src/gcc/testsuite/gcc.target/arm/negdi-4.c +@@ -0,0 +1,16 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm32 } */ ++/* { dg-options "-O2" } */ ++ ++signed long long negdi_extendsidi (signed int x) ++{ ++ return -((signed long long) x); ++} ++/* ++Expected output: ++ rsbs r0, r0, #0 ++ mov r1, r0, asr #31 ++*/ ++/* { dg-final { scan-assembler-times "rsb" 1 } } */ ++/* { dg-final { scan-assembler-times "asr" 1 } } */ ++/* { dg-final { scan-assembler-times "rsc" 0 } } */ --- a/src/gcc/testsuite/gcc.target/arm/vselltdf.c +++ b/src/gcc/testsuite/gcc.target/arm/vselltdf.c @@ -0,0 +1,13 @@ @@ -616,6 +1849,27 @@ +/* { dg-final { scan-assembler-times "ldrexh\tr\[0-9\]+, \\\[r\[0-9\]+\\\]" 6 } } */ +/* { dg-final { scan-assembler-times "strexh\t...?, r\[0-9\]+, \\\[r\[0-9\]+\\\]" 6 } } */ +/* { dg-final { scan-assembler-not "dmb" } } */ +--- a/src/gcc/testsuite/gcc.target/arm/vect-rounding-ceilf.c ++++ b/src/gcc/testsuite/gcc.target/arm/vect-rounding-ceilf.c +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_v8_neon_ok } */ ++/* { dg-options "-O2 -ffast-math -ftree-vectorize" } */ ++/* { dg-add-options arm_v8_neon } */ ++ ++#define N 32 ++ ++void ++foo (float *output, float *input) ++{ ++ int i = 0; ++ /* Vectorizable. */ ++ for (i = 0; i < N; i++) ++ output[i] = __builtin_ceilf (input[i]); ++} ++ ++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_call_ceilf } } } */ ++/* { dg-final { cleanup-tree-dump "vect" } } */ --- a/src/gcc/testsuite/gcc.target/arm/vselledf.c +++ b/src/gcc/testsuite/gcc.target/arm/vselledf.c @@ -0,0 +1,13 @@ @@ -648,6 +1902,228 @@ +} + +/* { dg-final { scan-assembler-times "vselgt.f32\ts\[0-9\]+" 1 } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vrecps.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vrecps.c +@@ -0,0 +1,144 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 --save-temps" } */ ++ ++#include ++#include ++#include ++ ++int ++test_frecps_float32_t (void) ++{ ++ int i; ++ float32_t value = 0.2; ++ float32_t reciprocal = 5.0; ++ float32_t step = vrecpes_f32 (value); ++ /* 3 steps should give us within ~0.001 accuracy. */ ++ for (i = 0; i < 3; i++) ++ step = step * vrecpss_f32 (step, value); ++ ++ return fabs (step - reciprocal) < 0.001; ++} ++ ++/* { dg-final { scan-assembler "frecpe\\ts\[0-9\]+, s\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "frecps\\ts\[0-9\]+, s\[0-9\]+, s\[0-9\]+" } } */ ++ ++int ++test_frecps_float32x2_t (void) ++{ ++ int i; ++ int ret = 1; ++ ++ const float32_t value_pool[] = {0.2, 0.4}; ++ const float32_t reciprocal_pool[] = {5.0, 2.5}; ++ float32x2_t value = vld1_f32 (value_pool); ++ float32x2_t reciprocal = vld1_f32 (reciprocal_pool); ++ ++ float32x2_t step = vrecpe_f32 (value); ++ /* 3 steps should give us within ~0.001 accuracy. */ ++ for (i = 0; i < 3; i++) ++ step = step * vrecps_f32 (step, value); ++ ++ ret &= fabs (vget_lane_f32 (step, 0) ++ - vget_lane_f32 (reciprocal, 0)) < 0.001; ++ ret &= fabs (vget_lane_f32 (step, 1) ++ - vget_lane_f32 (reciprocal, 1)) < 0.001; ++ ++ return ret; ++} ++ ++/* { dg-final { scan-assembler "frecpe\\tv\[0-9\]+.2s, v\[0-9\]+.2s" } } */ ++/* { dg-final { scan-assembler "frecps\\tv\[0-9\]+.2s, v\[0-9\]+.2s, v\[0-9\]+.2s" } } */ ++ ++int ++test_frecps_float32x4_t (void) ++{ ++ int i; ++ int ret = 1; ++ ++ const float32_t value_pool[] = {0.2, 0.4, 0.5, 0.8}; ++ const float32_t reciprocal_pool[] = {5.0, 2.5, 2.0, 1.25}; ++ float32x4_t value = vld1q_f32 (value_pool); ++ float32x4_t reciprocal = vld1q_f32 (reciprocal_pool); ++ ++ float32x4_t step = vrecpeq_f32 (value); ++ /* 3 steps should give us within ~0.001 accuracy. */ ++ for (i = 0; i < 3; i++) ++ step = step * vrecpsq_f32 (step, value); ++ ++ ret &= fabs (vgetq_lane_f32 (step, 0) ++ - vgetq_lane_f32 (reciprocal, 0)) < 0.001; ++ ret &= fabs (vgetq_lane_f32 (step, 1) ++ - vgetq_lane_f32 (reciprocal, 1)) < 0.001; ++ ret &= fabs (vgetq_lane_f32 (step, 2) ++ - vgetq_lane_f32 (reciprocal, 2)) < 0.001; ++ ret &= fabs (vgetq_lane_f32 (step, 3) ++ - vgetq_lane_f32 (reciprocal, 3)) < 0.001; ++ ++ return ret; ++} ++ ++/* { dg-final { scan-assembler "frecpe\\tv\[0-9\]+.4s, v\[0-9\]+.4s" } } */ ++/* { dg-final { scan-assembler "frecps\\tv\[0-9\]+.4s, v\[0-9\]+.4s, v\[0-9\]+.4s" } } */ ++ ++int ++test_frecps_float64_t (void) ++{ ++ int i; ++ float64_t value = 0.2; ++ float64_t reciprocal = 5.0; ++ float64_t step = vrecped_f64 (value); ++ /* 3 steps should give us within ~0.001 accuracy. */ ++ for (i = 0; i < 3; i++) ++ step = step * vrecpsd_f64 (step, value); ++ ++ return fabs (step - reciprocal) < 0.001; ++} ++ ++/* { dg-final { scan-assembler "frecpe\\td\[0-9\]+, d\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "frecps\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" } } */ ++ ++int ++test_frecps_float64x2_t (void) ++{ ++ int i; ++ int ret = 1; ++ ++ const float64_t value_pool[] = {0.2, 0.4}; ++ const float64_t reciprocal_pool[] = {5.0, 2.5}; ++ float64x2_t value = vld1q_f64 (value_pool); ++ float64x2_t reciprocal = vld1q_f64 (reciprocal_pool); ++ ++ float64x2_t step = vrecpeq_f64 (value); ++ /* 3 steps should give us within ~0.001 accuracy. */ ++ for (i = 0; i < 3; i++) ++ step = step * vrecpsq_f64 (step, value); ++ ++ ret &= fabs (vgetq_lane_f64 (step, 0) ++ - vgetq_lane_f64 (reciprocal, 0)) < 0.001; ++ ret &= fabs (vgetq_lane_f64 (step, 1) ++ - vgetq_lane_f64 (reciprocal, 1)) < 0.001; ++ ++ return ret; ++} ++ ++/* { dg-final { scan-assembler "frecpe\\tv\[0-9\]+.2d, v\[0-9\]+.2d" } } */ ++/* { dg-final { scan-assembler "frecps\\tv\[0-9\]+.2d, v\[0-9\]+.2d, v\[0-9\]+.2d" } } */ ++ ++int ++main (int argc, char **argv) ++{ ++ if (!test_frecps_float32_t ()) ++ abort (); ++ if (!test_frecps_float32x2_t ()) ++ abort (); ++ if (!test_frecps_float32x4_t ()) ++ abort (); ++ if (!test_frecps_float64_t ()) ++ abort (); ++ if (!test_frecps_float64x2_t ()) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/scalar-vca.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/scalar-vca.c +@@ -0,0 +1,72 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 --save-temps" } */ ++ ++#include ++ ++extern void abort (void); ++extern float fabsf (float); ++extern double fabs (double); ++ ++#define NUM_TESTS 8 ++ ++float input_s1[] = {0.1f, -0.1f, 0.4f, 10.3f, 200.0f, -800.0f, -13.0f, -0.5f}; ++float input_s2[] = {-0.2f, 0.4f, 0.04f, -100.3f, 2.0f, -80.0f, 13.0f, -0.5f}; ++double input_d1[] = {0.1, -0.1, 0.4, 10.3, 200.0, -800.0, -13.0, -0.5}; ++double input_d2[] = {-0.2, 0.4, 0.04, -100.3, 2.0, -80.0, 13.0, -0.5}; ++ ++#define TEST(TEST, CMP, SUFFIX, WIDTH, F) \ ++int \ ++test_fca##TEST##SUFFIX##_float##WIDTH##_t (void) \ ++{ \ ++ int ret = 0; \ ++ int i = 0; \ ++ uint##WIDTH##_t output[NUM_TESTS]; \ ++ \ ++ for (i = 0; i < NUM_TESTS; i++) \ ++ { \ ++ float##WIDTH##_t f1 = fabs##F (input_##SUFFIX##1[i]); \ ++ float##WIDTH##_t f2 = fabs##F (input_##SUFFIX##2[i]); \ ++ /* Inhibit optimization of our linear test loop. */ \ ++ asm volatile ("" : : : "memory"); \ ++ output[i] = f1 CMP f2 ? -1 : 0; \ ++ } \ ++ \ ++ for (i = 0; i < NUM_TESTS; i++) \ ++ { \ ++ output[i] = vca##TEST##SUFFIX##_f##WIDTH (input_##SUFFIX##1[i], \ ++ input_##SUFFIX##2[i]) \ ++ ^ output[i]; \ ++ /* Inhibit autovectorization of our scalar test loop. */ \ ++ asm volatile ("" : : : "memory"); \ ++ } \ ++ \ ++ for (i = 0; i < NUM_TESTS; i++) \ ++ ret |= output[i]; \ ++ \ ++ return ret; \ ++} ++ ++TEST (ge, >=, s, 32, f) ++/* { dg-final { scan-assembler "facge\\ts\[0-9\]+, s\[0-9\]+, s\[0-9\]+" } } */ ++TEST (ge, >=, d, 64, ) ++/* { dg-final { scan-assembler "facge\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" } } */ ++TEST (gt, >, s, 32, f) ++/* { dg-final { scan-assembler "facgt\\ts\[0-9\]+, s\[0-9\]+, s\[0-9\]+" } } */ ++TEST (gt, >, d, 64, ) ++/* { dg-final { scan-assembler "facgt\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" } } */ ++ ++int ++main (int argc, char **argv) ++{ ++ if (test_fcages_float32_t ()) ++ abort (); ++ if (test_fcaged_float64_t ()) ++ abort (); ++ if (test_fcagts_float32_t ()) ++ abort (); ++ if (test_fcagtd_float64_t ()) ++ abort (); ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ --- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-acq_rel.x +++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-acq_rel.x @@ -0,0 +1,37 @@ @@ -688,6 +2164,43 @@ +{ + return __atomic_fetch_or (&v, a, __ATOMIC_ACQ_REL); +} +--- a/src/gcc/testsuite/gcc.target/aarch64/extr.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/extr.c +@@ -0,0 +1,34 @@ ++/* { dg-options "-O2 --save-temps" } */ ++/* { dg-do run } */ ++ ++extern void abort (void); ++ ++int ++test_si (int a, int b) ++{ ++ /* { dg-final { scan-assembler "extr\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+, 27\n" } } */ ++ return (a << 5) | ((unsigned int) b >> 27); ++} ++ ++long long ++test_di (long long a, long long b) ++{ ++ /* { dg-final { scan-assembler "extr\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+, 45\n" } } */ ++ return (a << 19) | ((unsigned long long) b >> 45); ++} ++ ++int ++main () ++{ ++ int v; ++ long long w; ++ v = test_si (0x00000004, 0x30000000); ++ if (v != 0x00000086) ++ abort(); ++ w = test_di (0x0001040040040004ll, 0x0070050066666666ll); ++ if (w != 0x2002002000200380ll) ++ abort(); ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ --- a/src/gcc/testsuite/gcc.target/aarch64/vect-compile.c +++ b/src/gcc/testsuite/gcc.target/aarch64/vect-compile.c @@ -16,5 +16,7 @@ @@ -698,6 +2211,497 @@ +/* { dg-final { scan-assembler "saba" } } */ /* { dg-final { scan-assembler-times "addv" 2} } */ /* { dg-final { scan-assembler-times "addp" 2} } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/adds3.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/adds3.c +@@ -0,0 +1,61 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps -fno-inline" } */ ++ ++extern void abort (void); ++typedef long long s64; ++ ++int ++adds_ext (s64 a, int b, int c) ++{ ++ s64 d = a + b; ++ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++int ++adds_shift_ext (s64 a, int b, int c) ++{ ++ s64 d = (a + ((s64)b << 3)); ++ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++int main () ++{ ++ int x; ++ s64 y; ++ ++ x = adds_ext (0x13000002ll, 41, 15); ++ if (x != 318767203) ++ abort (); ++ ++ x = adds_ext (0x50505050ll, 29, 4); ++ if (x != 1347440782) ++ abort (); ++ ++ x = adds_ext (0x12121212121ll, 2, 14); ++ if (x != 555819315) ++ abort (); ++ ++ x = adds_shift_ext (0x123456789ll, 4, 12); ++ if (x != 591751097) ++ abort (); ++ ++ x = adds_shift_ext (0x02020202ll, 9, 8); ++ if (x != 33686107) ++ abort (); ++ ++ x = adds_shift_ext (0x987987987987ll, 23, 41); ++ if (x != -2020050305) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "adds\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+, sxtw" 2 } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/subs2.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/subs2.c +@@ -0,0 +1,155 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps -fno-inline" } */ ++ ++extern void abort (void); ++ ++int ++subs_si_test1 (int a, int b, int c) ++{ ++ int d = a - b; ++ ++ /* { dg-final { scan-assembler-not "subs\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+" } } */ ++ /* { dg-final { scan-assembler "sub\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+" } } */ ++ if (d <= 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++int ++subs_si_test2 (int a, int b, int c) ++{ ++ int d = a - 0xfff; ++ ++ /* { dg-final { scan-assembler-not "subs\tw\[0-9\]+, w\[0-9\]+, #4095" } } */ ++ /* { dg-final { scan-assembler "sub\tw\[0-9\]+, w\[0-9\]+, #4095" } } */ ++ if (d <= 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++int ++subs_si_test3 (int a, int b, int c) ++{ ++ int d = a - (b << 3); ++ ++ /* { dg-final { scan-assembler-not "subs\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+, lsl 3" } } */ ++ /* { dg-final { scan-assembler "sub\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+, lsl 3" } } */ ++ if (d <= 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++typedef long long s64; ++ ++s64 ++subs_di_test1 (s64 a, s64 b, s64 c) ++{ ++ s64 d = a - b; ++ ++ /* { dg-final { scan-assembler-not "subs\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+" } } */ ++ /* { dg-final { scan-assembler "sub\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+" } } */ ++ if (d <= 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++s64 ++subs_di_test2 (s64 a, s64 b, s64 c) ++{ ++ s64 d = a - 0x1000ll; ++ ++ /* { dg-final { scan-assembler-not "subs\tx\[0-9\]+, x\[0-9\]+, #4096" } } */ ++ /* { dg-final { scan-assembler "sub\tx\[0-9\]+, x\[0-9\]+, #4096" } } */ ++ if (d <= 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++s64 ++subs_di_test3 (s64 a, s64 b, s64 c) ++{ ++ s64 d = a - (b << 3); ++ ++ /* { dg-final { scan-assembler-not "subs\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+, lsl 3" } } */ ++ /* { dg-final { scan-assembler "sub\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+, lsl 3" } } */ ++ if (d <= 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++int main () ++{ ++ int x; ++ s64 y; ++ ++ x = subs_si_test1 (29, 4, 5); ++ if (x != 34) ++ abort (); ++ ++ x = subs_si_test1 (5, 2, 20); ++ if (x != 25) ++ abort (); ++ ++ x = subs_si_test2 (29, 4, 5); ++ if (x != 34) ++ abort (); ++ ++ x = subs_si_test2 (1024, 2, 20); ++ if (x != 1044) ++ abort (); ++ ++ x = subs_si_test3 (35, 4, 5); ++ if (x != 12) ++ abort (); ++ ++ x = subs_si_test3 (5, 2, 20); ++ if (x != 25) ++ abort (); ++ ++ y = subs_di_test1 (0x130000029ll, ++ 0x320000004ll, ++ 0x505050505ll); ++ ++ if (y != 0x63505052e) ++ abort (); ++ ++ y = subs_di_test1 (0x5000500050005ll, ++ 0x2111211121112ll, ++ 0x0000000002020ll); ++ if (y != 0x5000500052025) ++ abort (); ++ ++ y = subs_di_test2 (0x130000029ll, ++ 0x320000004ll, ++ 0x505050505ll); ++ if (y != 0x95504f532) ++ abort (); ++ ++ y = subs_di_test2 (0x540004100ll, ++ 0x320000004ll, ++ 0x805050205ll); ++ if (y != 0x1065053309) ++ abort (); ++ ++ y = subs_di_test3 (0x130000029ll, ++ 0x064000008ll, ++ 0x505050505ll); ++ if (y != 0x63505052e) ++ abort (); ++ ++ y = subs_di_test3 (0x130002900ll, ++ 0x088000008ll, ++ 0x505050505ll); ++ if (y != 0x635052e05) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vrecpx.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vrecpx.c +@@ -0,0 +1,54 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 --save-temps" } */ ++ ++#include ++#include ++#include ++ ++float32_t in_f[] = ++{2.0, 4.0, 8.0, 16.0, 1.0, 0.5, 0.25, 0.125}; ++float32_t rec_f[] = ++{1.0, 0.5, 0.25, 0.125, 2.0, 4.0, 8.0, 16.0}; ++float64_t in_d[] = ++{2.0, 4.0, 8.0, 16.0, 1.0, 0.5, 0.25, 0.125}; ++float32_t rec_d[] = ++{1.0, 0.5, 0.25, 0.125, 2.0, 4.0, 8.0, 16.0}; ++ ++int ++test_frecpx_float32_t (void) ++{ ++ int i = 0; ++ int ret = 1; ++ for (i = 0; i < 8; i++) ++ ret &= fabs (vrecpxs_f32 (in_f[i]) - rec_f[i]) < 0.001; ++ ++ return ret; ++} ++ ++/* { dg-final { scan-assembler "frecpx\\ts\[0-9\]+, s\[0-9\]+" } } */ ++ ++int ++test_frecpx_float64_t (void) ++{ ++ int i = 0; ++ int ret = 1; ++ for (i = 0; i < 8; i++) ++ ret &= fabs (vrecpxd_f64 (in_d[i]) - rec_d[i]) < 0.001; ++ ++ return ret; ++} ++ ++/* { dg-final { scan-assembler "frecpx\\td\[0-9\]+, d\[0-9\]+" } } */ ++ ++int ++main (int argc, char **argv) ++{ ++ if (!test_frecpx_float32_t ()) ++ abort (); ++ if (!test_frecpx_float64_t ()) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vect-vca.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-vca.c +@@ -0,0 +1,89 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 --save-temps" } */ ++ ++#include ++ ++extern void abort (void); ++extern float fabsf (float); ++extern double fabs (double); ++ ++#define NUM_TESTS 8 ++ ++float input_s1[] = {0.1f, -0.1f, 0.4f, 10.3f, 200.0f, -800.0f, -13.0f, -0.5f}; ++float input_s2[] = {-0.2f, 0.4f, 0.04f, -100.3f, 2.0f, -80.0f, 13.0f, -0.5f}; ++double input_d1[] = {0.1, -0.1, 0.4, 10.3, 200.0, -800.0, -13.0, -0.5}; ++double input_d2[] = {-0.2, 0.4, 0.04, -100.3, 2.0, -80.0, 13.0, -0.5}; ++ ++#define TEST(T, CMP, SUFFIX, WIDTH, LANES, Q, F) \ ++int \ ++test_vca##T##_float##WIDTH##x##LANES##_t (void) \ ++{ \ ++ int ret = 0; \ ++ int i = 0; \ ++ uint##WIDTH##_t output[NUM_TESTS]; \ ++ \ ++ for (i = 0; i < NUM_TESTS; i++) \ ++ { \ ++ float##WIDTH##_t f1 = fabs##F (input_##SUFFIX##1[i]); \ ++ float##WIDTH##_t f2 = fabs##F (input_##SUFFIX##2[i]); \ ++ /* Inhibit optimization of our linear test loop. */ \ ++ asm volatile ("" : : : "memory"); \ ++ output[i] = f1 CMP f2 ? -1 : 0; \ ++ } \ ++ \ ++ for (i = 0; i < NUM_TESTS; i += LANES) \ ++ { \ ++ float##WIDTH##x##LANES##_t in1 = \ ++ vld1##Q##_f##WIDTH (input_##SUFFIX##1 + i); \ ++ float##WIDTH##x##LANES##_t in2 = \ ++ vld1##Q##_f##WIDTH (input_##SUFFIX##2 + i); \ ++ uint##WIDTH##x##LANES##_t expected_out = \ ++ vld1##Q##_u##WIDTH (output + i); \ ++ uint##WIDTH##x##LANES##_t out = \ ++ veor##Q##_u##WIDTH (vca##T##Q##_f##WIDTH (in1, in2), \ ++ expected_out); \ ++ vst1##Q##_u##WIDTH (output + i, out); \ ++ } \ ++ \ ++ for (i = 0; i < NUM_TESTS; i++) \ ++ ret |= output[i]; \ ++ \ ++ return ret; \ ++} ++ ++#define BUILD_VARIANTS(T, CMP) \ ++TEST (T, CMP, s, 32, 2, , f) \ ++TEST (T, CMP, s, 32, 4, q, f) \ ++TEST (T, CMP, d, 64, 2, q, ) ++ ++BUILD_VARIANTS (ge, >=) ++/* { dg-final { scan-assembler "facge\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "facge\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "facge\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++ ++BUILD_VARIANTS (gt, >) ++/* { dg-final { scan-assembler "facgt\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "facgt\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "facgt\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++ ++/* No need for another scan-assembler as these tests ++ also generate facge, facgt instructions. */ ++BUILD_VARIANTS (le, <=) ++BUILD_VARIANTS (lt, <) ++ ++#undef TEST ++#define TEST(T, CMP, SUFFIX, WIDTH, LANES, Q, F) \ ++if (test_vca##T##_float##WIDTH##x##LANES##_t ()) \ ++ abort (); ++ ++int ++main (int argc, char **argv) ++{ ++BUILD_VARIANTS (ge, >=) ++BUILD_VARIANTS (gt, >) ++BUILD_VARIANTS (le, <=) ++BUILD_VARIANTS (lt, <) ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vect-vrnd.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-vrnd.c +@@ -0,0 +1,117 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 --save-temps" } */ ++ ++#include ++ ++extern void abort (void); ++extern float fabsf (float); ++extern double fabs (double); ++ ++extern double trunc (double); ++extern double round (double); ++extern double nearbyint (double); ++extern double floor (double); ++extern double ceil (double); ++extern double rint (double); ++ ++extern float truncf (float); ++extern float roundf (float); ++extern float nearbyintf (float); ++extern float floorf (float); ++extern float ceilf (float); ++extern float rintf (float); ++ ++#define NUM_TESTS 8 ++#define DELTA 0.000001 ++ ++float input_f32[] = {0.1f, -0.1f, 0.4f, 10.3f, ++ 200.0f, -800.0f, -13.0f, -0.5f}; ++double input_f64[] = {0.1, -0.1, 0.4, 10.3, ++ 200.0, -800.0, -13.0, -0.5}; ++ ++#define TEST(SUFFIX, Q, WIDTH, LANES, C_FN, F) \ ++int \ ++test_vrnd##SUFFIX##_float##WIDTH##x##LANES##_t (void) \ ++{ \ ++ int ret = 1; \ ++ int i = 0; \ ++ int nlanes = LANES; \ ++ float##WIDTH##_t expected_out[NUM_TESTS]; \ ++ float##WIDTH##_t actual_out[NUM_TESTS]; \ ++ \ ++ for (i = 0; i < NUM_TESTS; i++) \ ++ { \ ++ expected_out[i] = C_FN##F (input_f##WIDTH[i]); \ ++ /* Don't vectorize this. */ \ ++ asm volatile ("" : : : "memory"); \ ++ } \ ++ \ ++ /* Prevent the compiler from noticing these two loops do the same \ ++ thing and optimizing away the comparison. */ \ ++ asm volatile ("" : : : "memory"); \ ++ \ ++ for (i = 0; i < NUM_TESTS; i+=nlanes) \ ++ { \ ++ float##WIDTH##x##LANES##_t out = \ ++ vrnd##SUFFIX##Q##_f##WIDTH \ ++ (vld1##Q##_f##WIDTH (input_f##WIDTH + i)); \ ++ vst1##Q##_f##WIDTH (actual_out + i, out); \ ++ } \ ++ \ ++ for (i = 0; i < NUM_TESTS; i++) \ ++ ret &= fabs##F (expected_out[i] - actual_out[i]) < DELTA; \ ++ \ ++ return ret; \ ++} \ ++ ++ ++#define BUILD_VARIANTS(SUFFIX, C_FN) \ ++TEST (SUFFIX, , 32, 2, C_FN, f) \ ++TEST (SUFFIX, q, 32, 4, C_FN, f) \ ++TEST (SUFFIX, q, 64, 2, C_FN, ) \ ++ ++BUILD_VARIANTS ( , trunc) ++/* { dg-final { scan-assembler "frintz\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "frintz\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "frintz\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++BUILD_VARIANTS (a, round) ++/* { dg-final { scan-assembler "frinta\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "frinta\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "frinta\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++BUILD_VARIANTS (i, nearbyint) ++/* { dg-final { scan-assembler "frinti\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "frinti\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "frinti\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++BUILD_VARIANTS (m, floor) ++/* { dg-final { scan-assembler "frintm\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "frintm\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "frintm\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++BUILD_VARIANTS (p, ceil) ++/* { dg-final { scan-assembler "frintp\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "frintp\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "frintp\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++BUILD_VARIANTS (x, rint) ++/* { dg-final { scan-assembler "frintx\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "frintx\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "frintx\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++ ++#undef TEST ++#define TEST(SUFFIX, Q, WIDTH, LANES, C_FN, F) \ ++{ \ ++ if (!test_vrnd##SUFFIX##_float##WIDTH##x##LANES##_t ()) \ ++ abort (); \ ++} ++ ++int ++main (int argc, char **argv) ++{ ++ BUILD_VARIANTS ( , trunc) ++ BUILD_VARIANTS (a, round) ++ BUILD_VARIANTS (i, nearbyint) ++ BUILD_VARIANTS (m, floor) ++ BUILD_VARIANTS (p, ceil) ++ BUILD_VARIANTS (x, rint) ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ --- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-relaxed.c +++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-relaxed.c @@ -1,43 +1,7 @@ @@ -745,7 +2749,21 @@ - /* { dg-final { scan-assembler-times "ldxr\tw\[0-9\]+, \\\[x\[0-9\]+\\\]" 6 } } */ /* { dg-final { scan-assembler-times "stxr\tw\[0-9\]+, w\[0-9\]+, \\\[x\[0-9\]+\\\]" 6 } } */ ---- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-relaxed.x +--- a/src/gcc/testsuite/gcc.target/aarch64/vaddv-intrinsic-compile.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vaddv-intrinsic-compile.c +@@ -0,0 +1,11 @@ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O3" } */ ++ ++#include "arm_neon.h" ++ ++#include "vaddv-intrinsic.x" ++ ++/* { dg-final { scan-assembler "faddp\\ts\[0-9\]+"} } */ ++/* { dg-final { scan-assembler-times "faddp\\tv\[0-9\]+\.4s" 2} } */ ++/* { dg-final { scan-assembler "faddp\\td\[0-9\]+"} } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-relaxed.x +++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-relaxed.x @@ -0,0 +1,37 @@ +int v = 0; @@ -805,6 +2823,18 @@ TESTV (reduce_smax, s); TESTV (reduce_smin, s); TESTV (reduce_umax, u); +--- a/src/gcc/testsuite/gcc.target/aarch64/scalar-mov.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/scalar-mov.c +@@ -0,0 +1,9 @@ ++/* { dg-do compile } */ ++/* { dg-options "-g -mgeneral-regs-only" } */ ++ ++void ++foo (const char *c, ...) ++{ ++ char buf[256]; ++ buf[256 - 1] = '\0'; ++} --- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-acquire.c +++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-acquire.c @@ -1,43 +1,7 @@ @@ -917,6 +2947,70 @@ + for (i = 0; i < 16; i++) + c[i] += abs (a[i] - b[i]); +} +--- a/src/gcc/testsuite/gcc.target/aarch64/subs3.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/subs3.c +@@ -0,0 +1,61 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps -fno-inline" } */ ++ ++extern void abort (void); ++typedef long long s64; ++ ++int ++subs_ext (s64 a, int b, int c) ++{ ++ s64 d = a - b; ++ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++int ++subs_shift_ext (s64 a, int b, int c) ++{ ++ s64 d = (a - ((s64)b << 3)); ++ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++int main () ++{ ++ int x; ++ s64 y; ++ ++ x = subs_ext (0x13000002ll, 41, 15); ++ if (x != 318767121) ++ abort (); ++ ++ x = subs_ext (0x50505050ll, 29, 4); ++ if (x != 1347440724) ++ abort (); ++ ++ x = subs_ext (0x12121212121ll, 2, 14); ++ if (x != 555819311) ++ abort (); ++ ++ x = subs_shift_ext (0x123456789ll, 4, 12); ++ if (x != 591751033) ++ abort (); ++ ++ x = subs_shift_ext (0x02020202ll, 9, 8); ++ if (x != 33685963) ++ abort (); ++ ++ x = subs_shift_ext (0x987987987987ll, 23, 41); ++ if (x != -2020050673) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "subs\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+, sxtw" 2 } } */ --- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-acquire.x +++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-acquire.x @@ -0,0 +1,37 @@ @@ -957,6 +3051,81 @@ +{ + return __atomic_fetch_or (&v, a, __ATOMIC_ACQUIRE); +} +--- a/src/gcc/testsuite/gcc.target/aarch64/vaddv-intrinsic.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vaddv-intrinsic.c +@@ -0,0 +1,28 @@ ++ ++/* { dg-do run } */ ++/* { dg-options "-O3" } */ ++ ++#include "arm_neon.h" ++ ++extern void abort (void); ++ ++#include "vaddv-intrinsic.x" ++ ++int ++main (void) ++{ ++ const float32_t pool_v2sf[] = {4.0f, 9.0f}; ++ const float32_t pool_v4sf[] = {4.0f, 9.0f, 16.0f, 25.0f}; ++ const float64_t pool_v2df[] = {4.0, 9.0}; ++ ++ if (test_vaddv_v2sf (pool_v2sf) != 13.0f) ++ abort (); ++ ++ if (test_vaddv_v4sf (pool_v4sf) != 54.0f) ++ abort (); ++ ++ if (test_vaddv_v2df (pool_v2df) != 13.0) ++ abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/sbc.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/sbc.c +@@ -0,0 +1,41 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps" } */ ++ ++extern void abort (void); ++ ++typedef unsigned int u32int; ++typedef unsigned long long u64int; ++ ++u32int ++test_si (u32int w1, u32int w2, u32int w3, u32int w4) ++{ ++ u32int w0; ++ /* { dg-final { scan-assembler "sbc\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+\n" } } */ ++ w0 = w1 - w2 - (w3 < w4); ++ return w0; ++} ++ ++u64int ++test_di (u64int x1, u64int x2, u64int x3, u64int x4) ++{ ++ u64int x0; ++ /* { dg-final { scan-assembler "sbc\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+\n" } } */ ++ x0 = x1 - x2 - (x3 < x4); ++ return x0; ++} ++ ++int ++main () ++{ ++ u32int x; ++ u64int y; ++ x = test_si (7, 8, 12, 15); ++ if (x != -2) ++ abort(); ++ y = test_di (0x987654321ll, 0x123456789ll, 0x345345345ll, 0x123123123ll); ++ if (y != 0x8641fdb98ll) ++ abort(); ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ --- a/src/gcc/testsuite/gcc.target/aarch64/atomic-comp-swap-release-acquire.x +++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-comp-swap-release-acquire.x @@ -0,0 +1,36 @@ @@ -996,6 +3165,226 @@ + WEAK, __ATOMIC_RELEASE, + __ATOMIC_ACQUIRE); +} +--- a/src/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c +@@ -1,8 +1,14 @@ + /* { dg-do compile } */ + /* { dg-options "-O2" } */ + +-#include "../../../config/aarch64/arm_neon.h" ++#include + ++/* Used to force a variable to a SIMD register. */ ++#define force_simd(V1) asm volatile ("mov %d0, %d1" \ ++ : "=w"(V1) \ ++ : "w"(V1) \ ++ : /* No clobbers */); ++ + /* { dg-final { scan-assembler-times "\\tadd\\tx\[0-9\]+" 2 } } */ + + uint64x1_t +@@ -31,7 +37,12 @@ + uint64x1_t + test_vceqd_s64 (int64x1_t a, int64x1_t b) + { +- return vceqd_s64 (a, b); ++ uint64x1_t res; ++ force_simd (a); ++ force_simd (b); ++ res = vceqd_s64 (a, b); ++ force_simd (res); ++ return res; + } + + /* { dg-final { scan-assembler-times "\\tcmeq\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */ +@@ -39,7 +50,11 @@ + uint64x1_t + test_vceqzd_s64 (int64x1_t a) + { +- return vceqzd_s64 (a); ++ uint64x1_t res; ++ force_simd (a); ++ res = vceqzd_s64 (a); ++ force_simd (res); ++ return res; + } + + /* { dg-final { scan-assembler-times "\\tcmge\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 2 } } */ +@@ -47,21 +62,36 @@ + uint64x1_t + test_vcged_s64 (int64x1_t a, int64x1_t b) + { +- return vcged_s64 (a, b); ++ uint64x1_t res; ++ force_simd (a); ++ force_simd (b); ++ res = vcged_s64 (a, b); ++ force_simd (res); ++ return res; + } + + uint64x1_t + test_vcled_s64 (int64x1_t a, int64x1_t b) + { +- return vcled_s64 (a, b); ++ uint64x1_t res; ++ force_simd (a); ++ force_simd (b); ++ res = vcled_s64 (a, b); ++ force_simd (res); ++ return res; + } + +-/* { dg-final { scan-assembler-times "\\tcmge\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */ ++/* Idiom recognition will cause this testcase not to generate ++ the expected cmge instruction, so do not check for it. */ + + uint64x1_t + test_vcgezd_s64 (int64x1_t a) + { +- return vcgezd_s64 (a); ++ uint64x1_t res; ++ force_simd (a); ++ res = vcgezd_s64 (a); ++ force_simd (res); ++ return res; + } + + /* { dg-final { scan-assembler-times "\\tcmhs\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 1 } } */ +@@ -69,7 +99,12 @@ + uint64x1_t + test_vcged_u64 (uint64x1_t a, uint64x1_t b) + { +- return vcged_u64 (a, b); ++ uint64x1_t res; ++ force_simd (a); ++ force_simd (b); ++ res = vcged_u64 (a, b); ++ force_simd (res); ++ return res; + } + + /* { dg-final { scan-assembler-times "\\tcmgt\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 2 } } */ +@@ -77,13 +112,23 @@ + uint64x1_t + test_vcgtd_s64 (int64x1_t a, int64x1_t b) + { +- return vcgtd_s64 (a, b); ++ uint64x1_t res; ++ force_simd (a); ++ force_simd (b); ++ res = vcgtd_s64 (a, b); ++ force_simd (res); ++ return res; + } + + uint64x1_t + test_vcltd_s64 (int64x1_t a, int64x1_t b) + { +- return vcltd_s64 (a, b); ++ uint64x1_t res; ++ force_simd (a); ++ force_simd (b); ++ res = vcltd_s64 (a, b); ++ force_simd (res); ++ return res; + } + + /* { dg-final { scan-assembler-times "\\tcmgt\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */ +@@ -91,7 +136,11 @@ + uint64x1_t + test_vcgtzd_s64 (int64x1_t a) + { +- return vcgtzd_s64 (a); ++ uint64x1_t res; ++ force_simd (a); ++ res = vcgtzd_s64 (a); ++ force_simd (res); ++ return res; + } + + /* { dg-final { scan-assembler-times "\\tcmhi\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 1 } } */ +@@ -99,7 +148,12 @@ + uint64x1_t + test_vcgtd_u64 (uint64x1_t a, uint64x1_t b) + { +- return vcgtd_u64 (a, b); ++ uint64x1_t res; ++ force_simd (a); ++ force_simd (b); ++ res = vcgtd_u64 (a, b); ++ force_simd (res); ++ return res; + } + + /* { dg-final { scan-assembler-times "\\tcmle\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */ +@@ -107,15 +161,24 @@ + uint64x1_t + test_vclezd_s64 (int64x1_t a) + { +- return vclezd_s64 (a); ++ uint64x1_t res; ++ force_simd (a); ++ res = vclezd_s64 (a); ++ force_simd (res); ++ return res; + } + +-/* { dg-final { scan-assembler-times "\\tcmlt\\td\[0-9\]+, d\[0-9\]+, #?0" 1 } } */ ++/* Idiom recognition will cause this testcase not to generate ++ the expected cmlt instruction, so do not check for it. */ + + uint64x1_t + test_vcltzd_s64 (int64x1_t a) + { +- return vcltzd_s64 (a); ++ uint64x1_t res; ++ force_simd (a); ++ res = vcltzd_s64 (a); ++ force_simd (res); ++ return res; + } + + /* { dg-final { scan-assembler-times "\\tdup\\tb\[0-9\]+, v\[0-9\]+\.b" 2 } } */ +@@ -179,13 +242,23 @@ + int64x1_t + test_vtst_s64 (int64x1_t a, int64x1_t b) + { +- return vtstd_s64 (a, b); ++ uint64x1_t res; ++ force_simd (a); ++ force_simd (b); ++ res = vtstd_s64 (a, b); ++ force_simd (res); ++ return res; + } + + uint64x1_t + test_vtst_u64 (uint64x1_t a, uint64x1_t b) + { +- return vtstd_u64 (a, b); ++ uint64x1_t res; ++ force_simd (a); ++ force_simd (b); ++ res = vtstd_s64 (a, b); ++ force_simd (res); ++ return res; + } + + /* { dg-final { scan-assembler-times "\\taddp\\td\[0-9\]+, v\[0-9\]+\.2d" 1 } } */ +@@ -722,8 +795,11 @@ + return vrshld_u64 (a, b); + } + +-/* { dg-final { scan-assembler-times "\\tasr\\tx\[0-9\]+" 1 } } */ ++/* Other intrinsics can generate an asr instruction (vcltzd, vcgezd), ++ so we cannot check scan-assembler-times. */ + ++/* { dg-final { scan-assembler "\\tasr\\tx\[0-9\]+" } } */ ++ + int64x1_t + test_vshrd_n_s64 (int64x1_t a) + { --- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-int.c +++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-int.c @@ -1,43 +1,7 @@ @@ -1090,6 +3479,147 @@ - /* { dg-final { scan-assembler-times "ldaxr\tw\[0-9\]+, \\\[x\[0-9\]+\\\]" 6 } } */ /* { dg-final { scan-assembler-times "stlxr\tw\[0-9\]+, w\[0-9\]+, \\\[x\[0-9\]+\\\]" 6 } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vaddv-intrinsic.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/vaddv-intrinsic.x +@@ -0,0 +1,27 @@ ++ ++float32_t ++test_vaddv_v2sf (const float32_t *pool) ++{ ++ float32x2_t val; ++ ++ val = vld1_f32 (pool); ++ return vaddv_f32 (val); ++} ++ ++float32_t ++test_vaddv_v4sf (const float32_t *pool) ++{ ++ float32x4_t val; ++ ++ val = vld1q_f32 (pool); ++ return vaddvq_f32 (val); ++} ++ ++float64_t ++test_vaddv_v2df (const float64_t *pool) ++{ ++ float64x2_t val; ++ ++ val = vld1q_f64 (pool); ++ return vaddvq_f64 (val); ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/negs.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/negs.c +@@ -0,0 +1,108 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps" } */ ++ ++extern void abort (void); ++int z; ++ ++int ++negs_si_test1 (int a, int b, int c) ++{ ++ int d = -b; ++ ++ /* { dg-final { scan-assembler "negs\tw\[0-9\]+, w\[0-9\]+" } } */ ++ if (d < 0) ++ return a + c; ++ ++ z = d; ++ return b + c + d; ++} ++ ++int ++negs_si_test3 (int a, int b, int c) ++{ ++ int d = -(b) << 3; ++ ++ /* { dg-final { scan-assembler "negs\tw\[0-9\]+, w\[0-9\]+, lsl 3" } } */ ++ if (d == 0) ++ return a + c; ++ ++ z = d; ++ return b + c + d; ++} ++ ++typedef long long s64; ++s64 zz; ++ ++s64 ++negs_di_test1 (s64 a, s64 b, s64 c) ++{ ++ s64 d = -b; ++ ++ /* { dg-final { scan-assembler "negs\tx\[0-9\]+, x\[0-9\]+" } } */ ++ if (d < 0) ++ return a + c; ++ ++ zz = d; ++ return b + c + d; ++} ++ ++s64 ++negs_di_test3 (s64 a, s64 b, s64 c) ++{ ++ s64 d = -(b) << 3; ++ ++ /* { dg-final { scan-assembler "negs\tx\[0-9\]+, x\[0-9\]+, lsl 3" } } */ ++ if (d == 0) ++ return a + c; ++ ++ zz = d; ++ return b + c + d; ++} ++ ++int main () ++{ ++ int x; ++ s64 y; ++ ++ x = negs_si_test1 (2, 12, 5); ++ if (x != 7) ++ abort (); ++ ++ x = negs_si_test1 (1, 2, 32); ++ if (x != 33) ++ abort (); ++ ++ x = negs_si_test3 (13, 14, 5); ++ if (x != -93) ++ abort (); ++ ++ x = negs_si_test3 (15, 21, 2); ++ if (x != -145) ++ abort (); ++ ++ y = negs_di_test1 (0x20202020ll, ++ 0x65161611ll, ++ 0x42434243ll); ++ if (y != 0x62636263ll) ++ abort (); ++ ++ y = negs_di_test1 (0x1010101010101ll, ++ 0x123456789abcdll, ++ 0x5555555555555ll); ++ if (y != 0x6565656565656ll) ++ abort (); ++ ++ y = negs_di_test3 (0x62523781ll, ++ 0x64234978ll, ++ 0x12345123ll); ++ if (y != 0xfffffffd553d4edbll) ++ abort (); ++ ++ y = negs_di_test3 (0x763526268ll, ++ 0x101010101ll, ++ 0x222222222ll); ++ if (y != 0xfffffffb1b1b1b1bll) ++ abort (); ++ ++ return 0; ++} --- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-consume.c +++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-consume.c @@ -1,43 +1,7 @@ @@ -1398,6 +3928,195 @@ /* { dg-final { scan-assembler "fneg\\tv" } } */ /* { dg-final { scan-assembler "fabs\\tv" } } */ +/* { dg-final { scan-assembler "fabd\\tv" } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/adds1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/adds1.c +@@ -0,0 +1,149 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps -fno-inline" } */ ++ ++extern void abort (void); ++ ++int ++adds_si_test1 (int a, int b, int c) ++{ ++ int d = a + b; ++ ++ /* { dg-final { scan-assembler "adds\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+" } } */ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++int ++adds_si_test2 (int a, int b, int c) ++{ ++ int d = a + 0xff; ++ ++ /* { dg-final { scan-assembler "adds\tw\[0-9\]+, w\[0-9\]+, 255" } } */ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++int ++adds_si_test3 (int a, int b, int c) ++{ ++ int d = a + (b << 3); ++ ++ /* { dg-final { scan-assembler "adds\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+, lsl 3" } } */ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++typedef long long s64; ++ ++s64 ++adds_di_test1 (s64 a, s64 b, s64 c) ++{ ++ s64 d = a + b; ++ ++ /* { dg-final { scan-assembler "adds\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+" } } */ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++s64 ++adds_di_test2 (s64 a, s64 b, s64 c) ++{ ++ s64 d = a + 0xff; ++ ++ /* { dg-final { scan-assembler "adds\tx\[0-9\]+, x\[0-9\]+, 255" } } */ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++s64 ++adds_di_test3 (s64 a, s64 b, s64 c) ++{ ++ s64 d = a + (b << 3); ++ ++ /* { dg-final { scan-assembler "adds\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+, lsl 3" } } */ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++int main () ++{ ++ int x; ++ s64 y; ++ ++ x = adds_si_test1 (29, 4, 5); ++ if (x != 42) ++ abort (); ++ ++ x = adds_si_test1 (5, 2, 20); ++ if (x != 29) ++ abort (); ++ ++ x = adds_si_test2 (29, 4, 5); ++ if (x != 293) ++ abort (); ++ ++ x = adds_si_test2 (1024, 2, 20); ++ if (x != 1301) ++ abort (); ++ ++ x = adds_si_test3 (35, 4, 5); ++ if (x != 76) ++ abort (); ++ ++ x = adds_si_test3 (5, 2, 20); ++ if (x != 43) ++ abort (); ++ ++ y = adds_di_test1 (0x130000029ll, ++ 0x320000004ll, ++ 0x505050505ll); ++ ++ if (y != 0xc75050536) ++ abort (); ++ ++ y = adds_di_test1 (0x5000500050005ll, ++ 0x2111211121112ll, ++ 0x0000000002020ll); ++ if (y != 0x9222922294249) ++ abort (); ++ ++ y = adds_di_test2 (0x130000029ll, ++ 0x320000004ll, ++ 0x505050505ll); ++ if (y != 0x955050631) ++ abort (); ++ ++ y = adds_di_test2 (0x130002900ll, ++ 0x320000004ll, ++ 0x505050505ll); ++ if (y != 0x955052f08) ++ abort (); ++ ++ y = adds_di_test3 (0x130000029ll, ++ 0x064000008ll, ++ 0x505050505ll); ++ if (y != 0x9b9050576) ++ abort (); ++ ++ y = adds_di_test3 (0x130002900ll, ++ 0x088000008ll, ++ 0x505050505ll); ++ if (y != 0xafd052e4d) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/ror.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/ror.c +@@ -0,0 +1,34 @@ ++/* { dg-options "-O2 --save-temps" } */ ++/* { dg-do run } */ ++ ++extern void abort (void); ++ ++int ++test_si (int a) ++{ ++ /* { dg-final { scan-assembler "ror\tw\[0-9\]+, w\[0-9\]+, 27\n" } } */ ++ return (a << 5) | ((unsigned int) a >> 27); ++} ++ ++long long ++test_di (long long a) ++{ ++ /* { dg-final { scan-assembler "ror\tx\[0-9\]+, x\[0-9\]+, 45\n" } } */ ++ return (a << 19) | ((unsigned long long) a >> 45); ++} ++ ++int ++main () ++{ ++ int v; ++ long long w; ++ v = test_si (0x0203050); ++ if (v != 0x4060a00) ++ abort(); ++ w = test_di (0x0000020506010304ll); ++ if (w != 0x1028300818200000ll) ++ abort(); ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ --- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-release.c +++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-release.c @@ -1,43 +1,7 @@ @@ -1485,6 +4204,141 @@ +{ + return __atomic_fetch_or (&v, a, __ATOMIC_RELAXED); +} +--- a/src/gcc/testsuite/gcc.target/aarch64/vect-vcvt.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-vcvt.c +@@ -0,0 +1,132 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 --save-temps -ffast-math" } */ ++ ++#include ++ ++extern void abort (void); ++extern double fabs (double); ++ ++#define NUM_TESTS 8 ++#define DELTA 0.000001 ++ ++float input_f32[] = {0.1f, -0.1f, 0.4f, 10.3f, ++ 200.0f, -800.0f, -13.0f, -0.5f}; ++double input_f64[] = {0.1, -0.1, 0.4, 10.3, ++ 200.0, -800.0, -13.0, -0.5}; ++ ++#define TEST(SUFFIX, Q, WIDTH, LANES, S, U, D) \ ++int \ ++test_vcvt##SUFFIX##_##S##WIDTH##_f##WIDTH##x##LANES##_t (void) \ ++{ \ ++ int ret = 1; \ ++ int i = 0; \ ++ int nlanes = LANES; \ ++ U##int##WIDTH##_t expected_out[NUM_TESTS]; \ ++ U##int##WIDTH##_t actual_out[NUM_TESTS]; \ ++ \ ++ for (i = 0; i < NUM_TESTS; i++) \ ++ { \ ++ expected_out[i] \ ++ = vcvt##SUFFIX##D##_##S##WIDTH##_f##WIDTH (input_f##WIDTH[i]); \ ++ /* Don't vectorize this. */ \ ++ asm volatile ("" : : : "memory"); \ ++ } \ ++ \ ++ for (i = 0; i < NUM_TESTS; i+=nlanes) \ ++ { \ ++ U##int##WIDTH##x##LANES##_t out = \ ++ vcvt##SUFFIX##Q##_##S##WIDTH##_f##WIDTH \ ++ (vld1##Q##_f##WIDTH (input_f##WIDTH + i)); \ ++ vst1##Q##_##S##WIDTH (actual_out + i, out); \ ++ } \ ++ \ ++ for (i = 0; i < NUM_TESTS; i++) \ ++ ret &= fabs (expected_out[i] - actual_out[i]) < DELTA; \ ++ \ ++ return ret; \ ++} \ ++ ++ ++#define BUILD_VARIANTS(SUFFIX) \ ++TEST (SUFFIX, , 32, 2, s, ,s) \ ++TEST (SUFFIX, q, 32, 4, s, ,s) \ ++TEST (SUFFIX, q, 64, 2, s, ,d) \ ++TEST (SUFFIX, , 32, 2, u,u,s) \ ++TEST (SUFFIX, q, 32, 4, u,u,s) \ ++TEST (SUFFIX, q, 64, 2, u,u,d) \ ++ ++BUILD_VARIANTS ( ) ++/* { dg-final { scan-assembler "fcvtzs\\tw\[0-9\]+, s\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtzs\\tx\[0-9\]+, d\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtzs\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "fcvtzs\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "fcvtzs\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++/* { dg-final { scan-assembler "fcvtzu\\tw\[0-9\]+, s\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtzu\\tx\[0-9\]+, d\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtzu\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "fcvtzu\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "fcvtzu\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++BUILD_VARIANTS (a) ++/* { dg-final { scan-assembler "fcvtas\\tw\[0-9\]+, s\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtas\\tx\[0-9\]+, d\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtas\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "fcvtas\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "fcvtas\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++/* { dg-final { scan-assembler "fcvtau\\tw\[0-9\]+, s\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtau\\tx\[0-9\]+, d\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtau\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "fcvtau\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "fcvtau\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++BUILD_VARIANTS (m) ++/* { dg-final { scan-assembler "fcvtms\\tw\[0-9\]+, s\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtms\\tx\[0-9\]+, d\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtms\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "fcvtms\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "fcvtms\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++/* { dg-final { scan-assembler "fcvtmu\\tw\[0-9\]+, s\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtmu\\tx\[0-9\]+, d\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtmu\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "fcvtmu\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "fcvtmu\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++BUILD_VARIANTS (n) ++/* { dg-final { scan-assembler "fcvtns\\tw\[0-9\]+, s\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtns\\tx\[0-9\]+, d\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtns\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "fcvtns\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "fcvtns\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++/* { dg-final { scan-assembler "fcvtnu\\tw\[0-9\]+, s\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtnu\\tx\[0-9\]+, d\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtnu\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "fcvtnu\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "fcvtnu\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++BUILD_VARIANTS (p) ++/* { dg-final { scan-assembler "fcvtps\\tw\[0-9\]+, s\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtps\\tx\[0-9\]+, d\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtps\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "fcvtps\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "fcvtps\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++/* { dg-final { scan-assembler "fcvtpu\\tw\[0-9\]+, s\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtpu\\tx\[0-9\]+, d\[0-9\]+" } } */ ++/* { dg-final { scan-assembler "fcvtpu\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" } } */ ++/* { dg-final { scan-assembler "fcvtpu\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" } } */ ++/* { dg-final { scan-assembler "fcvtpu\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ ++ ++#undef TEST ++#define TEST(SUFFIX, Q, WIDTH, LANES, S, U, D) \ ++{ \ ++ if (!test_vcvt##SUFFIX##_##S##WIDTH##_f##WIDTH##x##LANES##_t ()) \ ++ abort (); \ ++} ++ ++int ++main (int argc, char **argv) ++{ ++ BUILD_VARIANTS ( ) ++ BUILD_VARIANTS (a) ++ BUILD_VARIANTS (m) ++ BUILD_VARIANTS (n) ++ BUILD_VARIANTS (p) ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ --- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-release.x +++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-release.x @@ -0,0 +1,37 @@ @@ -1525,6 +4379,47 @@ +{ + return __atomic_fetch_or (&v, a, __ATOMIC_RELEASE); +} +--- a/src/gcc/testsuite/gcc.target/aarch64/fabd.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/fabd.c +@@ -0,0 +1,38 @@ ++/* { dg-do run } */ ++/* { dg-options "-O1 -fno-inline --save-temps" } */ ++ ++extern double fabs (double); ++extern float fabsf (float); ++extern void abort (); ++extern void exit (int); ++ ++void ++fabd_d (double x, double y, double d) ++{ ++ if ((fabs (x - y) - d) > 0.00001) ++ abort (); ++} ++ ++/* { dg-final { scan-assembler "fabd\td\[0-9\]+" } } */ ++ ++void ++fabd_f (float x, float y, float d) ++{ ++ if ((fabsf (x - y) - d) > 0.00001) ++ abort (); ++} ++ ++/* { dg-final { scan-assembler "fabd\ts\[0-9\]+" } } */ ++ ++int ++main () ++{ ++ fabd_d (10.0, 5.0, 5.0); ++ fabd_d (5.0, 10.0, 5.0); ++ fabd_f (10.0, 5.0, 5.0); ++ fabd_f (5.0, 10.0, 5.0); ++ ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ --- a/src/gcc/testsuite/gcc.target/aarch64/vect-fp.c +++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fp.c @@ -117,6 +117,16 @@ @@ -1552,41 +4447,174 @@ return 0; } ---- a/src/gcc/testsuite/gcc.target/aarch64/vect-fp.x -+++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fp.x -@@ -7,13 +7,23 @@ - extern float fabsf (float); - extern double fabs (double); - -+#define DEF3a(fname, type, op) \ -+ void fname##_##type (pR##type a, \ -+ pR##type b, \ -+ pR##type c) \ -+ { \ -+ int i; \ -+ for (i = 0; i < 16; i++) \ -+ a[i] = op (b[i] - c[i]); \ -+ } +--- a/src/gcc/testsuite/gcc.target/aarch64/ngc.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/ngc.c +@@ -0,0 +1,66 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps -fno-inline" } */ + - #define DEF3(fname, type, op) \ - void fname##_##type (pR##type a, \ - pR##type b, \ - pR##type c) \ - { \ - int i; \ -- for (i=0; i<16; i++) \ -+ for (i = 0; i < 16; i++) \ - a[i] = b[i] op c[i]; \ - } - -@@ -22,11 +32,15 @@ - pR##type b) \ - { \ - int i; \ -- for (i=0; i<16; i++) \ -+ for (i = 0; i < 16; i++) \ - a[i] = op(b[i]); \ - } ++extern void abort (void); ++typedef unsigned int u32; ++ ++u32 ++ngc_si (u32 a, u32 b, u32 c, u32 d) ++{ ++ a = -b - (c < d); ++ return a; ++} ++ ++typedef unsigned long long u64; ++ ++u64 ++ngc_si_tst (u64 a, u32 b, u32 c, u32 d) ++{ ++ a = -b - (c < d); ++ return a; ++} ++ ++u64 ++ngc_di (u64 a, u64 b, u64 c, u64 d) ++{ ++ a = -b - (c < d); ++ return a; ++} ++ ++int ++main () ++{ ++ int x; ++ u64 y; ++ ++ x = ngc_si (29, 4, 5, 4); ++ if (x != -4) ++ abort (); ++ ++ x = ngc_si (1024, 2, 20, 13); ++ if (x != -2) ++ abort (); ++ ++ y = ngc_si_tst (0x130000029ll, 32, 50, 12); ++ if (y != 0xffffffe0) ++ abort (); ++ ++ y = ngc_si_tst (0x5000500050005ll, 21, 2, 14); ++ if (y != 0xffffffea) ++ abort (); ++ ++ y = ngc_di (0x130000029ll, 0x320000004ll, 0x505050505ll, 0x123123123ll); ++ if (y != 0xfffffffcdffffffc) ++ abort (); ++ ++ y = ngc_di (0x5000500050005ll, ++ 0x2111211121112ll, 0x0000000002020ll, 0x1414575046477ll); ++ if (y != 0xfffdeeedeeedeeed) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "ngc\tw\[0-9\]+, w\[0-9\]+" 2 } } */ ++/* { dg-final { scan-assembler-times "ngc\tx\[0-9\]+, x\[0-9\]+" 1 } } */ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/cmp.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/cmp.c +@@ -0,0 +1,61 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++int ++cmp_si_test1 (int a, int b, int c) ++{ ++ if (a > b) ++ return a + c; ++ else ++ return a + b + c; ++} ++ ++int ++cmp_si_test2 (int a, int b, int c) ++{ ++ if ((a >> 3) > b) ++ return a + c; ++ else ++ return a + b + c; ++} ++ ++typedef long long s64; ++ ++s64 ++cmp_di_test1 (s64 a, s64 b, s64 c) ++{ ++ if (a > b) ++ return a + c; ++ else ++ return a + b + c; ++} ++ ++s64 ++cmp_di_test2 (s64 a, s64 b, s64 c) ++{ ++ if ((a >> 3) > b) ++ return a + c; ++ else ++ return a + b + c; ++} ++ ++int ++cmp_di_test3 (int a, s64 b, s64 c) ++{ ++ if (a > b) ++ return a + c; ++ else ++ return a + b + c; ++} ++ ++int ++cmp_di_test4 (int a, s64 b, s64 c) ++{ ++ if (((s64)a << 3) > b) ++ return a + c; ++ else ++ return a + b + c; ++} ++ ++/* { dg-final { scan-assembler-times "cmp\tw\[0-9\]+, w\[0-9\]+" 2 } } */ ++/* { dg-final { scan-assembler-times "cmp\tx\[0-9\]+, x\[0-9\]+" 4 } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/vect-fp.x ++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fp.x +@@ -7,13 +7,23 @@ + extern float fabsf (float); + extern double fabs (double); + ++#define DEF3a(fname, type, op) \ ++ void fname##_##type (pR##type a, \ ++ pR##type b, \ ++ pR##type c) \ ++ { \ ++ int i; \ ++ for (i = 0; i < 16; i++) \ ++ a[i] = op (b[i] - c[i]); \ ++ } ++ + #define DEF3(fname, type, op) \ + void fname##_##type (pR##type a, \ + pR##type b, \ + pR##type c) \ + { \ + int i; \ +- for (i=0; i<16; i++) \ ++ for (i = 0; i < 16; i++) \ + a[i] = b[i] op c[i]; \ + } + +@@ -22,11 +32,15 @@ + pR##type b) \ + { \ + int i; \ +- for (i=0; i<16; i++) \ ++ for (i = 0; i < 16; i++) \ + a[i] = op(b[i]); \ + } +#define DEFN3a(fname, op) \ @@ -1649,174 +4677,6081 @@ - /* { dg-final { scan-assembler-times "ldaxr\tw\[0-9\]+, \\\[x\[0-9\]+\\\]" 6 } } */ /* { dg-final { scan-assembler-times "stlxr\tw\[0-9\]+, w\[0-9\]+, \\\[x\[0-9\]+\\\]" 6 } } */ ---- a/src/gcc/testsuite/ChangeLog.linaro -+++ b/src/gcc/testsuite/ChangeLog.linaro -@@ -0,0 +1,83 @@ -+2013-04-08 Matthew Gretton-Dann +--- a/src/gcc/testsuite/gcc.target/aarch64/subs1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/subs1.c +@@ -0,0 +1,149 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps -fno-inline" } */ + -+ Backport from trunk r197052. -+ 2013-03-25 Kyrylo Tkachov ++extern void abort (void); + -+ * gcc.target/arm/vseleqdf.c: New test. -+ * gcc.target/arm/vseleqsf.c: Likewise. -+ * gcc.target/arm/vselgedf.c: Likewise. -+ * gcc.target/arm/vselgesf.c: Likewise. -+ * gcc.target/arm/vselgtdf.c: Likewise. -+ * gcc.target/arm/vselgtsf.c: Likewise. -+ * gcc.target/arm/vselledf.c: Likewise. -+ * gcc.target/arm/vsellesf.c: Likewise. -+ * gcc.target/arm/vselltdf.c: Likewise. -+ * gcc.target/arm/vselltsf.c: Likewise. -+ * gcc.target/arm/vselnedf.c: Likewise. -+ * gcc.target/arm/vselnesf.c: Likewise. -+ * gcc.target/arm/vselvcdf.c: Likewise. -+ * gcc.target/arm/vselvcsf.c: Likewise. -+ * gcc.target/arm/vselvsdf.c: Likewise. -+ * gcc.target/arm/vselvssf.c: Likewise. ++int ++subs_si_test1 (int a, int b, int c) ++{ ++ int d = a - c; + -+2013-04-08 Matthew Gretton-Dann ++ /* { dg-final { scan-assembler "subs\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+" } } */ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} + -+ Backport from trunk r197051. -+ 2013-03-25 Kyrylo Tkachov ++int ++subs_si_test2 (int a, int b, int c) ++{ ++ int d = a - 0xff; + -+ * gcc.target/aarch64/atomic-comp-swap-release-acquire.c: Move test -+ body from here... -+ * gcc.target/aarch64/atomic-comp-swap-release-acquire.x: ... to here. -+ * gcc.target/aarch64/atomic-op-acq_rel.c: Move test body from here... -+ * gcc.target/aarch64/atomic-op-acq_rel.x: ... to here. -+ * gcc.target/aarch64/atomic-op-acquire.c: Move test body from here... -+ * gcc.target/aarch64/atomic-op-acquire.x: ... to here. -+ * gcc.target/aarch64/atomic-op-char.c: Move test body from here... -+ * gcc.target/aarch64/atomic-op-char.x: ... to here. -+ * gcc.target/aarch64/atomic-op-consume.c: Move test body from here... -+ * gcc.target/aarch64/atomic-op-consume.x: ... to here. -+ * gcc.target/aarch64/atomic-op-int.c: Move test body from here... -+ * gcc.target/aarch64/atomic-op-int.x: ... to here. -+ * gcc.target/aarch64/atomic-op-relaxed.c: Move test body from here... -+ * gcc.target/aarch64/atomic-op-relaxed.x: ... to here. -+ * gcc.target/aarch64/atomic-op-release.c: Move test body from here... -+ * gcc.target/aarch64/atomic-op-release.x: ... to here. -+ * gcc.target/aarch64/atomic-op-seq_cst.c: Move test body from here... -+ * gcc.target/aarch64/atomic-op-seq_cst.x: ... to here. -+ * gcc.target/aarch64/atomic-op-short.c: Move test body from here... -+ * gcc.target/aarch64/atomic-op-short.x: ... to here. -+ * gcc.target/arm/atomic-comp-swap-release-acquire.c: New test. -+ * gcc.target/arm/atomic-op-acq_rel.c: Likewise. -+ * gcc.target/arm/atomic-op-acquire.c: Likewise. -+ * gcc.target/arm/atomic-op-char.c: Likewise. -+ * gcc.target/arm/atomic-op-consume.c: Likewise. -+ * gcc.target/arm/atomic-op-int.c: Likewise. -+ * gcc.target/arm/atomic-op-relaxed.c: Likewise. -+ * gcc.target/arm/atomic-op-release.c: Likewise. -+ * gcc.target/arm/atomic-op-seq_cst.c: Likewise. -+ * gcc.target/arm/atomic-op-short.c: Likewise. ++ /* { dg-final { scan-assembler "subs\tw\[0-9\]+, w\[0-9\]+, #255" } } */ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} + -+2013-04-08 Matthew Gretton-Dann ++int ++subs_si_test3 (int a, int b, int c) ++{ ++ int d = a - (b << 3); + -+ Backport from trunk r196876. -+ 2013-03-21 Christophe Lyon ++ /* { dg-final { scan-assembler "subs\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+, lsl 3" } } */ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} + -+ * gcc.target/arm/neon-for-64bits-1.c: New tests. -+ * gcc.target/arm/neon-for-64bits-2.c: Likewise. ++typedef long long s64; + -+2013-04-08 Matthew Gretton-Dann ++s64 ++subs_di_test1 (s64 a, s64 b, s64 c) ++{ ++ s64 d = a - c; + -+ Backport from trunk r196858. -+ 2013-03-21 Naveen H.S ++ /* { dg-final { scan-assembler "subs\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+" } } */ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} + -+ * gcc.target/aarch64/vect.c: Test and result vector added -+ for sabd and saba instructions. -+ * gcc.target/aarch64/vect-compile.c: Check for sabd and saba -+ instructions in assembly. -+ * gcc.target/aarch64/vect.x: Add sabd and saba test functions. -+ * gcc.target/aarch64/vect-fp.c: Test and result vector added -+ for fabd instruction. -+ * gcc.target/aarch64/vect-fp-compile.c: Check for fabd -+ instruction in assembly. -+ * gcc.target/aarch64/vect-fp.x: Add fabd test function. ++s64 ++subs_di_test2 (s64 a, s64 b, s64 c) ++{ ++ s64 d = a - 0xff; + ---- a/src/gcc/config/aarch64/aarch64-simd.md -+++ b/src/gcc/config/aarch64/aarch64-simd.md -@@ -44,6 +44,7 @@ - ; simd_dup duplicate element. - ; simd_dupgp duplicate general purpose register. - ; simd_ext bitwise extract from pair. -+; simd_fabd floating absolute difference and accumulate. - ; simd_fadd floating point add/sub. - ; simd_fcmp floating point compare. - ; simd_fcvti floating point convert to integer. -@@ -147,6 +148,7 @@ - simd_dup,\ - simd_dupgp,\ - simd_ext,\ -+ simd_fabd,\ - simd_fadd,\ - simd_fcmp,\ - simd_fcvti,\ -@@ -520,6 +522,40 @@ - (set_attr "simd_mode" "")] - ) - -+(define_insn "abd_3" -+ [(set (match_operand:VDQ_BHSI 0 "register_operand" "=w") -+ (abs:VDQ_BHSI (minus:VDQ_BHSI -+ (match_operand:VDQ_BHSI 1 "register_operand" "w") -+ (match_operand:VDQ_BHSI 2 "register_operand" "w"))))] -+ "TARGET_SIMD" -+ "sabd\t%0., %1., %2." -+ [(set_attr "simd_type" "simd_abd") -+ (set_attr "simd_mode" "")] -+) ++ /* { dg-final { scan-assembler "subs\tx\[0-9\]+, x\[0-9\]+, #255" } } */ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} + -+(define_insn "aba_3" -+ [(set (match_operand:VDQ_BHSI 0 "register_operand" "=w") -+ (plus:VDQ_BHSI (abs:VDQ_BHSI (minus:VDQ_BHSI -+ (match_operand:VDQ_BHSI 1 "register_operand" "w") -+ (match_operand:VDQ_BHSI 2 "register_operand" "w"))) -+ (match_operand:VDQ_BHSI 3 "register_operand" "0")))] -+ "TARGET_SIMD" -+ "saba\t%0., %1., %2." -+ [(set_attr "simd_type" "simd_abd") -+ (set_attr "simd_mode" "")] -+) ++s64 ++subs_di_test3 (s64 a, s64 b, s64 c) ++{ ++ s64 d = a - (b << 3); + -+(define_insn "fabd_3" -+ [(set (match_operand:VDQF 0 "register_operand" "=w") -+ (abs:VDQF (minus:VDQF -+ (match_operand:VDQF 1 "register_operand" "w") -+ (match_operand:VDQF 2 "register_operand" "w"))))] -+ "TARGET_SIMD" -+ "fabd\t%0., %1., %2." -+ [(set_attr "simd_type" "simd_fabd") -+ (set_attr "simd_mode" "")] -+) ++ /* { dg-final { scan-assembler "subs\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+, lsl 3" } } */ ++ if (d == 0) ++ return a + c; ++ else ++ return b + d + c; ++} + - (define_insn "and3" - [(set (match_operand:VDQ 0 "register_operand" "=w") - (and:VDQ (match_operand:VDQ 1 "register_operand" "w") ---- a/src/gcc/config/aarch64/aarch64-elf.h -+++ b/src/gcc/config/aarch64/aarch64-elf.h -@@ -106,7 +106,6 @@ - - #define ASM_COMMENT_START "//" - --#define REGISTER_PREFIX "" - #define LOCAL_LABEL_PREFIX "." - #define USER_LABEL_PREFIX "" - ---- a/src/gcc/config/aarch64/aarch64.md -+++ b/src/gcc/config/aarch64/aarch64.md -@@ -763,19 +763,23 @@ - ) - - (define_insn "*mov_aarch64" -- [(set (match_operand:SHORT 0 "nonimmediate_operand" "=r,r,r,m, r,*w") -- (match_operand:SHORT 1 "general_operand" " r,M,m,rZ,*w,r"))] -+ [(set (match_operand:SHORT 0 "nonimmediate_operand" "=r,r, *w,r,*w, m, m, r,*w,*w") -+ (match_operand:SHORT 1 "general_operand" " r,M,D,m, m,rZ,*w,*w, r,*w"))] - "(register_operand (operands[0], mode) - || aarch64_reg_or_zero (operands[1], mode))" - "@ ++int main () ++{ ++ int x; ++ s64 y; ++ ++ x = subs_si_test1 (29, 4, 5); ++ if (x != 33) ++ abort (); ++ ++ x = subs_si_test1 (5, 2, 20); ++ if (x != 7) ++ abort (); ++ ++ x = subs_si_test2 (29, 4, 5); ++ if (x != -217) ++ abort (); ++ ++ x = subs_si_test2 (1024, 2, 20); ++ if (x != 791) ++ abort (); ++ ++ x = subs_si_test3 (35, 4, 5); ++ if (x != 12) ++ abort (); ++ ++ x = subs_si_test3 (5, 2, 20); ++ if (x != 11) ++ abort (); ++ ++ y = subs_di_test1 (0x130000029ll, ++ 0x320000004ll, ++ 0x505050505ll); ++ ++ if (y != 0x45000002d) ++ abort (); ++ ++ y = subs_di_test1 (0x5000500050005ll, ++ 0x2111211121112ll, ++ 0x0000000002020ll); ++ if (y != 0x7111711171117) ++ abort (); ++ ++ y = subs_di_test2 (0x130000029ll, ++ 0x320000004ll, ++ 0x505050505ll); ++ if (y != 0x955050433) ++ abort (); ++ ++ y = subs_di_test2 (0x130002900ll, ++ 0x320000004ll, ++ 0x505050505ll); ++ if (y != 0x955052d0a) ++ abort (); ++ ++ y = subs_di_test3 (0x130000029ll, ++ 0x064000008ll, ++ 0x505050505ll); ++ if (y != 0x3790504f6) ++ abort (); ++ ++ y = subs_di_test3 (0x130002900ll, ++ 0x088000008ll, ++ 0x505050505ll); ++ if (y != 0x27d052dcd) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/adds2.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/adds2.c +@@ -0,0 +1,155 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 --save-temps -fno-inline" } */ ++ ++extern void abort (void); ++ ++int ++adds_si_test1 (int a, int b, int c) ++{ ++ int d = a + b; ++ ++ /* { dg-final { scan-assembler-not "adds\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+" } } */ ++ /* { dg-final { scan-assembler "add\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+" } } */ ++ if (d <= 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++int ++adds_si_test2 (int a, int b, int c) ++{ ++ int d = a + 0xfff; ++ ++ /* { dg-final { scan-assembler-not "adds\tw\[0-9\]+, w\[0-9\]+, 4095" } } */ ++ /* { dg-final { scan-assembler "add\tw\[0-9\]+, w\[0-9\]+, 4095" } } */ ++ if (d <= 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++int ++adds_si_test3 (int a, int b, int c) ++{ ++ int d = a + (b << 3); ++ ++ /* { dg-final { scan-assembler-not "adds\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+, lsl 3" } } */ ++ /* { dg-final { scan-assembler "add\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+, lsl 3" } } */ ++ if (d <= 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++typedef long long s64; ++ ++s64 ++adds_di_test1 (s64 a, s64 b, s64 c) ++{ ++ s64 d = a + b; ++ ++ /* { dg-final { scan-assembler-not "adds\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+" } } */ ++ /* { dg-final { scan-assembler "add\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+" } } */ ++ if (d <= 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++s64 ++adds_di_test2 (s64 a, s64 b, s64 c) ++{ ++ s64 d = a + 0x1000ll; ++ ++ /* { dg-final { scan-assembler-not "adds\tx\[0-9\]+, x\[0-9\]+, 4096" } } */ ++ /* { dg-final { scan-assembler "add\tx\[0-9\]+, x\[0-9\]+, 4096" } } */ ++ if (d <= 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++s64 ++adds_di_test3 (s64 a, s64 b, s64 c) ++{ ++ s64 d = a + (b << 3); ++ ++ /* { dg-final { scan-assembler-not "adds\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+, lsl 3" } } */ ++ /* { dg-final { scan-assembler "add\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+, lsl 3" } } */ ++ if (d <= 0) ++ return a + c; ++ else ++ return b + d + c; ++} ++ ++int main () ++{ ++ int x; ++ s64 y; ++ ++ x = adds_si_test1 (29, 4, 5); ++ if (x != 42) ++ abort (); ++ ++ x = adds_si_test1 (5, 2, 20); ++ if (x != 29) ++ abort (); ++ ++ x = adds_si_test2 (29, 4, 5); ++ if (x != 4133) ++ abort (); ++ ++ x = adds_si_test2 (1024, 2, 20); ++ if (x != 5141) ++ abort (); ++ ++ x = adds_si_test3 (35, 4, 5); ++ if (x != 76) ++ abort (); ++ ++ x = adds_si_test3 (5, 2, 20); ++ if (x != 43) ++ abort (); ++ ++ y = adds_di_test1 (0x130000029ll, ++ 0x320000004ll, ++ 0x505050505ll); ++ ++ if (y != 0xc75050536) ++ abort (); ++ ++ y = adds_di_test1 (0x5000500050005ll, ++ 0x2111211121112ll, ++ 0x0000000002020ll); ++ if (y != 0x9222922294249) ++ abort (); ++ ++ y = adds_di_test2 (0x130000029ll, ++ 0x320000004ll, ++ 0x505050505ll); ++ if (y != 0x955051532) ++ abort (); ++ ++ y = adds_di_test2 (0x540004100ll, ++ 0x320000004ll, ++ 0x805050205ll); ++ if (y != 0x1065055309) ++ abort (); ++ ++ y = adds_di_test3 (0x130000029ll, ++ 0x064000008ll, ++ 0x505050505ll); ++ if (y != 0x9b9050576) ++ abort (); ++ ++ y = adds_di_test3 (0x130002900ll, ++ 0x088000008ll, ++ 0x505050505ll); ++ if (y != 0xafd052e4d) ++ abort (); ++ ++ return 0; ++} ++ ++/* { dg-final { cleanup-saved-temps } } */ +--- a/src/gcc/testsuite/lib/target-supports.exp ++++ b/src/gcc/testsuite/lib/target-supports.exp +@@ -2012,6 +2012,7 @@ + || ([istarget powerpc*-*-*] + && ![istarget powerpc-*-linux*paired*]) + || [istarget x86_64-*-*] ++ || [istarget aarch64*-*-*] + || ([istarget arm*-*-*] + && [check_effective_target_arm_neon_ok])} { + set et_vect_uintfloat_cvt_saved 1 +@@ -2147,22 +2148,6 @@ + } + } + +-# Return 1 if this is an ARM target supporting -mfpu=neon-fp-armv8 +-# -mfloat-abi=softfp +-proc check_effective_target_arm_v8_neon_ok {} { +- if { [check_effective_target_arm32] } { +- return [check_no_compiler_messages arm_v8_neon_ok object { +- int foo (void) +- { +- __asm__ volatile ("vrintn.f32 q0, q0"); +- return 0; +- } +- } "-mfpu=neon-fp-armv8 -mfloat-abi=softfp"] +- } else { +- return 0 +- } +-} +- + # Return 1 if this is an ARM target supporting -mfpu=vfp + # -mfloat-abi=hard. Some multilibs may be incompatible with these + # options. +@@ -2226,7 +2211,8 @@ + if { ! [check_effective_target_arm_v8_neon_ok] } { + return "$flags" + } +- return "$flags -march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=softfp" ++ global et_arm_v8_neon_flags ++ return "$flags $et_arm_v8_neon_flags -march=armv8-a" + } + + # Add the options needed for NEON. We need either -mfloat-abi=softfp +@@ -2270,6 +2256,79 @@ + check_effective_target_arm_neon_ok_nocache] + } + ++# Return 1 if this is an ARM target supporting -mfpu=neon-fp16 ++# -mfloat-abi=softfp or equivalent options. Some multilibs may be ++# incompatible with these options. Also set et_arm_neon_flags to the ++# best options to add. ++ ++proc check_effective_target_arm_neon_fp16_ok_nocache { } { ++ global et_arm_neon_fp16_flags ++ set et_arm_neon_fp16_flags "" ++ if { [check_effective_target_arm32] } { ++ foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon-fp16" ++ "-mfpu=neon-fp16 -mfloat-abi=softfp"} { ++ if { [check_no_compiler_messages_nocache arm_neon_fp_16_ok object { ++ #include "arm_neon.h" ++ float16x4_t ++ foo (float32x4_t arg) ++ { ++ return vcvt_f16_f32 (arg); ++ } ++ } "$flags"] } { ++ set et_arm_neon_fp16_flags $flags ++ return 1 ++ } ++ } ++ } ++ ++ return 0 ++} ++ ++proc check_effective_target_arm_neon_fp16_ok { } { ++ return [check_cached_effective_target arm_neon_fp16_ok \ ++ check_effective_target_arm_neon_fp16_ok_nocache] ++} ++ ++proc add_options_for_arm_neon_fp16 { flags } { ++ if { ! [check_effective_target_arm_neon_fp16_ok] } { ++ return "$flags" ++ } ++ global et_arm_neon_fp16_flags ++ return "$flags $et_arm_neon_fp16_flags" ++} ++ ++# Return 1 if this is an ARM target supporting -mfpu=neon-fp-armv8 ++# -mfloat-abi=softfp or equivalent options. Some multilibs may be ++# incompatible with these options. Also set et_arm_v8_neon_flags to the ++# best options to add. ++ ++proc check_effective_target_arm_v8_neon_ok_nocache { } { ++ global et_arm_v8_neon_flags ++ set et_arm_v8_neon_flags "" ++ if { [check_effective_target_arm32] } { ++ foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon-fp-armv8" "-mfpu=neon-fp-armv8 -mfloat-abi=softfp"} { ++ if { [check_no_compiler_messages_nocache arm_v8_neon_ok object { ++ #include "arm_neon.h" ++ void ++ foo () ++ { ++ __asm__ volatile ("vrintn.f32 q0, q0"); ++ } ++ } "$flags"] } { ++ set et_arm_v8_neon_flags $flags ++ return 1 ++ } ++ } ++ } ++ ++ return 0 ++} ++ ++proc check_effective_target_arm_v8_neon_ok { } { ++ return [check_cached_effective_target arm_v8_neon_ok \ ++ check_effective_target_arm_v8_neon_ok_nocache] ++} ++ + # Return 1 if this is an ARM target supporting -mfpu=neon-vfpv4 + # -mfloat-abi=softfp or equivalent options. Some multilibs may be + # incompatible with these options. Also set et_arm_neonv2_flags to the +@@ -2509,6 +2568,24 @@ + } [add_options_for_arm_neonv2 ""]] + } + ++# Return 1 if the target supports executing ARMv8 NEON instructions, 0 ++# otherwise. ++ ++proc check_effective_target_arm_v8_neon_hw { } { ++ return [check_runtime arm_v8_neon_hw_available { ++ #include "arm_neon.h" ++ int ++ main (void) ++ { ++ float32x2_t a; ++ asm ("vrinta.f32 %P0, %P1" ++ : "=w" (a) ++ : "0" (a)); ++ return 0; ++ } ++ } [add_options_for_arm_v8_neon ""]] ++} ++ + # Return 1 if this is a ARM target with NEON enabled. + + proc check_effective_target_arm_neon { } { +--- a/src/gcc/testsuite/ChangeLog.linaro ++++ b/src/gcc/testsuite/ChangeLog.linaro +@@ -0,0 +1,290 @@ ++2013-05-14 Matthew Gretton-Dann ++ ++ Backport from trunk r198574-198575. ++ 2013-05-03 Vidya Praveen ++ ++ * gcc.target/aarch64/fabd.c: New file. ++ ++2013-05-14 Matthew Gretton-Dann ++ ++ Backport from trunk r198490-198496. ++ 2013-05-01 James Greenhalgh ++ ++ * gcc.target/aarch64/scalar-vca.c: New. ++ * gcc.target/aarch64/vect-vca.c: Likewise. ++ ++ 2013-05-01 James Greenhalgh ++ ++ * gcc.target/aarch64/scalar_intrinsics.c (force_simd): New. ++ (test_vceqd_s64): Force arguments to SIMD registers. ++ (test_vceqzd_s64): Likewise. ++ (test_vcged_s64): Likewise. ++ (test_vcled_s64): Likewise. ++ (test_vcgezd_s64): Likewise. ++ (test_vcged_u64): Likewise. ++ (test_vcgtd_s64): Likewise. ++ (test_vcltd_s64): Likewise. ++ (test_vcgtzd_s64): Likewise. ++ (test_vcgtd_u64): Likewise. ++ (test_vclezd_s64): Likewise. ++ (test_vcltzd_s64): Likewise. ++ (test_vtst_s64): Likewise. ++ (test_vtst_u64): Likewise. ++ ++2013-05-14 Matthew Gretton-Dann ++ ++ Backport from trunk r198191. ++ 2013-04-23 Sofiane Naci ++ ++ * gcc.target/aarch64/scalar-mov.c: New testcase. ++ ++2013-05-14 Matthew Gretton-Dann ++ ++ Backport from trunk r197838. ++ 2013-04-11 Naveen H.S ++ ++ * gcc.target/aarch64/negs.c: New. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198019. ++ 2013-04-16 Naveen H.S ++ ++ * gcc.target/aarch64/adds1.c: New. ++ * gcc.target/aarch64/adds2.c: New. ++ * gcc.target/aarch64/subs1.c: New. ++ * gcc.target/aarch64/subs2.c: New. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198394,198396-198400,198402-198404,198406. ++ 2013-04-29 James Greenhalgh ++ ++ * lib/target-supports.exp (vect_uintfloat_cvt): Enable for AArch64. ++ ++ 2013-04-29 James Greenhalgh ++ ++ * gcc.target/aarch64/vect-vcvt.c: New. ++ ++ 2013-04-29 James Greenhalgh ++ ++ * gcc.target/aarch64/vect-vrnd.c: New. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198302-198306,198316. ++ 2013-04-25 James Greenhalgh ++ Tejas Belagod ++ ++ * gcc.target/aarch64/vaddv-intrinsic.c: New. ++ * gcc.target/aarch64/vaddv-intrinsic-compile.c: Likewise. ++ * gcc.target/aarch64/vaddv-intrinsic.x: Likewise. ++ ++ 2013-04-25 Naveen H.S ++ ++ * gcc.target/aarch64/cmp.c: New. ++ ++ 2013-04-25 Naveen H.S ++ ++ * gcc.target/aarch64/ngc.c: New. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198298. ++ 2013-04-25 Kyrylo Tkachov ++ ++ * lib/target-supports.exp ++ (check_effective_target_arm_neon_fp16_ok_nocache): New procedure. ++ (check_effective_target_arm_neon_fp16_ok): Likewise. ++ (add_options_for_arm_neon_fp16): Likewise. ++ * gcc.target/arm/neon/vcvtf16_f32.c: New test. Generated. ++ * gcc.target/arm/neon/vcvtf32_f16.c: Likewise. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198136-198137,198142,198176 ++ 2013-04-22 James Greenhalgh ++ ++ * gcc.target/aarch64/vrecps.c: New. ++ * gcc.target/aarch64/vrecpx.c: Likewise. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r198020. ++ 2013-04-16 Naveen H.S ++ ++ * gcc.target/aarch64/adds3.c: New. ++ * gcc.target/aarch64/subs3.c: New. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r197965. ++ 2013-04-15 Kyrylo Tkachov ++ ++ * gcc.target/arm/anddi3-opt.c: New test. ++ * gcc.target/arm/anddi3-opt2.c: Likewise. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r197642. ++ 2013-04-09 Kyrylo Tkachov ++ ++ * gcc.target/arm/minmax_minus.c: New test. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r197530,197921. ++ 2013-04-05 Greta Yorsh ++ ++ * gcc.target/arm/peep-ldrd-1.c: New test. ++ * gcc.target/arm/peep-strd-1.c: Likewise. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r197523. ++ 2013-04-05 Kyrylo Tkachov ++ ++ * lib/target-supports.exp (add_options_for_arm_v8_neon): ++ Add -march=armv8-a when we use v8 NEON. ++ (check_effective_target_vect_call_btruncf): Remove arm-*-*-*. ++ (check_effective_target_vect_call_ceilf): Likewise. ++ (check_effective_target_vect_call_floorf): Likewise. ++ (check_effective_target_vect_call_roundf): Likewise. ++ (check_vect_support_and_set_flags): Remove check for arm_v8_neon. ++ * gcc.target/arm/vect-rounding-btruncf.c: New testcase. ++ * gcc.target/arm/vect-rounding-ceilf.c: Likewise. ++ * gcc.target/arm/vect-rounding-floorf.c: Likewise. ++ * gcc.target/arm/vect-rounding-roundf.c: Likewise. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r197518-197522,197516-197528. ++ 2013-04-05 Greta Yorsh ++ ++ * gcc.target/arm/negdi-1.c: New test. ++ * gcc.target/arm/negdi-2.c: Likewise. ++ * gcc.target/arm/negdi-3.c: Likewise. ++ * gcc.target/arm/negdi-4.c: Likewise. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r197489-197491. ++ 2013-04-04 Kyrylo Tkachov ++ ++ * lib/target-supports.exp (check_effective_target_arm_v8_neon_hw): ++ New procedure. ++ (check_effective_target_arm_v8_neon_ok_nocache): ++ Likewise. ++ (check_effective_target_arm_v8_neon_ok): Change to use ++ check_effective_target_arm_v8_neon_ok_nocache. ++ (add_options_for_arm_v8_neon): Use et_arm_v8_neon_flags to set ARMv8 ++ NEON flags. ++ (check_effective_target_vect_call_btruncf): ++ Enable for arm and ARMv8 NEON. ++ (check_effective_target_vect_call_ceilf): Likewise. ++ (check_effective_target_vect_call_floorf): Likewise. ++ (check_effective_target_vect_call_roundf): Likewise. ++ (check_vect_support_and_set_flags): Handle ARMv8 NEON effective ++ target. ++ ++2013-05-02 Matthew Gretton-Dann ++ ++ Backport from trunk r196795-196797,196957. ++ 2013-03-19 Ian Bolton ++ ++ * gcc.target/aarch64/sbc.c: New test. ++ ++ 2013-03-19 Ian Bolton ++ ++ * gcc.target/aarch64/ror.c: New test. ++ ++ 2013-03-19 Ian Bolton ++ ++ * gcc.target/aarch64/extr.c: New test. ++ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. ++ ++2013-04-08 Matthew Gretton-Dann ++ ++ Backport from trunk r197052. ++ 2013-03-25 Kyrylo Tkachov ++ ++ * gcc.target/arm/vseleqdf.c: New test. ++ * gcc.target/arm/vseleqsf.c: Likewise. ++ * gcc.target/arm/vselgedf.c: Likewise. ++ * gcc.target/arm/vselgesf.c: Likewise. ++ * gcc.target/arm/vselgtdf.c: Likewise. ++ * gcc.target/arm/vselgtsf.c: Likewise. ++ * gcc.target/arm/vselledf.c: Likewise. ++ * gcc.target/arm/vsellesf.c: Likewise. ++ * gcc.target/arm/vselltdf.c: Likewise. ++ * gcc.target/arm/vselltsf.c: Likewise. ++ * gcc.target/arm/vselnedf.c: Likewise. ++ * gcc.target/arm/vselnesf.c: Likewise. ++ * gcc.target/arm/vselvcdf.c: Likewise. ++ * gcc.target/arm/vselvcsf.c: Likewise. ++ * gcc.target/arm/vselvsdf.c: Likewise. ++ * gcc.target/arm/vselvssf.c: Likewise. ++ ++2013-04-08 Matthew Gretton-Dann ++ ++ Backport from trunk r197051. ++ 2013-03-25 Kyrylo Tkachov ++ ++ * gcc.target/aarch64/atomic-comp-swap-release-acquire.c: Move test ++ body from here... ++ * gcc.target/aarch64/atomic-comp-swap-release-acquire.x: ... to here. ++ * gcc.target/aarch64/atomic-op-acq_rel.c: Move test body from here... ++ * gcc.target/aarch64/atomic-op-acq_rel.x: ... to here. ++ * gcc.target/aarch64/atomic-op-acquire.c: Move test body from here... ++ * gcc.target/aarch64/atomic-op-acquire.x: ... to here. ++ * gcc.target/aarch64/atomic-op-char.c: Move test body from here... ++ * gcc.target/aarch64/atomic-op-char.x: ... to here. ++ * gcc.target/aarch64/atomic-op-consume.c: Move test body from here... ++ * gcc.target/aarch64/atomic-op-consume.x: ... to here. ++ * gcc.target/aarch64/atomic-op-int.c: Move test body from here... ++ * gcc.target/aarch64/atomic-op-int.x: ... to here. ++ * gcc.target/aarch64/atomic-op-relaxed.c: Move test body from here... ++ * gcc.target/aarch64/atomic-op-relaxed.x: ... to here. ++ * gcc.target/aarch64/atomic-op-release.c: Move test body from here... ++ * gcc.target/aarch64/atomic-op-release.x: ... to here. ++ * gcc.target/aarch64/atomic-op-seq_cst.c: Move test body from here... ++ * gcc.target/aarch64/atomic-op-seq_cst.x: ... to here. ++ * gcc.target/aarch64/atomic-op-short.c: Move test body from here... ++ * gcc.target/aarch64/atomic-op-short.x: ... to here. ++ * gcc.target/arm/atomic-comp-swap-release-acquire.c: New test. ++ * gcc.target/arm/atomic-op-acq_rel.c: Likewise. ++ * gcc.target/arm/atomic-op-acquire.c: Likewise. ++ * gcc.target/arm/atomic-op-char.c: Likewise. ++ * gcc.target/arm/atomic-op-consume.c: Likewise. ++ * gcc.target/arm/atomic-op-int.c: Likewise. ++ * gcc.target/arm/atomic-op-relaxed.c: Likewise. ++ * gcc.target/arm/atomic-op-release.c: Likewise. ++ * gcc.target/arm/atomic-op-seq_cst.c: Likewise. ++ * gcc.target/arm/atomic-op-short.c: Likewise. ++ ++2013-04-08 Matthew Gretton-Dann ++ ++ Backport from trunk r196876. ++ 2013-03-21 Christophe Lyon ++ ++ * gcc.target/arm/neon-for-64bits-1.c: New tests. ++ * gcc.target/arm/neon-for-64bits-2.c: Likewise. ++ ++2013-04-08 Matthew Gretton-Dann ++ ++ Backport from trunk r196858. ++ 2013-03-21 Naveen H.S ++ ++ * gcc.target/aarch64/vect.c: Test and result vector added ++ for sabd and saba instructions. ++ * gcc.target/aarch64/vect-compile.c: Check for sabd and saba ++ instructions in assembly. ++ * gcc.target/aarch64/vect.x: Add sabd and saba test functions. ++ * gcc.target/aarch64/vect-fp.c: Test and result vector added ++ for fabd instruction. ++ * gcc.target/aarch64/vect-fp-compile.c: Check for fabd ++ instruction in assembly. ++ * gcc.target/aarch64/vect-fp.x: Add fabd test function. +--- a/src/gcc/objcp/ChangeLog.linaro ++++ b/src/gcc/objcp/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/gcc/cp/ChangeLog.linaro ++++ b/src/gcc/cp/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/gcc/go/ChangeLog.linaro ++++ b/src/gcc/go/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/gcc/ada/ChangeLog.linaro ++++ b/src/gcc/ada/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/gcc/common/config/aarch64/aarch64-common.c ++++ b/src/gcc/common/config/aarch64/aarch64-common.c +@@ -44,6 +44,8 @@ + { + /* Enable section anchors by default at -O1 or higher. */ + { OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 1 }, ++ /* Enable redundant extension instructions removal at -O2 and higher. */ ++ { OPT_LEVELS_2_PLUS, OPT_free, NULL, 1 }, + { OPT_LEVELS_NONE, 0, NULL, 0 } + }; + +--- a/src/gcc/fortran/ChangeLog.linaro ++++ b/src/gcc/fortran/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -813,7 +813,7 @@ + ) + AC_SUBST(CONFIGURE_SPECS) + +-ACX_PKGVERSION([GCC]) ++ACX_PKGVERSION([Linaro GCC `cat $srcdir/LINARO-VERSION`]) + ACX_BUGURL([http://gcc.gnu.org/bugs.html]) + + # Sanity check enable_languages in case someone does not run the toplevel +--- a/src/gcc/coretypes.h ++++ b/src/gcc/coretypes.h +@@ -62,6 +62,8 @@ + typedef union gimple_statement_d *gimple; + typedef const union gimple_statement_d *const_gimple; + typedef gimple gimple_seq; ++struct gimple_stmt_iterator_d; ++typedef struct gimple_stmt_iterator_d gimple_stmt_iterator; + union section; + typedef union section section; + struct gcc_options; +--- a/src/gcc/gimple-fold.c ++++ b/src/gcc/gimple-fold.c +@@ -1143,6 +1143,8 @@ + gimplify_and_update_call_from_tree (gsi, result); + changed = true; + } ++ else if (DECL_BUILT_IN_CLASS (callee) == BUILT_IN_MD) ++ changed |= targetm.gimple_fold_builtin (gsi); + } + + return changed; +--- a/src/gcc/lto/ChangeLog.linaro ++++ b/src/gcc/lto/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/gcc/po/ChangeLog.linaro ++++ b/src/gcc/po/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/gcc/gimple.h ++++ b/src/gcc/gimple.h +@@ -130,7 +130,7 @@ + + /* Iterator object for GIMPLE statement sequences. */ + +-typedef struct ++struct gimple_stmt_iterator_d + { + /* Sequence node holding the current statement. */ + gimple_seq_node ptr; +@@ -141,9 +141,8 @@ + block/sequence is removed. */ + gimple_seq *seq; + basic_block bb; +-} gimple_stmt_iterator; ++}; + +- + /* Data structure definitions for GIMPLE tuples. NOTE: word markers + are for 64 bit hosts. */ + +--- a/src/gcc/config/aarch64/aarch64-simd.md ++++ b/src/gcc/config/aarch64/aarch64-simd.md +@@ -21,7 +21,7 @@ + + ; Main data types used by the insntructions + +-(define_attr "simd_mode" "unknown,none,V8QI,V16QI,V4HI,V8HI,V2SI,V4SI,V2DI,V2SF,V4SF,V2DF,OI,CI,XI,DI,DF,SI,HI,QI" ++(define_attr "simd_mode" "unknown,none,V8QI,V16QI,V4HI,V8HI,V2SI,V4SI,V2DI,V2SF,V4SF,V2DF,OI,CI,XI,DI,DF,SI,SF,HI,QI" + (const_string "unknown")) + + +@@ -44,6 +44,7 @@ + ; simd_dup duplicate element. + ; simd_dupgp duplicate general purpose register. + ; simd_ext bitwise extract from pair. ++; simd_fabd floating point absolute difference. + ; simd_fadd floating point add/sub. + ; simd_fcmp floating point compare. + ; simd_fcvti floating point convert to integer. +@@ -58,9 +59,9 @@ + ; simd_fmul floating point multiply. + ; simd_fmul_elt floating point multiply (by element). + ; simd_fnegabs floating point neg/abs. +-; simd_frcpe floating point reciprocal estimate. +-; simd_frcps floating point reciprocal step. +-; simd_frecx floating point reciprocal exponent. ++; simd_frecpe floating point reciprocal estimate. ++; simd_frecps floating point reciprocal step. ++; simd_frecpx floating point reciprocal exponent. + ; simd_frint floating point round to integer. + ; simd_fsqrt floating point square root. + ; simd_icvtf integer convert to floating point. +@@ -147,6 +148,7 @@ + simd_dup,\ + simd_dupgp,\ + simd_ext,\ ++ simd_fabd,\ + simd_fadd,\ + simd_fcmp,\ + simd_fcvti,\ +@@ -161,9 +163,9 @@ + simd_fmul,\ + simd_fmul_elt,\ + simd_fnegabs,\ +- simd_frcpe,\ +- simd_frcps,\ +- simd_frecx,\ ++ simd_frecpe,\ ++ simd_frecps,\ ++ simd_frecpx,\ + simd_frint,\ + simd_fsqrt,\ + simd_icvtf,\ +@@ -303,8 +305,8 @@ + (eq_attr "simd_type" "simd_store3,simd_store4") (const_string "neon_vst1_3_4_regs") + (eq_attr "simd_type" "simd_store1s,simd_store2s") (const_string "neon_vst1_vst2_lane") + (eq_attr "simd_type" "simd_store3s,simd_store4s") (const_string "neon_vst3_vst4_lane") +- (and (eq_attr "simd_type" "simd_frcpe,simd_frcps") (eq_attr "simd_mode" "V2SF")) (const_string "neon_fp_vrecps_vrsqrts_ddd") +- (and (eq_attr "simd_type" "simd_frcpe,simd_frcps") (eq_attr "simd_mode" "V4SF,V2DF")) (const_string "neon_fp_vrecps_vrsqrts_qqq") ++ (and (eq_attr "simd_type" "simd_frecpe,simd_frecps") (eq_attr "simd_mode" "V2SF")) (const_string "neon_fp_vrecps_vrsqrts_ddd") ++ (and (eq_attr "simd_type" "simd_frecpe,simd_frecps") (eq_attr "simd_mode" "V4SF,V2DF")) (const_string "neon_fp_vrecps_vrsqrts_qqq") + (eq_attr "simd_type" "none") (const_string "none") + ] + (const_string "unknown"))) +@@ -503,8 +505,8 @@ + ) + + (define_insn "neg2" +- [(set (match_operand:VDQM 0 "register_operand" "=w") +- (neg:VDQM (match_operand:VDQM 1 "register_operand" "w")))] ++ [(set (match_operand:VDQ 0 "register_operand" "=w") ++ (neg:VDQ (match_operand:VDQ 1 "register_operand" "w")))] + "TARGET_SIMD" + "neg\t%0., %1." + [(set_attr "simd_type" "simd_negabs") +@@ -520,6 +522,51 @@ + (set_attr "simd_mode" "")] + ) + ++(define_insn "abd_3" ++ [(set (match_operand:VDQ_BHSI 0 "register_operand" "=w") ++ (abs:VDQ_BHSI (minus:VDQ_BHSI ++ (match_operand:VDQ_BHSI 1 "register_operand" "w") ++ (match_operand:VDQ_BHSI 2 "register_operand" "w"))))] ++ "TARGET_SIMD" ++ "sabd\t%0., %1., %2." ++ [(set_attr "simd_type" "simd_abd") ++ (set_attr "simd_mode" "")] ++) ++ ++(define_insn "aba_3" ++ [(set (match_operand:VDQ_BHSI 0 "register_operand" "=w") ++ (plus:VDQ_BHSI (abs:VDQ_BHSI (minus:VDQ_BHSI ++ (match_operand:VDQ_BHSI 1 "register_operand" "w") ++ (match_operand:VDQ_BHSI 2 "register_operand" "w"))) ++ (match_operand:VDQ_BHSI 3 "register_operand" "0")))] ++ "TARGET_SIMD" ++ "saba\t%0., %1., %2." ++ [(set_attr "simd_type" "simd_abd") ++ (set_attr "simd_mode" "")] ++) ++ ++(define_insn "fabd_3" ++ [(set (match_operand:VDQF 0 "register_operand" "=w") ++ (abs:VDQF (minus:VDQF ++ (match_operand:VDQF 1 "register_operand" "w") ++ (match_operand:VDQF 2 "register_operand" "w"))))] ++ "TARGET_SIMD" ++ "fabd\t%0., %1., %2." ++ [(set_attr "simd_type" "simd_fabd") ++ (set_attr "simd_mode" "")] ++) ++ ++(define_insn "*fabd_scalar3" ++ [(set (match_operand:GPF 0 "register_operand" "=w") ++ (abs:GPF (minus:GPF ++ (match_operand:GPF 1 "register_operand" "w") ++ (match_operand:GPF 2 "register_operand" "w"))))] ++ "TARGET_SIMD" ++ "fabd\t%0, %1, %2" ++ [(set_attr "simd_type" "simd_fabd") ++ (set_attr "mode" "")] ++) ++ + (define_insn "and3" + [(set (match_operand:VDQ 0 "register_operand" "=w") + (and:VDQ (match_operand:VDQ 1 "register_operand" "w") +@@ -1196,7 +1243,9 @@ + (set_attr "simd_mode" "")] + ) + +-(define_insn "aarch64_frint" ++;; Vector versions of the floating-point frint patterns. ++;; Expands to btrunc, ceil, floor, nearbyint, rint, round. ++(define_insn "2" + [(set (match_operand:VDQF 0 "register_operand" "=w") + (unspec:VDQF [(match_operand:VDQF 1 "register_operand" "w")] + FRINT))] +@@ -1206,16 +1255,9 @@ + (set_attr "simd_mode" "")] + ) + +-;; Vector versions of the floating-point frint patterns. +-;; Expands to btrunc, ceil, floor, nearbyint, rint, round. +-(define_expand "2" +- [(set (match_operand:VDQF 0 "register_operand") +- (unspec:VDQF [(match_operand:VDQF 1 "register_operand")] +- FRINT))] +- "TARGET_SIMD" +- {}) +- +-(define_insn "aarch64_fcvt" ++;; Vector versions of the fcvt standard patterns. ++;; Expands to lbtrunc, lround, lceil, lfloor ++(define_insn "l2" + [(set (match_operand: 0 "register_operand" "=w") + (FIXUORS: (unspec: + [(match_operand:VDQF 1 "register_operand" "w")] +@@ -1226,16 +1268,141 @@ + (set_attr "simd_mode" "")] + ) + +-;; Vector versions of the fcvt standard patterns. +-;; Expands to lbtrunc, lround, lceil, lfloor +-(define_expand "l2" ++(define_expand "2" + [(set (match_operand: 0 "register_operand") + (FIXUORS: (unspec: + [(match_operand:VDQF 1 "register_operand")] +- FCVT)))] ++ UNSPEC_FRINTZ)))] + "TARGET_SIMD" + {}) + ++(define_expand "2" ++ [(set (match_operand: 0 "register_operand") ++ (FIXUORS: (unspec: ++ [(match_operand:VDQF 1 "register_operand")] ++ UNSPEC_FRINTZ)))] ++ "TARGET_SIMD" ++ {}) ++ ++(define_expand "ftrunc2" ++ [(set (match_operand:VDQF 0 "register_operand") ++ (unspec:VDQF [(match_operand:VDQF 1 "register_operand")] ++ UNSPEC_FRINTZ))] ++ "TARGET_SIMD" ++ {}) ++ ++(define_insn "2" ++ [(set (match_operand:VDQF 0 "register_operand" "=w") ++ (FLOATUORS:VDQF ++ (match_operand: 1 "register_operand" "w")))] ++ "TARGET_SIMD" ++ "cvtf\\t%0., %1." ++ [(set_attr "simd_type" "simd_icvtf") ++ (set_attr "simd_mode" "")] ++) ++ ++;; Conversions between vectors of floats and doubles. ++;; Contains a mix of patterns to match standard pattern names ++;; and those for intrinsics. ++ ++;; Float widening operations. ++ ++(define_insn "vec_unpacks_lo_v4sf" ++ [(set (match_operand:V2DF 0 "register_operand" "=w") ++ (float_extend:V2DF ++ (vec_select:V2SF ++ (match_operand:V4SF 1 "register_operand" "w") ++ (parallel [(const_int 0) (const_int 1)]) ++ )))] ++ "TARGET_SIMD" ++ "fcvtl\\t%0.2d, %1.2s" ++ [(set_attr "simd_type" "simd_fcvtl") ++ (set_attr "simd_mode" "V2DF")] ++) ++ ++(define_insn "aarch64_float_extend_lo_v2df" ++ [(set (match_operand:V2DF 0 "register_operand" "=w") ++ (float_extend:V2DF ++ (match_operand:V2SF 1 "register_operand" "w")))] ++ "TARGET_SIMD" ++ "fcvtl\\t%0.2d, %1.2s" ++ [(set_attr "simd_type" "simd_fcvtl") ++ (set_attr "simd_mode" "V2DF")] ++) ++ ++(define_insn "vec_unpacks_hi_v4sf" ++ [(set (match_operand:V2DF 0 "register_operand" "=w") ++ (float_extend:V2DF ++ (vec_select:V2SF ++ (match_operand:V4SF 1 "register_operand" "w") ++ (parallel [(const_int 2) (const_int 3)]) ++ )))] ++ "TARGET_SIMD" ++ "fcvtl2\\t%0.2d, %1.4s" ++ [(set_attr "simd_type" "simd_fcvtl") ++ (set_attr "simd_mode" "V2DF")] ++) ++ ++;; Float narrowing operations. ++ ++(define_insn "aarch64_float_truncate_lo_v2sf" ++ [(set (match_operand:V2SF 0 "register_operand" "=w") ++ (float_truncate:V2SF ++ (match_operand:V2DF 1 "register_operand" "w")))] ++ "TARGET_SIMD" ++ "fcvtn\\t%0.2s, %1.2d" ++ [(set_attr "simd_type" "simd_fcvtl") ++ (set_attr "simd_mode" "V2SF")] ++) ++ ++(define_insn "aarch64_float_truncate_hi_v4sf" ++ [(set (match_operand:V4SF 0 "register_operand" "=w") ++ (vec_concat:V4SF ++ (match_operand:V2SF 1 "register_operand" "0") ++ (float_truncate:V2SF ++ (match_operand:V2DF 2 "register_operand" "w"))))] ++ "TARGET_SIMD" ++ "fcvtn2\\t%0.4s, %2.2d" ++ [(set_attr "simd_type" "simd_fcvtl") ++ (set_attr "simd_mode" "V4SF")] ++) ++ ++(define_expand "vec_pack_trunc_v2df" ++ [(set (match_operand:V4SF 0 "register_operand") ++ (vec_concat:V4SF ++ (float_truncate:V2SF ++ (match_operand:V2DF 1 "register_operand")) ++ (float_truncate:V2SF ++ (match_operand:V2DF 2 "register_operand")) ++ ))] ++ "TARGET_SIMD" ++ { ++ rtx tmp = gen_reg_rtx (V2SFmode); ++ emit_insn (gen_aarch64_float_truncate_lo_v2sf (tmp, operands[1])); ++ emit_insn (gen_aarch64_float_truncate_hi_v4sf (operands[0], ++ tmp, operands[2])); ++ DONE; ++ } ++) ++ ++(define_expand "vec_pack_trunc_df" ++ [(set (match_operand:V2SF 0 "register_operand") ++ (vec_concat:V2SF ++ (float_truncate:SF ++ (match_operand:DF 1 "register_operand")) ++ (float_truncate:SF ++ (match_operand:DF 2 "register_operand")) ++ ))] ++ "TARGET_SIMD" ++ { ++ rtx tmp = gen_reg_rtx (V2SFmode); ++ emit_insn (gen_move_lo_quad_v2df (tmp, operands[1])); ++ emit_insn (gen_move_hi_quad_v2df (tmp, operands[2])); ++ emit_insn (gen_aarch64_float_truncate_lo_v2sf (operands[0], tmp)); ++ DONE; ++ } ++) ++ + (define_insn "aarch64_vmls" + [(set (match_operand:VDQF 0 "register_operand" "=w") + (minus:VDQF (match_operand:VDQF 1 "register_operand" "0") +@@ -1305,7 +1472,7 @@ + + ;; FP 'across lanes' add. + +-(define_insn "aarch64_addvv4sf" ++(define_insn "aarch64_addpv4sf" + [(set (match_operand:V4SF 0 "register_operand" "=w") + (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "w")] + UNSPEC_FADDV))] +@@ -1321,8 +1488,8 @@ + "TARGET_SIMD" + { + rtx tmp = gen_reg_rtx (V4SFmode); +- emit_insn (gen_aarch64_addvv4sf (tmp, operands[1])); +- emit_insn (gen_aarch64_addvv4sf (operands[0], tmp)); ++ emit_insn (gen_aarch64_addpv4sf (tmp, operands[1])); ++ emit_insn (gen_aarch64_addpv4sf (operands[0], tmp)); + DONE; + }) + +@@ -1332,11 +1499,21 @@ + "TARGET_SIMD" + { + rtx tmp = gen_reg_rtx (V4SFmode); +- emit_insn (gen_aarch64_addvv4sf (tmp, operands[1])); +- emit_insn (gen_aarch64_addvv4sf (operands[0], tmp)); ++ emit_insn (gen_aarch64_addpv4sf (tmp, operands[1])); ++ emit_insn (gen_aarch64_addpv4sf (operands[0], tmp)); + DONE; + }) + ++(define_expand "aarch64_addvv4sf" ++ [(set (match_operand:V4SF 0 "register_operand" "=w") ++ (unspec:V4SF [(match_operand:V4SF 1 "register_operand" "w")] ++ UNSPEC_FADDV))] ++ "TARGET_SIMD" ++{ ++ emit_insn (gen_reduc_splus_v4sf (operands[0], operands[1])); ++ DONE; ++}) ++ + (define_insn "aarch64_addv" + [(set (match_operand:V2F 0 "register_operand" "=w") + (unspec:V2F [(match_operand:V2F 1 "register_operand" "w")] +@@ -1463,21 +1640,33 @@ + (set_attr "simd_mode" "V2SI")] + ) + +-;; vbsl_* intrinsics may compile to any of bsl/bif/bit depending on register +-;; allocation. For an intrinsic of form: +-;; vD = bsl_* (vS, vN, vM) ++;; aarch64_simd_bsl may compile to any of bsl/bif/bit depending on register ++;; allocation. ++;; Operand 1 is the mask, operands 2 and 3 are the bitfields from which ++;; to select. ++;; ++;; Thus our BSL is of the form: ++;; op0 = bsl (mask, op2, op3) + ;; We can use any of: +-;; bsl vS, vN, vM (if D = S) +-;; bit vD, vN, vS (if D = M, so 1-bits in vS choose bits from vN, else vM) +-;; bif vD, vM, vS (if D = N, so 0-bits in vS choose bits from vM, else vN) ++;; ++;; if (op0 = mask) ++;; bsl mask, op1, op2 ++;; if (op0 = op1) (so 1-bits in mask choose bits from op2, else op0) ++;; bit op0, op2, mask ++;; if (op0 = op2) (so 0-bits in mask choose bits from op1, else op0) ++;; bif op0, op1, mask + + (define_insn "aarch64_simd_bsl_internal" + [(set (match_operand:VALL 0 "register_operand" "=w,w,w") +- (unspec:VALL +- [(match_operand: 1 "register_operand" " 0,w,w") +- (match_operand:VALL 2 "register_operand" " w,w,0") +- (match_operand:VALL 3 "register_operand" " w,0,w")] +- UNSPEC_BSL))] ++ (ior:VALL ++ (and:VALL ++ (match_operand: 1 "register_operand" " 0,w,w") ++ (match_operand:VALL 2 "register_operand" " w,w,0")) ++ (and:VALL ++ (not: ++ (match_dup: 1)) ++ (match_operand:VALL 3 "register_operand" " w,0,w")) ++ ))] + "TARGET_SIMD" + "@ + bsl\\t%0., %2., %3. +@@ -1486,15 +1675,17 @@ + ) + + (define_expand "aarch64_simd_bsl" +- [(set (match_operand:VALL 0 "register_operand") +- (unspec:VALL [(match_operand: 1 "register_operand") +- (match_operand:VALL 2 "register_operand") +- (match_operand:VALL 3 "register_operand")] +- UNSPEC_BSL))] +- "TARGET_SIMD" ++ [(match_operand:VALL 0 "register_operand") ++ (match_operand: 1 "register_operand") ++ (match_operand:VALL 2 "register_operand") ++ (match_operand:VALL 3 "register_operand")] ++ "TARGET_SIMD" + { + /* We can't alias operands together if they have different modes. */ + operands[1] = gen_lowpart (mode, operands[1]); ++ emit_insn (gen_aarch64_simd_bsl_internal (operands[0], operands[1], ++ operands[2], operands[3])); ++ DONE; + }) + + (define_expand "aarch64_vcond_internal" +@@ -1503,11 +1694,13 @@ + (match_operator 3 "comparison_operator" + [(match_operand:VDQ 4 "register_operand") + (match_operand:VDQ 5 "nonmemory_operand")]) +- (match_operand:VDQ 1 "register_operand") +- (match_operand:VDQ 2 "register_operand")))] ++ (match_operand:VDQ 1 "nonmemory_operand") ++ (match_operand:VDQ 2 "nonmemory_operand")))] + "TARGET_SIMD" + { + int inverse = 0, has_zero_imm_form = 0; ++ rtx op1 = operands[1]; ++ rtx op2 = operands[2]; + rtx mask = gen_reg_rtx (mode); + + switch (GET_CODE (operands[3])) +@@ -1548,12 +1741,12 @@ + + case LTU: + case GEU: +- emit_insn (gen_aarch64_cmhs (mask, operands[4], operands[5])); ++ emit_insn (gen_aarch64_cmgeu (mask, operands[4], operands[5])); + break; + + case LEU: + case GTU: +- emit_insn (gen_aarch64_cmhi (mask, operands[4], operands[5])); ++ emit_insn (gen_aarch64_cmgtu (mask, operands[4], operands[5])); + break; + + case NE: +@@ -1566,12 +1759,27 @@ + } + + if (inverse) +- emit_insn (gen_aarch64_simd_bsl (operands[0], mask, operands[2], +- operands[1])); +- else +- emit_insn (gen_aarch64_simd_bsl (operands[0], mask, operands[1], +- operands[2])); ++ { ++ op1 = operands[2]; ++ op2 = operands[1]; ++ } + ++ /* If we have (a = (b CMP c) ? -1 : 0); ++ Then we can simply move the generated mask. */ ++ ++ if (op1 == CONSTM1_RTX (mode) ++ && op2 == CONST0_RTX (mode)) ++ emit_move_insn (operands[0], mask); ++ else ++ { ++ if (!REG_P (op1)) ++ op1 = force_reg (mode, op1); ++ if (!REG_P (op2)) ++ op2 = force_reg (mode, op2); ++ emit_insn (gen_aarch64_simd_bsl (operands[0], mask, ++ op1, op2)); ++ } ++ + DONE; + }) + +@@ -1581,13 +1789,15 @@ + (match_operator 3 "comparison_operator" + [(match_operand:VDQF 4 "register_operand") + (match_operand:VDQF 5 "nonmemory_operand")]) +- (match_operand:VDQF 1 "register_operand") +- (match_operand:VDQF 2 "register_operand")))] ++ (match_operand:VDQF 1 "nonmemory_operand") ++ (match_operand:VDQF 2 "nonmemory_operand")))] + "TARGET_SIMD" + { + int inverse = 0; + int use_zero_form = 0; + int swap_bsl_operands = 0; ++ rtx op1 = operands[1]; ++ rtx op2 = operands[2]; + rtx mask = gen_reg_rtx (mode); + rtx tmp = gen_reg_rtx (mode); + +@@ -1732,11 +1942,27 @@ + } + + if (swap_bsl_operands) +- emit_insn (gen_aarch64_simd_bsl (operands[0], mask, operands[2], +- operands[1])); +- else +- emit_insn (gen_aarch64_simd_bsl (operands[0], mask, operands[1], +- operands[2])); ++ { ++ op1 = operands[2]; ++ op2 = operands[1]; ++ } ++ ++ /* If we have (a = (b CMP c) ? -1 : 0); ++ Then we can simply move the generated mask. */ ++ ++ if (op1 == CONSTM1_RTX (mode) ++ && op2 == CONST0_RTX (mode)) ++ emit_move_insn (operands[0], mask); ++ else ++ { ++ if (!REG_P (op1)) ++ op1 = force_reg (mode, op1); ++ if (!REG_P (op2)) ++ op2 = force_reg (mode, op2); ++ emit_insn (gen_aarch64_simd_bsl (operands[0], mask, ++ op1, op2)); ++ } ++ + DONE; + }) + +@@ -1746,8 +1972,8 @@ + (match_operator 3 "comparison_operator" + [(match_operand:VALL 4 "register_operand") + (match_operand:VALL 5 "nonmemory_operand")]) +- (match_operand:VALL 1 "register_operand") +- (match_operand:VALL 2 "register_operand")))] ++ (match_operand:VALL 1 "nonmemory_operand") ++ (match_operand:VALL 2 "nonmemory_operand")))] + "TARGET_SIMD" + { + emit_insn (gen_aarch64_vcond_internal (operands[0], operands[1], +@@ -1756,6 +1982,22 @@ + DONE; + }) + ++(define_expand "vcond" ++ [(set (match_operand: 0 "register_operand") ++ (if_then_else: ++ (match_operator 3 "comparison_operator" ++ [(match_operand:VDQF 4 "register_operand") ++ (match_operand:VDQF 5 "nonmemory_operand")]) ++ (match_operand: 1 "nonmemory_operand") ++ (match_operand: 2 "nonmemory_operand")))] ++ "TARGET_SIMD" ++{ ++ emit_insn (gen_aarch64_vcond_internal ( ++ operands[0], operands[1], ++ operands[2], operands[3], ++ operands[4], operands[5])); ++ DONE; ++}) + + (define_expand "vcondu" + [(set (match_operand:VDQ 0 "register_operand") +@@ -1763,8 +2005,8 @@ + (match_operator 3 "comparison_operator" + [(match_operand:VDQ 4 "register_operand") + (match_operand:VDQ 5 "nonmemory_operand")]) +- (match_operand:VDQ 1 "register_operand") +- (match_operand:VDQ 2 "register_operand")))] ++ (match_operand:VDQ 1 "nonmemory_operand") ++ (match_operand:VDQ 2 "nonmemory_operand")))] + "TARGET_SIMD" + { + emit_insn (gen_aarch64_vcond_internal (operands[0], operands[1], +@@ -2861,28 +3103,6 @@ + (set_attr "simd_mode" "")] + ) + +-;; vshl_n +- +-(define_expand "aarch64_sshl_n" +- [(match_operand:VSDQ_I_DI 0 "register_operand" "=w") +- (match_operand:VSDQ_I_DI 1 "register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] +- "TARGET_SIMD" +-{ +- emit_insn (gen_ashl3 (operands[0], operands[1], operands[2])); +- DONE; +-}) +- +-(define_expand "aarch64_ushl_n" +- [(match_operand:VSDQ_I_DI 0 "register_operand" "=w") +- (match_operand:VSDQ_I_DI 1 "register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] +- "TARGET_SIMD" +-{ +- emit_insn (gen_ashl3 (operands[0], operands[1], operands[2])); +- DONE; +-}) +- + ;; vshll_n + + (define_insn "aarch64_shll_n" +@@ -2927,28 +3147,6 @@ + (set_attr "simd_mode" "")] + ) + +-;; vshr_n +- +-(define_expand "aarch64_sshr_n" +- [(match_operand:VSDQ_I_DI 0 "register_operand" "=w") +- (match_operand:VSDQ_I_DI 1 "register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] +- "TARGET_SIMD" +-{ +- emit_insn (gen_ashr3 (operands[0], operands[1], operands[2])); +- DONE; +-}) +- +-(define_expand "aarch64_ushr_n" +- [(match_operand:VSDQ_I_DI 0 "register_operand" "=w") +- (match_operand:VSDQ_I_DI 1 "register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] +- "TARGET_SIMD" +-{ +- emit_insn (gen_lshr3 (operands[0], operands[1], operands[2])); +- DONE; +-}) +- + ;; vrshr_n + + (define_insn "aarch64_shr_n" +@@ -3034,52 +3232,202 @@ + ) + + +-;; cm(eq|ge|le|lt|gt) ++;; cm(eq|ge|gt|lt|le) ++;; Note, we have constraints for Dz and Z as different expanders ++;; have different ideas of what should be passed to this pattern. + +-(define_insn "aarch64_cm" ++(define_insn "aarch64_cm" + [(set (match_operand: 0 "register_operand" "=w,w") +- (unspec: +- [(match_operand:VSDQ_I_DI 1 "register_operand" "w,w") +- (match_operand:VSDQ_I_DI 2 "aarch64_simd_reg_or_zero" "w,Z")] +- VCMP_S))] ++ (neg: ++ (COMPARISONS: ++ (match_operand:VDQ 1 "register_operand" "w,w") ++ (match_operand:VDQ 2 "aarch64_simd_reg_or_zero" "w,ZDz") ++ )))] + "TARGET_SIMD" + "@ +- cm\t%0, %1, %2 +- cm\t%0, %1, #0" ++ cm\t%0, %, % ++ cm\t%0, %1, #0" + [(set_attr "simd_type" "simd_cmp") + (set_attr "simd_mode" "")] + ) + +-;; cm(hs|hi|tst) ++(define_insn_and_split "aarch64_cmdi" ++ [(set (match_operand:DI 0 "register_operand" "=w,w,r") ++ (neg:DI ++ (COMPARISONS:DI ++ (match_operand:DI 1 "register_operand" "w,w,r") ++ (match_operand:DI 2 "aarch64_simd_reg_or_zero" "w,ZDz,r") ++ )))] ++ "TARGET_SIMD" ++ "@ ++ cm\t%d0, %d, %d ++ cm\t%d0, %d1, #0 ++ #" ++ "reload_completed ++ /* We need to prevent the split from ++ happening in the 'w' constraint cases. */ ++ && GP_REGNUM_P (REGNO (operands[0])) ++ && GP_REGNUM_P (REGNO (operands[1]))" ++ [(set (reg:CC CC_REGNUM) ++ (compare:CC ++ (match_dup 1) ++ (match_dup 2))) ++ (set (match_dup 0) ++ (neg:DI ++ (COMPARISONS:DI ++ (match_operand 3 "cc_register" "") ++ (const_int 0))))] ++ { ++ enum machine_mode mode = SELECT_CC_MODE (, operands[1], operands[2]); ++ rtx cc_reg = aarch64_gen_compare_reg (, operands[1], operands[2]); ++ rtx comparison = gen_rtx_ (mode, operands[1], operands[2]); ++ emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); ++ DONE; ++ } ++ [(set_attr "simd_type" "simd_cmp") ++ (set_attr "simd_mode" "DI")] ++) + +-(define_insn "aarch64_cm" ++;; cm(hs|hi) ++ ++(define_insn "aarch64_cm" + [(set (match_operand: 0 "register_operand" "=w") +- (unspec: +- [(match_operand:VSDQ_I_DI 1 "register_operand" "w") +- (match_operand:VSDQ_I_DI 2 "register_operand" "w")] +- VCMP_U))] ++ (neg: ++ (UCOMPARISONS: ++ (match_operand:VDQ 1 "register_operand" "w") ++ (match_operand:VDQ 2 "register_operand" "w") ++ )))] + "TARGET_SIMD" +- "cm\t%0, %1, %2" ++ "cm\t%0, %, %" + [(set_attr "simd_type" "simd_cmp") + (set_attr "simd_mode" "")] + ) + +-;; fcm(eq|ge|le|lt|gt) ++(define_insn_and_split "aarch64_cmdi" ++ [(set (match_operand:DI 0 "register_operand" "=w,r") ++ (neg:DI ++ (UCOMPARISONS:DI ++ (match_operand:DI 1 "register_operand" "w,r") ++ (match_operand:DI 2 "aarch64_simd_reg_or_zero" "w,r") ++ )))] ++ "TARGET_SIMD" ++ "@ ++ cm\t%d0, %d, %d ++ #" ++ "reload_completed ++ /* We need to prevent the split from ++ happening in the 'w' constraint cases. */ ++ && GP_REGNUM_P (REGNO (operands[0])) ++ && GP_REGNUM_P (REGNO (operands[1]))" ++ [(set (reg:CC CC_REGNUM) ++ (compare:CC ++ (match_dup 1) ++ (match_dup 2))) ++ (set (match_dup 0) ++ (neg:DI ++ (UCOMPARISONS:DI ++ (match_operand 3 "cc_register" "") ++ (const_int 0))))] ++ { ++ enum machine_mode mode = SELECT_CC_MODE (, operands[1], operands[2]); ++ rtx cc_reg = aarch64_gen_compare_reg (, operands[1], operands[2]); ++ rtx comparison = gen_rtx_ (mode, operands[1], operands[2]); ++ emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); ++ DONE; ++ } ++ [(set_attr "simd_type" "simd_cmp") ++ (set_attr "simd_mode" "DI")] ++) + +-(define_insn "aarch64_cm" ++;; cmtst ++ ++(define_insn "aarch64_cmtst" ++ [(set (match_operand: 0 "register_operand" "=w") ++ (neg: ++ (ne: ++ (and:VDQ ++ (match_operand:VDQ 1 "register_operand" "w") ++ (match_operand:VDQ 2 "register_operand" "w")) ++ (vec_duplicate: (const_int 0)))))] ++ "TARGET_SIMD" ++ "cmtst\t%0, %1, %2" ++ [(set_attr "simd_type" "simd_cmp") ++ (set_attr "simd_mode" "")] ++) ++ ++(define_insn_and_split "aarch64_cmtstdi" ++ [(set (match_operand:DI 0 "register_operand" "=w,r") ++ (neg:DI ++ (ne:DI ++ (and:DI ++ (match_operand:DI 1 "register_operand" "w,r") ++ (match_operand:DI 2 "register_operand" "w,r")) ++ (const_int 0))))] ++ "TARGET_SIMD" ++ "@ ++ cmtst\t%d0, %d1, %d2 ++ #" ++ "reload_completed ++ /* We need to prevent the split from ++ happening in the 'w' constraint cases. */ ++ && GP_REGNUM_P (REGNO (operands[0])) ++ && GP_REGNUM_P (REGNO (operands[1]))" ++ [(set (reg:CC_NZ CC_REGNUM) ++ (compare:CC_NZ ++ (and:DI (match_dup 1) ++ (match_dup 2)) ++ (const_int 0))) ++ (set (match_dup 0) ++ (neg:DI ++ (ne:DI ++ (match_operand 3 "cc_register" "") ++ (const_int 0))))] ++ { ++ rtx and_tree = gen_rtx_AND (DImode, operands[1], operands[2]); ++ enum machine_mode mode = SELECT_CC_MODE (NE, and_tree, const0_rtx); ++ rtx cc_reg = aarch64_gen_compare_reg (NE, and_tree, const0_rtx); ++ rtx comparison = gen_rtx_NE (mode, and_tree, const0_rtx); ++ emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); ++ DONE; ++ } ++ [(set_attr "simd_type" "simd_cmp") ++ (set_attr "simd_mode" "DI")] ++) ++ ++;; fcm(eq|ge|gt|le|lt) ++ ++(define_insn "aarch64_cm" + [(set (match_operand: 0 "register_operand" "=w,w") +- (unspec: +- [(match_operand:VDQF 1 "register_operand" "w,w") +- (match_operand:VDQF 2 "aarch64_simd_reg_or_zero" "w,Dz")] +- VCMP_S))] ++ (neg: ++ (COMPARISONS: ++ (match_operand:VALLF 1 "register_operand" "w,w") ++ (match_operand:VALLF 2 "aarch64_simd_reg_or_zero" "w,YDz") ++ )))] + "TARGET_SIMD" + "@ +- fcm\t%0, %1, %2 +- fcm\t%0, %1, 0" ++ fcm\t%0, %, % ++ fcm\t%0, %1, 0" + [(set_attr "simd_type" "simd_fcmp") + (set_attr "simd_mode" "")] + ) + ++;; fac(ge|gt) ++;; Note we can also handle what would be fac(le|lt) by ++;; generating fac(ge|gt). ++ ++(define_insn "*aarch64_fac" ++ [(set (match_operand: 0 "register_operand" "=w") ++ (neg: ++ (FAC_COMPARISONS: ++ (abs:VALLF (match_operand:VALLF 1 "register_operand" "w")) ++ (abs:VALLF (match_operand:VALLF 2 "register_operand" "w")) ++ )))] ++ "TARGET_SIMD" ++ "fac\t%0, %, %" ++ [(set_attr "simd_type" "simd_fcmp") ++ (set_attr "simd_mode" "")] ++) ++ + ;; addp + + (define_insn "aarch64_addp" +@@ -3105,19 +3453,6 @@ + (set_attr "simd_mode" "DI")] + ) + +-;; v(max|min) +- +-(define_expand "aarch64_" +- [(set (match_operand:VDQ_BHSI 0 "register_operand" "=w") +- (MAXMIN:VDQ_BHSI (match_operand:VDQ_BHSI 1 "register_operand" "w") +- (match_operand:VDQ_BHSI 2 "register_operand" "w")))] +- "TARGET_SIMD" +-{ +- emit_insn (gen_3 (operands[0], operands[1], operands[2])); +- DONE; +-}) +- +- + (define_insn "aarch64_" + [(set (match_operand:VDQF 0 "register_operand" "=w") + (unspec:VDQF [(match_operand:VDQF 1 "register_operand" "w") +@@ -3140,16 +3475,6 @@ + (set_attr "simd_mode" "")] + ) + +-(define_expand "aarch64_sqrt" +- [(match_operand:VDQF 0 "register_operand" "=w") +- (match_operand:VDQF 1 "register_operand" "w")] +- "TARGET_SIMD" +-{ +- emit_insn (gen_sqrt2 (operands[0], operands[1])); +- DONE; +-}) +- +- + ;; Patterns for vector struct loads and stores. + + (define_insn "vec_load_lanesoi" +@@ -3714,3 +4039,25 @@ + "ld1r\\t{%0.}, %1" + [(set_attr "simd_type" "simd_load1r") + (set_attr "simd_mode" "")]) ++ ++(define_insn "aarch64_frecpe" ++ [(set (match_operand:VDQF 0 "register_operand" "=w") ++ (unspec:VDQF [(match_operand:VDQF 1 "register_operand" "w")] ++ UNSPEC_FRECPE))] ++ "TARGET_SIMD" ++ "frecpe\\t%0., %1." ++ [(set_attr "simd_type" "simd_frecpe") ++ (set_attr "simd_mode" "")] ++) ++ ++(define_insn "aarch64_frecps" ++ [(set (match_operand:VDQF 0 "register_operand" "=w") ++ (unspec:VDQF [(match_operand:VDQF 1 "register_operand" "w") ++ (match_operand:VDQF 2 "register_operand" "w")] ++ UNSPEC_FRECPS))] ++ "TARGET_SIMD" ++ "frecps\\t%0., %1., %2." ++ [(set_attr "simd_type" "simd_frecps") ++ (set_attr "simd_mode" "")] ++) ++ +--- a/src/gcc/config/aarch64/predicates.md ++++ b/src/gcc/config/aarch64/predicates.md +@@ -31,6 +31,11 @@ + (ior (match_operand 0 "register_operand") + (match_test "op == const0_rtx")))) + ++(define_predicate "aarch64_reg_or_fp_zero" ++ (and (match_code "reg,subreg,const_double") ++ (ior (match_operand 0 "register_operand") ++ (match_test "aarch64_float_const_zero_rtx_p (op)")))) ++ + (define_predicate "aarch64_reg_zero_or_m1_or_1" + (and (match_code "reg,subreg,const_int") + (ior (match_operand 0 "register_operand") +--- a/src/gcc/config/aarch64/aarch64-elf.h ++++ b/src/gcc/config/aarch64/aarch64-elf.h +@@ -106,7 +106,6 @@ + + #define ASM_COMMENT_START "//" + +-#define REGISTER_PREFIX "" + #define LOCAL_LABEL_PREFIX "." + #define USER_LABEL_PREFIX "" + +--- a/src/gcc/config/aarch64/arm_neon.h ++++ b/src/gcc/config/aarch64/arm_neon.h +@@ -4468,17 +4468,6 @@ + return result; + } + +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vabs_f32 (float32x2_t a) +-{ +- float32x2_t result; +- __asm__ ("fabs %0.2s,%1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vabs_s8 (int8x8_t a) + { +@@ -4512,28 +4501,6 @@ + return result; + } + +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vabsq_f32 (float32x4_t a) +-{ +- float32x4_t result; +- __asm__ ("fabs %0.4s,%1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vabsq_f64 (float64x2_t a) +-{ +- float64x2_t result; +- __asm__ ("fabs %0.2d,%1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vabsq_s8 (int8x16_t a) + { +@@ -4578,50 +4545,6 @@ + return result; + } + +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vacged_f64 (float64_t a, float64_t b) +-{ +- float64_t result; +- __asm__ ("facge %d0,%d1,%d2" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vacges_f32 (float32_t a, float32_t b) +-{ +- float32_t result; +- __asm__ ("facge %s0,%s1,%s2" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vacgtd_f64 (float64_t a, float64_t b) +-{ +- float64_t result; +- __asm__ ("facgt %d0,%d1,%d2" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vacgts_f32 (float32_t a, float32_t b) +-{ +- float32_t result; +- __asm__ ("facgt %s0,%s1,%s2" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline int16_t __attribute__ ((__always_inline__)) + vaddlv_s8 (int8x8_t a) + { +@@ -5095,358 +5018,6 @@ + return result; + } + +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vcage_f32 (float32x2_t a, float32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("facge %0.2s, %1.2s, %2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcageq_f32 (float32x4_t a, float32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("facge %0.4s, %1.4s, %2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcageq_f64 (float64x2_t a, float64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("facge %0.2d, %1.2d, %2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vcagt_f32 (float32x2_t a, float32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("facgt %0.2s, %1.2s, %2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcagtq_f32 (float32x4_t a, float32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("facgt %0.4s, %1.4s, %2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcagtq_f64 (float64x2_t a, float64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("facgt %0.2d, %1.2d, %2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vcale_f32 (float32x2_t a, float32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("facge %0.2s, %2.2s, %1.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcaleq_f32 (float32x4_t a, float32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("facge %0.4s, %2.4s, %1.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcaleq_f64 (float64x2_t a, float64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("facge %0.2d, %2.2d, %1.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vcalt_f32 (float32x2_t a, float32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("facgt %0.2s, %2.2s, %1.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcaltq_f32 (float32x4_t a, float32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("facgt %0.4s, %2.4s, %1.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcaltq_f64 (float64x2_t a, float64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("facgt %0.2d, %2.2d, %1.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vceq_f32 (float32x2_t a, float32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("fcmeq %0.2s, %1.2s, %2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +-vceq_f64 (float64x1_t a, float64x1_t b) +-{ +- uint64x1_t result; +- __asm__ ("fcmeq %d0, %d1, %d2" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vceqd_f64 (float64_t a, float64_t b) +-{ +- float64_t result; +- __asm__ ("fcmeq %d0,%d1,%d2" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vceqq_f32 (float32x4_t a, float32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("fcmeq %0.4s, %1.4s, %2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vceqq_f64 (float64x2_t a, float64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("fcmeq %0.2d, %1.2d, %2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vceqs_f32 (float32_t a, float32_t b) +-{ +- float32_t result; +- __asm__ ("fcmeq %s0,%s1,%s2" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vceqzd_f64 (float64_t a) +-{ +- float64_t result; +- __asm__ ("fcmeq %d0,%d1,#0" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vceqzs_f32 (float32_t a) +-{ +- float32_t result; +- __asm__ ("fcmeq %s0,%s1,#0" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vcge_f32 (float32x2_t a, float32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("fcmge %0.2s, %1.2s, %2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +-vcge_f64 (float64x1_t a, float64x1_t b) +-{ +- uint64x1_t result; +- __asm__ ("fcmge %d0, %d1, %d2" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcgeq_f32 (float32x4_t a, float32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("fcmge %0.4s, %1.4s, %2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcgeq_f64 (float64x2_t a, float64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("fcmge %0.2d, %1.2d, %2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vcgt_f32 (float32x2_t a, float32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("fcmgt %0.2s, %1.2s, %2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +-vcgt_f64 (float64x1_t a, float64x1_t b) +-{ +- uint64x1_t result; +- __asm__ ("fcmgt %d0, %d1, %d2" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcgtq_f32 (float32x4_t a, float32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("fcmgt %0.4s, %1.4s, %2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcgtq_f64 (float64x2_t a, float64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("fcmgt %0.2d, %1.2d, %2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vcle_f32 (float32x2_t a, float32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("fcmge %0.2s, %2.2s, %1.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +-vcle_f64 (float64x1_t a, float64x1_t b) +-{ +- uint64x1_t result; +- __asm__ ("fcmge %d0, %d2, %d1" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcleq_f32 (float32x4_t a, float32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("fcmge %0.4s, %2.4s, %1.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcleq_f64 (float64x2_t a, float64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("fcmge %0.2d, %2.2d, %1.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vcls_s8 (int8x8_t a) + { +@@ -5513,50 +5084,6 @@ + return result; + } + +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vclt_f32 (float32x2_t a, float32x2_t b) +-{ +- uint32x2_t result; +- __asm__ ("fcmgt %0.2s, %2.2s, %1.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) +-vclt_f64 (float64x1_t a, float64x1_t b) +-{ +- uint64x1_t result; +- __asm__ ("fcmgt %d0, %d2, %d1" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcltq_f32 (float32x4_t a, float32x4_t b) +-{ +- uint32x4_t result; +- __asm__ ("fcmgt %0.4s, %2.4s, %1.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcltq_f64 (float64x2_t a, float64x2_t b) +-{ +- uint64x2_t result; +- __asm__ ("fcmgt %0.2d, %2.2d, %1.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vclz_s8 (int8x8_t a) + { +@@ -5915,100 +5442,12 @@ + + /* vcvt_f32_f16 not supported */ + +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vcvt_f32_f64 (float64x2_t a) +-{ +- float32x2_t result; +- __asm__ ("fcvtn %0.2s,%1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vcvt_f32_s32 (int32x2_t a) +-{ +- float32x2_t result; +- __asm__ ("scvtf %0.2s, %1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vcvt_f32_u32 (uint32x2_t a) +-{ +- float32x2_t result; +- __asm__ ("ucvtf %0.2s, %1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vcvt_f64_f32 (float32x2_t a) +-{ +- float64x2_t result; +- __asm__ ("fcvtl %0.2d,%1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) +-vcvt_f64_s64 (uint64x1_t a) +-{ +- float64x1_t result; +- __asm__ ("scvtf %d0, %d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) +-vcvt_f64_u64 (uint64x1_t a) +-{ +- float64x1_t result; +- __asm__ ("ucvtf %d0, %d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + /* vcvt_high_f16_f32 not supported */ + + /* vcvt_high_f32_f16 not supported */ + + static float32x2_t vdup_n_f32 (float32_t); + +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vcvt_high_f32_f64 (float32x2_t a, float64x2_t b) +-{ +- float32x4_t result = vcombine_f32 (a, vdup_n_f32 (0.0f)); +- __asm__ ("fcvtn2 %0.4s,%2.2d" +- : "+w"(result) +- : "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vcvt_high_f64_f32 (float32x4_t a) +-{ +- float64x2_t result; +- __asm__ ("fcvtl2 %0.2d,%1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + #define vcvt_n_f32_s32(a, b) \ + __extension__ \ + ({ \ +@@ -6057,160 +5496,6 @@ + result; \ + }) + +-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +-vcvt_s32_f32 (float32x2_t a) +-{ +- int32x2_t result; +- __asm__ ("fcvtzs %0.2s, %1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vcvt_u32_f32 (float32x2_t a) +-{ +- uint32x2_t result; +- __asm__ ("fcvtzu %0.2s, %1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +-vcvta_s32_f32 (float32x2_t a) +-{ +- int32x2_t result; +- __asm__ ("fcvtas %0.2s, %1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vcvta_u32_f32 (float32x2_t a) +-{ +- uint32x2_t result; +- __asm__ ("fcvtau %0.2s, %1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vcvtad_s64_f64 (float64_t a) +-{ +- float64_t result; +- __asm__ ("fcvtas %d0,%d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vcvtad_u64_f64 (float64_t a) +-{ +- float64_t result; +- __asm__ ("fcvtau %d0,%d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +-vcvtaq_s32_f32 (float32x4_t a) +-{ +- int32x4_t result; +- __asm__ ("fcvtas %0.4s, %1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +-vcvtaq_s64_f64 (float64x2_t a) +-{ +- int64x2_t result; +- __asm__ ("fcvtas %0.2d, %1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcvtaq_u32_f32 (float32x4_t a) +-{ +- uint32x4_t result; +- __asm__ ("fcvtau %0.4s, %1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcvtaq_u64_f64 (float64x2_t a) +-{ +- uint64x2_t result; +- __asm__ ("fcvtau %0.2d, %1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vcvtas_s64_f64 (float32_t a) +-{ +- float32_t result; +- __asm__ ("fcvtas %s0,%s1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vcvtas_u64_f64 (float32_t a) +-{ +- float32_t result; +- __asm__ ("fcvtau %s0,%s1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int64_t __attribute__ ((__always_inline__)) +-vcvtd_f64_s64 (int64_t a) +-{ +- int64_t result; +- __asm__ ("scvtf %d0,%d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) +-vcvtd_f64_u64 (uint64_t a) +-{ +- uint64_t result; +- __asm__ ("ucvtf %d0,%d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + #define vcvtd_n_f64_s64(a, b) \ + __extension__ \ + ({ \ +@@ -6259,402 +5544,6 @@ + result; \ + }) + +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vcvtd_s64_f64 (float64_t a) +-{ +- float64_t result; +- __asm__ ("fcvtzs %d0,%d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vcvtd_u64_f64 (float64_t a) +-{ +- float64_t result; +- __asm__ ("fcvtzu %d0,%d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +-vcvtm_s32_f32 (float32x2_t a) +-{ +- int32x2_t result; +- __asm__ ("fcvtms %0.2s, %1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vcvtm_u32_f32 (float32x2_t a) +-{ +- uint32x2_t result; +- __asm__ ("fcvtmu %0.2s, %1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vcvtmd_s64_f64 (float64_t a) +-{ +- float64_t result; +- __asm__ ("fcvtms %d0,%d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vcvtmd_u64_f64 (float64_t a) +-{ +- float64_t result; +- __asm__ ("fcvtmu %d0,%d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +-vcvtmq_s32_f32 (float32x4_t a) +-{ +- int32x4_t result; +- __asm__ ("fcvtms %0.4s, %1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +-vcvtmq_s64_f64 (float64x2_t a) +-{ +- int64x2_t result; +- __asm__ ("fcvtms %0.2d, %1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcvtmq_u32_f32 (float32x4_t a) +-{ +- uint32x4_t result; +- __asm__ ("fcvtmu %0.4s, %1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcvtmq_u64_f64 (float64x2_t a) +-{ +- uint64x2_t result; +- __asm__ ("fcvtmu %0.2d, %1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vcvtms_s64_f64 (float32_t a) +-{ +- float32_t result; +- __asm__ ("fcvtms %s0,%s1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vcvtms_u64_f64 (float32_t a) +-{ +- float32_t result; +- __asm__ ("fcvtmu %s0,%s1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +-vcvtn_s32_f32 (float32x2_t a) +-{ +- int32x2_t result; +- __asm__ ("fcvtns %0.2s, %1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vcvtn_u32_f32 (float32x2_t a) +-{ +- uint32x2_t result; +- __asm__ ("fcvtnu %0.2s, %1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vcvtnd_s64_f64 (float64_t a) +-{ +- float64_t result; +- __asm__ ("fcvtns %d0,%d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vcvtnd_u64_f64 (float64_t a) +-{ +- float64_t result; +- __asm__ ("fcvtnu %d0,%d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +-vcvtnq_s32_f32 (float32x4_t a) +-{ +- int32x4_t result; +- __asm__ ("fcvtns %0.4s, %1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +-vcvtnq_s64_f64 (float64x2_t a) +-{ +- int64x2_t result; +- __asm__ ("fcvtns %0.2d, %1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcvtnq_u32_f32 (float32x4_t a) +-{ +- uint32x4_t result; +- __asm__ ("fcvtnu %0.4s, %1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcvtnq_u64_f64 (float64x2_t a) +-{ +- uint64x2_t result; +- __asm__ ("fcvtnu %0.2d, %1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vcvtns_s64_f64 (float32_t a) +-{ +- float32_t result; +- __asm__ ("fcvtns %s0,%s1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vcvtns_u64_f64 (float32_t a) +-{ +- float32_t result; +- __asm__ ("fcvtnu %s0,%s1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) +-vcvtp_s32_f32 (float32x2_t a) +-{ +- int32x2_t result; +- __asm__ ("fcvtps %0.2s, %1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) +-vcvtp_u32_f32 (float32x2_t a) +-{ +- uint32x2_t result; +- __asm__ ("fcvtpu %0.2s, %1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vcvtpd_s64_f64 (float64_t a) +-{ +- float64_t result; +- __asm__ ("fcvtps %d0,%d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vcvtpd_u64_f64 (float64_t a) +-{ +- float64_t result; +- __asm__ ("fcvtpu %d0,%d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +-vcvtpq_s32_f32 (float32x4_t a) +-{ +- int32x4_t result; +- __asm__ ("fcvtps %0.4s, %1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +-vcvtpq_s64_f64 (float64x2_t a) +-{ +- int64x2_t result; +- __asm__ ("fcvtps %0.2d, %1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcvtpq_u32_f32 (float32x4_t a) +-{ +- uint32x4_t result; +- __asm__ ("fcvtpu %0.4s, %1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcvtpq_u64_f64 (float64x2_t a) +-{ +- uint64x2_t result; +- __asm__ ("fcvtpu %0.2d, %1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vcvtps_s64_f64 (float32_t a) +-{ +- float32_t result; +- __asm__ ("fcvtps %s0,%s1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vcvtps_u64_f64 (float32_t a) +-{ +- float32_t result; +- __asm__ ("fcvtpu %s0,%s1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vcvtq_f32_s32 (int32x4_t a) +-{ +- float32x4_t result; +- __asm__ ("scvtf %0.4s, %1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vcvtq_f32_u32 (uint32x4_t a) +-{ +- float32x4_t result; +- __asm__ ("ucvtf %0.4s, %1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vcvtq_f64_s64 (int64x2_t a) +-{ +- float64x2_t result; +- __asm__ ("scvtf %0.2d, %1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vcvtq_f64_u64 (uint64x2_t a) +-{ +- float64x2_t result; +- __asm__ ("ucvtf %0.2d, %1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + #define vcvtq_n_f32_s32(a, b) \ + __extension__ \ + ({ \ +@@ -6751,72 +5640,6 @@ + result; \ + }) + +-__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) +-vcvtq_s32_f32 (float32x4_t a) +-{ +- int32x4_t result; +- __asm__ ("fcvtzs %0.4s, %1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) +-vcvtq_s64_f64 (float64x2_t a) +-{ +- int64x2_t result; +- __asm__ ("fcvtzs %0.2d, %1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) +-vcvtq_u32_f32 (float32x4_t a) +-{ +- uint32x4_t result; +- __asm__ ("fcvtzu %0.4s, %1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) +-vcvtq_u64_f64 (float64x2_t a) +-{ +- uint64x2_t result; +- __asm__ ("fcvtzu %0.2d, %1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline int32_t __attribute__ ((__always_inline__)) +-vcvts_f64_s32 (int32_t a) +-{ +- int32_t result; +- __asm__ ("scvtf %s0,%s1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +-vcvts_f64_u32 (uint32_t a) +-{ +- uint32_t result; +- __asm__ ("ucvtf %s0,%s1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + #define vcvts_n_f32_s32(a, b) \ + __extension__ \ + ({ \ +@@ -6865,28 +5688,6 @@ + result; \ + }) + +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vcvts_s64_f64 (float32_t a) +-{ +- float32_t result; +- __asm__ ("fcvtzs %s0,%s1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vcvts_u64_f64 (float32_t a) +-{ +- float32_t result; +- __asm__ ("fcvtzu %s0,%s1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vcvtx_f32_f64 (float64x2_t a) + { +@@ -14556,17 +13357,6 @@ + return result; + } + +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vrecpe_f32 (float32x2_t a) +-{ +- float32x2_t result; +- __asm__ ("frecpe %0.2s,%1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vrecpe_u32 (uint32x2_t a) + { +@@ -14578,39 +13368,6 @@ + return result; + } + +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vrecped_f64 (float64_t a) +-{ +- float64_t result; +- __asm__ ("frecpe %d0,%d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vrecpeq_f32 (float32x4_t a) +-{ +- float32x4_t result; +- __asm__ ("frecpe %0.4s,%1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vrecpeq_f64 (float64x2_t a) +-{ +- float64x2_t result; +- __asm__ ("frecpe %0.2d,%1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vrecpeq_u32 (uint32x4_t a) + { +@@ -14622,94 +13379,6 @@ + return result; + } + +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vrecpes_f32 (float32_t a) +-{ +- float32_t result; +- __asm__ ("frecpe %s0,%s1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vrecps_f32 (float32x2_t a, float32x2_t b) +-{ +- float32x2_t result; +- __asm__ ("frecps %0.2s,%1.2s,%2.2s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vrecpsd_f64 (float64_t a, float64_t b) +-{ +- float64_t result; +- __asm__ ("frecps %d0,%d1,%d2" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vrecpsq_f32 (float32x4_t a, float32x4_t b) +-{ +- float32x4_t result; +- __asm__ ("frecps %0.4s,%1.4s,%2.4s" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vrecpsq_f64 (float64x2_t a, float64x2_t b) +-{ +- float64x2_t result; +- __asm__ ("frecps %0.2d,%1.2d,%2.2d" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vrecpss_f32 (float32_t a, float32_t b) +-{ +- float32_t result; +- __asm__ ("frecps %s0,%s1,%s2" +- : "=w"(result) +- : "w"(a), "w"(b) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64_t __attribute__ ((__always_inline__)) +-vrecpxd_f64 (float64_t a) +-{ +- float64_t result; +- __asm__ ("frecpe %d0,%d1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32_t __attribute__ ((__always_inline__)) +-vrecpxs_f32 (float32_t a) +-{ +- float32_t result; +- __asm__ ("frecpe %s0,%s1" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__)) + vrev16_p8 (poly8x8_t a) + { +@@ -15106,171 +13775,6 @@ + return result; + } + +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vrnd_f32 (float32x2_t a) +-{ +- float32x2_t result; +- __asm__ ("frintz %0.2s,%1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vrnda_f32 (float32x2_t a) +-{ +- float32x2_t result; +- __asm__ ("frinta %0.2s,%1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vrndm_f32 (float32x2_t a) +-{ +- float32x2_t result; +- __asm__ ("frintm %0.2s,%1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vrndn_f32 (float32x2_t a) +-{ +- float32x2_t result; +- __asm__ ("frintn %0.2s,%1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) +-vrndp_f32 (float32x2_t a) +-{ +- float32x2_t result; +- __asm__ ("frintp %0.2s,%1.2s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vrndq_f32 (float32x4_t a) +-{ +- float32x4_t result; +- __asm__ ("frintz %0.4s,%1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vrndq_f64 (float64x2_t a) +-{ +- float64x2_t result; +- __asm__ ("frintz %0.2d,%1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vrndqa_f32 (float32x4_t a) +-{ +- float32x4_t result; +- __asm__ ("frinta %0.4s,%1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vrndqa_f64 (float64x2_t a) +-{ +- float64x2_t result; +- __asm__ ("frinta %0.2d,%1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vrndqm_f32 (float32x4_t a) +-{ +- float32x4_t result; +- __asm__ ("frintm %0.4s,%1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vrndqm_f64 (float64x2_t a) +-{ +- float64x2_t result; +- __asm__ ("frintm %0.2d,%1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vrndqn_f32 (float32x4_t a) +-{ +- float32x4_t result; +- __asm__ ("frintn %0.4s,%1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vrndqn_f64 (float64x2_t a) +-{ +- float64x2_t result; +- __asm__ ("frintn %0.2d,%1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) +-vrndqp_f32 (float32x4_t a) +-{ +- float32x4_t result; +- __asm__ ("frintp %0.4s,%1.4s" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- +-__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) +-vrndqp_f64 (float64x2_t a) +-{ +- float64x2_t result; +- __asm__ ("frintp %0.2d,%1.2d" +- : "=w"(result) +- : "w"(a) +- : /* No clobbers */); +- return result; +-} +- + #define vrshrn_high_n_s16(a, b, c) \ + __extension__ \ + ({ \ +@@ -19849,6 +18353,26 @@ + + /* Start of optimal implementations in approved order. */ + ++/* vabs */ ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vabs_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_absv2sf (__a); ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vabsq_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_absv4sf (__a); ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vabsq_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_absv2df (__a); ++} ++ + /* vadd */ + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) +@@ -19863,8 +18387,145 @@ + return __a + __b; + } + +-/* vceq */ ++__extension__ static __inline float32_t __attribute__ ((__always_inline__)) ++vaddv_f32 (float32x2_t __a) ++{ ++ float32x2_t t = __builtin_aarch64_addvv2sf (__a); ++ return vget_lane_f32 (t, 0); ++} + ++__extension__ static __inline float32_t __attribute__ ((__always_inline__)) ++vaddvq_f32 (float32x4_t __a) ++{ ++ float32x4_t t = __builtin_aarch64_addvv4sf (__a); ++ return vgetq_lane_f32 (t, 0); ++} ++ ++__extension__ static __inline float64_t __attribute__ ((__always_inline__)) ++vaddvq_f64 (float64x2_t __a) ++{ ++ float64x2_t t = __builtin_aarch64_addvv2df (__a); ++ return vgetq_lane_f64 (t, 0); ++} ++ ++/* vcage */ ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vcages_f32 (float32_t __a, float32_t __b) ++{ ++ return __builtin_fabsf (__a) >= __builtin_fabsf (__b) ? -1 : 0; ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcage_f32 (float32x2_t __a, float32x2_t __b) ++{ ++ return vabs_f32 (__a) >= vabs_f32 (__b); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcageq_f32 (float32x4_t __a, float32x4_t __b) ++{ ++ return vabsq_f32 (__a) >= vabsq_f32 (__b); ++} ++ ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vcaged_f64 (float64_t __a, float64_t __b) ++{ ++ return __builtin_fabs (__a) >= __builtin_fabs (__b) ? -1 : 0; ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcageq_f64 (float64x2_t __a, float64x2_t __b) ++{ ++ return vabsq_f64 (__a) >= vabsq_f64 (__b); ++} ++ ++/* vcagt */ ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vcagts_f32 (float32_t __a, float32_t __b) ++{ ++ return __builtin_fabsf (__a) > __builtin_fabsf (__b) ? -1 : 0; ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcagt_f32 (float32x2_t __a, float32x2_t __b) ++{ ++ return vabs_f32 (__a) > vabs_f32 (__b); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcagtq_f32 (float32x4_t __a, float32x4_t __b) ++{ ++ return vabsq_f32 (__a) > vabsq_f32 (__b); ++} ++ ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vcagtd_f64 (float64_t __a, float64_t __b) ++{ ++ return __builtin_fabs (__a) > __builtin_fabs (__b) ? -1 : 0; ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcagtq_f64 (float64x2_t __a, float64x2_t __b) ++{ ++ return vabsq_f64 (__a) > vabsq_f64 (__b); ++} ++ ++/* vcale */ ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcale_f32 (float32x2_t __a, float32x2_t __b) ++{ ++ return vabs_f32 (__a) <= vabs_f32 (__b); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcaleq_f32 (float32x4_t __a, float32x4_t __b) ++{ ++ return vabsq_f32 (__a) <= vabsq_f32 (__b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcaleq_f64 (float64x2_t __a, float64x2_t __b) ++{ ++ return vabsq_f64 (__a) <= vabsq_f64 (__b); ++} ++ ++/* vcalt */ ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcalt_f32 (float32x2_t __a, float32x2_t __b) ++{ ++ return vabs_f32 (__a) < vabs_f32 (__b); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcaltq_f32 (float32x4_t __a, float32x4_t __b) ++{ ++ return vabsq_f32 (__a) < vabsq_f32 (__b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcaltq_f64 (float64x2_t __a, float64x2_t __b) ++{ ++ return vabsq_f64 (__a) < vabsq_f64 (__b); ++} ++ ++/* vceq - vector. */ ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vceq_f32 (float32x2_t __a, float32x2_t __b) ++{ ++ return (uint32x2_t) __builtin_aarch64_cmeqv2sf (__a, __b); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vceq_f64 (float64x1_t __a, float64x1_t __b) ++{ ++ return __a == __b ? -1ll : 0ll; ++} ++ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vceq_p8 (poly8x8_t __a, poly8x8_t __b) + { +@@ -19893,7 +18554,7 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vceq_s64 (int64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmeqdi (__a, __b); ++ return __a == __b ? -1ll : 0ll; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +@@ -19920,10 +18581,21 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vceq_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmeqdi ((int64x1_t) __a, +- (int64x1_t) __b); ++ return __a == __b ? -1ll : 0ll; + } + ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vceqq_f32 (float32x4_t __a, float32x4_t __b) ++{ ++ return (uint32x4_t) __builtin_aarch64_cmeqv4sf (__a, __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vceqq_f64 (float64x2_t __a, float64x2_t __b) ++{ ++ return (uint64x2_t) __builtin_aarch64_cmeqv2df (__a, __b); ++} ++ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vceqq_p8 (poly8x16_t __a, poly8x16_t __b) + { +@@ -19983,27 +18655,245 @@ + (int64x2_t) __b); + } + ++/* vceq - scalar. */ ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vceqs_f32 (float32_t __a, float32_t __b) ++{ ++ return __a == __b ? -1 : 0; ++} ++ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vceqd_s64 (int64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmeqdi (__a, __b); ++ return __a == __b ? -1ll : 0ll; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vceqd_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmeqdi (__a, __b); ++ return __a == __b ? -1ll : 0ll; + } + ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vceqd_f64 (float64_t __a, float64_t __b) ++{ ++ return __a == __b ? -1ll : 0ll; ++} ++ ++/* vceqz - vector. */ ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vceqz_f32 (float32x2_t __a) ++{ ++ float32x2_t __b = {0.0f, 0.0f}; ++ return (uint32x2_t) __builtin_aarch64_cmeqv2sf (__a, __b); ++} ++ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vceqz_f64 (float64x1_t __a) ++{ ++ return __a == 0.0 ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vceqz_p8 (poly8x8_t __a) ++{ ++ poly8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x8_t) __builtin_aarch64_cmeqv8qi ((int8x8_t) __a, ++ (int8x8_t) __b); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vceqz_s8 (int8x8_t __a) ++{ ++ int8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x8_t) __builtin_aarch64_cmeqv8qi (__a, __b); ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vceqz_s16 (int16x4_t __a) ++{ ++ int16x4_t __b = {0, 0, 0, 0}; ++ return (uint16x4_t) __builtin_aarch64_cmeqv4hi (__a, __b); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vceqz_s32 (int32x2_t __a) ++{ ++ int32x2_t __b = {0, 0}; ++ return (uint32x2_t) __builtin_aarch64_cmeqv2si (__a, __b); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vceqz_s64 (int64x1_t __a) ++{ ++ return __a == 0ll ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vceqz_u8 (uint8x8_t __a) ++{ ++ uint8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x8_t) __builtin_aarch64_cmeqv8qi ((int8x8_t) __a, ++ (int8x8_t) __b); ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vceqz_u16 (uint16x4_t __a) ++{ ++ uint16x4_t __b = {0, 0, 0, 0}; ++ return (uint16x4_t) __builtin_aarch64_cmeqv4hi ((int16x4_t) __a, ++ (int16x4_t) __b); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vceqz_u32 (uint32x2_t __a) ++{ ++ uint32x2_t __b = {0, 0}; ++ return (uint32x2_t) __builtin_aarch64_cmeqv2si ((int32x2_t) __a, ++ (int32x2_t) __b); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vceqz_u64 (uint64x1_t __a) ++{ ++ return __a == 0ll ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vceqzq_f32 (float32x4_t __a) ++{ ++ float32x4_t __b = {0.0f, 0.0f, 0.0f, 0.0f}; ++ return (uint32x4_t) __builtin_aarch64_cmeqv4sf (__a, __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vceqzq_f64 (float64x2_t __a) ++{ ++ float64x2_t __b = {0.0, 0.0}; ++ return (uint64x2_t) __builtin_aarch64_cmeqv2df (__a, __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vceqzq_p8 (poly8x16_t __a) ++{ ++ poly8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x16_t) __builtin_aarch64_cmeqv16qi ((int8x16_t) __a, ++ (int8x16_t) __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vceqzq_s8 (int8x16_t __a) ++{ ++ int8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x16_t) __builtin_aarch64_cmeqv16qi (__a, __b); ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vceqzq_s16 (int16x8_t __a) ++{ ++ int16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint16x8_t) __builtin_aarch64_cmeqv8hi (__a, __b); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vceqzq_s32 (int32x4_t __a) ++{ ++ int32x4_t __b = {0, 0, 0, 0}; ++ return (uint32x4_t) __builtin_aarch64_cmeqv4si (__a, __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vceqzq_s64 (int64x2_t __a) ++{ ++ int64x2_t __b = {0, 0}; ++ return (uint64x2_t) __builtin_aarch64_cmeqv2di (__a, __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vceqzq_u8 (uint8x16_t __a) ++{ ++ uint8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x16_t) __builtin_aarch64_cmeqv16qi ((int8x16_t) __a, ++ (int8x16_t) __b); ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vceqzq_u16 (uint16x8_t __a) ++{ ++ uint16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint16x8_t) __builtin_aarch64_cmeqv8hi ((int16x8_t) __a, ++ (int16x8_t) __b); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vceqzq_u32 (uint32x4_t __a) ++{ ++ uint32x4_t __b = {0, 0, 0, 0}; ++ return (uint32x4_t) __builtin_aarch64_cmeqv4si ((int32x4_t) __a, ++ (int32x4_t) __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vceqzq_u64 (uint64x2_t __a) ++{ ++ uint64x2_t __b = {0, 0}; ++ return (uint64x2_t) __builtin_aarch64_cmeqv2di ((int64x2_t) __a, ++ (int64x2_t) __b); ++} ++ ++/* vceqz - scalar. */ ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vceqzs_f32 (float32_t __a) ++{ ++ return __a == 0.0f ? -1 : 0; ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vceqzd_s64 (int64x1_t __a) + { +- return (uint64x1_t) __builtin_aarch64_cmeqdi (__a, 0); ++ return __a == 0 ? -1ll : 0ll; + } + +-/* vcge */ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vceqzd_u64 (int64x1_t __a) ++{ ++ return __a == 0 ? -1ll : 0ll; ++} + ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vceqzd_f64 (float64_t __a) ++{ ++ return __a == 0.0 ? -1ll : 0ll; ++} ++ ++/* vcge - vector. */ ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcge_f32 (float32x2_t __a, float32x2_t __b) ++{ ++ return (uint32x2_t) __builtin_aarch64_cmgev2sf (__a, __b); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcge_f64 (float64x1_t __a, float64x1_t __b) ++{ ++ return __a >= __b ? -1ll : 0ll; ++} ++ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vcge_p8 (poly8x8_t __a, poly8x8_t __b) ++{ ++ return (uint8x8_t) __builtin_aarch64_cmgev8qi ((int8x8_t) __a, ++ (int8x8_t) __b); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcge_s8 (int8x8_t __a, int8x8_t __b) + { + return (uint8x8_t) __builtin_aarch64_cmgev8qi (__a, __b); +@@ -20024,38 +18914,56 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcge_s64 (int64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmgedi (__a, __b); ++ return __a >= __b ? -1ll : 0ll; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcge_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmhsv8qi ((int8x8_t) __a, ++ return (uint8x8_t) __builtin_aarch64_cmgeuv8qi ((int8x8_t) __a, + (int8x8_t) __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vcge_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmhsv4hi ((int16x4_t) __a, ++ return (uint16x4_t) __builtin_aarch64_cmgeuv4hi ((int16x4_t) __a, + (int16x4_t) __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcge_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmhsv2si ((int32x2_t) __a, ++ return (uint32x2_t) __builtin_aarch64_cmgeuv2si ((int32x2_t) __a, + (int32x2_t) __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcge_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmhsdi ((int64x1_t) __a, +- (int64x1_t) __b); ++ return __a >= __b ? -1ll : 0ll; + } + ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcgeq_f32 (float32x4_t __a, float32x4_t __b) ++{ ++ return (uint32x4_t) __builtin_aarch64_cmgev4sf (__a, __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcgeq_f64 (float64x2_t __a, float64x2_t __b) ++{ ++ return (uint64x2_t) __builtin_aarch64_cmgev2df (__a, __b); ++} ++ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vcgeq_p8 (poly8x16_t __a, poly8x16_t __b) ++{ ++ return (uint8x16_t) __builtin_aarch64_cmgev16qi ((int8x16_t) __a, ++ (int8x16_t) __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcgeq_s8 (int8x16_t __a, int8x16_t __b) + { + return (uint8x16_t) __builtin_aarch64_cmgev16qi (__a, __b); +@@ -20082,53 +18990,270 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcgeq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmhsv16qi ((int8x16_t) __a, ++ return (uint8x16_t) __builtin_aarch64_cmgeuv16qi ((int8x16_t) __a, + (int8x16_t) __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcgeq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmhsv8hi ((int16x8_t) __a, ++ return (uint16x8_t) __builtin_aarch64_cmgeuv8hi ((int16x8_t) __a, + (int16x8_t) __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcgeq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmhsv4si ((int32x4_t) __a, ++ return (uint32x4_t) __builtin_aarch64_cmgeuv4si ((int32x4_t) __a, + (int32x4_t) __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcgeq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmhsv2di ((int64x2_t) __a, ++ return (uint64x2_t) __builtin_aarch64_cmgeuv2di ((int64x2_t) __a, + (int64x2_t) __b); + } + ++/* vcge - scalar. */ ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vcges_f32 (float32_t __a, float32_t __b) ++{ ++ return __a >= __b ? -1 : 0; ++} ++ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcged_s64 (int64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmgedi (__a, __b); ++ return __a >= __b ? -1ll : 0ll; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcged_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmhsdi ((int64x1_t) __a, +- (int64x1_t) __b); ++ return __a >= __b ? -1ll : 0ll; + } + ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vcged_f64 (float64_t __a, float64_t __b) ++{ ++ return __a >= __b ? -1ll : 0ll; ++} ++ ++/* vcgez - vector. */ ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcgez_f32 (float32x2_t __a) ++{ ++ float32x2_t __b = {0.0f, 0.0f}; ++ return (uint32x2_t) __builtin_aarch64_cmgev2sf (__a, __b); ++} ++ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcgez_f64 (float64x1_t __a) ++{ ++ return __a >= 0.0 ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vcgez_p8 (poly8x8_t __a) ++{ ++ poly8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x8_t) __builtin_aarch64_cmgev8qi ((int8x8_t) __a, ++ (int8x8_t) __b); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vcgez_s8 (int8x8_t __a) ++{ ++ int8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x8_t) __builtin_aarch64_cmgev8qi (__a, __b); ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vcgez_s16 (int16x4_t __a) ++{ ++ int16x4_t __b = {0, 0, 0, 0}; ++ return (uint16x4_t) __builtin_aarch64_cmgev4hi (__a, __b); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcgez_s32 (int32x2_t __a) ++{ ++ int32x2_t __b = {0, 0}; ++ return (uint32x2_t) __builtin_aarch64_cmgev2si (__a, __b); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcgez_s64 (int64x1_t __a) ++{ ++ return __a >= 0ll ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vcgez_u8 (uint8x8_t __a) ++{ ++ uint8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x8_t) __builtin_aarch64_cmgeuv8qi ((int8x8_t) __a, ++ (int8x8_t) __b); ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vcgez_u16 (uint16x4_t __a) ++{ ++ uint16x4_t __b = {0, 0, 0, 0}; ++ return (uint16x4_t) __builtin_aarch64_cmgeuv4hi ((int16x4_t) __a, ++ (int16x4_t) __b); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcgez_u32 (uint32x2_t __a) ++{ ++ uint32x2_t __b = {0, 0}; ++ return (uint32x2_t) __builtin_aarch64_cmgeuv2si ((int32x2_t) __a, ++ (int32x2_t) __b); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcgez_u64 (uint64x1_t __a) ++{ ++ return __a >= 0ll ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcgezq_f32 (float32x4_t __a) ++{ ++ float32x4_t __b = {0.0f, 0.0f, 0.0f, 0.0f}; ++ return (uint32x4_t) __builtin_aarch64_cmgev4sf (__a, __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcgezq_f64 (float64x2_t __a) ++{ ++ float64x2_t __b = {0.0, 0.0}; ++ return (uint64x2_t) __builtin_aarch64_cmgev2df (__a, __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vcgezq_p8 (poly8x16_t __a) ++{ ++ poly8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x16_t) __builtin_aarch64_cmgev16qi ((int8x16_t) __a, ++ (int8x16_t) __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vcgezq_s8 (int8x16_t __a) ++{ ++ int8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x16_t) __builtin_aarch64_cmgev16qi (__a, __b); ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vcgezq_s16 (int16x8_t __a) ++{ ++ int16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint16x8_t) __builtin_aarch64_cmgev8hi (__a, __b); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcgezq_s32 (int32x4_t __a) ++{ ++ int32x4_t __b = {0, 0, 0, 0}; ++ return (uint32x4_t) __builtin_aarch64_cmgev4si (__a, __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcgezq_s64 (int64x2_t __a) ++{ ++ int64x2_t __b = {0, 0}; ++ return (uint64x2_t) __builtin_aarch64_cmgev2di (__a, __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vcgezq_u8 (uint8x16_t __a) ++{ ++ uint8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x16_t) __builtin_aarch64_cmgeuv16qi ((int8x16_t) __a, ++ (int8x16_t) __b); ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vcgezq_u16 (uint16x8_t __a) ++{ ++ uint16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint16x8_t) __builtin_aarch64_cmgeuv8hi ((int16x8_t) __a, ++ (int16x8_t) __b); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcgezq_u32 (uint32x4_t __a) ++{ ++ uint32x4_t __b = {0, 0, 0, 0}; ++ return (uint32x4_t) __builtin_aarch64_cmgeuv4si ((int32x4_t) __a, ++ (int32x4_t) __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcgezq_u64 (uint64x2_t __a) ++{ ++ uint64x2_t __b = {0, 0}; ++ return (uint64x2_t) __builtin_aarch64_cmgeuv2di ((int64x2_t) __a, ++ (int64x2_t) __b); ++} ++ ++/* vcgez - scalar. */ ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vcgezs_f32 (float32_t __a) ++{ ++ return __a >= 0.0f ? -1 : 0; ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcgezd_s64 (int64x1_t __a) + { +- return (uint64x1_t) __builtin_aarch64_cmgedi (__a, 0); ++ return __a >= 0 ? -1ll : 0ll; + } + +-/* vcgt */ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcgezd_u64 (int64x1_t __a) ++{ ++ return __a >= 0 ? -1ll : 0ll; ++} + ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vcgezd_f64 (float64_t __a) ++{ ++ return __a >= 0.0 ? -1ll : 0ll; ++} ++ ++/* vcgt - vector. */ ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcgt_f32 (float32x2_t __a, float32x2_t __b) ++{ ++ return (uint32x2_t) __builtin_aarch64_cmgtv2sf (__a, __b); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcgt_f64 (float64x1_t __a, float64x1_t __b) ++{ ++ return __a > __b ? -1ll : 0ll; ++} ++ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vcgt_p8 (poly8x8_t __a, poly8x8_t __b) ++{ ++ return (uint8x8_t) __builtin_aarch64_cmgtv8qi ((int8x8_t) __a, ++ (int8x8_t) __b); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcgt_s8 (int8x8_t __a, int8x8_t __b) + { + return (uint8x8_t) __builtin_aarch64_cmgtv8qi (__a, __b); +@@ -20149,38 +19274,56 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcgt_s64 (int64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmgtdi (__a, __b); ++ return __a > __b ? -1ll : 0ll; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcgt_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmhiv8qi ((int8x8_t) __a, ++ return (uint8x8_t) __builtin_aarch64_cmgtuv8qi ((int8x8_t) __a, + (int8x8_t) __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vcgt_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmhiv4hi ((int16x4_t) __a, ++ return (uint16x4_t) __builtin_aarch64_cmgtuv4hi ((int16x4_t) __a, + (int16x4_t) __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcgt_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmhiv2si ((int32x2_t) __a, ++ return (uint32x2_t) __builtin_aarch64_cmgtuv2si ((int32x2_t) __a, + (int32x2_t) __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcgt_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmhidi ((int64x1_t) __a, +- (int64x1_t) __b); ++ return __a > __b ? -1ll : 0ll; + } + ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcgtq_f32 (float32x4_t __a, float32x4_t __b) ++{ ++ return (uint32x4_t) __builtin_aarch64_cmgtv4sf (__a, __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcgtq_f64 (float64x2_t __a, float64x2_t __b) ++{ ++ return (uint64x2_t) __builtin_aarch64_cmgtv2df (__a, __b); ++} ++ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vcgtq_p8 (poly8x16_t __a, poly8x16_t __b) ++{ ++ return (uint8x16_t) __builtin_aarch64_cmgtv16qi ((int8x16_t) __a, ++ (int8x16_t) __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcgtq_s8 (int8x16_t __a, int8x16_t __b) + { + return (uint8x16_t) __builtin_aarch64_cmgtv16qi (__a, __b); +@@ -20207,53 +19350,270 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcgtq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmhiv16qi ((int8x16_t) __a, ++ return (uint8x16_t) __builtin_aarch64_cmgtuv16qi ((int8x16_t) __a, + (int8x16_t) __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcgtq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmhiv8hi ((int16x8_t) __a, ++ return (uint16x8_t) __builtin_aarch64_cmgtuv8hi ((int16x8_t) __a, + (int16x8_t) __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcgtq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmhiv4si ((int32x4_t) __a, ++ return (uint32x4_t) __builtin_aarch64_cmgtuv4si ((int32x4_t) __a, + (int32x4_t) __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcgtq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmhiv2di ((int64x2_t) __a, ++ return (uint64x2_t) __builtin_aarch64_cmgtuv2di ((int64x2_t) __a, + (int64x2_t) __b); + } + ++/* vcgt - scalar. */ ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vcgts_f32 (float32_t __a, float32_t __b) ++{ ++ return __a > __b ? -1 : 0; ++} ++ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcgtd_s64 (int64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmgtdi (__a, __b); ++ return __a > __b ? -1ll : 0ll; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcgtd_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmhidi ((int64x1_t) __a, +- (int64x1_t) __b); ++ return __a > __b ? -1ll : 0ll; + } + ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vcgtd_f64 (float64_t __a, float64_t __b) ++{ ++ return __a > __b ? -1ll : 0ll; ++} ++ ++/* vcgtz - vector. */ ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcgtz_f32 (float32x2_t __a) ++{ ++ float32x2_t __b = {0.0f, 0.0f}; ++ return (uint32x2_t) __builtin_aarch64_cmgtv2sf (__a, __b); ++} ++ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcgtz_f64 (float64x1_t __a) ++{ ++ return __a > 0.0 ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vcgtz_p8 (poly8x8_t __a) ++{ ++ poly8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x8_t) __builtin_aarch64_cmgtv8qi ((int8x8_t) __a, ++ (int8x8_t) __b); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vcgtz_s8 (int8x8_t __a) ++{ ++ int8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x8_t) __builtin_aarch64_cmgtv8qi (__a, __b); ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vcgtz_s16 (int16x4_t __a) ++{ ++ int16x4_t __b = {0, 0, 0, 0}; ++ return (uint16x4_t) __builtin_aarch64_cmgtv4hi (__a, __b); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcgtz_s32 (int32x2_t __a) ++{ ++ int32x2_t __b = {0, 0}; ++ return (uint32x2_t) __builtin_aarch64_cmgtv2si (__a, __b); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcgtz_s64 (int64x1_t __a) ++{ ++ return __a > 0ll ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vcgtz_u8 (uint8x8_t __a) ++{ ++ uint8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x8_t) __builtin_aarch64_cmgtuv8qi ((int8x8_t) __a, ++ (int8x8_t) __b); ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vcgtz_u16 (uint16x4_t __a) ++{ ++ uint16x4_t __b = {0, 0, 0, 0}; ++ return (uint16x4_t) __builtin_aarch64_cmgtuv4hi ((int16x4_t) __a, ++ (int16x4_t) __b); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcgtz_u32 (uint32x2_t __a) ++{ ++ uint32x2_t __b = {0, 0}; ++ return (uint32x2_t) __builtin_aarch64_cmgtuv2si ((int32x2_t) __a, ++ (int32x2_t) __b); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcgtz_u64 (uint64x1_t __a) ++{ ++ return __a > 0ll ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcgtzq_f32 (float32x4_t __a) ++{ ++ float32x4_t __b = {0.0f, 0.0f, 0.0f, 0.0f}; ++ return (uint32x4_t) __builtin_aarch64_cmgtv4sf (__a, __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcgtzq_f64 (float64x2_t __a) ++{ ++ float64x2_t __b = {0.0, 0.0}; ++ return (uint64x2_t) __builtin_aarch64_cmgtv2df (__a, __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vcgtzq_p8 (poly8x16_t __a) ++{ ++ poly8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x16_t) __builtin_aarch64_cmgtv16qi ((int8x16_t) __a, ++ (int8x16_t) __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vcgtzq_s8 (int8x16_t __a) ++{ ++ int8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x16_t) __builtin_aarch64_cmgtv16qi (__a, __b); ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vcgtzq_s16 (int16x8_t __a) ++{ ++ int16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint16x8_t) __builtin_aarch64_cmgtv8hi (__a, __b); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcgtzq_s32 (int32x4_t __a) ++{ ++ int32x4_t __b = {0, 0, 0, 0}; ++ return (uint32x4_t) __builtin_aarch64_cmgtv4si (__a, __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcgtzq_s64 (int64x2_t __a) ++{ ++ int64x2_t __b = {0, 0}; ++ return (uint64x2_t) __builtin_aarch64_cmgtv2di (__a, __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vcgtzq_u8 (uint8x16_t __a) ++{ ++ uint8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x16_t) __builtin_aarch64_cmgtuv16qi ((int8x16_t) __a, ++ (int8x16_t) __b); ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vcgtzq_u16 (uint16x8_t __a) ++{ ++ uint16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint16x8_t) __builtin_aarch64_cmgtuv8hi ((int16x8_t) __a, ++ (int16x8_t) __b); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcgtzq_u32 (uint32x4_t __a) ++{ ++ uint32x4_t __b = {0, 0, 0, 0}; ++ return (uint32x4_t) __builtin_aarch64_cmgtuv4si ((int32x4_t) __a, ++ (int32x4_t) __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcgtzq_u64 (uint64x2_t __a) ++{ ++ uint64x2_t __b = {0, 0}; ++ return (uint64x2_t) __builtin_aarch64_cmgtuv2di ((int64x2_t) __a, ++ (int64x2_t) __b); ++} ++ ++/* vcgtz - scalar. */ ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vcgtzs_f32 (float32_t __a) ++{ ++ return __a > 0.0f ? -1 : 0; ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcgtzd_s64 (int64x1_t __a) + { +- return (uint64x1_t) __builtin_aarch64_cmgtdi (__a, 0); ++ return __a > 0 ? -1ll : 0ll; + } + +-/* vcle */ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcgtzd_u64 (int64x1_t __a) ++{ ++ return __a > 0 ? -1ll : 0ll; ++} + ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vcgtzd_f64 (float64_t __a) ++{ ++ return __a > 0.0 ? -1ll : 0ll; ++} ++ ++/* vcle - vector. */ ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcle_f32 (float32x2_t __a, float32x2_t __b) ++{ ++ return (uint32x2_t) __builtin_aarch64_cmgev2sf (__b, __a); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcle_f64 (float64x1_t __a, float64x1_t __b) ++{ ++ return __a <= __b ? -1ll : 0ll; ++} ++ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vcle_p8 (poly8x8_t __a, poly8x8_t __b) ++{ ++ return (uint8x8_t) __builtin_aarch64_cmgev8qi ((int8x8_t) __b, ++ (int8x8_t) __a); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcle_s8 (int8x8_t __a, int8x8_t __b) + { + return (uint8x8_t) __builtin_aarch64_cmgev8qi (__b, __a); +@@ -20274,38 +19634,56 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcle_s64 (int64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmgedi (__b, __a); ++ return __a <= __b ? -1ll : 0ll; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vcle_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmhsv8qi ((int8x8_t) __b, ++ return (uint8x8_t) __builtin_aarch64_cmgeuv8qi ((int8x8_t) __b, + (int8x8_t) __a); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vcle_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmhsv4hi ((int16x4_t) __b, ++ return (uint16x4_t) __builtin_aarch64_cmgeuv4hi ((int16x4_t) __b, + (int16x4_t) __a); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vcle_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmhsv2si ((int32x2_t) __b, ++ return (uint32x2_t) __builtin_aarch64_cmgeuv2si ((int32x2_t) __b, + (int32x2_t) __a); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcle_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmhsdi ((int64x1_t) __b, +- (int64x1_t) __a); ++ return __a <= __b ? -1ll : 0ll; + } + ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcleq_f32 (float32x4_t __a, float32x4_t __b) ++{ ++ return (uint32x4_t) __builtin_aarch64_cmgev4sf (__b, __a); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcleq_f64 (float64x2_t __a, float64x2_t __b) ++{ ++ return (uint64x2_t) __builtin_aarch64_cmgev2df (__b, __a); ++} ++ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vcleq_p8 (poly8x16_t __a, poly8x16_t __b) ++{ ++ return (uint8x16_t) __builtin_aarch64_cmgev16qi ((int8x16_t) __b, ++ (int8x16_t) __a); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcleq_s8 (int8x16_t __a, int8x16_t __b) + { + return (uint8x16_t) __builtin_aarch64_cmgev16qi (__b, __a); +@@ -20332,46 +19710,213 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcleq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmhsv16qi ((int8x16_t) __b, ++ return (uint8x16_t) __builtin_aarch64_cmgeuv16qi ((int8x16_t) __b, + (int8x16_t) __a); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcleq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmhsv8hi ((int16x8_t) __b, ++ return (uint16x8_t) __builtin_aarch64_cmgeuv8hi ((int16x8_t) __b, + (int16x8_t) __a); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcleq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmhsv4si ((int32x4_t) __b, ++ return (uint32x4_t) __builtin_aarch64_cmgeuv4si ((int32x4_t) __b, + (int32x4_t) __a); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcleq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmhsv2di ((int64x2_t) __b, ++ return (uint64x2_t) __builtin_aarch64_cmgeuv2di ((int64x2_t) __b, + (int64x2_t) __a); + } + ++/* vcle - scalar. */ ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vcles_f32 (float32_t __a, float32_t __b) ++{ ++ return __a <= __b ? -1 : 0; ++} ++ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcled_s64 (int64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmgedi (__b, __a); ++ return __a <= __b ? -1ll : 0ll; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcled_u64 (uint64x1_t __a, uint64x1_t __b) ++{ ++ return __a <= __b ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vcled_f64 (float64_t __a, float64_t __b) ++{ ++ return __a <= __b ? -1ll : 0ll; ++} ++ ++/* vclez - vector. */ ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vclez_f32 (float32x2_t __a) ++{ ++ float32x2_t __b = {0.0f, 0.0f}; ++ return (uint32x2_t) __builtin_aarch64_cmlev2sf (__a, __b); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vclez_f64 (float64x1_t __a) ++{ ++ return __a <= 0.0 ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vclez_p8 (poly8x8_t __a) ++{ ++ poly8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x8_t) __builtin_aarch64_cmlev8qi ((int8x8_t) __a, ++ (int8x8_t) __b); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vclez_s8 (int8x8_t __a) ++{ ++ int8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x8_t) __builtin_aarch64_cmlev8qi (__a, __b); ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vclez_s16 (int16x4_t __a) ++{ ++ int16x4_t __b = {0, 0, 0, 0}; ++ return (uint16x4_t) __builtin_aarch64_cmlev4hi (__a, __b); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vclez_s32 (int32x2_t __a) ++{ ++ int32x2_t __b = {0, 0}; ++ return (uint32x2_t) __builtin_aarch64_cmlev2si (__a, __b); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vclez_s64 (int64x1_t __a) ++{ ++ return __a <= 0ll ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vclez_u64 (uint64x1_t __a) ++{ ++ return __a <= 0ll ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vclezq_f32 (float32x4_t __a) ++{ ++ float32x4_t __b = {0.0f, 0.0f, 0.0f, 0.0f}; ++ return (uint32x4_t) __builtin_aarch64_cmlev4sf (__a, __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vclezq_f64 (float64x2_t __a) ++{ ++ float64x2_t __b = {0.0, 0.0}; ++ return (uint64x2_t) __builtin_aarch64_cmlev2df (__a, __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vclezq_p8 (poly8x16_t __a) ++{ ++ poly8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x16_t) __builtin_aarch64_cmlev16qi ((int8x16_t) __a, ++ (int8x16_t) __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vclezq_s8 (int8x16_t __a) ++{ ++ int8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x16_t) __builtin_aarch64_cmlev16qi (__a, __b); ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vclezq_s16 (int16x8_t __a) ++{ ++ int16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint16x8_t) __builtin_aarch64_cmlev8hi (__a, __b); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vclezq_s32 (int32x4_t __a) ++{ ++ int32x4_t __b = {0, 0, 0, 0}; ++ return (uint32x4_t) __builtin_aarch64_cmlev4si (__a, __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vclezq_s64 (int64x2_t __a) ++{ ++ int64x2_t __b = {0, 0}; ++ return (uint64x2_t) __builtin_aarch64_cmlev2di (__a, __b); ++} ++ ++/* vclez - scalar. */ ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vclezs_f32 (float32_t __a) ++{ ++ return __a <= 0.0f ? -1 : 0; ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vclezd_s64 (int64x1_t __a) + { +- return (uint64x1_t) __builtin_aarch64_cmledi (__a, 0); ++ return __a <= 0 ? -1ll : 0ll; + } + +-/* vclt */ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vclezd_u64 (int64x1_t __a) ++{ ++ return __a <= 0 ? -1ll : 0ll; ++} + ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vclezd_f64 (float64_t __a) ++{ ++ return __a <= 0.0 ? -1ll : 0ll; ++} ++ ++/* vclt - vector. */ ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vclt_f32 (float32x2_t __a, float32x2_t __b) ++{ ++ return (uint32x2_t) __builtin_aarch64_cmgtv2sf (__b, __a); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vclt_f64 (float64x1_t __a, float64x1_t __b) ++{ ++ return __a < __b ? -1ll : 0ll; ++} ++ + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vclt_p8 (poly8x8_t __a, poly8x8_t __b) ++{ ++ return (uint8x8_t) __builtin_aarch64_cmgtv8qi ((int8x8_t) __b, ++ (int8x8_t) __a); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vclt_s8 (int8x8_t __a, int8x8_t __b) + { + return (uint8x8_t) __builtin_aarch64_cmgtv8qi (__b, __a); +@@ -20392,38 +19937,56 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vclt_s64 (int64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmgtdi (__b, __a); ++ return __a < __b ? -1ll : 0ll; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vclt_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (uint8x8_t) __builtin_aarch64_cmhiv8qi ((int8x8_t) __b, ++ return (uint8x8_t) __builtin_aarch64_cmgtuv8qi ((int8x8_t) __b, + (int8x8_t) __a); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vclt_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (uint16x4_t) __builtin_aarch64_cmhiv4hi ((int16x4_t) __b, ++ return (uint16x4_t) __builtin_aarch64_cmgtuv4hi ((int16x4_t) __b, + (int16x4_t) __a); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vclt_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (uint32x2_t) __builtin_aarch64_cmhiv2si ((int32x2_t) __b, ++ return (uint32x2_t) __builtin_aarch64_cmgtuv2si ((int32x2_t) __b, + (int32x2_t) __a); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vclt_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmhidi ((int64x1_t) __b, +- (int64x1_t) __a); ++ return __a < __b ? -1ll : 0ll; + } + ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcltq_f32 (float32x4_t __a, float32x4_t __b) ++{ ++ return (uint32x4_t) __builtin_aarch64_cmgtv4sf (__b, __a); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcltq_f64 (float64x2_t __a, float64x2_t __b) ++{ ++ return (uint64x2_t) __builtin_aarch64_cmgtv2df (__b, __a); ++} ++ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vcltq_p8 (poly8x16_t __a, poly8x16_t __b) ++{ ++ return (uint8x16_t) __builtin_aarch64_cmgtv16qi ((int8x16_t) __b, ++ (int8x16_t) __a); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcltq_s8 (int8x16_t __a, int8x16_t __b) + { + return (uint8x16_t) __builtin_aarch64_cmgtv16qi (__b, __a); +@@ -20450,43 +20013,616 @@ + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vcltq_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint8x16_t) __builtin_aarch64_cmhiv16qi ((int8x16_t) __b, ++ return (uint8x16_t) __builtin_aarch64_cmgtuv16qi ((int8x16_t) __b, + (int8x16_t) __a); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vcltq_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint16x8_t) __builtin_aarch64_cmhiv8hi ((int16x8_t) __b, ++ return (uint16x8_t) __builtin_aarch64_cmgtuv8hi ((int16x8_t) __b, + (int16x8_t) __a); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vcltq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return (uint32x4_t) __builtin_aarch64_cmhiv4si ((int32x4_t) __b, ++ return (uint32x4_t) __builtin_aarch64_cmgtuv4si ((int32x4_t) __b, + (int32x4_t) __a); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vcltq_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return (uint64x2_t) __builtin_aarch64_cmhiv2di ((int64x2_t) __b, ++ return (uint64x2_t) __builtin_aarch64_cmgtuv2di ((int64x2_t) __b, + (int64x2_t) __a); + } + ++/* vclt - scalar. */ ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vclts_f32 (float32_t __a, float32_t __b) ++{ ++ return __a < __b ? -1 : 0; ++} ++ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcltd_s64 (int64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmgtdi (__b, __a); ++ return __a < __b ? -1ll : 0ll; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcltd_u64 (uint64x1_t __a, uint64x1_t __b) ++{ ++ return __a < __b ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vcltd_f64 (float64_t __a, float64_t __b) ++{ ++ return __a < __b ? -1ll : 0ll; ++} ++ ++/* vcltz - vector. */ ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcltz_f32 (float32x2_t __a) ++{ ++ float32x2_t __b = {0.0f, 0.0f}; ++ return (uint32x2_t) __builtin_aarch64_cmltv2sf (__a, __b); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcltz_f64 (float64x1_t __a) ++{ ++ return __a < 0.0 ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vcltz_p8 (poly8x8_t __a) ++{ ++ poly8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x8_t) __builtin_aarch64_cmltv8qi ((int8x8_t) __a, ++ (int8x8_t) __b); ++} ++ ++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) ++vcltz_s8 (int8x8_t __a) ++{ ++ int8x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x8_t) __builtin_aarch64_cmltv8qi (__a, __b); ++} ++ ++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) ++vcltz_s16 (int16x4_t __a) ++{ ++ int16x4_t __b = {0, 0, 0, 0}; ++ return (uint16x4_t) __builtin_aarch64_cmltv4hi (__a, __b); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcltz_s32 (int32x2_t __a) ++{ ++ int32x2_t __b = {0, 0}; ++ return (uint32x2_t) __builtin_aarch64_cmltv2si (__a, __b); ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcltz_s64 (int64x1_t __a) ++{ ++ return __a < 0ll ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcltzq_f32 (float32x4_t __a) ++{ ++ float32x4_t __b = {0.0f, 0.0f, 0.0f, 0.0f}; ++ return (uint32x4_t) __builtin_aarch64_cmltv4sf (__a, __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcltzq_f64 (float64x2_t __a) ++{ ++ float64x2_t __b = {0.0, 0.0}; ++ return (uint64x2_t) __builtin_aarch64_cmltv2df (__a, __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vcltzq_p8 (poly8x16_t __a) ++{ ++ poly8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x16_t) __builtin_aarch64_cmltv16qi ((int8x16_t) __a, ++ (int8x16_t) __b); ++} ++ ++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) ++vcltzq_s8 (int8x16_t __a) ++{ ++ int8x16_t __b = {0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint8x16_t) __builtin_aarch64_cmltv16qi (__a, __b); ++} ++ ++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) ++vcltzq_s16 (int16x8_t __a) ++{ ++ int16x8_t __b = {0, 0, 0, 0, 0, 0, 0, 0}; ++ return (uint16x8_t) __builtin_aarch64_cmltv8hi (__a, __b); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcltzq_s32 (int32x4_t __a) ++{ ++ int32x4_t __b = {0, 0, 0, 0}; ++ return (uint32x4_t) __builtin_aarch64_cmltv4si (__a, __b); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcltzq_s64 (int64x2_t __a) ++{ ++ int64x2_t __b = {0, 0}; ++ return (uint64x2_t) __builtin_aarch64_cmltv2di (__a, __b); ++} ++ ++/* vcltz - scalar. */ ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vcltzs_f32 (float32_t __a) ++{ ++ return __a < 0.0f ? -1 : 0; ++} ++ ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vcltzd_s64 (int64x1_t __a) + { +- return (uint64x1_t) __builtin_aarch64_cmltdi (__a, 0); ++ return __a < 0 ? -1ll : 0ll; + } + ++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) ++vcltzd_u64 (int64x1_t __a) ++{ ++ return __a < 0 ? -1ll : 0ll; ++} ++ ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vcltzd_f64 (float64_t __a) ++{ ++ return __a < 0.0 ? -1ll : 0ll; ++} ++ ++/* vcvt (double -> float). */ ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vcvt_f32_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_float_truncate_lo_v2sf (__a); ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vcvt_high_f32_f64 (float32x2_t __a, float64x2_t __b) ++{ ++ return __builtin_aarch64_float_truncate_hi_v4sf (__a, __b); ++} ++ ++/* vcvt (float -> double). */ ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vcvt_f64_f32 (float32x2_t __a) ++{ ++ ++ return __builtin_aarch64_float_extend_lo_v2df (__a); ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vcvt_high_f64_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_vec_unpacks_hi_v4sf (__a); ++} ++ ++/* vcvt (int -> float) */ ++ ++__extension__ static __inline float64_t __attribute__ ((__always_inline__)) ++vcvtd_f64_s64 (int64_t __a) ++{ ++ return (float64_t) __a; ++} ++ ++__extension__ static __inline float64_t __attribute__ ((__always_inline__)) ++vcvtd_f64_u64 (uint64_t __a) ++{ ++ return (float64_t) __a; ++} ++ ++__extension__ static __inline float32_t __attribute__ ((__always_inline__)) ++vcvts_f32_s32 (int32_t __a) ++{ ++ return (float32_t) __a; ++} ++ ++__extension__ static __inline float32_t __attribute__ ((__always_inline__)) ++vcvts_f32_u32 (uint32_t __a) ++{ ++ return (float32_t) __a; ++} ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vcvt_f32_s32 (int32x2_t __a) ++{ ++ return __builtin_aarch64_floatv2siv2sf (__a); ++} ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vcvt_f32_u32 (uint32x2_t __a) ++{ ++ return __builtin_aarch64_floatunsv2siv2sf ((int32x2_t) __a); ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vcvtq_f32_s32 (int32x4_t __a) ++{ ++ return __builtin_aarch64_floatv4siv4sf (__a); ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vcvtq_f32_u32 (uint32x4_t __a) ++{ ++ return __builtin_aarch64_floatunsv4siv4sf ((int32x4_t) __a); ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vcvtq_f64_s64 (int64x2_t __a) ++{ ++ return __builtin_aarch64_floatv2div2df (__a); ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vcvtq_f64_u64 (uint64x2_t __a) ++{ ++ return __builtin_aarch64_floatunsv2div2df ((int64x2_t) __a); ++} ++ ++/* vcvt (float -> int) */ ++ ++__extension__ static __inline int64_t __attribute__ ((__always_inline__)) ++vcvtd_s64_f64 (float64_t __a) ++{ ++ return (int64_t) __a; ++} ++ ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vcvtd_u64_f64 (float64_t __a) ++{ ++ return (uint64_t) __a; ++} ++ ++__extension__ static __inline int32_t __attribute__ ((__always_inline__)) ++vcvts_s32_f32 (float32_t __a) ++{ ++ return (int32_t) __a; ++} ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vcvts_u32_f32 (float32_t __a) ++{ ++ return (uint32_t) __a; ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vcvt_s32_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_lbtruncv2sfv2si (__a); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcvt_u32_f32 (float32x2_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint32x2_t) __builtin_aarch64_lbtruncuv2sfv2si (__a); ++} ++ ++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) ++vcvtq_s32_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_lbtruncv4sfv4si (__a); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcvtq_u32_f32 (float32x4_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint32x4_t) __builtin_aarch64_lbtruncuv4sfv4si (__a); ++} ++ ++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) ++vcvtq_s64_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_lbtruncv2dfv2di (__a); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcvtq_u64_f64 (float64x2_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint64x2_t) __builtin_aarch64_lbtruncuv2dfv2di (__a); ++} ++ ++/* vcvta */ ++ ++__extension__ static __inline int64_t __attribute__ ((__always_inline__)) ++vcvtad_s64_f64 (float64_t __a) ++{ ++ return __builtin_aarch64_lrounddfdi (__a); ++} ++ ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vcvtad_u64_f64 (float64_t __a) ++{ ++ return __builtin_aarch64_lroundudfdi (__a); ++} ++ ++__extension__ static __inline int32_t __attribute__ ((__always_inline__)) ++vcvtas_s32_f32 (float32_t __a) ++{ ++ return __builtin_aarch64_lroundsfsi (__a); ++} ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vcvtas_u32_f32 (float32_t __a) ++{ ++ return __builtin_aarch64_lroundusfsi (__a); ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vcvta_s32_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_lroundv2sfv2si (__a); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcvta_u32_f32 (float32x2_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint32x2_t) __builtin_aarch64_lrounduv2sfv2si (__a); ++} ++ ++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) ++vcvtaq_s32_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_lroundv4sfv4si (__a); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcvtaq_u32_f32 (float32x4_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint32x4_t) __builtin_aarch64_lrounduv4sfv4si (__a); ++} ++ ++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) ++vcvtaq_s64_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_lroundv2dfv2di (__a); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcvtaq_u64_f64 (float64x2_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint64x2_t) __builtin_aarch64_lrounduv2dfv2di (__a); ++} ++ ++/* vcvtm */ ++ ++__extension__ static __inline int64_t __attribute__ ((__always_inline__)) ++vcvtmd_s64_f64 (float64_t __a) ++{ ++ return __builtin_lfloor (__a); ++} ++ ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vcvtmd_u64_f64 (float64_t __a) ++{ ++ return __builtin_aarch64_lfloorudfdi (__a); ++} ++ ++__extension__ static __inline int32_t __attribute__ ((__always_inline__)) ++vcvtms_s32_f32 (float32_t __a) ++{ ++ return __builtin_ifloorf (__a); ++} ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vcvtms_u32_f32 (float32_t __a) ++{ ++ return __builtin_aarch64_lfloorusfsi (__a); ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vcvtm_s32_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_lfloorv2sfv2si (__a); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcvtm_u32_f32 (float32x2_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint32x2_t) __builtin_aarch64_lflooruv2sfv2si (__a); ++} ++ ++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) ++vcvtmq_s32_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_lfloorv4sfv4si (__a); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcvtmq_u32_f32 (float32x4_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint32x4_t) __builtin_aarch64_lflooruv4sfv4si (__a); ++} ++ ++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) ++vcvtmq_s64_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_lfloorv2dfv2di (__a); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcvtmq_u64_f64 (float64x2_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint64x2_t) __builtin_aarch64_lflooruv2dfv2di (__a); ++} ++ ++/* vcvtn */ ++ ++__extension__ static __inline int64_t __attribute__ ((__always_inline__)) ++vcvtnd_s64_f64 (float64_t __a) ++{ ++ return __builtin_aarch64_lfrintndfdi (__a); ++} ++ ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vcvtnd_u64_f64 (float64_t __a) ++{ ++ return __builtin_aarch64_lfrintnudfdi (__a); ++} ++ ++__extension__ static __inline int32_t __attribute__ ((__always_inline__)) ++vcvtns_s32_f32 (float32_t __a) ++{ ++ return __builtin_aarch64_lfrintnsfsi (__a); ++} ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vcvtns_u32_f32 (float32_t __a) ++{ ++ return __builtin_aarch64_lfrintnusfsi (__a); ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vcvtn_s32_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_lfrintnv2sfv2si (__a); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcvtn_u32_f32 (float32x2_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint32x2_t) __builtin_aarch64_lfrintnuv2sfv2si (__a); ++} ++ ++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) ++vcvtnq_s32_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_lfrintnv4sfv4si (__a); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcvtnq_u32_f32 (float32x4_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint32x4_t) __builtin_aarch64_lfrintnuv4sfv4si (__a); ++} ++ ++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) ++vcvtnq_s64_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_lfrintnv2dfv2di (__a); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcvtnq_u64_f64 (float64x2_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint64x2_t) __builtin_aarch64_lfrintnuv2dfv2di (__a); ++} ++ ++/* vcvtp */ ++ ++__extension__ static __inline int64_t __attribute__ ((__always_inline__)) ++vcvtpd_s64_f64 (float64_t __a) ++{ ++ return __builtin_lceil (__a); ++} ++ ++__extension__ static __inline uint64_t __attribute__ ((__always_inline__)) ++vcvtpd_u64_f64 (float64_t __a) ++{ ++ return __builtin_aarch64_lceiludfdi (__a); ++} ++ ++__extension__ static __inline int32_t __attribute__ ((__always_inline__)) ++vcvtps_s32_f32 (float32_t __a) ++{ ++ return __builtin_iceilf (__a); ++} ++ ++__extension__ static __inline uint32_t __attribute__ ((__always_inline__)) ++vcvtps_u32_f32 (float32_t __a) ++{ ++ return __builtin_aarch64_lceilusfsi (__a); ++} ++ ++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) ++vcvtp_s32_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_lceilv2sfv2si (__a); ++} ++ ++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) ++vcvtp_u32_f32 (float32x2_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint32x2_t) __builtin_aarch64_lceiluv2sfv2si (__a); ++} ++ ++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) ++vcvtpq_s32_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_lceilv4sfv4si (__a); ++} ++ ++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) ++vcvtpq_u32_f32 (float32x4_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint32x4_t) __builtin_aarch64_lceiluv4sfv4si (__a); ++} ++ ++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) ++vcvtpq_s64_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_lceilv2dfv2di (__a); ++} ++ ++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) ++vcvtpq_u64_f64 (float64x2_t __a) ++{ ++ /* TODO: This cast should go away when builtins have ++ their correct types. */ ++ return (uint64x2_t) __builtin_aarch64_lceiluv2dfv2di (__a); ++} ++ + /* vdup */ + + __extension__ static __inline int8x1_t __attribute__ ((__always_inline__)) +@@ -23115,6 +23251,223 @@ + return (uint64x1_t) __builtin_aarch64_uqsubdi (__a, __b); + } + ++/* vrecpe */ ++ ++__extension__ static __inline float32_t __attribute__ ((__always_inline__)) ++vrecpes_f32 (float32_t __a) ++{ ++ return __builtin_aarch64_frecpesf (__a); ++} ++ ++__extension__ static __inline float64_t __attribute__ ((__always_inline__)) ++vrecped_f64 (float64_t __a) ++{ ++ return __builtin_aarch64_frecpedf (__a); ++} ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vrecpe_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_frecpev2sf (__a); ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vrecpeq_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_frecpev4sf (__a); ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vrecpeq_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_frecpev2df (__a); ++} ++ ++/* vrecps */ ++ ++__extension__ static __inline float32_t __attribute__ ((__always_inline__)) ++vrecpss_f32 (float32_t __a, float32_t __b) ++{ ++ return __builtin_aarch64_frecpssf (__a, __b); ++} ++ ++__extension__ static __inline float64_t __attribute__ ((__always_inline__)) ++vrecpsd_f64 (float64_t __a, float64_t __b) ++{ ++ return __builtin_aarch64_frecpsdf (__a, __b); ++} ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vrecps_f32 (float32x2_t __a, float32x2_t __b) ++{ ++ return __builtin_aarch64_frecpsv2sf (__a, __b); ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vrecpsq_f32 (float32x4_t __a, float32x4_t __b) ++{ ++ return __builtin_aarch64_frecpsv4sf (__a, __b); ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vrecpsq_f64 (float64x2_t __a, float64x2_t __b) ++{ ++ return __builtin_aarch64_frecpsv2df (__a, __b); ++} ++ ++/* vrecpx */ ++ ++__extension__ static __inline float32_t __attribute__ ((__always_inline__)) ++vrecpxs_f32 (float32_t __a) ++{ ++ return __builtin_aarch64_frecpxsf (__a); ++} ++ ++__extension__ static __inline float64_t __attribute__ ((__always_inline__)) ++vrecpxd_f64 (float64_t __a) ++{ ++ return __builtin_aarch64_frecpxdf (__a); ++} ++ ++/* vrnd */ ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vrnd_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_btruncv2sf (__a); ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vrndq_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_btruncv4sf (__a); ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vrndq_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_btruncv2df (__a); ++} ++ ++/* vrnda */ ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vrnda_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_roundv2sf (__a); ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vrndaq_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_roundv4sf (__a); ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vrndaq_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_roundv2df (__a); ++} ++ ++/* vrndi */ ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vrndi_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_nearbyintv2sf (__a); ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vrndiq_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_nearbyintv4sf (__a); ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vrndiq_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_nearbyintv2df (__a); ++} ++ ++/* vrndm */ ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vrndm_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_floorv2sf (__a); ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vrndmq_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_floorv4sf (__a); ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vrndmq_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_floorv2df (__a); ++} ++ ++/* vrndn */ ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vrndn_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_frintnv2sf (__a); ++} ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vrndnq_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_frintnv4sf (__a); ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vrndnq_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_frintnv2df (__a); ++} ++ ++/* vrndp */ ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vrndp_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_ceilv2sf (__a); ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vrndpq_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_ceilv4sf (__a); ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vrndpq_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_ceilv2df (__a); ++} ++ ++/* vrndx */ ++ ++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) ++vrndx_f32 (float32x2_t __a) ++{ ++ return __builtin_aarch64_rintv2sf (__a); ++} ++ ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vrndxq_f32 (float32x4_t __a) ++{ ++ return __builtin_aarch64_rintv4sf (__a); ++} ++ ++__extension__ static __inline float64x2_t __attribute__ ((__always_inline__)) ++vrndxq_f64 (float64x2_t __a) ++{ ++ return __builtin_aarch64_rintv2df (__a); ++} ++ + /* vrshl */ + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +@@ -23458,109 +23811,109 @@ + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vshl_n_s8 (int8x8_t __a, const int __b) + { +- return (int8x8_t) __builtin_aarch64_sshl_nv8qi (__a, __b); ++ return (int8x8_t) __builtin_aarch64_ashlv8qi (__a, __b); + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vshl_n_s16 (int16x4_t __a, const int __b) + { +- return (int16x4_t) __builtin_aarch64_sshl_nv4hi (__a, __b); ++ return (int16x4_t) __builtin_aarch64_ashlv4hi (__a, __b); + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vshl_n_s32 (int32x2_t __a, const int __b) + { +- return (int32x2_t) __builtin_aarch64_sshl_nv2si (__a, __b); ++ return (int32x2_t) __builtin_aarch64_ashlv2si (__a, __b); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vshl_n_s64 (int64x1_t __a, const int __b) + { +- return (int64x1_t) __builtin_aarch64_sshl_ndi (__a, __b); ++ return (int64x1_t) __builtin_aarch64_ashldi (__a, __b); + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vshl_n_u8 (uint8x8_t __a, const int __b) + { +- return (uint8x8_t) __builtin_aarch64_ushl_nv8qi ((int8x8_t) __a, __b); ++ return (uint8x8_t) __builtin_aarch64_ashlv8qi ((int8x8_t) __a, __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vshl_n_u16 (uint16x4_t __a, const int __b) + { +- return (uint16x4_t) __builtin_aarch64_ushl_nv4hi ((int16x4_t) __a, __b); ++ return (uint16x4_t) __builtin_aarch64_ashlv4hi ((int16x4_t) __a, __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vshl_n_u32 (uint32x2_t __a, const int __b) + { +- return (uint32x2_t) __builtin_aarch64_ushl_nv2si ((int32x2_t) __a, __b); ++ return (uint32x2_t) __builtin_aarch64_ashlv2si ((int32x2_t) __a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vshl_n_u64 (uint64x1_t __a, const int __b) + { +- return (uint64x1_t) __builtin_aarch64_ushl_ndi ((int64x1_t) __a, __b); ++ return (uint64x1_t) __builtin_aarch64_ashldi ((int64x1_t) __a, __b); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vshlq_n_s8 (int8x16_t __a, const int __b) + { +- return (int8x16_t) __builtin_aarch64_sshl_nv16qi (__a, __b); ++ return (int8x16_t) __builtin_aarch64_ashlv16qi (__a, __b); + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vshlq_n_s16 (int16x8_t __a, const int __b) + { +- return (int16x8_t) __builtin_aarch64_sshl_nv8hi (__a, __b); ++ return (int16x8_t) __builtin_aarch64_ashlv8hi (__a, __b); + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vshlq_n_s32 (int32x4_t __a, const int __b) + { +- return (int32x4_t) __builtin_aarch64_sshl_nv4si (__a, __b); ++ return (int32x4_t) __builtin_aarch64_ashlv4si (__a, __b); + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vshlq_n_s64 (int64x2_t __a, const int __b) + { +- return (int64x2_t) __builtin_aarch64_sshl_nv2di (__a, __b); ++ return (int64x2_t) __builtin_aarch64_ashlv2di (__a, __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vshlq_n_u8 (uint8x16_t __a, const int __b) + { +- return (uint8x16_t) __builtin_aarch64_ushl_nv16qi ((int8x16_t) __a, __b); ++ return (uint8x16_t) __builtin_aarch64_ashlv16qi ((int8x16_t) __a, __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vshlq_n_u16 (uint16x8_t __a, const int __b) + { +- return (uint16x8_t) __builtin_aarch64_ushl_nv8hi ((int16x8_t) __a, __b); ++ return (uint16x8_t) __builtin_aarch64_ashlv8hi ((int16x8_t) __a, __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vshlq_n_u32 (uint32x4_t __a, const int __b) + { +- return (uint32x4_t) __builtin_aarch64_ushl_nv4si ((int32x4_t) __a, __b); ++ return (uint32x4_t) __builtin_aarch64_ashlv4si ((int32x4_t) __a, __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vshlq_n_u64 (uint64x2_t __a, const int __b) + { +- return (uint64x2_t) __builtin_aarch64_ushl_nv2di ((int64x2_t) __a, __b); ++ return (uint64x2_t) __builtin_aarch64_ashlv2di ((int64x2_t) __a, __b); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vshld_n_s64 (int64x1_t __a, const int __b) + { +- return (int64x1_t) __builtin_aarch64_sshl_ndi (__a, __b); ++ return (int64x1_t) __builtin_aarch64_ashldi (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vshld_n_u64 (uint64x1_t __a, const int __b) + { +- return (uint64x1_t) __builtin_aarch64_ushl_ndi (__a, __b); ++ return (uint64x1_t) __builtin_aarch64_ashldi (__a, __b); + } + + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) +@@ -23748,109 +24101,109 @@ + __extension__ static __inline int8x8_t __attribute__ ((__always_inline__)) + vshr_n_s8 (int8x8_t __a, const int __b) + { +- return (int8x8_t) __builtin_aarch64_sshr_nv8qi (__a, __b); ++ return (int8x8_t) __builtin_aarch64_ashrv8qi (__a, __b); + } + + __extension__ static __inline int16x4_t __attribute__ ((__always_inline__)) + vshr_n_s16 (int16x4_t __a, const int __b) + { +- return (int16x4_t) __builtin_aarch64_sshr_nv4hi (__a, __b); ++ return (int16x4_t) __builtin_aarch64_ashrv4hi (__a, __b); + } + + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vshr_n_s32 (int32x2_t __a, const int __b) + { +- return (int32x2_t) __builtin_aarch64_sshr_nv2si (__a, __b); ++ return (int32x2_t) __builtin_aarch64_ashrv2si (__a, __b); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vshr_n_s64 (int64x1_t __a, const int __b) + { +- return (int64x1_t) __builtin_aarch64_sshr_ndi (__a, __b); ++ return (int64x1_t) __builtin_aarch64_ashrdi (__a, __b); + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) + vshr_n_u8 (uint8x8_t __a, const int __b) + { +- return (uint8x8_t) __builtin_aarch64_ushr_nv8qi ((int8x8_t) __a, __b); ++ return (uint8x8_t) __builtin_aarch64_lshrv8qi ((int8x8_t) __a, __b); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) + vshr_n_u16 (uint16x4_t __a, const int __b) + { +- return (uint16x4_t) __builtin_aarch64_ushr_nv4hi ((int16x4_t) __a, __b); ++ return (uint16x4_t) __builtin_aarch64_lshrv4hi ((int16x4_t) __a, __b); + } + + __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__)) + vshr_n_u32 (uint32x2_t __a, const int __b) + { +- return (uint32x2_t) __builtin_aarch64_ushr_nv2si ((int32x2_t) __a, __b); ++ return (uint32x2_t) __builtin_aarch64_lshrv2si ((int32x2_t) __a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vshr_n_u64 (uint64x1_t __a, const int __b) + { +- return (uint64x1_t) __builtin_aarch64_ushr_ndi ((int64x1_t) __a, __b); ++ return (uint64x1_t) __builtin_aarch64_lshrdi ((int64x1_t) __a, __b); + } + + __extension__ static __inline int8x16_t __attribute__ ((__always_inline__)) + vshrq_n_s8 (int8x16_t __a, const int __b) + { +- return (int8x16_t) __builtin_aarch64_sshr_nv16qi (__a, __b); ++ return (int8x16_t) __builtin_aarch64_ashrv16qi (__a, __b); + } + + __extension__ static __inline int16x8_t __attribute__ ((__always_inline__)) + vshrq_n_s16 (int16x8_t __a, const int __b) + { +- return (int16x8_t) __builtin_aarch64_sshr_nv8hi (__a, __b); ++ return (int16x8_t) __builtin_aarch64_ashrv8hi (__a, __b); + } + + __extension__ static __inline int32x4_t __attribute__ ((__always_inline__)) + vshrq_n_s32 (int32x4_t __a, const int __b) + { +- return (int32x4_t) __builtin_aarch64_sshr_nv4si (__a, __b); ++ return (int32x4_t) __builtin_aarch64_ashrv4si (__a, __b); + } + + __extension__ static __inline int64x2_t __attribute__ ((__always_inline__)) + vshrq_n_s64 (int64x2_t __a, const int __b) + { +- return (int64x2_t) __builtin_aarch64_sshr_nv2di (__a, __b); ++ return (int64x2_t) __builtin_aarch64_ashrv2di (__a, __b); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) + vshrq_n_u8 (uint8x16_t __a, const int __b) + { +- return (uint8x16_t) __builtin_aarch64_ushr_nv16qi ((int8x16_t) __a, __b); ++ return (uint8x16_t) __builtin_aarch64_lshrv16qi ((int8x16_t) __a, __b); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) + vshrq_n_u16 (uint16x8_t __a, const int __b) + { +- return (uint16x8_t) __builtin_aarch64_ushr_nv8hi ((int16x8_t) __a, __b); ++ return (uint16x8_t) __builtin_aarch64_lshrv8hi ((int16x8_t) __a, __b); + } + + __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__)) + vshrq_n_u32 (uint32x4_t __a, const int __b) + { +- return (uint32x4_t) __builtin_aarch64_ushr_nv4si ((int32x4_t) __a, __b); ++ return (uint32x4_t) __builtin_aarch64_lshrv4si ((int32x4_t) __a, __b); + } + + __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__)) + vshrq_n_u64 (uint64x2_t __a, const int __b) + { +- return (uint64x2_t) __builtin_aarch64_ushr_nv2di ((int64x2_t) __a, __b); ++ return (uint64x2_t) __builtin_aarch64_lshrv2di ((int64x2_t) __a, __b); + } + + __extension__ static __inline int64x1_t __attribute__ ((__always_inline__)) + vshrd_n_s64 (int64x1_t __a, const int __b) + { +- return (int64x1_t) __builtin_aarch64_sshr_ndi (__a, __b); ++ return (int64x1_t) __builtin_aarch64_ashrdi (__a, __b); + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vshrd_n_u64 (uint64x1_t __a, const int __b) + { +- return (uint64x1_t) __builtin_aarch64_ushr_ndi (__a, __b); ++ return (uint64x1_t) __builtin_aarch64_lshrdi (__a, __b); + } + + /* vsli */ +@@ -25320,7 +25673,7 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vtst_s64 (int64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmtstdi (__a, __b); ++ return (__a & __b) ? -1ll : 0ll; + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +@@ -25347,8 +25700,7 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vtst_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmtstdi ((int64x1_t) __a, +- (int64x1_t) __b); ++ return (__a & __b) ? -1ll : 0ll; + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +@@ -25406,14 +25758,13 @@ + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vtstd_s64 (int64x1_t __a, int64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmtstdi (__a, __b); ++ return (__a & __b) ? -1ll : 0ll; + } + + __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__)) + vtstd_u64 (uint64x1_t __a, uint64x1_t __b) + { +- return (uint64x1_t) __builtin_aarch64_cmtstdi ((int64x1_t) __a, +- (int64x1_t) __b); ++ return (__a & __b) ? -1ll : 0ll; + } + + /* vuqadd */ +--- a/src/gcc/config/aarch64/aarch64.md ++++ b/src/gcc/config/aarch64/aarch64.md +@@ -68,9 +68,13 @@ + (define_c_enum "unspec" [ + UNSPEC_CASESI + UNSPEC_CLS ++ UNSPEC_FRECPE ++ UNSPEC_FRECPS ++ UNSPEC_FRECPX + UNSPEC_FRINTA + UNSPEC_FRINTI + UNSPEC_FRINTM ++ UNSPEC_FRINTN + UNSPEC_FRINTP + UNSPEC_FRINTX + UNSPEC_FRINTZ +@@ -230,6 +234,9 @@ + fmovf2i,\ + fmovi2f,\ + fmul,\ ++ frecpe,\ ++ frecps,\ ++ frecpx,\ + frint,\ + fsqrt,\ + load_acq,\ +@@ -763,19 +770,24 @@ + ) + + (define_insn "*mov_aarch64" +- [(set (match_operand:SHORT 0 "nonimmediate_operand" "=r,r,r,m, r,*w") +- (match_operand:SHORT 1 "general_operand" " r,M,m,rZ,*w,r"))] ++ [(set (match_operand:SHORT 0 "nonimmediate_operand" "=r,r, *w,r,*w, m, m, r,*w,*w") ++ (match_operand:SHORT 1 "general_operand" " r,M,D,m, m,rZ,*w,*w, r,*w"))] + "(register_operand (operands[0], mode) + || aarch64_reg_or_zero (operands[1], mode))" + "@ mov\\t%w0, %w1 mov\\t%w0, %1 + movi\\t%0., %1 @@ -1832,10 +10767,67 @@ + dup\\t%0, %1.[0]" + [(set_attr "v8type" "move,alu,alu,load1,load1,store1,store1,*,*,*") + (set_attr "simd_type" "*,*,simd_move_imm,*,*,*,*,simd_movgp,simd_dupgp,simd_dup") ++ (set_attr "simd" "*,*,yes,*,*,*,*,yes,yes,yes") (set_attr "mode" "") (set_attr "simd_mode" "")] ) -@@ -1149,13 +1153,14 @@ +@@ -797,26 +809,28 @@ + ) + + (define_insn "*movsi_aarch64" +- [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,m, *w, r,*w") +- (match_operand:SI 1 "aarch64_mov_operand" " r,M,m,rZ,rZ,*w,*w"))] ++ [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r,*w,m, m,*w, r,*w") ++ (match_operand:SI 1 "aarch64_mov_operand" " r,M,m, m,rZ,*w,rZ,*w,*w"))] + "(register_operand (operands[0], SImode) + || aarch64_reg_or_zero (operands[1], SImode))" + "@ + mov\\t%w0, %w1 + mov\\t%w0, %1 + ldr\\t%w0, %1 ++ ldr\\t%s0, %1 + str\\t%w1, %0 ++ str\\t%s1, %0 + fmov\\t%s0, %w1 + fmov\\t%w0, %s1 + fmov\\t%s0, %s1" +- [(set_attr "v8type" "move,alu,load1,store1,fmov,fmov,fmov") ++ [(set_attr "v8type" "move,alu,load1,load1,store1,store1,fmov,fmov,fmov") + (set_attr "mode" "SI") +- (set_attr "fp" "*,*,*,*,yes,yes,yes")] ++ (set_attr "fp" "*,*,*,*,*,*,yes,yes,yes")] + ) + + (define_insn "*movdi_aarch64" +- [(set (match_operand:DI 0 "nonimmediate_operand" "=r,k,r,r,r,m, r, r, *w, r,*w,w") +- (match_operand:DI 1 "aarch64_mov_operand" " r,r,k,N,m,rZ,Usa,Ush,rZ,*w,*w,Dd"))] ++ [(set (match_operand:DI 0 "nonimmediate_operand" "=r,k,r,r,r,*w,m, m,r, r, *w, r,*w,w") ++ (match_operand:DI 1 "aarch64_mov_operand" " r,r,k,N,m, m,rZ,*w,Usa,Ush,rZ,*w,*w,Dd"))] + "(register_operand (operands[0], DImode) + || aarch64_reg_or_zero (operands[1], DImode))" + "@ +@@ -825,16 +839,18 @@ + mov\\t%x0, %1 + mov\\t%x0, %1 + ldr\\t%x0, %1 ++ ldr\\t%d0, %1 + str\\t%x1, %0 ++ str\\t%d1, %0 + adr\\t%x0, %a1 + adrp\\t%x0, %A1 + fmov\\t%d0, %x1 + fmov\\t%x0, %d1 + fmov\\t%d0, %d1 + movi\\t%d0, %1" +- [(set_attr "v8type" "move,move,move,alu,load1,store1,adr,adr,fmov,fmov,fmov,fmov") ++ [(set_attr "v8type" "move,move,move,alu,load1,load1,store1,store1,adr,adr,fmov,fmov,fmov,fmov") + (set_attr "mode" "DI") +- (set_attr "fp" "*,*,*,*,*,*,*,*,yes,yes,yes,yes")] ++ (set_attr "fp" "*,*,*,*,*,*,*,*,*,*,yes,yes,yes,yes")] + ) + + (define_insn "insv_imm" +@@ -1149,13 +1165,14 @@ ) (define_insn "*zero_extend2_aarch64" @@ -1854,7 +10846,233 @@ (set_attr "mode" "")] ) -@@ -2433,6 +2438,69 @@ +@@ -1286,6 +1303,112 @@ + (set_attr "mode" "SI")] + ) + ++(define_insn "*adds_mul_imm_" ++ [(set (reg:CC_NZ CC_REGNUM) ++ (compare:CC_NZ ++ (plus:GPI (mult:GPI ++ (match_operand:GPI 1 "register_operand" "r") ++ (match_operand:QI 2 "aarch64_pwr_2_" "n")) ++ (match_operand:GPI 3 "register_operand" "rk")) ++ (const_int 0))) ++ (set (match_operand:GPI 0 "register_operand" "=r") ++ (plus:GPI (mult:GPI (match_dup 1) (match_dup 2)) ++ (match_dup 3)))] ++ "" ++ "adds\\t%0, %3, %1, lsl %p2" ++ [(set_attr "v8type" "alus_shift") ++ (set_attr "mode" "")] ++) ++ ++(define_insn "*subs_mul_imm_" ++ [(set (reg:CC_NZ CC_REGNUM) ++ (compare:CC_NZ ++ (minus:GPI (match_operand:GPI 1 "register_operand" "rk") ++ (mult:GPI ++ (match_operand:GPI 2 "register_operand" "r") ++ (match_operand:QI 3 "aarch64_pwr_2_" "n"))) ++ (const_int 0))) ++ (set (match_operand:GPI 0 "register_operand" "=r") ++ (minus:GPI (match_dup 1) ++ (mult:GPI (match_dup 2) (match_dup 3))))] ++ "" ++ "subs\\t%0, %1, %2, lsl %p3" ++ [(set_attr "v8type" "alus_shift") ++ (set_attr "mode" "")] ++) ++ ++(define_insn "*adds__" ++ [(set (reg:CC_NZ CC_REGNUM) ++ (compare:CC_NZ ++ (plus:GPI ++ (ANY_EXTEND:GPI (match_operand:ALLX 1 "register_operand" "r")) ++ (match_operand:GPI 2 "register_operand" "r")) ++ (const_int 0))) ++ (set (match_operand:GPI 0 "register_operand" "=r") ++ (plus:GPI (ANY_EXTEND:GPI (match_dup 1)) (match_dup 2)))] ++ "" ++ "adds\\t%0, %2, %1, xt" ++ [(set_attr "v8type" "alus_ext") ++ (set_attr "mode" "")] ++) ++ ++(define_insn "*subs__" ++ [(set (reg:CC_NZ CC_REGNUM) ++ (compare:CC_NZ ++ (minus:GPI (match_operand:GPI 1 "register_operand" "r") ++ (ANY_EXTEND:GPI ++ (match_operand:ALLX 2 "register_operand" "r"))) ++ (const_int 0))) ++ (set (match_operand:GPI 0 "register_operand" "=r") ++ (minus:GPI (match_dup 1) (ANY_EXTEND:GPI (match_dup 2))))] ++ "" ++ "subs\\t%0, %1, %2, xt" ++ [(set_attr "v8type" "alus_ext") ++ (set_attr "mode" "")] ++) ++ ++(define_insn "*adds__multp2" ++ [(set (reg:CC_NZ CC_REGNUM) ++ (compare:CC_NZ ++ (plus:GPI (ANY_EXTRACT:GPI ++ (mult:GPI (match_operand:GPI 1 "register_operand" "r") ++ (match_operand 2 "aarch64_pwr_imm3" "Up3")) ++ (match_operand 3 "const_int_operand" "n") ++ (const_int 0)) ++ (match_operand:GPI 4 "register_operand" "r")) ++ (const_int 0))) ++ (set (match_operand:GPI 0 "register_operand" "=r") ++ (plus:GPI (ANY_EXTRACT:GPI (mult:GPI (match_dup 1) (match_dup 2)) ++ (match_dup 3) ++ (const_int 0)) ++ (match_dup 4)))] ++ "aarch64_is_extend_from_extract (mode, operands[2], operands[3])" ++ "adds\\t%0, %4, %1, xt%e3 %p2" ++ [(set_attr "v8type" "alus_ext") ++ (set_attr "mode" "")] ++) ++ ++(define_insn "*subs__multp2" ++ [(set (reg:CC_NZ CC_REGNUM) ++ (compare:CC_NZ ++ (minus:GPI (match_operand:GPI 4 "register_operand" "r") ++ (ANY_EXTRACT:GPI ++ (mult:GPI (match_operand:GPI 1 "register_operand" "r") ++ (match_operand 2 "aarch64_pwr_imm3" "Up3")) ++ (match_operand 3 "const_int_operand" "n") ++ (const_int 0))) ++ (const_int 0))) ++ (set (match_operand:GPI 0 "register_operand" "=r") ++ (minus:GPI (match_dup 4) (ANY_EXTRACT:GPI ++ (mult:GPI (match_dup 1) (match_dup 2)) ++ (match_dup 3) ++ (const_int 0))))] ++ "aarch64_is_extend_from_extract (mode, operands[2], operands[3])" ++ "subs\\t%0, %4, %1, xt%e3 %p2" ++ [(set_attr "v8type" "alus_ext") ++ (set_attr "mode" "")] ++) ++ + (define_insn "*add3nr_compare0" + [(set (reg:CC_NZ CC_REGNUM) + (compare:CC_NZ +@@ -1790,6 +1913,34 @@ + (set_attr "mode" "SI")] + ) + ++(define_insn "*sub3_carryin" ++ [(set ++ (match_operand:GPI 0 "register_operand" "=r") ++ (minus:GPI (minus:GPI ++ (match_operand:GPI 1 "register_operand" "r") ++ (ltu:GPI (reg:CC CC_REGNUM) (const_int 0))) ++ (match_operand:GPI 2 "register_operand" "r")))] ++ "" ++ "sbc\\t%0, %1, %2" ++ [(set_attr "v8type" "adc") ++ (set_attr "mode" "")] ++) ++ ++;; zero_extend version of the above ++(define_insn "*subsi3_carryin_uxtw" ++ [(set ++ (match_operand:DI 0 "register_operand" "=r") ++ (zero_extend:DI ++ (minus:SI (minus:SI ++ (match_operand:SI 1 "register_operand" "r") ++ (ltu:SI (reg:CC CC_REGNUM) (const_int 0))) ++ (match_operand:SI 2 "register_operand" "r"))))] ++ "" ++ "sbc\\t%w0, %w1, %w2" ++ [(set_attr "v8type" "adc") ++ (set_attr "mode" "SI")] ++) ++ + (define_insn "*sub_uxt_multp2" + [(set (match_operand:GPI 0 "register_operand" "=rk") + (minus:GPI (match_operand:GPI 4 "register_operand" "r") +@@ -1843,6 +1994,27 @@ + (set_attr "mode" "SI")] + ) + ++(define_insn "*ngc" ++ [(set (match_operand:GPI 0 "register_operand" "=r") ++ (minus:GPI (neg:GPI (ltu:GPI (reg:CC CC_REGNUM) (const_int 0))) ++ (match_operand:GPI 1 "register_operand" "r")))] ++ "" ++ "ngc\\t%0, %1" ++ [(set_attr "v8type" "adc") ++ (set_attr "mode" "")] ++) ++ ++(define_insn "*ngcsi_uxtw" ++ [(set (match_operand:DI 0 "register_operand" "=r") ++ (zero_extend:DI ++ (minus:SI (neg:SI (ltu:SI (reg:CC CC_REGNUM) (const_int 0))) ++ (match_operand:SI 1 "register_operand" "r"))))] ++ "" ++ "ngc\\t%w0, %w1" ++ [(set_attr "v8type" "adc") ++ (set_attr "mode" "SI")] ++) ++ + (define_insn "*neg2_compare0" + [(set (reg:CC_NZ CC_REGNUM) + (compare:CC_NZ (neg:GPI (match_operand:GPI 1 "register_operand" "r")) +@@ -1868,6 +2040,21 @@ + (set_attr "mode" "SI")] + ) + ++(define_insn "*neg_3_compare0" ++ [(set (reg:CC_NZ CC_REGNUM) ++ (compare:CC_NZ ++ (neg:GPI (ASHIFT:GPI ++ (match_operand:GPI 1 "register_operand" "r") ++ (match_operand:QI 2 "aarch64_shift_imm_" "n"))) ++ (const_int 0))) ++ (set (match_operand:GPI 0 "register_operand" "=r") ++ (neg:GPI (ASHIFT:GPI (match_dup 1) (match_dup 2))))] ++ "" ++ "negs\\t%0, %1, %2" ++ [(set_attr "v8type" "alus_shift") ++ (set_attr "mode" "")] ++) ++ + (define_insn "*neg__2" + [(set (match_operand:GPI 0 "register_operand" "=r") + (neg:GPI (ASHIFT:GPI +@@ -2157,6 +2344,18 @@ + (set_attr "mode" "")] + ) + ++(define_insn "*cmp_swp__shft_" ++ [(set (reg:CC_SWP CC_REGNUM) ++ (compare:CC_SWP (ashift:GPI ++ (ANY_EXTEND:GPI ++ (match_operand:ALLX 0 "register_operand" "r")) ++ (match_operand 1 "aarch64_imm3" "Ui3")) ++ (match_operand:GPI 2 "register_operand" "r")))] ++ "" ++ "cmp\\t%2, %0, xt %1" ++ [(set_attr "v8type" "alus_ext") ++ (set_attr "mode" "")] ++) + + ;; ------------------------------------------------------------------- + ;; Store-flag and conditional select insns +@@ -2210,7 +2409,7 @@ + (set_attr "mode" "SI")] + ) + +-(define_insn "*cstore_neg" ++(define_insn "cstore_neg" + [(set (match_operand:ALLI 0 "register_operand" "=r") + (neg:ALLI (match_operator:ALLI 1 "aarch64_comparison_operator" + [(match_operand 2 "cc_register" "") (const_int 0)])))] +@@ -2433,6 +2632,69 @@ [(set_attr "v8type" "logic,logic_imm") (set_attr "mode" "SI")]) @@ -1924,9 +11142,664 @@ (define_insn "*_3" [(set (match_operand:GPI 0 "register_operand" "=r") (LOGICAL:GPI (SHIFT:GPI +@@ -2703,6 +2965,62 @@ + (set_attr "mode" "")] + ) + ++(define_insn "*extr5_insn" ++ [(set (match_operand:GPI 0 "register_operand" "=r") ++ (ior:GPI (ashift:GPI (match_operand:GPI 1 "register_operand" "r") ++ (match_operand 3 "const_int_operand" "n")) ++ (lshiftrt:GPI (match_operand:GPI 2 "register_operand" "r") ++ (match_operand 4 "const_int_operand" "n"))))] ++ "UINTVAL (operands[3]) < GET_MODE_BITSIZE (mode) && ++ (UINTVAL (operands[3]) + UINTVAL (operands[4]) == GET_MODE_BITSIZE (mode))" ++ "extr\\t%0, %1, %2, %4" ++ [(set_attr "v8type" "shift") ++ (set_attr "mode" "")] ++) ++ ++;; zero_extend version of the above ++(define_insn "*extrsi5_insn_uxtw" ++ [(set (match_operand:DI 0 "register_operand" "=r") ++ (zero_extend:DI ++ (ior:SI (ashift:SI (match_operand:SI 1 "register_operand" "r") ++ (match_operand 3 "const_int_operand" "n")) ++ (lshiftrt:SI (match_operand:SI 2 "register_operand" "r") ++ (match_operand 4 "const_int_operand" "n")))))] ++ "UINTVAL (operands[3]) < 32 && ++ (UINTVAL (operands[3]) + UINTVAL (operands[4]) == 32)" ++ "extr\\t%w0, %w1, %w2, %4" ++ [(set_attr "v8type" "shift") ++ (set_attr "mode" "SI")] ++) ++ ++(define_insn "*ror3_insn" ++ [(set (match_operand:GPI 0 "register_operand" "=r") ++ (rotate:GPI (match_operand:GPI 1 "register_operand" "r") ++ (match_operand 2 "const_int_operand" "n")))] ++ "UINTVAL (operands[2]) < GET_MODE_BITSIZE (mode)" ++{ ++ operands[3] = GEN_INT ( - UINTVAL (operands[2])); ++ return "ror\\t%0, %1, %3"; ++} ++ [(set_attr "v8type" "shift") ++ (set_attr "mode" "")] ++) ++ ++;; zero_extend version of the above ++(define_insn "*rorsi3_insn_uxtw" ++ [(set (match_operand:DI 0 "register_operand" "=r") ++ (zero_extend:DI ++ (rotate:SI (match_operand:SI 1 "register_operand" "r") ++ (match_operand 2 "const_int_operand" "n"))))] ++ "UINTVAL (operands[2]) < 32" ++{ ++ operands[3] = GEN_INT (32 - UINTVAL (operands[2])); ++ return "ror\\t%w0, %w1, %3"; ++} ++ [(set_attr "v8type" "shift") ++ (set_attr "mode" "SI")] ++) ++ + (define_insn "*_ashl" + [(set (match_operand:GPI 0 "register_operand" "=r") + (ANY_EXTEND:GPI +@@ -3089,6 +3407,27 @@ + (set_attr "mode" "")] + ) + ++(define_insn "aarch64_frecp" ++ [(set (match_operand:GPF 0 "register_operand" "=w") ++ (unspec:GPF [(match_operand:GPF 1 "register_operand" "w")] ++ FRECP))] ++ "TARGET_FLOAT" ++ "frecp\\t%0, %1" ++ [(set_attr "v8type" "frecp") ++ (set_attr "mode" "")] ++) ++ ++(define_insn "aarch64_frecps" ++ [(set (match_operand:GPF 0 "register_operand" "=w") ++ (unspec:GPF [(match_operand:GPF 1 "register_operand" "w") ++ (match_operand:GPF 2 "register_operand" "w")] ++ UNSPEC_FRECPS))] ++ "TARGET_FLOAT" ++ "frecps\\t%0, %1, %2" ++ [(set_attr "v8type" "frecps") ++ (set_attr "mode" "")] ++) ++ + ;; ------------------------------------------------------------------- + ;; Reload support + ;; ------------------------------------------------------------------- +--- a/src/gcc/config/aarch64/aarch64-builtins.c ++++ b/src/gcc/config/aarch64/aarch64-builtins.c +@@ -30,6 +30,7 @@ + #include "langhooks.h" + #include "diagnostic-core.h" + #include "optabs.h" ++#include "gimple.h" + + enum aarch64_simd_builtin_type_mode + { +@@ -50,6 +51,7 @@ + T_OI, + T_XI, + T_SI, ++ T_SF, + T_HI, + T_QI, + T_MAX +@@ -72,6 +74,7 @@ + #define oi_UP T_OI + #define xi_UP T_XI + #define si_UP T_SI ++#define sf_UP T_SF + #define hi_UP T_HI + #define qi_UP T_QI + +@@ -128,123 +131,136 @@ + unsigned int fcode; + } aarch64_simd_builtin_datum; + +-#define CF(N, X) CODE_FOR_aarch64_##N##X ++#define CF0(N, X) CODE_FOR_aarch64_##N##X ++#define CF1(N, X) CODE_FOR_##N##X##1 ++#define CF2(N, X) CODE_FOR_##N##X##2 ++#define CF3(N, X) CODE_FOR_##N##X##3 ++#define CF4(N, X) CODE_FOR_##N##X##4 ++#define CF10(N, X) CODE_FOR_##N##X + +-#define VAR1(T, N, A) \ +- {#N, AARCH64_SIMD_##T, UP (A), CF (N, A), 0}, +-#define VAR2(T, N, A, B) \ +- VAR1 (T, N, A) \ +- VAR1 (T, N, B) +-#define VAR3(T, N, A, B, C) \ +- VAR2 (T, N, A, B) \ +- VAR1 (T, N, C) +-#define VAR4(T, N, A, B, C, D) \ +- VAR3 (T, N, A, B, C) \ +- VAR1 (T, N, D) +-#define VAR5(T, N, A, B, C, D, E) \ +- VAR4 (T, N, A, B, C, D) \ +- VAR1 (T, N, E) +-#define VAR6(T, N, A, B, C, D, E, F) \ +- VAR5 (T, N, A, B, C, D, E) \ +- VAR1 (T, N, F) +-#define VAR7(T, N, A, B, C, D, E, F, G) \ +- VAR6 (T, N, A, B, C, D, E, F) \ +- VAR1 (T, N, G) +-#define VAR8(T, N, A, B, C, D, E, F, G, H) \ +- VAR7 (T, N, A, B, C, D, E, F, G) \ +- VAR1 (T, N, H) +-#define VAR9(T, N, A, B, C, D, E, F, G, H, I) \ +- VAR8 (T, N, A, B, C, D, E, F, G, H) \ +- VAR1 (T, N, I) +-#define VAR10(T, N, A, B, C, D, E, F, G, H, I, J) \ +- VAR9 (T, N, A, B, C, D, E, F, G, H, I) \ +- VAR1 (T, N, J) +-#define VAR11(T, N, A, B, C, D, E, F, G, H, I, J, K) \ +- VAR10 (T, N, A, B, C, D, E, F, G, H, I, J) \ +- VAR1 (T, N, K) +-#define VAR12(T, N, A, B, C, D, E, F, G, H, I, J, K, L) \ +- VAR11 (T, N, A, B, C, D, E, F, G, H, I, J, K) \ +- VAR1 (T, N, L) ++#define VAR1(T, N, MAP, A) \ ++ {#N, AARCH64_SIMD_##T, UP (A), CF##MAP (N, A), 0}, ++#define VAR2(T, N, MAP, A, B) \ ++ VAR1 (T, N, MAP, A) \ ++ VAR1 (T, N, MAP, B) ++#define VAR3(T, N, MAP, A, B, C) \ ++ VAR2 (T, N, MAP, A, B) \ ++ VAR1 (T, N, MAP, C) ++#define VAR4(T, N, MAP, A, B, C, D) \ ++ VAR3 (T, N, MAP, A, B, C) \ ++ VAR1 (T, N, MAP, D) ++#define VAR5(T, N, MAP, A, B, C, D, E) \ ++ VAR4 (T, N, MAP, A, B, C, D) \ ++ VAR1 (T, N, MAP, E) ++#define VAR6(T, N, MAP, A, B, C, D, E, F) \ ++ VAR5 (T, N, MAP, A, B, C, D, E) \ ++ VAR1 (T, N, MAP, F) ++#define VAR7(T, N, MAP, A, B, C, D, E, F, G) \ ++ VAR6 (T, N, MAP, A, B, C, D, E, F) \ ++ VAR1 (T, N, MAP, G) ++#define VAR8(T, N, MAP, A, B, C, D, E, F, G, H) \ ++ VAR7 (T, N, MAP, A, B, C, D, E, F, G) \ ++ VAR1 (T, N, MAP, H) ++#define VAR9(T, N, MAP, A, B, C, D, E, F, G, H, I) \ ++ VAR8 (T, N, MAP, A, B, C, D, E, F, G, H) \ ++ VAR1 (T, N, MAP, I) ++#define VAR10(T, N, MAP, A, B, C, D, E, F, G, H, I, J) \ ++ VAR9 (T, N, MAP, A, B, C, D, E, F, G, H, I) \ ++ VAR1 (T, N, MAP, J) ++#define VAR11(T, N, MAP, A, B, C, D, E, F, G, H, I, J, K) \ ++ VAR10 (T, N, MAP, A, B, C, D, E, F, G, H, I, J) \ ++ VAR1 (T, N, MAP, K) ++#define VAR12(T, N, MAP, A, B, C, D, E, F, G, H, I, J, K, L) \ ++ VAR11 (T, N, MAP, A, B, C, D, E, F, G, H, I, J, K) \ ++ VAR1 (T, N, MAP, L) + + /* BUILTIN_ macros should expand to cover the same range of + modes as is given for each define_mode_iterator in + config/aarch64/iterators.md. */ + +-#define BUILTIN_DX(T, N) \ +- VAR2 (T, N, di, df) +-#define BUILTIN_SDQ_I(T, N) \ +- VAR4 (T, N, qi, hi, si, di) +-#define BUILTIN_SD_HSI(T, N) \ +- VAR2 (T, N, hi, si) +-#define BUILTIN_V2F(T, N) \ +- VAR2 (T, N, v2sf, v2df) +-#define BUILTIN_VALL(T, N) \ +- VAR10 (T, N, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di, v2sf, v4sf, v2df) +-#define BUILTIN_VB(T, N) \ +- VAR2 (T, N, v8qi, v16qi) +-#define BUILTIN_VD(T, N) \ +- VAR4 (T, N, v8qi, v4hi, v2si, v2sf) +-#define BUILTIN_VDC(T, N) \ +- VAR6 (T, N, v8qi, v4hi, v2si, v2sf, di, df) +-#define BUILTIN_VDIC(T, N) \ +- VAR3 (T, N, v8qi, v4hi, v2si) +-#define BUILTIN_VDN(T, N) \ +- VAR3 (T, N, v4hi, v2si, di) +-#define BUILTIN_VDQ(T, N) \ +- VAR7 (T, N, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di) +-#define BUILTIN_VDQF(T, N) \ +- VAR3 (T, N, v2sf, v4sf, v2df) +-#define BUILTIN_VDQHS(T, N) \ +- VAR4 (T, N, v4hi, v8hi, v2si, v4si) +-#define BUILTIN_VDQIF(T, N) \ +- VAR9 (T, N, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2sf, v4sf, v2df) +-#define BUILTIN_VDQM(T, N) \ +- VAR6 (T, N, v8qi, v16qi, v4hi, v8hi, v2si, v4si) +-#define BUILTIN_VDQV(T, N) \ +- VAR5 (T, N, v8qi, v16qi, v4hi, v8hi, v4si) +-#define BUILTIN_VDQ_BHSI(T, N) \ +- VAR6 (T, N, v8qi, v16qi, v4hi, v8hi, v2si, v4si) +-#define BUILTIN_VDQ_I(T, N) \ +- VAR7 (T, N, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di) +-#define BUILTIN_VDW(T, N) \ +- VAR3 (T, N, v8qi, v4hi, v2si) +-#define BUILTIN_VD_BHSI(T, N) \ +- VAR3 (T, N, v8qi, v4hi, v2si) +-#define BUILTIN_VD_HSI(T, N) \ +- VAR2 (T, N, v4hi, v2si) +-#define BUILTIN_VD_RE(T, N) \ +- VAR6 (T, N, v8qi, v4hi, v2si, v2sf, di, df) +-#define BUILTIN_VQ(T, N) \ +- VAR6 (T, N, v16qi, v8hi, v4si, v2di, v4sf, v2df) +-#define BUILTIN_VQN(T, N) \ +- VAR3 (T, N, v8hi, v4si, v2di) +-#define BUILTIN_VQW(T, N) \ +- VAR3 (T, N, v16qi, v8hi, v4si) +-#define BUILTIN_VQ_HSI(T, N) \ +- VAR2 (T, N, v8hi, v4si) +-#define BUILTIN_VQ_S(T, N) \ +- VAR6 (T, N, v8qi, v16qi, v4hi, v8hi, v2si, v4si) +-#define BUILTIN_VSDQ_HSI(T, N) \ +- VAR6 (T, N, v4hi, v8hi, v2si, v4si, hi, si) +-#define BUILTIN_VSDQ_I(T, N) \ +- VAR11 (T, N, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di, qi, hi, si, di) +-#define BUILTIN_VSDQ_I_BHSI(T, N) \ +- VAR10 (T, N, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di, qi, hi, si) +-#define BUILTIN_VSDQ_I_DI(T, N) \ +- VAR8 (T, N, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di, di) +-#define BUILTIN_VSD_HSI(T, N) \ +- VAR4 (T, N, v4hi, v2si, hi, si) +-#define BUILTIN_VSQN_HSDI(T, N) \ +- VAR6 (T, N, v8hi, v4si, v2di, hi, si, di) +-#define BUILTIN_VSTRUCT(T, N) \ +- VAR3 (T, N, oi, ci, xi) ++#define BUILTIN_DX(T, N, MAP) \ ++ VAR2 (T, N, MAP, di, df) ++#define BUILTIN_GPF(T, N, MAP) \ ++ VAR2 (T, N, MAP, sf, df) ++#define BUILTIN_SDQ_I(T, N, MAP) \ ++ VAR4 (T, N, MAP, qi, hi, si, di) ++#define BUILTIN_SD_HSI(T, N, MAP) \ ++ VAR2 (T, N, MAP, hi, si) ++#define BUILTIN_V2F(T, N, MAP) \ ++ VAR2 (T, N, MAP, v2sf, v2df) ++#define BUILTIN_VALL(T, N, MAP) \ ++ VAR10 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, \ ++ v4si, v2di, v2sf, v4sf, v2df) ++#define BUILTIN_VALLDI(T, N, MAP) \ ++ VAR11 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, \ ++ v4si, v2di, v2sf, v4sf, v2df, di) ++#define BUILTIN_VB(T, N, MAP) \ ++ VAR2 (T, N, MAP, v8qi, v16qi) ++#define BUILTIN_VD(T, N, MAP) \ ++ VAR4 (T, N, MAP, v8qi, v4hi, v2si, v2sf) ++#define BUILTIN_VDC(T, N, MAP) \ ++ VAR6 (T, N, MAP, v8qi, v4hi, v2si, v2sf, di, df) ++#define BUILTIN_VDIC(T, N, MAP) \ ++ VAR3 (T, N, MAP, v8qi, v4hi, v2si) ++#define BUILTIN_VDN(T, N, MAP) \ ++ VAR3 (T, N, MAP, v4hi, v2si, di) ++#define BUILTIN_VDQ(T, N, MAP) \ ++ VAR7 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di) ++#define BUILTIN_VDQF(T, N, MAP) \ ++ VAR3 (T, N, MAP, v2sf, v4sf, v2df) ++#define BUILTIN_VDQH(T, N, MAP) \ ++ VAR2 (T, N, MAP, v4hi, v8hi) ++#define BUILTIN_VDQHS(T, N, MAP) \ ++ VAR4 (T, N, MAP, v4hi, v8hi, v2si, v4si) ++#define BUILTIN_VDQIF(T, N, MAP) \ ++ VAR9 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2sf, v4sf, v2df) ++#define BUILTIN_VDQM(T, N, MAP) \ ++ VAR6 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si) ++#define BUILTIN_VDQV(T, N, MAP) \ ++ VAR5 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v4si) ++#define BUILTIN_VDQ_BHSI(T, N, MAP) \ ++ VAR6 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si) ++#define BUILTIN_VDQ_I(T, N, MAP) \ ++ VAR7 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di) ++#define BUILTIN_VDW(T, N, MAP) \ ++ VAR3 (T, N, MAP, v8qi, v4hi, v2si) ++#define BUILTIN_VD_BHSI(T, N, MAP) \ ++ VAR3 (T, N, MAP, v8qi, v4hi, v2si) ++#define BUILTIN_VD_HSI(T, N, MAP) \ ++ VAR2 (T, N, MAP, v4hi, v2si) ++#define BUILTIN_VD_RE(T, N, MAP) \ ++ VAR6 (T, N, MAP, v8qi, v4hi, v2si, v2sf, di, df) ++#define BUILTIN_VQ(T, N, MAP) \ ++ VAR6 (T, N, MAP, v16qi, v8hi, v4si, v2di, v4sf, v2df) ++#define BUILTIN_VQN(T, N, MAP) \ ++ VAR3 (T, N, MAP, v8hi, v4si, v2di) ++#define BUILTIN_VQW(T, N, MAP) \ ++ VAR3 (T, N, MAP, v16qi, v8hi, v4si) ++#define BUILTIN_VQ_HSI(T, N, MAP) \ ++ VAR2 (T, N, MAP, v8hi, v4si) ++#define BUILTIN_VQ_S(T, N, MAP) \ ++ VAR6 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si) ++#define BUILTIN_VSDQ_HSI(T, N, MAP) \ ++ VAR6 (T, N, MAP, v4hi, v8hi, v2si, v4si, hi, si) ++#define BUILTIN_VSDQ_I(T, N, MAP) \ ++ VAR11 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di, qi, hi, si, di) ++#define BUILTIN_VSDQ_I_BHSI(T, N, MAP) \ ++ VAR10 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di, qi, hi, si) ++#define BUILTIN_VSDQ_I_DI(T, N, MAP) \ ++ VAR8 (T, N, MAP, v8qi, v16qi, v4hi, v8hi, v2si, v4si, v2di, di) ++#define BUILTIN_VSD_HSI(T, N, MAP) \ ++ VAR4 (T, N, MAP, v4hi, v2si, hi, si) ++#define BUILTIN_VSQN_HSDI(T, N, MAP) \ ++ VAR6 (T, N, MAP, v8hi, v4si, v2di, hi, si, di) ++#define BUILTIN_VSTRUCT(T, N, MAP) \ ++ VAR3 (T, N, MAP, oi, ci, xi) + + static aarch64_simd_builtin_datum aarch64_simd_builtin_data[] = { + #include "aarch64-simd-builtins.def" + }; + + #undef VAR1 +-#define VAR1(T, N, A) \ ++#define VAR1(T, N, MAP, A) \ + AARCH64_SIMD_BUILTIN_##N##A, + + enum aarch64_builtins +@@ -257,53 +273,6 @@ + AARCH64_BUILTIN_MAX + }; + +-#undef BUILTIN_DX +-#undef BUILTIN_SDQ_I +-#undef BUILTIN_SD_HSI +-#undef BUILTIN_V2F +-#undef BUILTIN_VALL +-#undef BUILTIN_VB +-#undef BUILTIN_VD +-#undef BUILTIN_VDC +-#undef BUILTIN_VDIC +-#undef BUILTIN_VDN +-#undef BUILTIN_VDQ +-#undef BUILTIN_VDQF +-#undef BUILTIN_VDQHS +-#undef BUILTIN_VDQIF +-#undef BUILTIN_VDQM +-#undef BUILTIN_VDQV +-#undef BUILTIN_VDQ_BHSI +-#undef BUILTIN_VDQ_I +-#undef BUILTIN_VDW +-#undef BUILTIN_VD_BHSI +-#undef BUILTIN_VD_HSI +-#undef BUILTIN_VD_RE +-#undef BUILTIN_VQ +-#undef BUILTIN_VQN +-#undef BUILTIN_VQW +-#undef BUILTIN_VQ_HSI +-#undef BUILTIN_VQ_S +-#undef BUILTIN_VSDQ_HSI +-#undef BUILTIN_VSDQ_I +-#undef BUILTIN_VSDQ_I_BHSI +-#undef BUILTIN_VSDQ_I_DI +-#undef BUILTIN_VSD_HSI +-#undef BUILTIN_VSQN_HSDI +-#undef BUILTIN_VSTRUCT +-#undef CF +-#undef VAR1 +-#undef VAR2 +-#undef VAR3 +-#undef VAR4 +-#undef VAR5 +-#undef VAR6 +-#undef VAR7 +-#undef VAR8 +-#undef VAR9 +-#undef VAR10 +-#undef VAR11 +- + static GTY(()) tree aarch64_builtin_decls[AARCH64_BUILTIN_MAX]; + + #define NUM_DREG_TYPES 6 +@@ -609,7 +578,7 @@ + { + "v8qi", "v4hi", "v2si", "v2sf", "di", "df", + "v16qi", "v8hi", "v4si", "v4sf", "v2di", "v2df", +- "ti", "ei", "oi", "xi", "si", "hi", "qi" ++ "ti", "ei", "oi", "xi", "si", "sf", "hi", "qi" + }; + char namebuf[60]; + tree ftype = NULL; +@@ -1258,19 +1227,19 @@ + && in_mode == N##Fmode && in_n == C) + case BUILT_IN_FLOOR: + case BUILT_IN_FLOORF: +- return AARCH64_FIND_FRINT_VARIANT (frintm); ++ return AARCH64_FIND_FRINT_VARIANT (floor); + case BUILT_IN_CEIL: + case BUILT_IN_CEILF: +- return AARCH64_FIND_FRINT_VARIANT (frintp); ++ return AARCH64_FIND_FRINT_VARIANT (ceil); + case BUILT_IN_TRUNC: + case BUILT_IN_TRUNCF: +- return AARCH64_FIND_FRINT_VARIANT (frintz); ++ return AARCH64_FIND_FRINT_VARIANT (btrunc); + case BUILT_IN_ROUND: + case BUILT_IN_ROUNDF: +- return AARCH64_FIND_FRINT_VARIANT (frinta); ++ return AARCH64_FIND_FRINT_VARIANT (round); + case BUILT_IN_NEARBYINT: + case BUILT_IN_NEARBYINTF: +- return AARCH64_FIND_FRINT_VARIANT (frinti); ++ return AARCH64_FIND_FRINT_VARIANT (nearbyint); + case BUILT_IN_SQRT: + case BUILT_IN_SQRTF: + return AARCH64_FIND_FRINT_VARIANT (sqrt); +@@ -1279,9 +1248,51 @@ + (out_mode == N##Imode && out_n == C \ + && in_mode == N##Fmode && in_n == C) + case BUILT_IN_LFLOOR: +- return AARCH64_FIND_FRINT_VARIANT (fcvtms); ++ case BUILT_IN_IFLOORF: ++ { ++ tree new_tree = NULL_TREE; ++ if (AARCH64_CHECK_BUILTIN_MODE (2, D)) ++ new_tree = ++ aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lfloorv2dfv2di]; ++ else if (AARCH64_CHECK_BUILTIN_MODE (4, S)) ++ new_tree = ++ aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lfloorv4sfv4si]; ++ else if (AARCH64_CHECK_BUILTIN_MODE (2, S)) ++ new_tree = ++ aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lfloorv2sfv2si]; ++ return new_tree; ++ } + case BUILT_IN_LCEIL: +- return AARCH64_FIND_FRINT_VARIANT (fcvtps); ++ case BUILT_IN_ICEILF: ++ { ++ tree new_tree = NULL_TREE; ++ if (AARCH64_CHECK_BUILTIN_MODE (2, D)) ++ new_tree = ++ aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lceilv2dfv2di]; ++ else if (AARCH64_CHECK_BUILTIN_MODE (4, S)) ++ new_tree = ++ aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lceilv4sfv4si]; ++ else if (AARCH64_CHECK_BUILTIN_MODE (2, S)) ++ new_tree = ++ aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lceilv2sfv2si]; ++ return new_tree; ++ } ++ case BUILT_IN_LROUND: ++ case BUILT_IN_IROUNDF: ++ { ++ tree new_tree = NULL_TREE; ++ if (AARCH64_CHECK_BUILTIN_MODE (2, D)) ++ new_tree = ++ aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lroundv2dfv2di]; ++ else if (AARCH64_CHECK_BUILTIN_MODE (4, S)) ++ new_tree = ++ aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lroundv4sfv4si]; ++ else if (AARCH64_CHECK_BUILTIN_MODE (2, S)) ++ new_tree = ++ aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lroundv2sfv2si]; ++ return new_tree; ++ } ++ + default: + return NULL_TREE; + } +@@ -1289,5 +1300,145 @@ + + return NULL_TREE; + } ++ ++#undef VAR1 ++#define VAR1(T, N, MAP, A) \ ++ case AARCH64_SIMD_BUILTIN_##N##A: ++ ++tree ++aarch64_fold_builtin (tree fndecl, int n_args ATTRIBUTE_UNUSED, tree *args, ++ bool ignore ATTRIBUTE_UNUSED) ++{ ++ int fcode = DECL_FUNCTION_CODE (fndecl); ++ tree type = TREE_TYPE (TREE_TYPE (fndecl)); ++ ++ switch (fcode) ++ { ++ BUILTIN_VDQF (UNOP, abs, 2) ++ return fold_build1 (ABS_EXPR, type, args[0]); ++ break; ++ BUILTIN_VALLDI (BINOP, cmge, 0) ++ return fold_build2 (GE_EXPR, type, args[0], args[1]); ++ break; ++ BUILTIN_VALLDI (BINOP, cmgt, 0) ++ return fold_build2 (GT_EXPR, type, args[0], args[1]); ++ break; ++ BUILTIN_VALLDI (BINOP, cmeq, 0) ++ return fold_build2 (EQ_EXPR, type, args[0], args[1]); ++ break; ++ BUILTIN_VSDQ_I_DI (BINOP, cmtst, 0) ++ { ++ tree and_node = fold_build2 (BIT_AND_EXPR, type, args[0], args[1]); ++ tree vec_zero_node = build_zero_cst (type); ++ return fold_build2 (NE_EXPR, type, and_node, vec_zero_node); ++ break; ++ } ++ VAR1 (UNOP, floatv2si, 2, v2sf) ++ VAR1 (UNOP, floatv4si, 2, v4sf) ++ VAR1 (UNOP, floatv2di, 2, v2df) ++ return fold_build1 (FLOAT_EXPR, type, args[0]); ++ default: ++ break; ++ } ++ ++ return NULL_TREE; ++} ++ ++bool ++aarch64_gimple_fold_builtin (gimple_stmt_iterator *gsi) ++{ ++ bool changed = false; ++ gimple stmt = gsi_stmt (*gsi); ++ tree call = gimple_call_fn (stmt); ++ tree fndecl; ++ gimple new_stmt = NULL; ++ if (call) ++ { ++ fndecl = gimple_call_fndecl (stmt); ++ if (fndecl) ++ { ++ int fcode = DECL_FUNCTION_CODE (fndecl); ++ int nargs = gimple_call_num_args (stmt); ++ tree *args = (nargs > 0 ++ ? gimple_call_arg_ptr (stmt, 0) ++ : &error_mark_node); ++ ++ switch (fcode) ++ { ++ BUILTIN_VDQF (UNOP, addv, 0) ++ new_stmt = gimple_build_assign_with_ops ( ++ REDUC_PLUS_EXPR, ++ gimple_call_lhs (stmt), ++ args[0], ++ NULL_TREE); ++ break; ++ default: ++ break; ++ } ++ } ++ } ++ ++ if (new_stmt) ++ { ++ gsi_replace (gsi, new_stmt, true); ++ changed = true; ++ } ++ ++ return changed; ++} ++ + #undef AARCH64_CHECK_BUILTIN_MODE + #undef AARCH64_FIND_FRINT_VARIANT ++#undef BUILTIN_DX ++#undef BUILTIN_SDQ_I ++#undef BUILTIN_SD_HSI ++#undef BUILTIN_V2F ++#undef BUILTIN_VALL ++#undef BUILTIN_VB ++#undef BUILTIN_VD ++#undef BUILTIN_VDC ++#undef BUILTIN_VDIC ++#undef BUILTIN_VDN ++#undef BUILTIN_VDQ ++#undef BUILTIN_VDQF ++#undef BUILTIN_VDQH ++#undef BUILTIN_VDQHS ++#undef BUILTIN_VDQIF ++#undef BUILTIN_VDQM ++#undef BUILTIN_VDQV ++#undef BUILTIN_VDQ_BHSI ++#undef BUILTIN_VDQ_I ++#undef BUILTIN_VDW ++#undef BUILTIN_VD_BHSI ++#undef BUILTIN_VD_HSI ++#undef BUILTIN_VD_RE ++#undef BUILTIN_VQ ++#undef BUILTIN_VQN ++#undef BUILTIN_VQW ++#undef BUILTIN_VQ_HSI ++#undef BUILTIN_VQ_S ++#undef BUILTIN_VSDQ_HSI ++#undef BUILTIN_VSDQ_I ++#undef BUILTIN_VSDQ_I_BHSI ++#undef BUILTIN_VSDQ_I_DI ++#undef BUILTIN_VSD_HSI ++#undef BUILTIN_VSQN_HSDI ++#undef BUILTIN_VSTRUCT ++#undef CF0 ++#undef CF1 ++#undef CF2 ++#undef CF3 ++#undef CF4 ++#undef CF10 ++#undef VAR1 ++#undef VAR2 ++#undef VAR3 ++#undef VAR4 ++#undef VAR5 ++#undef VAR6 ++#undef VAR7 ++#undef VAR8 ++#undef VAR9 ++#undef VAR10 ++#undef VAR11 ++ --- a/src/gcc/config/aarch64/aarch64-protos.h +++ b/src/gcc/config/aarch64/aarch64-protos.h -@@ -151,6 +151,7 @@ +@@ -140,6 +140,7 @@ + bool aarch64_float_const_zero_rtx_p (rtx); + bool aarch64_function_arg_regno_p (unsigned); + bool aarch64_gen_movmemqi (rtx *); ++bool aarch64_gimple_fold_builtin (gimple_stmt_iterator *); + bool aarch64_is_extend_from_extract (enum machine_mode, rtx, rtx); + bool aarch64_is_long_call_p (rtx); + bool aarch64_label_mentioned_p (rtx); +@@ -151,6 +152,7 @@ bool aarch64_regno_ok_for_index_p (int, bool); bool aarch64_simd_imm_scalar_p (rtx x, enum machine_mode mode); bool aarch64_simd_imm_zero_p (rtx, enum machine_mode); @@ -1934,6 +11807,535 @@ bool aarch64_simd_shift_imm_p (rtx, enum machine_mode, bool); bool aarch64_symbolic_address_p (rtx); bool aarch64_symbolic_constant_p (rtx, enum aarch64_symbol_context, +@@ -177,6 +179,7 @@ + bool aarch64_simd_mem_operand_p (rtx); + rtx aarch64_simd_vect_par_cnst_half (enum machine_mode, bool); + rtx aarch64_tls_get_addr (void); ++tree aarch64_fold_builtin (tree, int, tree *, bool); + unsigned aarch64_dbx_register_number (unsigned); + unsigned aarch64_trampoline_size (void); + void aarch64_asm_output_labelref (FILE *, const char *); +--- a/src/gcc/config/aarch64/aarch64-simd-builtins.def ++++ b/src/gcc/config/aarch64/aarch64-simd-builtins.def +@@ -18,241 +18,329 @@ + along with GCC; see the file COPYING3. If not see + . */ + +-/* In the list below, the BUILTIN_ macros should +- correspond to the iterator used to construct the instruction's +- patterns in aarch64-simd.md. A helpful idiom to follow when +- adding new builtins is to add a line for each pattern in the md +- file. Thus, ADDP, which has one pattern defined for the VD_BHSI +- iterator, and one for DImode, has two entries below. */ ++/* In the list below, the BUILTIN_ macros expand to create ++ builtins for each of the modes described by . When adding ++ new builtins to this list, a helpful idiom to follow is to add ++ a line for each pattern in the md file. Thus, ADDP, which has one ++ pattern defined for the VD_BHSI iterator, and one for DImode, has two ++ entries below. + +- BUILTIN_VD_RE (CREATE, create) +- BUILTIN_VQ_S (GETLANE, get_lane_signed) +- BUILTIN_VDQ (GETLANE, get_lane_unsigned) +- BUILTIN_VDQF (GETLANE, get_lane) +- VAR1 (GETLANE, get_lane, di) +- BUILTIN_VDC (COMBINE, combine) +- BUILTIN_VB (BINOP, pmul) +- BUILTIN_VDQF (UNOP, sqrt) +- BUILTIN_VD_BHSI (BINOP, addp) +- VAR1 (UNOP, addp, di) ++ Parameter 1 is the 'type' of the intrinsic. This is used to ++ describe the type modifiers (for example; unsigned) applied to ++ each of the parameters to the intrinsic function. + +- BUILTIN_VD_RE (REINTERP, reinterpretdi) +- BUILTIN_VDC (REINTERP, reinterpretv8qi) +- BUILTIN_VDC (REINTERP, reinterpretv4hi) +- BUILTIN_VDC (REINTERP, reinterpretv2si) +- BUILTIN_VDC (REINTERP, reinterpretv2sf) +- BUILTIN_VQ (REINTERP, reinterpretv16qi) +- BUILTIN_VQ (REINTERP, reinterpretv8hi) +- BUILTIN_VQ (REINTERP, reinterpretv4si) +- BUILTIN_VQ (REINTERP, reinterpretv4sf) +- BUILTIN_VQ (REINTERP, reinterpretv2di) +- BUILTIN_VQ (REINTERP, reinterpretv2df) ++ Parameter 2 is the name of the intrinsic. This is appended ++ to `__builtin_aarch64_` to give the intrinsic name ++ as exported to the front-ends. + +- BUILTIN_VDQ_I (BINOP, dup_lane) +- BUILTIN_SDQ_I (BINOP, dup_lane) ++ Parameter 3 describes how to map from the name to the CODE_FOR_ ++ macro holding the RTL pattern for the intrinsic. This mapping is: ++ 0 - CODE_FOR_aarch64_ ++ 1-9 - CODE_FOR_<1-9> ++ 10 - CODE_FOR_. */ ++ ++ BUILTIN_VD_RE (CREATE, create, 0) ++ BUILTIN_VQ_S (GETLANE, get_lane_signed, 0) ++ BUILTIN_VDQ (GETLANE, get_lane_unsigned, 0) ++ BUILTIN_VDQF (GETLANE, get_lane, 0) ++ VAR1 (GETLANE, get_lane, 0, di) ++ BUILTIN_VDC (COMBINE, combine, 0) ++ BUILTIN_VB (BINOP, pmul, 0) ++ BUILTIN_VDQF (UNOP, sqrt, 2) ++ BUILTIN_VD_BHSI (BINOP, addp, 0) ++ VAR1 (UNOP, addp, 0, di) ++ ++ BUILTIN_VD_RE (REINTERP, reinterpretdi, 0) ++ BUILTIN_VDC (REINTERP, reinterpretv8qi, 0) ++ BUILTIN_VDC (REINTERP, reinterpretv4hi, 0) ++ BUILTIN_VDC (REINTERP, reinterpretv2si, 0) ++ BUILTIN_VDC (REINTERP, reinterpretv2sf, 0) ++ BUILTIN_VQ (REINTERP, reinterpretv16qi, 0) ++ BUILTIN_VQ (REINTERP, reinterpretv8hi, 0) ++ BUILTIN_VQ (REINTERP, reinterpretv4si, 0) ++ BUILTIN_VQ (REINTERP, reinterpretv4sf, 0) ++ BUILTIN_VQ (REINTERP, reinterpretv2di, 0) ++ BUILTIN_VQ (REINTERP, reinterpretv2df, 0) ++ ++ BUILTIN_VDQ_I (BINOP, dup_lane, 0) ++ BUILTIN_SDQ_I (BINOP, dup_lane, 0) + /* Implemented by aarch64_qshl. */ +- BUILTIN_VSDQ_I (BINOP, sqshl) +- BUILTIN_VSDQ_I (BINOP, uqshl) +- BUILTIN_VSDQ_I (BINOP, sqrshl) +- BUILTIN_VSDQ_I (BINOP, uqrshl) ++ BUILTIN_VSDQ_I (BINOP, sqshl, 0) ++ BUILTIN_VSDQ_I (BINOP, uqshl, 0) ++ BUILTIN_VSDQ_I (BINOP, sqrshl, 0) ++ BUILTIN_VSDQ_I (BINOP, uqrshl, 0) + /* Implemented by aarch64_. */ +- BUILTIN_VSDQ_I (BINOP, sqadd) +- BUILTIN_VSDQ_I (BINOP, uqadd) +- BUILTIN_VSDQ_I (BINOP, sqsub) +- BUILTIN_VSDQ_I (BINOP, uqsub) ++ BUILTIN_VSDQ_I (BINOP, sqadd, 0) ++ BUILTIN_VSDQ_I (BINOP, uqadd, 0) ++ BUILTIN_VSDQ_I (BINOP, sqsub, 0) ++ BUILTIN_VSDQ_I (BINOP, uqsub, 0) + /* Implemented by aarch64_qadd. */ +- BUILTIN_VSDQ_I (BINOP, suqadd) +- BUILTIN_VSDQ_I (BINOP, usqadd) ++ BUILTIN_VSDQ_I (BINOP, suqadd, 0) ++ BUILTIN_VSDQ_I (BINOP, usqadd, 0) + + /* Implemented by aarch64_get_dreg. */ +- BUILTIN_VDC (GETLANE, get_dregoi) +- BUILTIN_VDC (GETLANE, get_dregci) +- BUILTIN_VDC (GETLANE, get_dregxi) ++ BUILTIN_VDC (GETLANE, get_dregoi, 0) ++ BUILTIN_VDC (GETLANE, get_dregci, 0) ++ BUILTIN_VDC (GETLANE, get_dregxi, 0) + /* Implemented by aarch64_get_qreg. */ +- BUILTIN_VQ (GETLANE, get_qregoi) +- BUILTIN_VQ (GETLANE, get_qregci) +- BUILTIN_VQ (GETLANE, get_qregxi) ++ BUILTIN_VQ (GETLANE, get_qregoi, 0) ++ BUILTIN_VQ (GETLANE, get_qregci, 0) ++ BUILTIN_VQ (GETLANE, get_qregxi, 0) + /* Implemented by aarch64_set_qreg. */ +- BUILTIN_VQ (SETLANE, set_qregoi) +- BUILTIN_VQ (SETLANE, set_qregci) +- BUILTIN_VQ (SETLANE, set_qregxi) ++ BUILTIN_VQ (SETLANE, set_qregoi, 0) ++ BUILTIN_VQ (SETLANE, set_qregci, 0) ++ BUILTIN_VQ (SETLANE, set_qregxi, 0) + /* Implemented by aarch64_ld. */ +- BUILTIN_VDC (LOADSTRUCT, ld2) +- BUILTIN_VDC (LOADSTRUCT, ld3) +- BUILTIN_VDC (LOADSTRUCT, ld4) ++ BUILTIN_VDC (LOADSTRUCT, ld2, 0) ++ BUILTIN_VDC (LOADSTRUCT, ld3, 0) ++ BUILTIN_VDC (LOADSTRUCT, ld4, 0) + /* Implemented by aarch64_ld. */ +- BUILTIN_VQ (LOADSTRUCT, ld2) +- BUILTIN_VQ (LOADSTRUCT, ld3) +- BUILTIN_VQ (LOADSTRUCT, ld4) ++ BUILTIN_VQ (LOADSTRUCT, ld2, 0) ++ BUILTIN_VQ (LOADSTRUCT, ld3, 0) ++ BUILTIN_VQ (LOADSTRUCT, ld4, 0) + /* Implemented by aarch64_st. */ +- BUILTIN_VDC (STORESTRUCT, st2) +- BUILTIN_VDC (STORESTRUCT, st3) +- BUILTIN_VDC (STORESTRUCT, st4) ++ BUILTIN_VDC (STORESTRUCT, st2, 0) ++ BUILTIN_VDC (STORESTRUCT, st3, 0) ++ BUILTIN_VDC (STORESTRUCT, st4, 0) + /* Implemented by aarch64_st. */ +- BUILTIN_VQ (STORESTRUCT, st2) +- BUILTIN_VQ (STORESTRUCT, st3) +- BUILTIN_VQ (STORESTRUCT, st4) ++ BUILTIN_VQ (STORESTRUCT, st2, 0) ++ BUILTIN_VQ (STORESTRUCT, st3, 0) ++ BUILTIN_VQ (STORESTRUCT, st4, 0) + +- BUILTIN_VQW (BINOP, saddl2) +- BUILTIN_VQW (BINOP, uaddl2) +- BUILTIN_VQW (BINOP, ssubl2) +- BUILTIN_VQW (BINOP, usubl2) +- BUILTIN_VQW (BINOP, saddw2) +- BUILTIN_VQW (BINOP, uaddw2) +- BUILTIN_VQW (BINOP, ssubw2) +- BUILTIN_VQW (BINOP, usubw2) ++ BUILTIN_VQW (BINOP, saddl2, 0) ++ BUILTIN_VQW (BINOP, uaddl2, 0) ++ BUILTIN_VQW (BINOP, ssubl2, 0) ++ BUILTIN_VQW (BINOP, usubl2, 0) ++ BUILTIN_VQW (BINOP, saddw2, 0) ++ BUILTIN_VQW (BINOP, uaddw2, 0) ++ BUILTIN_VQW (BINOP, ssubw2, 0) ++ BUILTIN_VQW (BINOP, usubw2, 0) + /* Implemented by aarch64_l. */ +- BUILTIN_VDW (BINOP, saddl) +- BUILTIN_VDW (BINOP, uaddl) +- BUILTIN_VDW (BINOP, ssubl) +- BUILTIN_VDW (BINOP, usubl) ++ BUILTIN_VDW (BINOP, saddl, 0) ++ BUILTIN_VDW (BINOP, uaddl, 0) ++ BUILTIN_VDW (BINOP, ssubl, 0) ++ BUILTIN_VDW (BINOP, usubl, 0) + /* Implemented by aarch64_w. */ +- BUILTIN_VDW (BINOP, saddw) +- BUILTIN_VDW (BINOP, uaddw) +- BUILTIN_VDW (BINOP, ssubw) +- BUILTIN_VDW (BINOP, usubw) ++ BUILTIN_VDW (BINOP, saddw, 0) ++ BUILTIN_VDW (BINOP, uaddw, 0) ++ BUILTIN_VDW (BINOP, ssubw, 0) ++ BUILTIN_VDW (BINOP, usubw, 0) + /* Implemented by aarch64_h. */ +- BUILTIN_VQ_S (BINOP, shadd) +- BUILTIN_VQ_S (BINOP, uhadd) +- BUILTIN_VQ_S (BINOP, srhadd) +- BUILTIN_VQ_S (BINOP, urhadd) ++ BUILTIN_VQ_S (BINOP, shadd, 0) ++ BUILTIN_VQ_S (BINOP, uhadd, 0) ++ BUILTIN_VQ_S (BINOP, srhadd, 0) ++ BUILTIN_VQ_S (BINOP, urhadd, 0) + /* Implemented by aarch64_hn. */ +- BUILTIN_VQN (BINOP, addhn) +- BUILTIN_VQN (BINOP, raddhn) ++ BUILTIN_VQN (BINOP, addhn, 0) ++ BUILTIN_VQN (BINOP, raddhn, 0) + /* Implemented by aarch64_hn2. */ +- BUILTIN_VQN (TERNOP, addhn2) +- BUILTIN_VQN (TERNOP, raddhn2) ++ BUILTIN_VQN (TERNOP, addhn2, 0) ++ BUILTIN_VQN (TERNOP, raddhn2, 0) + +- BUILTIN_VSQN_HSDI (UNOP, sqmovun) ++ BUILTIN_VSQN_HSDI (UNOP, sqmovun, 0) + /* Implemented by aarch64_qmovn. */ +- BUILTIN_VSQN_HSDI (UNOP, sqmovn) +- BUILTIN_VSQN_HSDI (UNOP, uqmovn) ++ BUILTIN_VSQN_HSDI (UNOP, sqmovn, 0) ++ BUILTIN_VSQN_HSDI (UNOP, uqmovn, 0) + /* Implemented by aarch64_s. */ +- BUILTIN_VSDQ_I_BHSI (UNOP, sqabs) +- BUILTIN_VSDQ_I_BHSI (UNOP, sqneg) ++ BUILTIN_VSDQ_I_BHSI (UNOP, sqabs, 0) ++ BUILTIN_VSDQ_I_BHSI (UNOP, sqneg, 0) + +- BUILTIN_VSD_HSI (QUADOP, sqdmlal_lane) +- BUILTIN_VSD_HSI (QUADOP, sqdmlsl_lane) +- BUILTIN_VSD_HSI (QUADOP, sqdmlal_laneq) +- BUILTIN_VSD_HSI (QUADOP, sqdmlsl_laneq) +- BUILTIN_VQ_HSI (TERNOP, sqdmlal2) +- BUILTIN_VQ_HSI (TERNOP, sqdmlsl2) +- BUILTIN_VQ_HSI (QUADOP, sqdmlal2_lane) +- BUILTIN_VQ_HSI (QUADOP, sqdmlsl2_lane) +- BUILTIN_VQ_HSI (QUADOP, sqdmlal2_laneq) +- BUILTIN_VQ_HSI (QUADOP, sqdmlsl2_laneq) +- BUILTIN_VQ_HSI (TERNOP, sqdmlal2_n) +- BUILTIN_VQ_HSI (TERNOP, sqdmlsl2_n) ++ BUILTIN_VSD_HSI (QUADOP, sqdmlal_lane, 0) ++ BUILTIN_VSD_HSI (QUADOP, sqdmlsl_lane, 0) ++ BUILTIN_VSD_HSI (QUADOP, sqdmlal_laneq, 0) ++ BUILTIN_VSD_HSI (QUADOP, sqdmlsl_laneq, 0) ++ BUILTIN_VQ_HSI (TERNOP, sqdmlal2, 0) ++ BUILTIN_VQ_HSI (TERNOP, sqdmlsl2, 0) ++ BUILTIN_VQ_HSI (QUADOP, sqdmlal2_lane, 0) ++ BUILTIN_VQ_HSI (QUADOP, sqdmlsl2_lane, 0) ++ BUILTIN_VQ_HSI (QUADOP, sqdmlal2_laneq, 0) ++ BUILTIN_VQ_HSI (QUADOP, sqdmlsl2_laneq, 0) ++ BUILTIN_VQ_HSI (TERNOP, sqdmlal2_n, 0) ++ BUILTIN_VQ_HSI (TERNOP, sqdmlsl2_n, 0) + /* Implemented by aarch64_sqdmll. */ +- BUILTIN_VSD_HSI (TERNOP, sqdmlal) +- BUILTIN_VSD_HSI (TERNOP, sqdmlsl) ++ BUILTIN_VSD_HSI (TERNOP, sqdmlal, 0) ++ BUILTIN_VSD_HSI (TERNOP, sqdmlsl, 0) + /* Implemented by aarch64_sqdmll_n. */ +- BUILTIN_VD_HSI (TERNOP, sqdmlal_n) +- BUILTIN_VD_HSI (TERNOP, sqdmlsl_n) ++ BUILTIN_VD_HSI (TERNOP, sqdmlal_n, 0) ++ BUILTIN_VD_HSI (TERNOP, sqdmlsl_n, 0) + +- BUILTIN_VSD_HSI (BINOP, sqdmull) +- BUILTIN_VSD_HSI (TERNOP, sqdmull_lane) +- BUILTIN_VD_HSI (TERNOP, sqdmull_laneq) +- BUILTIN_VD_HSI (BINOP, sqdmull_n) +- BUILTIN_VQ_HSI (BINOP, sqdmull2) +- BUILTIN_VQ_HSI (TERNOP, sqdmull2_lane) +- BUILTIN_VQ_HSI (TERNOP, sqdmull2_laneq) +- BUILTIN_VQ_HSI (BINOP, sqdmull2_n) ++ BUILTIN_VSD_HSI (BINOP, sqdmull, 0) ++ BUILTIN_VSD_HSI (TERNOP, sqdmull_lane, 0) ++ BUILTIN_VD_HSI (TERNOP, sqdmull_laneq, 0) ++ BUILTIN_VD_HSI (BINOP, sqdmull_n, 0) ++ BUILTIN_VQ_HSI (BINOP, sqdmull2, 0) ++ BUILTIN_VQ_HSI (TERNOP, sqdmull2_lane, 0) ++ BUILTIN_VQ_HSI (TERNOP, sqdmull2_laneq, 0) ++ BUILTIN_VQ_HSI (BINOP, sqdmull2_n, 0) + /* Implemented by aarch64_sqdmulh. */ +- BUILTIN_VSDQ_HSI (BINOP, sqdmulh) +- BUILTIN_VSDQ_HSI (BINOP, sqrdmulh) ++ BUILTIN_VSDQ_HSI (BINOP, sqdmulh, 0) ++ BUILTIN_VSDQ_HSI (BINOP, sqrdmulh, 0) + /* Implemented by aarch64_sqdmulh_lane. */ +- BUILTIN_VDQHS (TERNOP, sqdmulh_lane) +- BUILTIN_VDQHS (TERNOP, sqdmulh_laneq) +- BUILTIN_VDQHS (TERNOP, sqrdmulh_lane) +- BUILTIN_VDQHS (TERNOP, sqrdmulh_laneq) +- BUILTIN_SD_HSI (TERNOP, sqdmulh_lane) +- BUILTIN_SD_HSI (TERNOP, sqrdmulh_lane) ++ BUILTIN_VDQHS (TERNOP, sqdmulh_lane, 0) ++ BUILTIN_VDQHS (TERNOP, sqdmulh_laneq, 0) ++ BUILTIN_VDQHS (TERNOP, sqrdmulh_lane, 0) ++ BUILTIN_VDQHS (TERNOP, sqrdmulh_laneq, 0) ++ BUILTIN_SD_HSI (TERNOP, sqdmulh_lane, 0) ++ BUILTIN_SD_HSI (TERNOP, sqrdmulh_lane, 0) + +- BUILTIN_VSDQ_I_DI (BINOP, sshl_n) +- BUILTIN_VSDQ_I_DI (BINOP, ushl_n) ++ BUILTIN_VSDQ_I_DI (BINOP, ashl, 3) + /* Implemented by aarch64_shl. */ +- BUILTIN_VSDQ_I_DI (BINOP, sshl) +- BUILTIN_VSDQ_I_DI (BINOP, ushl) +- BUILTIN_VSDQ_I_DI (BINOP, srshl) +- BUILTIN_VSDQ_I_DI (BINOP, urshl) ++ BUILTIN_VSDQ_I_DI (BINOP, sshl, 0) ++ BUILTIN_VSDQ_I_DI (BINOP, ushl, 0) ++ BUILTIN_VSDQ_I_DI (BINOP, srshl, 0) ++ BUILTIN_VSDQ_I_DI (BINOP, urshl, 0) + +- BUILTIN_VSDQ_I_DI (SHIFTIMM, sshr_n) +- BUILTIN_VSDQ_I_DI (SHIFTIMM, ushr_n) ++ BUILTIN_VSDQ_I_DI (SHIFTIMM, ashr, 3) ++ BUILTIN_VSDQ_I_DI (SHIFTIMM, lshr, 3) + /* Implemented by aarch64_shr_n. */ +- BUILTIN_VSDQ_I_DI (SHIFTIMM, srshr_n) +- BUILTIN_VSDQ_I_DI (SHIFTIMM, urshr_n) ++ BUILTIN_VSDQ_I_DI (SHIFTIMM, srshr_n, 0) ++ BUILTIN_VSDQ_I_DI (SHIFTIMM, urshr_n, 0) + /* Implemented by aarch64_sra_n. */ +- BUILTIN_VSDQ_I_DI (SHIFTACC, ssra_n) +- BUILTIN_VSDQ_I_DI (SHIFTACC, usra_n) +- BUILTIN_VSDQ_I_DI (SHIFTACC, srsra_n) +- BUILTIN_VSDQ_I_DI (SHIFTACC, ursra_n) ++ BUILTIN_VSDQ_I_DI (SHIFTACC, ssra_n, 0) ++ BUILTIN_VSDQ_I_DI (SHIFTACC, usra_n, 0) ++ BUILTIN_VSDQ_I_DI (SHIFTACC, srsra_n, 0) ++ BUILTIN_VSDQ_I_DI (SHIFTACC, ursra_n, 0) + /* Implemented by aarch64_shll_n. */ +- BUILTIN_VDW (SHIFTIMM, sshll_n) +- BUILTIN_VDW (SHIFTIMM, ushll_n) ++ BUILTIN_VDW (SHIFTIMM, sshll_n, 0) ++ BUILTIN_VDW (SHIFTIMM, ushll_n, 0) + /* Implemented by aarch64_shll2_n. */ +- BUILTIN_VQW (SHIFTIMM, sshll2_n) +- BUILTIN_VQW (SHIFTIMM, ushll2_n) ++ BUILTIN_VQW (SHIFTIMM, sshll2_n, 0) ++ BUILTIN_VQW (SHIFTIMM, ushll2_n, 0) + /* Implemented by aarch64_qshrn_n. */ +- BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrun_n) +- BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrun_n) +- BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrn_n) +- BUILTIN_VSQN_HSDI (SHIFTIMM, uqshrn_n) +- BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrn_n) +- BUILTIN_VSQN_HSDI (SHIFTIMM, uqrshrn_n) ++ BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrun_n, 0) ++ BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrun_n, 0) ++ BUILTIN_VSQN_HSDI (SHIFTIMM, sqshrn_n, 0) ++ BUILTIN_VSQN_HSDI (SHIFTIMM, uqshrn_n, 0) ++ BUILTIN_VSQN_HSDI (SHIFTIMM, sqrshrn_n, 0) ++ BUILTIN_VSQN_HSDI (SHIFTIMM, uqrshrn_n, 0) + /* Implemented by aarch64_si_n. */ +- BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssri_n) +- BUILTIN_VSDQ_I_DI (SHIFTINSERT, usri_n) +- BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssli_n) +- BUILTIN_VSDQ_I_DI (SHIFTINSERT, usli_n) ++ BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssri_n, 0) ++ BUILTIN_VSDQ_I_DI (SHIFTINSERT, usri_n, 0) ++ BUILTIN_VSDQ_I_DI (SHIFTINSERT, ssli_n, 0) ++ BUILTIN_VSDQ_I_DI (SHIFTINSERT, usli_n, 0) + /* Implemented by aarch64_qshl_n. */ +- BUILTIN_VSDQ_I (SHIFTIMM, sqshlu_n) +- BUILTIN_VSDQ_I (SHIFTIMM, sqshl_n) +- BUILTIN_VSDQ_I (SHIFTIMM, uqshl_n) ++ BUILTIN_VSDQ_I (SHIFTIMM, sqshlu_n, 0) ++ BUILTIN_VSDQ_I (SHIFTIMM, sqshl_n, 0) ++ BUILTIN_VSDQ_I (SHIFTIMM, uqshl_n, 0) + + /* Implemented by aarch64_cm. */ +- BUILTIN_VSDQ_I_DI (BINOP, cmeq) +- BUILTIN_VSDQ_I_DI (BINOP, cmge) +- BUILTIN_VSDQ_I_DI (BINOP, cmgt) +- BUILTIN_VSDQ_I_DI (BINOP, cmle) +- BUILTIN_VSDQ_I_DI (BINOP, cmlt) ++ BUILTIN_VALLDI (BINOP, cmeq, 0) ++ BUILTIN_VALLDI (BINOP, cmge, 0) ++ BUILTIN_VALLDI (BINOP, cmgt, 0) ++ BUILTIN_VALLDI (BINOP, cmle, 0) ++ BUILTIN_VALLDI (BINOP, cmlt, 0) + /* Implemented by aarch64_cm. */ +- BUILTIN_VSDQ_I_DI (BINOP, cmhs) +- BUILTIN_VSDQ_I_DI (BINOP, cmhi) +- BUILTIN_VSDQ_I_DI (BINOP, cmtst) ++ BUILTIN_VSDQ_I_DI (BINOP, cmgeu, 0) ++ BUILTIN_VSDQ_I_DI (BINOP, cmgtu, 0) ++ BUILTIN_VSDQ_I_DI (BINOP, cmtst, 0) + + /* Implemented by aarch64_. */ +- BUILTIN_VDQF (BINOP, fmax) +- BUILTIN_VDQF (BINOP, fmin) +- /* Implemented by aarch64_. */ +- BUILTIN_VDQ_BHSI (BINOP, smax) +- BUILTIN_VDQ_BHSI (BINOP, smin) +- BUILTIN_VDQ_BHSI (BINOP, umax) +- BUILTIN_VDQ_BHSI (BINOP, umin) ++ BUILTIN_VDQF (BINOP, fmax, 0) ++ BUILTIN_VDQF (BINOP, fmin, 0) + +- /* Implemented by aarch64_frint. */ +- BUILTIN_VDQF (UNOP, frintz) +- BUILTIN_VDQF (UNOP, frintp) +- BUILTIN_VDQF (UNOP, frintm) +- BUILTIN_VDQF (UNOP, frinti) +- BUILTIN_VDQF (UNOP, frintx) +- BUILTIN_VDQF (UNOP, frinta) ++ /* Implemented by aarch64_addv. */ ++ BUILTIN_VDQF (UNOP, addv, 0) + +- /* Implemented by aarch64_fcvt. */ +- BUILTIN_VDQF (UNOP, fcvtzs) +- BUILTIN_VDQF (UNOP, fcvtzu) +- BUILTIN_VDQF (UNOP, fcvtas) +- BUILTIN_VDQF (UNOP, fcvtau) +- BUILTIN_VDQF (UNOP, fcvtps) +- BUILTIN_VDQF (UNOP, fcvtpu) +- BUILTIN_VDQF (UNOP, fcvtms) +- BUILTIN_VDQF (UNOP, fcvtmu) ++ /* Implemented by 3. */ ++ BUILTIN_VDQ_BHSI (BINOP, smax, 3) ++ BUILTIN_VDQ_BHSI (BINOP, smin, 3) ++ BUILTIN_VDQ_BHSI (BINOP, umax, 3) ++ BUILTIN_VDQ_BHSI (BINOP, umin, 3) + ++ /* Implemented by 2. */ ++ BUILTIN_VDQF (UNOP, btrunc, 2) ++ BUILTIN_VDQF (UNOP, ceil, 2) ++ BUILTIN_VDQF (UNOP, floor, 2) ++ BUILTIN_VDQF (UNOP, nearbyint, 2) ++ BUILTIN_VDQF (UNOP, rint, 2) ++ BUILTIN_VDQF (UNOP, round, 2) ++ BUILTIN_VDQF (UNOP, frintn, 2) ++ ++ /* Implemented by l2. */ ++ VAR1 (UNOP, lbtruncv2sf, 2, v2si) ++ VAR1 (UNOP, lbtruncv4sf, 2, v4si) ++ VAR1 (UNOP, lbtruncv2df, 2, v2di) ++ ++ VAR1 (UNOP, lbtruncuv2sf, 2, v2si) ++ VAR1 (UNOP, lbtruncuv4sf, 2, v4si) ++ VAR1 (UNOP, lbtruncuv2df, 2, v2di) ++ ++ VAR1 (UNOP, lroundv2sf, 2, v2si) ++ VAR1 (UNOP, lroundv4sf, 2, v4si) ++ VAR1 (UNOP, lroundv2df, 2, v2di) ++ /* Implemented by l2. */ ++ VAR1 (UNOP, lroundsf, 2, si) ++ VAR1 (UNOP, lrounddf, 2, di) ++ ++ VAR1 (UNOP, lrounduv2sf, 2, v2si) ++ VAR1 (UNOP, lrounduv4sf, 2, v4si) ++ VAR1 (UNOP, lrounduv2df, 2, v2di) ++ VAR1 (UNOP, lroundusf, 2, si) ++ VAR1 (UNOP, lroundudf, 2, di) ++ ++ VAR1 (UNOP, lceilv2sf, 2, v2si) ++ VAR1 (UNOP, lceilv4sf, 2, v4si) ++ VAR1 (UNOP, lceilv2df, 2, v2di) ++ ++ VAR1 (UNOP, lceiluv2sf, 2, v2si) ++ VAR1 (UNOP, lceiluv4sf, 2, v4si) ++ VAR1 (UNOP, lceiluv2df, 2, v2di) ++ VAR1 (UNOP, lceilusf, 2, si) ++ VAR1 (UNOP, lceiludf, 2, di) ++ ++ VAR1 (UNOP, lfloorv2sf, 2, v2si) ++ VAR1 (UNOP, lfloorv4sf, 2, v4si) ++ VAR1 (UNOP, lfloorv2df, 2, v2di) ++ ++ VAR1 (UNOP, lflooruv2sf, 2, v2si) ++ VAR1 (UNOP, lflooruv4sf, 2, v4si) ++ VAR1 (UNOP, lflooruv2df, 2, v2di) ++ VAR1 (UNOP, lfloorusf, 2, si) ++ VAR1 (UNOP, lfloorudf, 2, di) ++ ++ VAR1 (UNOP, lfrintnv2sf, 2, v2si) ++ VAR1 (UNOP, lfrintnv4sf, 2, v4si) ++ VAR1 (UNOP, lfrintnv2df, 2, v2di) ++ VAR1 (UNOP, lfrintnsf, 2, si) ++ VAR1 (UNOP, lfrintndf, 2, di) ++ ++ VAR1 (UNOP, lfrintnuv2sf, 2, v2si) ++ VAR1 (UNOP, lfrintnuv4sf, 2, v4si) ++ VAR1 (UNOP, lfrintnuv2df, 2, v2di) ++ VAR1 (UNOP, lfrintnusf, 2, si) ++ VAR1 (UNOP, lfrintnudf, 2, di) ++ ++ /* Implemented by 2. */ ++ VAR1 (UNOP, floatv2si, 2, v2sf) ++ VAR1 (UNOP, floatv4si, 2, v4sf) ++ VAR1 (UNOP, floatv2di, 2, v2df) ++ ++ VAR1 (UNOP, floatunsv2si, 2, v2sf) ++ VAR1 (UNOP, floatunsv4si, 2, v4sf) ++ VAR1 (UNOP, floatunsv2di, 2, v2df) ++ + /* Implemented by + aarch64_. */ +- BUILTIN_VALL (BINOP, zip1) +- BUILTIN_VALL (BINOP, zip2) +- BUILTIN_VALL (BINOP, uzp1) +- BUILTIN_VALL (BINOP, uzp2) +- BUILTIN_VALL (BINOP, trn1) +- BUILTIN_VALL (BINOP, trn2) ++ BUILTIN_VALL (BINOP, zip1, 0) ++ BUILTIN_VALL (BINOP, zip2, 0) ++ BUILTIN_VALL (BINOP, uzp1, 0) ++ BUILTIN_VALL (BINOP, uzp2, 0) ++ BUILTIN_VALL (BINOP, trn1, 0) ++ BUILTIN_VALL (BINOP, trn2, 0) ++ ++ /* Implemented by ++ aarch64_frecp. */ ++ BUILTIN_GPF (UNOP, frecpe, 0) ++ BUILTIN_GPF (BINOP, frecps, 0) ++ BUILTIN_GPF (UNOP, frecpx, 0) ++ ++ BUILTIN_VDQF (UNOP, frecpe, 0) ++ BUILTIN_VDQF (BINOP, frecps, 0) ++ ++ BUILTIN_VDQF (UNOP, abs, 2) ++ ++ VAR1 (UNOP, vec_unpacks_hi_, 10, v4sf) ++ VAR1 (BINOP, float_truncate_hi_, 0, v4sf) ++ ++ VAR1 (UNOP, float_extend_lo_, 0, v2df) ++ VAR1 (UNOP, float_truncate_lo_, 0, v2sf) --- a/src/gcc/config/aarch64/constraints.md +++ b/src/gcc/config/aarch64/constraints.md @@ -152,6 +152,22 @@ @@ -1961,7 +12363,17 @@ A constraint that matches vector of immediates for left shifts." --- a/src/gcc/config/aarch64/aarch64.c +++ b/src/gcc/config/aarch64/aarch64.c -@@ -3349,7 +3349,7 @@ +@@ -3087,7 +3087,8 @@ + if ((GET_MODE (x) == SImode || GET_MODE (x) == DImode) + && y == const0_rtx + && (code == EQ || code == NE || code == LT || code == GE) +- && (GET_CODE (x) == PLUS || GET_CODE (x) == MINUS || GET_CODE (x) == AND)) ++ && (GET_CODE (x) == PLUS || GET_CODE (x) == MINUS || GET_CODE (x) == AND ++ || GET_CODE (x) == NEG)) + return CC_NZmode; + + /* A compare with a shifted operand. Because of canonicalization, +@@ -3349,7 +3350,7 @@ output_operand_lossage ("incompatible floating point / vector register operand for '%%%c'", code); return; } @@ -1970,7 +12382,7 @@ break; case 'S': -@@ -3362,8 +3362,7 @@ +@@ -3362,8 +3363,7 @@ output_operand_lossage ("incompatible floating point / vector register operand for '%%%c'", code); return; } @@ -1979,8 +12391,8 @@ + asm_fprintf (f, "v%d", REGNO (x) - V0_REGNUM + (code - 'S')); break; - case 'w': -@@ -3373,20 +3372,19 @@ + case 'X': +@@ -3383,20 +3383,19 @@ if (x == const0_rtx || (CONST_DOUBLE_P (x) && aarch64_float_const_zero_rtx_p (x))) { @@ -2004,7 +12416,7 @@ break; } -@@ -6392,6 +6390,21 @@ +@@ -6409,6 +6408,21 @@ return gen_rtx_CONST_VECTOR (mode, v); } @@ -2026,9 +12438,64 @@ /* Construct and return a PARALLEL RTX vector. */ rtx aarch64_simd_vect_par_cnst_half (enum machine_mode mode, bool high) +@@ -7860,6 +7874,9 @@ + #undef TARGET_EXPAND_BUILTIN_VA_START + #define TARGET_EXPAND_BUILTIN_VA_START aarch64_expand_builtin_va_start + ++#undef TARGET_FOLD_BUILTIN ++#define TARGET_FOLD_BUILTIN aarch64_fold_builtin ++ + #undef TARGET_FUNCTION_ARG + #define TARGET_FUNCTION_ARG aarch64_function_arg + +@@ -7881,6 +7898,9 @@ + #undef TARGET_FRAME_POINTER_REQUIRED + #define TARGET_FRAME_POINTER_REQUIRED aarch64_frame_pointer_required + ++#undef TARGET_GIMPLE_FOLD_BUILTIN ++#define TARGET_GIMPLE_FOLD_BUILTIN aarch64_gimple_fold_builtin ++ + #undef TARGET_GIMPLIFY_VA_ARG_EXPR + #define TARGET_GIMPLIFY_VA_ARG_EXPR aarch64_gimplify_va_arg_expr + --- a/src/gcc/config/aarch64/iterators.md +++ b/src/gcc/config/aarch64/iterators.md -@@ -249,6 +249,9 @@ +@@ -83,6 +83,9 @@ + ;; Vector Float modes. + (define_mode_iterator VDQF [V2SF V4SF V2DF]) + ++;; All Float modes. ++(define_mode_iterator VALLF [V2SF V4SF V2DF SF DF]) ++ + ;; Vector Float modes with 2 elements. + (define_mode_iterator V2F [V2SF V2DF]) + +@@ -213,13 +216,6 @@ + UNSPEC_URSHL ; Used in aarch64-simd.md. + UNSPEC_SQRSHL ; Used in aarch64-simd.md. + UNSPEC_UQRSHL ; Used in aarch64-simd.md. +- UNSPEC_CMEQ ; Used in aarch64-simd.md. +- UNSPEC_CMLE ; Used in aarch64-simd.md. +- UNSPEC_CMLT ; Used in aarch64-simd.md. +- UNSPEC_CMGE ; Used in aarch64-simd.md. +- UNSPEC_CMGT ; Used in aarch64-simd.md. +- UNSPEC_CMHS ; Used in aarch64-simd.md. +- UNSPEC_CMHI ; Used in aarch64-simd.md. + UNSPEC_SSLI ; Used in aarch64-simd.md. + UNSPEC_USLI ; Used in aarch64-simd.md. + UNSPEC_SSRI ; Used in aarch64-simd.md. +@@ -227,10 +223,8 @@ + UNSPEC_SSHLL ; Used in aarch64-simd.md. + UNSPEC_USHLL ; Used in aarch64-simd.md. + UNSPEC_ADDP ; Used in aarch64-simd.md. +- UNSPEC_CMTST ; Used in aarch64-simd.md. + UNSPEC_FMAX ; Used in aarch64-simd.md. + UNSPEC_FMIN ; Used in aarch64-simd.md. +- UNSPEC_BSL ; Used in aarch64-simd.md. + UNSPEC_TBL ; Used in vector permute patterns. + UNSPEC_CONCAT ; Used in vector permute patterns. + UNSPEC_ZIP1 ; Used in vector permute patterns. +@@ -249,8 +243,12 @@ ;; 32-bit version and "%x0" in the 64-bit version. (define_mode_attr w [(QI "w") (HI "w") (SI "w") (DI "x") (SF "s") (DF "d")]) @@ -2037,7 +12504,195 @@ + ;; For scalar usage of vector/FP registers (define_mode_attr v [(QI "b") (HI "h") (SI "s") (DI "d") ++ (SF "s") (DF "d") (V8QI "") (V16QI "") + (V4HI "") (V8HI "") + (V2SI "") (V4SI "") +@@ -305,7 +303,8 @@ + (V4SF ".4s") (V2DF ".2d") + (DI "") (SI "") + (HI "") (QI "") +- (TI "")]) ++ (TI "") (SF "") ++ (DF "")]) + + ;; Register suffix narrowed modes for VQN. + (define_mode_attr Vmntype [(V8HI ".8b") (V4SI ".4h") +@@ -444,7 +443,8 @@ + (V2SI "V2SI") (V4SI "V4SI") + (DI "DI") (V2DI "V2DI") + (V2SF "V2SI") (V4SF "V4SI") +- (V2DF "V2DI")]) ++ (V2DF "V2DI") (DF "DI") ++ (SF "SI")]) + + ;; Lower case mode of results of comparison operations. + (define_mode_attr v_cmp_result [(V8QI "v8qi") (V16QI "v16qi") +@@ -452,7 +452,8 @@ + (V2SI "v2si") (V4SI "v4si") + (DI "di") (V2DI "v2di") + (V2SF "v2si") (V4SF "v4si") +- (V2DF "v2di")]) ++ (V2DF "v2di") (DF "di") ++ (SF "si")]) + + ;; Vm for lane instructions is restricted to FP_LO_REGS. + (define_mode_attr vwx [(V4HI "x") (V8HI "x") (HI "x") +@@ -528,6 +529,9 @@ + ;; Iterator for integer conversions + (define_code_iterator FIXUORS [fix unsigned_fix]) + ++;; Iterator for float conversions ++(define_code_iterator FLOATUORS [float unsigned_float]) ++ + ;; Code iterator for variants of vector max and min. + (define_code_iterator MAXMIN [smax smin umax umin]) + +@@ -543,6 +547,15 @@ + ;; Code iterator for signed variants of vector saturating binary ops. + (define_code_iterator SBINQOPS [ss_plus ss_minus]) + ++;; Comparison operators for CM. ++(define_code_iterator COMPARISONS [lt le eq ge gt]) ++ ++;; Unsigned comparison operators. ++(define_code_iterator UCOMPARISONS [ltu leu geu gtu]) ++ ++;; Unsigned comparison operators. ++(define_code_iterator FAC_COMPARISONS [lt le ge gt]) ++ + ;; ------------------------------------------------------------------- + ;; Code Attributes + ;; ------------------------------------------------------------------- +@@ -555,6 +568,10 @@ + (zero_extend "zero_extend") + (sign_extract "extv") + (zero_extract "extzv") ++ (fix "fix") ++ (unsigned_fix "fixuns") ++ (float "float") ++ (unsigned_float "floatuns") + (and "and") + (ior "ior") + (xor "xor") +@@ -571,12 +588,37 @@ + (eq "eq") + (ne "ne") + (lt "lt") +- (ge "ge")]) ++ (ge "ge") ++ (le "le") ++ (gt "gt") ++ (ltu "ltu") ++ (leu "leu") ++ (geu "geu") ++ (gtu "gtu")]) + ++;; For comparison operators we use the FCM* and CM* instructions. ++;; As there are no CMLE or CMLT instructions which act on 3 vector ++;; operands, we must use CMGE or CMGT and swap the order of the ++;; source operands. ++ ++(define_code_attr n_optab [(lt "gt") (le "ge") (eq "eq") (ge "ge") (gt "gt") ++ (ltu "hi") (leu "hs") (geu "hs") (gtu "hi")]) ++(define_code_attr cmp_1 [(lt "2") (le "2") (eq "1") (ge "1") (gt "1") ++ (ltu "2") (leu "2") (geu "1") (gtu "1")]) ++(define_code_attr cmp_2 [(lt "1") (le "1") (eq "2") (ge "2") (gt "2") ++ (ltu "1") (leu "1") (geu "2") (gtu "2")]) ++ ++(define_code_attr CMP [(lt "LT") (le "LE") (eq "EQ") (ge "GE") (gt "GT") ++ (ltu "LTU") (leu "LEU") (geu "GEU") (gtu "GTU")]) ++ ++(define_code_attr fix_trunc_optab [(fix "fix_trunc") ++ (unsigned_fix "fixuns_trunc")]) ++ + ;; Optab prefix for sign/zero-extending operations + (define_code_attr su_optab [(sign_extend "") (zero_extend "u") + (div "") (udiv "u") + (fix "") (unsigned_fix "u") ++ (float "s") (unsigned_float "u") + (ss_plus "s") (us_plus "u") + (ss_minus "s") (us_minus "u")]) + +@@ -680,21 +722,19 @@ + UNSPEC_SQSHRN UNSPEC_UQSHRN + UNSPEC_SQRSHRN UNSPEC_UQRSHRN]) + +-(define_int_iterator VCMP_S [UNSPEC_CMEQ UNSPEC_CMGE UNSPEC_CMGT +- UNSPEC_CMLE UNSPEC_CMLT]) +- +-(define_int_iterator VCMP_U [UNSPEC_CMHS UNSPEC_CMHI UNSPEC_CMTST]) +- + (define_int_iterator PERMUTE [UNSPEC_ZIP1 UNSPEC_ZIP2 + UNSPEC_TRN1 UNSPEC_TRN2 + UNSPEC_UZP1 UNSPEC_UZP2]) + + (define_int_iterator FRINT [UNSPEC_FRINTZ UNSPEC_FRINTP UNSPEC_FRINTM +- UNSPEC_FRINTI UNSPEC_FRINTX UNSPEC_FRINTA]) ++ UNSPEC_FRINTN UNSPEC_FRINTI UNSPEC_FRINTX ++ UNSPEC_FRINTA]) + + (define_int_iterator FCVT [UNSPEC_FRINTZ UNSPEC_FRINTP UNSPEC_FRINTM +- UNSPEC_FRINTA]) ++ UNSPEC_FRINTA UNSPEC_FRINTN]) + ++(define_int_iterator FRECP [UNSPEC_FRECPE UNSPEC_FRECPX]) ++ + ;; ------------------------------------------------------------------- + ;; Int Iterators Attributes. + ;; ------------------------------------------------------------------- +@@ -768,12 +808,6 @@ + (UNSPEC_RADDHN2 "add") + (UNSPEC_RSUBHN2 "sub")]) + +-(define_int_attr cmp [(UNSPEC_CMGE "ge") (UNSPEC_CMGT "gt") +- (UNSPEC_CMLE "le") (UNSPEC_CMLT "lt") +- (UNSPEC_CMEQ "eq") +- (UNSPEC_CMHS "hs") (UNSPEC_CMHI "hi") +- (UNSPEC_CMTST "tst")]) +- + (define_int_attr offsetlr [(UNSPEC_SSLI "1") (UNSPEC_USLI "1") + (UNSPEC_SSRI "0") (UNSPEC_USRI "0")]) + +@@ -783,15 +817,18 @@ + (UNSPEC_FRINTM "floor") + (UNSPEC_FRINTI "nearbyint") + (UNSPEC_FRINTX "rint") +- (UNSPEC_FRINTA "round")]) ++ (UNSPEC_FRINTA "round") ++ (UNSPEC_FRINTN "frintn")]) + + ;; frint suffix for floating-point rounding instructions. + (define_int_attr frint_suffix [(UNSPEC_FRINTZ "z") (UNSPEC_FRINTP "p") + (UNSPEC_FRINTM "m") (UNSPEC_FRINTI "i") +- (UNSPEC_FRINTX "x") (UNSPEC_FRINTA "a")]) ++ (UNSPEC_FRINTX "x") (UNSPEC_FRINTA "a") ++ (UNSPEC_FRINTN "n")]) + + (define_int_attr fcvt_pattern [(UNSPEC_FRINTZ "btrunc") (UNSPEC_FRINTA "round") +- (UNSPEC_FRINTP "ceil") (UNSPEC_FRINTM "floor")]) ++ (UNSPEC_FRINTP "ceil") (UNSPEC_FRINTM "floor") ++ (UNSPEC_FRINTN "frintn")]) + + (define_int_attr perm_insn [(UNSPEC_ZIP1 "zip") (UNSPEC_ZIP2 "zip") + (UNSPEC_TRN1 "trn") (UNSPEC_TRN2 "trn") +@@ -800,3 +837,5 @@ + (define_int_attr perm_hilo [(UNSPEC_ZIP1 "1") (UNSPEC_ZIP2 "2") + (UNSPEC_TRN1 "1") (UNSPEC_TRN2 "2") + (UNSPEC_UZP1 "1") (UNSPEC_UZP2 "2")]) ++ ++(define_int_attr frecp_suffix [(UNSPEC_FRECPE "e") (UNSPEC_FRECPX "x")]) +--- a/src/gcc/config/aarch64/aarch64.h ++++ b/src/gcc/config/aarch64/aarch64.h +@@ -709,6 +709,8 @@ + + #define SELECT_CC_MODE(OP, X, Y) aarch64_select_cc_mode (OP, X, Y) + ++#define REVERSIBLE_CC_MODE(MODE) 1 ++ + #define REVERSE_CONDITION(CODE, MODE) \ + (((MODE) == CCFPmode || (MODE) == CCFPEmode) \ + ? reverse_condition_maybe_unordered (CODE) \ --- a/src/gcc/config/arm/arm-tables.opt +++ b/src/gcc/config/arm/arm-tables.opt @@ -250,6 +250,9 @@ @@ -2062,7 +12717,29 @@ EnumValue --- a/src/gcc/config/arm/arm.c +++ b/src/gcc/config/arm/arm.c -@@ -839,6 +839,10 @@ +@@ -173,6 +173,7 @@ + static tree arm_builtin_decl (unsigned, bool); + static void emit_constant_insn (rtx cond, rtx pattern); + static rtx emit_set_insn (rtx, rtx); ++static rtx emit_multi_reg_push (unsigned long); + static int arm_arg_partial_bytes (cumulative_args_t, enum machine_mode, + tree, bool); + static rtx arm_function_arg (cumulative_args_t, enum machine_mode, +@@ -620,6 +621,13 @@ + #undef TARGET_CLASS_LIKELY_SPILLED_P + #define TARGET_CLASS_LIKELY_SPILLED_P arm_class_likely_spilled_p + ++#undef TARGET_VECTORIZE_BUILTINS ++#define TARGET_VECTORIZE_BUILTINS ++ ++#undef TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION ++#define TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION \ ++ arm_builtin_vectorized_function ++ + #undef TARGET_VECTOR_ALIGNMENT + #define TARGET_VECTOR_ALIGNMENT arm_vector_alignment + +@@ -839,6 +847,10 @@ int arm_arch_arm_hwdiv; int arm_arch_thumb_hwdiv; @@ -2073,7 +12750,7 @@ /* In case of a PRE_INC, POST_INC, PRE_DEC, POST_DEC memory reference, we must report the mode of the memory reference from TARGET_PRINT_OPERAND to TARGET_PRINT_OPERAND_ADDRESS. */ -@@ -936,6 +940,7 @@ +@@ -936,6 +948,7 @@ false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ @@ -2081,7 +12758,7 @@ }; const struct tune_params arm_fastmul_tune = -@@ -950,6 +955,7 @@ +@@ -950,6 +963,7 @@ false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ @@ -2089,7 +12766,7 @@ }; /* StrongARM has early execution of branches, so a sequence that is worth -@@ -967,6 +973,7 @@ +@@ -967,6 +981,7 @@ false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ @@ -2097,7 +12774,7 @@ }; const struct tune_params arm_xscale_tune = -@@ -981,6 +988,7 @@ +@@ -981,6 +996,7 @@ false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ @@ -2105,7 +12782,7 @@ }; const struct tune_params arm_9e_tune = -@@ -995,6 +1003,7 @@ +@@ -995,6 +1011,7 @@ false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ @@ -2113,7 +12790,7 @@ }; const struct tune_params arm_v6t2_tune = -@@ -1009,6 +1018,7 @@ +@@ -1009,6 +1026,7 @@ false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ @@ -2121,7 +12798,7 @@ }; /* Generic Cortex tuning. Use more specific tunings if appropriate. */ -@@ -1024,6 +1034,7 @@ +@@ -1024,6 +1042,7 @@ false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ @@ -2129,7 +12806,7 @@ }; const struct tune_params arm_cortex_a15_tune = -@@ -1038,6 +1049,7 @@ +@@ -1038,6 +1057,7 @@ true, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ @@ -2137,7 +12814,7 @@ }; /* Branches can be dual-issued on Cortex-A5, so conditional execution is -@@ -1055,6 +1067,7 @@ +@@ -1055,6 +1075,7 @@ false, /* Prefer LDRD/STRD. */ {false, false}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ @@ -2145,7 +12822,7 @@ }; const struct tune_params arm_cortex_a9_tune = -@@ -1069,6 +1082,7 @@ +@@ -1069,6 +1090,7 @@ false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ @@ -2153,7 +12830,7 @@ }; /* The arm_v6m_tune is duplicated from arm_cortex_tune, rather than -@@ -1085,6 +1099,7 @@ +@@ -1085,6 +1107,7 @@ false, /* Prefer LDRD/STRD. */ {false, false}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ @@ -2161,7 +12838,7 @@ }; const struct tune_params arm_fa726te_tune = -@@ -1099,6 +1114,7 @@ +@@ -1099,6 +1122,7 @@ false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ @@ -2169,7 +12846,7 @@ }; -@@ -2129,6 +2145,12 @@ +@@ -2129,6 +2153,12 @@ global_options.x_param_values, global_options_set.x_param_values); @@ -2182,7 +12859,1090 @@ /* Use the alternative scheduling-pressure algorithm by default. */ maybe_set_param_value (PARAM_SCHED_PRESSURE_ALGORITHM, 2, global_options.x_param_values, -@@ -25847,6 +25869,7 @@ +@@ -2382,6 +2412,10 @@ + if (IS_INTERRUPT (func_type) && (frame_pointer_needed || TARGET_THUMB)) + return 0; + ++ if (TARGET_LDRD && current_tune->prefer_ldrd_strd ++ && !optimize_function_for_size_p (cfun)) ++ return 0; ++ + offsets = arm_get_frame_offsets (); + stack_adjust = offsets->outgoing_args - offsets->saved_regs; + +@@ -2617,6 +2651,9 @@ + + switch (code) + { ++ case AND: ++ return (const_ok_for_op (hi_val, code) || hi_val == 0xFFFFFFFF) ++ && (const_ok_for_op (lo_val, code) || lo_val == 0xFFFFFFFF); + case PLUS: + return arm_not_operand (hi, SImode) && arm_add_operand (lo, SImode); + +@@ -12603,6 +12640,277 @@ + return true; + } + ++/* Helper for gen_operands_ldrd_strd. Returns true iff the memory ++ operand ADDR is an immediate offset from the base register and is ++ not volatile, in which case it sets BASE and OFFSET ++ accordingly. */ ++bool ++mem_ok_for_ldrd_strd (rtx addr, rtx *base, rtx *offset) ++{ ++ /* TODO: Handle more general memory operand patterns, such as ++ PRE_DEC and PRE_INC. */ ++ ++ /* Convert a subreg of mem into mem itself. */ ++ if (GET_CODE (addr) == SUBREG) ++ addr = alter_subreg (&addr, true); ++ ++ gcc_assert (MEM_P (addr)); ++ ++ /* Don't modify volatile memory accesses. */ ++ if (MEM_VOLATILE_P (addr)) ++ return false; ++ ++ *offset = const0_rtx; ++ ++ addr = XEXP (addr, 0); ++ if (REG_P (addr)) ++ { ++ *base = addr; ++ return true; ++ } ++ else if (GET_CODE (addr) == PLUS || GET_CODE (addr) == MINUS) ++ { ++ *base = XEXP (addr, 0); ++ *offset = XEXP (addr, 1); ++ return (REG_P (*base) && CONST_INT_P (*offset)); ++ } ++ ++ return false; ++} ++ ++#define SWAP_RTX(x,y) do { rtx tmp = x; x = y; y = tmp; } while (0) ++ ++/* Called from a peephole2 to replace two word-size accesses with a ++ single LDRD/STRD instruction. Returns true iff we can generate a ++ new instruction sequence. That is, both accesses use the same base ++ register and the gap between constant offsets is 4. This function ++ may reorder its operands to match ldrd/strd RTL templates. ++ OPERANDS are the operands found by the peephole matcher; ++ OPERANDS[0,1] are register operands, and OPERANDS[2,3] are the ++ corresponding memory operands. LOAD indicaates whether the access ++ is load or store. CONST_STORE indicates a store of constant ++ integer values held in OPERANDS[4,5] and assumes that the pattern ++ is of length 4 insn, for the purpose of checking dead registers. ++ COMMUTE indicates that register operands may be reordered. */ ++bool ++gen_operands_ldrd_strd (rtx *operands, bool load, ++ bool const_store, bool commute) ++{ ++ int nops = 2; ++ HOST_WIDE_INT offsets[2], offset; ++ rtx base = NULL_RTX; ++ rtx cur_base, cur_offset, tmp; ++ int i, gap; ++ HARD_REG_SET regset; ++ ++ gcc_assert (!const_store || !load); ++ /* Check that the memory references are immediate offsets from the ++ same base register. Extract the base register, the destination ++ registers, and the corresponding memory offsets. */ ++ for (i = 0; i < nops; i++) ++ { ++ if (!mem_ok_for_ldrd_strd (operands[nops+i], &cur_base, &cur_offset)) ++ return false; ++ ++ if (i == 0) ++ base = cur_base; ++ else if (REGNO (base) != REGNO (cur_base)) ++ return false; ++ ++ offsets[i] = INTVAL (cur_offset); ++ if (GET_CODE (operands[i]) == SUBREG) ++ { ++ tmp = SUBREG_REG (operands[i]); ++ gcc_assert (GET_MODE (operands[i]) == GET_MODE (tmp)); ++ operands[i] = tmp; ++ } ++ } ++ ++ /* Make sure there is no dependency between the individual loads. */ ++ if (load && REGNO (operands[0]) == REGNO (base)) ++ return false; /* RAW */ ++ ++ if (load && REGNO (operands[0]) == REGNO (operands[1])) ++ return false; /* WAW */ ++ ++ /* If the same input register is used in both stores ++ when storing different constants, try to find a free register. ++ For example, the code ++ mov r0, 0 ++ str r0, [r2] ++ mov r0, 1 ++ str r0, [r2, #4] ++ can be transformed into ++ mov r1, 0 ++ strd r1, r0, [r2] ++ in Thumb mode assuming that r1 is free. */ ++ if (const_store ++ && REGNO (operands[0]) == REGNO (operands[1]) ++ && INTVAL (operands[4]) != INTVAL (operands[5])) ++ { ++ if (TARGET_THUMB2) ++ { ++ CLEAR_HARD_REG_SET (regset); ++ tmp = peep2_find_free_register (0, 4, "r", SImode, ®set); ++ if (tmp == NULL_RTX) ++ return false; ++ ++ /* Use the new register in the first load to ensure that ++ if the original input register is not dead after peephole, ++ then it will have the correct constant value. */ ++ operands[0] = tmp; ++ } ++ else if (TARGET_ARM) ++ { ++ return false; ++ int regno = REGNO (operands[0]); ++ if (!peep2_reg_dead_p (4, operands[0])) ++ { ++ /* When the input register is even and is not dead after the ++ pattern, it has to hold the second constant but we cannot ++ form a legal STRD in ARM mode with this register as the second ++ register. */ ++ if (regno % 2 == 0) ++ return false; ++ ++ /* Is regno-1 free? */ ++ SET_HARD_REG_SET (regset); ++ CLEAR_HARD_REG_BIT(regset, regno - 1); ++ tmp = peep2_find_free_register (0, 4, "r", SImode, ®set); ++ if (tmp == NULL_RTX) ++ return false; ++ ++ operands[0] = tmp; ++ } ++ else ++ { ++ /* Find a DImode register. */ ++ CLEAR_HARD_REG_SET (regset); ++ tmp = peep2_find_free_register (0, 4, "r", DImode, ®set); ++ if (tmp != NULL_RTX) ++ { ++ operands[0] = simplify_gen_subreg (SImode, tmp, DImode, 0); ++ operands[1] = simplify_gen_subreg (SImode, tmp, DImode, 4); ++ } ++ else ++ { ++ /* Can we use the input register to form a DI register? */ ++ SET_HARD_REG_SET (regset); ++ CLEAR_HARD_REG_BIT(regset, ++ regno % 2 == 0 ? regno + 1 : regno - 1); ++ tmp = peep2_find_free_register (0, 4, "r", SImode, ®set); ++ if (tmp == NULL_RTX) ++ return false; ++ operands[regno % 2 == 1 ? 0 : 1] = tmp; ++ } ++ } ++ ++ gcc_assert (operands[0] != NULL_RTX); ++ gcc_assert (operands[1] != NULL_RTX); ++ gcc_assert (REGNO (operands[0]) % 2 == 0); ++ gcc_assert (REGNO (operands[1]) == REGNO (operands[0]) + 1); ++ } ++ } ++ ++ /* Make sure the instructions are ordered with lower memory access first. */ ++ if (offsets[0] > offsets[1]) ++ { ++ gap = offsets[0] - offsets[1]; ++ offset = offsets[1]; ++ ++ /* Swap the instructions such that lower memory is accessed first. */ ++ SWAP_RTX (operands[0], operands[1]); ++ SWAP_RTX (operands[2], operands[3]); ++ if (const_store) ++ SWAP_RTX (operands[4], operands[5]); ++ } ++ else ++ { ++ gap = offsets[1] - offsets[0]; ++ offset = offsets[0]; ++ } ++ ++ /* Make sure accesses are to consecutive memory locations. */ ++ if (gap != 4) ++ return false; ++ ++ /* Make sure we generate legal instructions. */ ++ if (operands_ok_ldrd_strd (operands[0], operands[1], base, offset, ++ false, load)) ++ return true; ++ ++ /* In Thumb state, where registers are almost unconstrained, there ++ is little hope to fix it. */ ++ if (TARGET_THUMB2) ++ return false; ++ ++ if (load && commute) ++ { ++ /* Try reordering registers. */ ++ SWAP_RTX (operands[0], operands[1]); ++ if (operands_ok_ldrd_strd (operands[0], operands[1], base, offset, ++ false, load)) ++ return true; ++ } ++ ++ if (const_store) ++ { ++ /* If input registers are dead after this pattern, they can be ++ reordered or replaced by other registers that are free in the ++ current pattern. */ ++ if (!peep2_reg_dead_p (4, operands[0]) ++ || !peep2_reg_dead_p (4, operands[1])) ++ return false; ++ ++ /* Try to reorder the input registers. */ ++ /* For example, the code ++ mov r0, 0 ++ mov r1, 1 ++ str r1, [r2] ++ str r0, [r2, #4] ++ can be transformed into ++ mov r1, 0 ++ mov r0, 1 ++ strd r0, [r2] ++ */ ++ if (operands_ok_ldrd_strd (operands[1], operands[0], base, offset, ++ false, false)) ++ { ++ SWAP_RTX (operands[0], operands[1]); ++ return true; ++ } ++ ++ /* Try to find a free DI register. */ ++ CLEAR_HARD_REG_SET (regset); ++ add_to_hard_reg_set (®set, SImode, REGNO (operands[0])); ++ add_to_hard_reg_set (®set, SImode, REGNO (operands[1])); ++ while (true) ++ { ++ tmp = peep2_find_free_register (0, 4, "r", DImode, ®set); ++ if (tmp == NULL_RTX) ++ return false; ++ ++ /* DREG must be an even-numbered register in DImode. ++ Split it into SI registers. */ ++ operands[0] = simplify_gen_subreg (SImode, tmp, DImode, 0); ++ operands[1] = simplify_gen_subreg (SImode, tmp, DImode, 4); ++ gcc_assert (operands[0] != NULL_RTX); ++ gcc_assert (operands[1] != NULL_RTX); ++ gcc_assert (REGNO (operands[0]) % 2 == 0); ++ gcc_assert (REGNO (operands[0]) + 1 == REGNO (operands[1])); ++ ++ return (operands_ok_ldrd_strd (operands[0], operands[1], ++ base, offset, ++ false, load)); ++ } ++ } ++ ++ return false; ++} ++#undef SWAP_RTX ++ ++ ++ + + /* Print a symbolic form of X to the debug file, F. */ + static void +@@ -14794,7 +15102,8 @@ + { + /* Constraints should ensure this. */ + gcc_assert (code0 == MEM && code1 == REG); +- gcc_assert (REGNO (operands[1]) != IP_REGNUM); ++ gcc_assert ((REGNO (operands[1]) != IP_REGNUM) ++ || (TARGET_ARM && TARGET_LDRD)); + + switch (GET_CODE (XEXP (operands[0], 0))) + { +@@ -16387,6 +16696,148 @@ + return; + } + ++/* STRD in ARM mode requires consecutive registers. This function emits STRD ++ whenever possible, otherwise it emits single-word stores. The first store ++ also allocates stack space for all saved registers, using writeback with ++ post-addressing mode. All other stores use offset addressing. If no STRD ++ can be emitted, this function emits a sequence of single-word stores, ++ and not an STM as before, because single-word stores provide more freedom ++ scheduling and can be turned into an STM by peephole optimizations. */ ++static void ++arm_emit_strd_push (unsigned long saved_regs_mask) ++{ ++ int num_regs = 0; ++ int i, j, dwarf_index = 0; ++ int offset = 0; ++ rtx dwarf = NULL_RTX; ++ rtx insn = NULL_RTX; ++ rtx tmp, mem; ++ ++ /* TODO: A more efficient code can be emitted by changing the ++ layout, e.g., first push all pairs that can use STRD to keep the ++ stack aligned, and then push all other registers. */ ++ for (i = 0; i <= LAST_ARM_REGNUM; i++) ++ if (saved_regs_mask & (1 << i)) ++ num_regs++; ++ ++ gcc_assert (!(saved_regs_mask & (1 << SP_REGNUM))); ++ gcc_assert (!(saved_regs_mask & (1 << PC_REGNUM))); ++ gcc_assert (num_regs > 0); ++ ++ /* Create sequence for DWARF info. */ ++ dwarf = gen_rtx_SEQUENCE (VOIDmode, rtvec_alloc (num_regs + 1)); ++ ++ /* For dwarf info, we generate explicit stack update. */ ++ tmp = gen_rtx_SET (VOIDmode, ++ stack_pointer_rtx, ++ plus_constant (Pmode, stack_pointer_rtx, -4 * num_regs)); ++ RTX_FRAME_RELATED_P (tmp) = 1; ++ XVECEXP (dwarf, 0, dwarf_index++) = tmp; ++ ++ /* Save registers. */ ++ offset = - 4 * num_regs; ++ j = 0; ++ while (j <= LAST_ARM_REGNUM) ++ if (saved_regs_mask & (1 << j)) ++ { ++ if ((j % 2 == 0) ++ && (saved_regs_mask & (1 << (j + 1)))) ++ { ++ /* Current register and previous register form register pair for ++ which STRD can be generated. */ ++ if (offset < 0) ++ { ++ /* Allocate stack space for all saved registers. */ ++ tmp = plus_constant (Pmode, stack_pointer_rtx, offset); ++ tmp = gen_rtx_PRE_MODIFY (Pmode, stack_pointer_rtx, tmp); ++ mem = gen_frame_mem (DImode, tmp); ++ offset = 0; ++ } ++ else if (offset > 0) ++ mem = gen_frame_mem (DImode, ++ plus_constant (Pmode, ++ stack_pointer_rtx, ++ offset)); ++ else ++ mem = gen_frame_mem (DImode, stack_pointer_rtx); ++ ++ tmp = gen_rtx_SET (DImode, mem, gen_rtx_REG (DImode, j)); ++ RTX_FRAME_RELATED_P (tmp) = 1; ++ tmp = emit_insn (tmp); ++ ++ /* Record the first store insn. */ ++ if (dwarf_index == 1) ++ insn = tmp; ++ ++ /* Generate dwarf info. */ ++ mem = gen_frame_mem (SImode, ++ plus_constant (Pmode, ++ stack_pointer_rtx, ++ offset)); ++ tmp = gen_rtx_SET (SImode, mem, gen_rtx_REG (SImode, j)); ++ RTX_FRAME_RELATED_P (tmp) = 1; ++ XVECEXP (dwarf, 0, dwarf_index++) = tmp; ++ ++ mem = gen_frame_mem (SImode, ++ plus_constant (Pmode, ++ stack_pointer_rtx, ++ offset + 4)); ++ tmp = gen_rtx_SET (SImode, mem, gen_rtx_REG (SImode, j + 1)); ++ RTX_FRAME_RELATED_P (tmp) = 1; ++ XVECEXP (dwarf, 0, dwarf_index++) = tmp; ++ ++ offset += 8; ++ j += 2; ++ } ++ else ++ { ++ /* Emit a single word store. */ ++ if (offset < 0) ++ { ++ /* Allocate stack space for all saved registers. */ ++ tmp = plus_constant (Pmode, stack_pointer_rtx, offset); ++ tmp = gen_rtx_PRE_MODIFY (Pmode, stack_pointer_rtx, tmp); ++ mem = gen_frame_mem (SImode, tmp); ++ offset = 0; ++ } ++ else if (offset > 0) ++ mem = gen_frame_mem (SImode, ++ plus_constant (Pmode, ++ stack_pointer_rtx, ++ offset)); ++ else ++ mem = gen_frame_mem (SImode, stack_pointer_rtx); ++ ++ tmp = gen_rtx_SET (SImode, mem, gen_rtx_REG (SImode, j)); ++ RTX_FRAME_RELATED_P (tmp) = 1; ++ tmp = emit_insn (tmp); ++ ++ /* Record the first store insn. */ ++ if (dwarf_index == 1) ++ insn = tmp; ++ ++ /* Generate dwarf info. */ ++ mem = gen_frame_mem (SImode, ++ plus_constant(Pmode, ++ stack_pointer_rtx, ++ offset)); ++ tmp = gen_rtx_SET (SImode, mem, gen_rtx_REG (SImode, j)); ++ RTX_FRAME_RELATED_P (tmp) = 1; ++ XVECEXP (dwarf, 0, dwarf_index++) = tmp; ++ ++ offset += 4; ++ j += 1; ++ } ++ } ++ else ++ j++; ++ ++ /* Attach dwarf info to the first insn we generate. */ ++ gcc_assert (insn != NULL_RTX); ++ add_reg_note (insn, REG_FRAME_RELATED_EXPR, dwarf); ++ RTX_FRAME_RELATED_P (insn) = 1; ++} ++ + /* Generate and emit an insn that we will recognize as a push_multi. + Unfortunately, since this insn does not reflect very well the actual + semantics of the operation, we need to annotate the insn for the benefit +@@ -16586,6 +17037,17 @@ + if (saved_regs_mask & (1 << i)) + { + reg = gen_rtx_REG (SImode, i); ++ if ((num_regs == 1) && emit_update && !return_in_pc) ++ { ++ /* Emit single load with writeback. */ ++ tmp = gen_frame_mem (SImode, ++ gen_rtx_POST_INC (Pmode, ++ stack_pointer_rtx)); ++ tmp = emit_insn (gen_rtx_SET (VOIDmode, reg, tmp)); ++ REG_NOTES (tmp) = alloc_reg_note (REG_CFA_RESTORE, reg, dwarf); ++ return; ++ } ++ + tmp = gen_rtx_SET (VOIDmode, + reg, + gen_frame_mem +@@ -16817,6 +17279,129 @@ + return; + } + ++/* LDRD in ARM mode needs consecutive registers as operands. This function ++ emits LDRD whenever possible, otherwise it emits single-word loads. It uses ++ offset addressing and then generates one separate stack udpate. This provides ++ more scheduling freedom, compared to writeback on every load. However, ++ if the function returns using load into PC directly ++ (i.e., if PC is in SAVED_REGS_MASK), the stack needs to be updated ++ before the last load. TODO: Add a peephole optimization to recognize ++ the new epilogue sequence as an LDM instruction whenever possible. TODO: Add ++ peephole optimization to merge the load at stack-offset zero ++ with the stack update instruction using load with writeback ++ in post-index addressing mode. */ ++static void ++arm_emit_ldrd_pop (unsigned long saved_regs_mask) ++{ ++ int j = 0; ++ int offset = 0; ++ rtx par = NULL_RTX; ++ rtx dwarf = NULL_RTX; ++ rtx tmp, mem; ++ ++ /* Restore saved registers. */ ++ gcc_assert (!((saved_regs_mask & (1 << SP_REGNUM)))); ++ j = 0; ++ while (j <= LAST_ARM_REGNUM) ++ if (saved_regs_mask & (1 << j)) ++ { ++ if ((j % 2) == 0 ++ && (saved_regs_mask & (1 << (j + 1))) ++ && (j + 1) != PC_REGNUM) ++ { ++ /* Current register and next register form register pair for which ++ LDRD can be generated. PC is always the last register popped, and ++ we handle it separately. */ ++ if (offset > 0) ++ mem = gen_frame_mem (DImode, ++ plus_constant (Pmode, ++ stack_pointer_rtx, ++ offset)); ++ else ++ mem = gen_frame_mem (DImode, stack_pointer_rtx); ++ ++ tmp = gen_rtx_SET (DImode, gen_rtx_REG (DImode, j), mem); ++ RTX_FRAME_RELATED_P (tmp) = 1; ++ tmp = emit_insn (tmp); ++ ++ /* Generate dwarf info. */ ++ ++ dwarf = alloc_reg_note (REG_CFA_RESTORE, ++ gen_rtx_REG (SImode, j), ++ NULL_RTX); ++ dwarf = alloc_reg_note (REG_CFA_RESTORE, ++ gen_rtx_REG (SImode, j + 1), ++ dwarf); ++ ++ REG_NOTES (tmp) = dwarf; ++ ++ offset += 8; ++ j += 2; ++ } ++ else if (j != PC_REGNUM) ++ { ++ /* Emit a single word load. */ ++ if (offset > 0) ++ mem = gen_frame_mem (SImode, ++ plus_constant (Pmode, ++ stack_pointer_rtx, ++ offset)); ++ else ++ mem = gen_frame_mem (SImode, stack_pointer_rtx); ++ ++ tmp = gen_rtx_SET (SImode, gen_rtx_REG (SImode, j), mem); ++ RTX_FRAME_RELATED_P (tmp) = 1; ++ tmp = emit_insn (tmp); ++ ++ /* Generate dwarf info. */ ++ REG_NOTES (tmp) = alloc_reg_note (REG_CFA_RESTORE, ++ gen_rtx_REG (SImode, j), ++ NULL_RTX); ++ ++ offset += 4; ++ j += 1; ++ } ++ else /* j == PC_REGNUM */ ++ j++; ++ } ++ else ++ j++; ++ ++ /* Update the stack. */ ++ if (offset > 0) ++ { ++ tmp = gen_rtx_SET (Pmode, ++ stack_pointer_rtx, ++ plus_constant (Pmode, ++ stack_pointer_rtx, ++ offset)); ++ RTX_FRAME_RELATED_P (tmp) = 1; ++ emit_insn (tmp); ++ offset = 0; ++ } ++ ++ if (saved_regs_mask & (1 << PC_REGNUM)) ++ { ++ /* Only PC is to be popped. */ ++ par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2)); ++ XVECEXP (par, 0, 0) = ret_rtx; ++ tmp = gen_rtx_SET (SImode, ++ gen_rtx_REG (SImode, PC_REGNUM), ++ gen_frame_mem (SImode, ++ gen_rtx_POST_INC (SImode, ++ stack_pointer_rtx))); ++ RTX_FRAME_RELATED_P (tmp) = 1; ++ XVECEXP (par, 0, 1) = tmp; ++ par = emit_jump_insn (par); ++ ++ /* Generate dwarf info. */ ++ dwarf = alloc_reg_note (REG_CFA_RESTORE, ++ gen_rtx_REG (SImode, PC_REGNUM), ++ NULL_RTX); ++ REG_NOTES (par) = dwarf; ++ } ++} ++ + /* Calculate the size of the return value that is passed in registers. */ + static unsigned + arm_size_return_regs (void) +@@ -17026,9 +17611,10 @@ + /* If it is safe to use r3, then do so. This sometimes + generates better code on Thumb-2 by avoiding the need to + use 32-bit push/pop instructions. */ +- if (! any_sibcall_uses_r3 () ++ if (! any_sibcall_uses_r3 () + && arm_size_return_regs () <= 12 +- && (offsets->saved_regs_mask & (1 << 3)) == 0) ++ && (offsets->saved_regs_mask & (1 << 3)) == 0 ++ && (TARGET_THUMB2 || !current_tune->prefer_ldrd_strd)) + { + reg = 3; + } +@@ -17460,6 +18046,12 @@ + { + thumb2_emit_strd_push (live_regs_mask); + } ++ else if (TARGET_ARM ++ && !TARGET_APCS_FRAME ++ && !IS_INTERRUPT (func_type)) ++ { ++ arm_emit_strd_push (live_regs_mask); ++ } + else + { + insn = emit_multi_reg_push (live_regs_mask); +@@ -19339,6 +19931,7 @@ + typedef enum { + T_V8QI, + T_V4HI, ++ T_V4HF, + T_V2SI, + T_V2SF, + T_DI, +@@ -19356,14 +19949,15 @@ + #define TYPE_MODE_BIT(X) (1 << (X)) + + #define TB_DREG (TYPE_MODE_BIT (T_V8QI) | TYPE_MODE_BIT (T_V4HI) \ +- | TYPE_MODE_BIT (T_V2SI) | TYPE_MODE_BIT (T_V2SF) \ +- | TYPE_MODE_BIT (T_DI)) ++ | TYPE_MODE_BIT (T_V4HF) | TYPE_MODE_BIT (T_V2SI) \ ++ | TYPE_MODE_BIT (T_V2SF) | TYPE_MODE_BIT (T_DI)) + #define TB_QREG (TYPE_MODE_BIT (T_V16QI) | TYPE_MODE_BIT (T_V8HI) \ + | TYPE_MODE_BIT (T_V4SI) | TYPE_MODE_BIT (T_V4SF) \ + | TYPE_MODE_BIT (T_V2DI) | TYPE_MODE_BIT (T_TI)) + + #define v8qi_UP T_V8QI + #define v4hi_UP T_V4HI ++#define v4hf_UP T_V4HF + #define v2si_UP T_V2SI + #define v2sf_UP T_V2SF + #define di_UP T_DI +@@ -19399,6 +19993,8 @@ + NEON_SCALARMULH, + NEON_SCALARMAC, + NEON_CONVERT, ++ NEON_FLOAT_WIDEN, ++ NEON_FLOAT_NARROW, + NEON_FIXCONV, + NEON_SELECT, + NEON_RESULTPAIR, +@@ -19459,7 +20055,8 @@ + VAR9 (T, N, A, B, C, D, E, F, G, H, I), \ + {#N, NEON_##T, UP (J), CF (N, J), 0} + +-/* The mode entries in the following table correspond to the "key" type of the ++/* The NEON builtin data can be found in arm_neon_builtins.def. ++ The mode entries in the following table correspond to the "key" type of the + instruction variant, i.e. equivalent to that which would be specified after + the assembler mnemonic, which usually refers to the last vector operand. + (Signed/unsigned/polynomial types are not differentiated between though, and +@@ -19469,196 +20066,7 @@ + + static neon_builtin_datum neon_builtin_data[] = + { +- VAR10 (BINOP, vadd, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR3 (BINOP, vaddl, v8qi, v4hi, v2si), +- VAR3 (BINOP, vaddw, v8qi, v4hi, v2si), +- VAR6 (BINOP, vhadd, v8qi, v4hi, v2si, v16qi, v8hi, v4si), +- VAR8 (BINOP, vqadd, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), +- VAR3 (BINOP, vaddhn, v8hi, v4si, v2di), +- VAR8 (BINOP, vmul, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR8 (TERNOP, vmla, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR3 (TERNOP, vmlal, v8qi, v4hi, v2si), +- VAR2 (TERNOP, vfma, v2sf, v4sf), +- VAR2 (TERNOP, vfms, v2sf, v4sf), +- VAR8 (TERNOP, vmls, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR3 (TERNOP, vmlsl, v8qi, v4hi, v2si), +- VAR4 (BINOP, vqdmulh, v4hi, v2si, v8hi, v4si), +- VAR2 (TERNOP, vqdmlal, v4hi, v2si), +- VAR2 (TERNOP, vqdmlsl, v4hi, v2si), +- VAR3 (BINOP, vmull, v8qi, v4hi, v2si), +- VAR2 (SCALARMULL, vmull_n, v4hi, v2si), +- VAR2 (LANEMULL, vmull_lane, v4hi, v2si), +- VAR2 (SCALARMULL, vqdmull_n, v4hi, v2si), +- VAR2 (LANEMULL, vqdmull_lane, v4hi, v2si), +- VAR4 (SCALARMULH, vqdmulh_n, v4hi, v2si, v8hi, v4si), +- VAR4 (LANEMULH, vqdmulh_lane, v4hi, v2si, v8hi, v4si), +- VAR2 (BINOP, vqdmull, v4hi, v2si), +- VAR8 (BINOP, vshl, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), +- VAR8 (BINOP, vqshl, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), +- VAR8 (SHIFTIMM, vshr_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), +- VAR3 (SHIFTIMM, vshrn_n, v8hi, v4si, v2di), +- VAR3 (SHIFTIMM, vqshrn_n, v8hi, v4si, v2di), +- VAR3 (SHIFTIMM, vqshrun_n, v8hi, v4si, v2di), +- VAR8 (SHIFTIMM, vshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), +- VAR8 (SHIFTIMM, vqshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), +- VAR8 (SHIFTIMM, vqshlu_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), +- VAR3 (SHIFTIMM, vshll_n, v8qi, v4hi, v2si), +- VAR8 (SHIFTACC, vsra_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), +- VAR10 (BINOP, vsub, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR3 (BINOP, vsubl, v8qi, v4hi, v2si), +- VAR3 (BINOP, vsubw, v8qi, v4hi, v2si), +- VAR8 (BINOP, vqsub, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), +- VAR6 (BINOP, vhsub, v8qi, v4hi, v2si, v16qi, v8hi, v4si), +- VAR3 (BINOP, vsubhn, v8hi, v4si, v2di), +- VAR8 (BINOP, vceq, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR8 (BINOP, vcge, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR6 (BINOP, vcgeu, v8qi, v4hi, v2si, v16qi, v8hi, v4si), +- VAR8 (BINOP, vcgt, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR6 (BINOP, vcgtu, v8qi, v4hi, v2si, v16qi, v8hi, v4si), +- VAR2 (BINOP, vcage, v2sf, v4sf), +- VAR2 (BINOP, vcagt, v2sf, v4sf), +- VAR6 (BINOP, vtst, v8qi, v4hi, v2si, v16qi, v8hi, v4si), +- VAR8 (BINOP, vabd, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR3 (BINOP, vabdl, v8qi, v4hi, v2si), +- VAR6 (TERNOP, vaba, v8qi, v4hi, v2si, v16qi, v8hi, v4si), +- VAR3 (TERNOP, vabal, v8qi, v4hi, v2si), +- VAR8 (BINOP, vmax, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR8 (BINOP, vmin, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR4 (BINOP, vpadd, v8qi, v4hi, v2si, v2sf), +- VAR6 (UNOP, vpaddl, v8qi, v4hi, v2si, v16qi, v8hi, v4si), +- VAR6 (BINOP, vpadal, v8qi, v4hi, v2si, v16qi, v8hi, v4si), +- VAR4 (BINOP, vpmax, v8qi, v4hi, v2si, v2sf), +- VAR4 (BINOP, vpmin, v8qi, v4hi, v2si, v2sf), +- VAR2 (BINOP, vrecps, v2sf, v4sf), +- VAR2 (BINOP, vrsqrts, v2sf, v4sf), +- VAR8 (SHIFTINSERT, vsri_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), +- VAR8 (SHIFTINSERT, vsli_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), +- VAR8 (UNOP, vabs, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR6 (UNOP, vqabs, v8qi, v4hi, v2si, v16qi, v8hi, v4si), +- VAR8 (UNOP, vneg, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR6 (UNOP, vqneg, v8qi, v4hi, v2si, v16qi, v8hi, v4si), +- VAR6 (UNOP, vcls, v8qi, v4hi, v2si, v16qi, v8hi, v4si), +- VAR6 (UNOP, vclz, v8qi, v4hi, v2si, v16qi, v8hi, v4si), +- VAR2 (UNOP, vcnt, v8qi, v16qi), +- VAR4 (UNOP, vrecpe, v2si, v2sf, v4si, v4sf), +- VAR4 (UNOP, vrsqrte, v2si, v2sf, v4si, v4sf), +- VAR6 (UNOP, vmvn, v8qi, v4hi, v2si, v16qi, v8hi, v4si), +- /* FIXME: vget_lane supports more variants than this! */ +- VAR10 (GETLANE, vget_lane, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR10 (SETLANE, vset_lane, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR5 (CREATE, vcreate, v8qi, v4hi, v2si, v2sf, di), +- VAR10 (DUP, vdup_n, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR10 (DUPLANE, vdup_lane, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR5 (COMBINE, vcombine, v8qi, v4hi, v2si, v2sf, di), +- VAR5 (SPLIT, vget_high, v16qi, v8hi, v4si, v4sf, v2di), +- VAR5 (SPLIT, vget_low, v16qi, v8hi, v4si, v4sf, v2di), +- VAR3 (UNOP, vmovn, v8hi, v4si, v2di), +- VAR3 (UNOP, vqmovn, v8hi, v4si, v2di), +- VAR3 (UNOP, vqmovun, v8hi, v4si, v2di), +- VAR3 (UNOP, vmovl, v8qi, v4hi, v2si), +- VAR6 (LANEMUL, vmul_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf), +- VAR6 (LANEMAC, vmla_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf), +- VAR2 (LANEMAC, vmlal_lane, v4hi, v2si), +- VAR2 (LANEMAC, vqdmlal_lane, v4hi, v2si), +- VAR6 (LANEMAC, vmls_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf), +- VAR2 (LANEMAC, vmlsl_lane, v4hi, v2si), +- VAR2 (LANEMAC, vqdmlsl_lane, v4hi, v2si), +- VAR6 (SCALARMUL, vmul_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf), +- VAR6 (SCALARMAC, vmla_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf), +- VAR2 (SCALARMAC, vmlal_n, v4hi, v2si), +- VAR2 (SCALARMAC, vqdmlal_n, v4hi, v2si), +- VAR6 (SCALARMAC, vmls_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf), +- VAR2 (SCALARMAC, vmlsl_n, v4hi, v2si), +- VAR2 (SCALARMAC, vqdmlsl_n, v4hi, v2si), +- VAR10 (BINOP, vext, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR8 (UNOP, vrev64, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR4 (UNOP, vrev32, v8qi, v4hi, v16qi, v8hi), +- VAR2 (UNOP, vrev16, v8qi, v16qi), +- VAR4 (CONVERT, vcvt, v2si, v2sf, v4si, v4sf), +- VAR4 (FIXCONV, vcvt_n, v2si, v2sf, v4si, v4sf), +- VAR10 (SELECT, vbsl, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR2 (RINT, vrintn, v2sf, v4sf), +- VAR2 (RINT, vrinta, v2sf, v4sf), +- VAR2 (RINT, vrintp, v2sf, v4sf), +- VAR2 (RINT, vrintm, v2sf, v4sf), +- VAR2 (RINT, vrintz, v2sf, v4sf), +- VAR2 (RINT, vrintx, v2sf, v4sf), +- VAR1 (VTBL, vtbl1, v8qi), +- VAR1 (VTBL, vtbl2, v8qi), +- VAR1 (VTBL, vtbl3, v8qi), +- VAR1 (VTBL, vtbl4, v8qi), +- VAR1 (VTBX, vtbx1, v8qi), +- VAR1 (VTBX, vtbx2, v8qi), +- VAR1 (VTBX, vtbx3, v8qi), +- VAR1 (VTBX, vtbx4, v8qi), +- VAR8 (RESULTPAIR, vtrn, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR8 (RESULTPAIR, vzip, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR8 (RESULTPAIR, vuzp, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), +- VAR5 (REINTERP, vreinterpretv8qi, v8qi, v4hi, v2si, v2sf, di), +- VAR5 (REINTERP, vreinterpretv4hi, v8qi, v4hi, v2si, v2sf, di), +- VAR5 (REINTERP, vreinterpretv2si, v8qi, v4hi, v2si, v2sf, di), +- VAR5 (REINTERP, vreinterpretv2sf, v8qi, v4hi, v2si, v2sf, di), +- VAR5 (REINTERP, vreinterpretdi, v8qi, v4hi, v2si, v2sf, di), +- VAR5 (REINTERP, vreinterpretv16qi, v16qi, v8hi, v4si, v4sf, v2di), +- VAR5 (REINTERP, vreinterpretv8hi, v16qi, v8hi, v4si, v4sf, v2di), +- VAR5 (REINTERP, vreinterpretv4si, v16qi, v8hi, v4si, v4sf, v2di), +- VAR5 (REINTERP, vreinterpretv4sf, v16qi, v8hi, v4si, v4sf, v2di), +- VAR5 (REINTERP, vreinterpretv2di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR10 (LOAD1, vld1, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR10 (LOAD1LANE, vld1_lane, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR10 (LOAD1, vld1_dup, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR10 (STORE1, vst1, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR10 (STORE1LANE, vst1_lane, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR9 (LOADSTRUCT, +- vld2, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), +- VAR7 (LOADSTRUCTLANE, vld2_lane, +- v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), +- VAR5 (LOADSTRUCT, vld2_dup, v8qi, v4hi, v2si, v2sf, di), +- VAR9 (STORESTRUCT, vst2, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), +- VAR7 (STORESTRUCTLANE, vst2_lane, +- v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), +- VAR9 (LOADSTRUCT, +- vld3, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), +- VAR7 (LOADSTRUCTLANE, vld3_lane, +- v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), +- VAR5 (LOADSTRUCT, vld3_dup, v8qi, v4hi, v2si, v2sf, di), +- VAR9 (STORESTRUCT, vst3, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), +- VAR7 (STORESTRUCTLANE, vst3_lane, +- v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), +- VAR9 (LOADSTRUCT, vld4, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), +- VAR7 (LOADSTRUCTLANE, vld4_lane, +- v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), +- VAR5 (LOADSTRUCT, vld4_dup, v8qi, v4hi, v2si, v2sf, di), +- VAR9 (STORESTRUCT, vst4, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), +- VAR7 (STORESTRUCTLANE, vst4_lane, +- v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), +- VAR10 (LOGICBINOP, vand, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR10 (LOGICBINOP, vorr, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR10 (BINOP, veor, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR10 (LOGICBINOP, vbic, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), +- VAR10 (LOGICBINOP, vorn, +- v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) ++#include "arm_neon_builtins.def" + }; + + #undef CF +@@ -19673,9 +20081,36 @@ + #undef VAR9 + #undef VAR10 + +-/* Neon defines builtins from ARM_BUILTIN_MAX upwards, though they don't have +- symbolic names defined here (which would require too much duplication). +- FIXME? */ ++#define CF(N,X) ARM_BUILTIN_NEON_##N##X ++#define VAR1(T, N, A) \ ++ CF (N, A) ++#define VAR2(T, N, A, B) \ ++ VAR1 (T, N, A), \ ++ CF (N, B) ++#define VAR3(T, N, A, B, C) \ ++ VAR2 (T, N, A, B), \ ++ CF (N, C) ++#define VAR4(T, N, A, B, C, D) \ ++ VAR3 (T, N, A, B, C), \ ++ CF (N, D) ++#define VAR5(T, N, A, B, C, D, E) \ ++ VAR4 (T, N, A, B, C, D), \ ++ CF (N, E) ++#define VAR6(T, N, A, B, C, D, E, F) \ ++ VAR5 (T, N, A, B, C, D, E), \ ++ CF (N, F) ++#define VAR7(T, N, A, B, C, D, E, F, G) \ ++ VAR6 (T, N, A, B, C, D, E, F), \ ++ CF (N, G) ++#define VAR8(T, N, A, B, C, D, E, F, G, H) \ ++ VAR7 (T, N, A, B, C, D, E, F, G), \ ++ CF (N, H) ++#define VAR9(T, N, A, B, C, D, E, F, G, H, I) \ ++ VAR8 (T, N, A, B, C, D, E, F, G, H), \ ++ CF (N, I) ++#define VAR10(T, N, A, B, C, D, E, F, G, H, I, J) \ ++ VAR9 (T, N, A, B, C, D, E, F, G, H, I), \ ++ CF (N, J) + enum arm_builtins + { + ARM_BUILTIN_GETWCGR0, +@@ -19924,11 +20359,25 @@ + + ARM_BUILTIN_WMERGE, + +- ARM_BUILTIN_NEON_BASE, ++#include "arm_neon_builtins.def" + +- ARM_BUILTIN_MAX = ARM_BUILTIN_NEON_BASE + ARRAY_SIZE (neon_builtin_data) ++ ,ARM_BUILTIN_MAX + }; + ++#define ARM_BUILTIN_NEON_BASE (ARM_BUILTIN_MAX - ARRAY_SIZE (neon_builtin_data)) ++ ++#undef CF ++#undef VAR1 ++#undef VAR2 ++#undef VAR3 ++#undef VAR4 ++#undef VAR5 ++#undef VAR6 ++#undef VAR7 ++#undef VAR8 ++#undef VAR9 ++#undef VAR10 ++ + static GTY(()) tree arm_builtin_decls[ARM_BUILTIN_MAX]; + + static void +@@ -19939,6 +20388,7 @@ + + tree neon_intQI_type_node; + tree neon_intHI_type_node; ++ tree neon_floatHF_type_node; + tree neon_polyQI_type_node; + tree neon_polyHI_type_node; + tree neon_intSI_type_node; +@@ -19965,6 +20415,7 @@ + + tree V8QI_type_node; + tree V4HI_type_node; ++ tree V4HF_type_node; + tree V2SI_type_node; + tree V2SF_type_node; + tree V16QI_type_node; +@@ -20019,6 +20470,9 @@ + neon_float_type_node = make_node (REAL_TYPE); + TYPE_PRECISION (neon_float_type_node) = FLOAT_TYPE_SIZE; + layout_type (neon_float_type_node); ++ neon_floatHF_type_node = make_node (REAL_TYPE); ++ TYPE_PRECISION (neon_floatHF_type_node) = GET_MODE_PRECISION (HFmode); ++ layout_type (neon_floatHF_type_node); + + /* Define typedefs which exactly correspond to the modes we are basing vector + types on. If you change these names you'll need to change +@@ -20027,6 +20481,8 @@ + "__builtin_neon_qi"); + (*lang_hooks.types.register_builtin_type) (neon_intHI_type_node, + "__builtin_neon_hi"); ++ (*lang_hooks.types.register_builtin_type) (neon_floatHF_type_node, ++ "__builtin_neon_hf"); + (*lang_hooks.types.register_builtin_type) (neon_intSI_type_node, + "__builtin_neon_si"); + (*lang_hooks.types.register_builtin_type) (neon_float_type_node, +@@ -20068,6 +20524,8 @@ + build_vector_type_for_mode (neon_intQI_type_node, V8QImode); + V4HI_type_node = + build_vector_type_for_mode (neon_intHI_type_node, V4HImode); ++ V4HF_type_node = ++ build_vector_type_for_mode (neon_floatHF_type_node, V4HFmode); + V2SI_type_node = + build_vector_type_for_mode (neon_intSI_type_node, V2SImode); + V2SF_type_node = +@@ -20190,7 +20648,7 @@ + neon_builtin_datum *d = &neon_builtin_data[i]; + + const char* const modenames[] = { +- "v8qi", "v4hi", "v2si", "v2sf", "di", ++ "v8qi", "v4hi", "v4hf", "v2si", "v2sf", "di", + "v16qi", "v8hi", "v4si", "v4sf", "v2di", + "ti", "ei", "oi" + }; +@@ -20393,8 +20851,9 @@ + case NEON_REINTERP: + { + /* We iterate over 5 doubleword types, then 5 quadword +- types. */ +- int rhs = d->mode % 5; ++ types. V4HF is not a type used in reinterpret, so we translate ++ d->mode to the correct index in reinterp_ftype_dreg. */ ++ int rhs = (d->mode - ((d->mode > T_V4HF) ? 1 : 0)) % 5; + switch (insn_data[d->code].operand[0].mode) + { + case V8QImode: ftype = reinterp_ftype_dreg[0][rhs]; break; +@@ -20411,7 +20870,38 @@ + } + } + break; ++ case NEON_FLOAT_WIDEN: ++ { ++ tree eltype = NULL_TREE; ++ tree return_type = NULL_TREE; + ++ switch (insn_data[d->code].operand[1].mode) ++ { ++ case V4HFmode: ++ eltype = V4HF_type_node; ++ return_type = V4SF_type_node; ++ break; ++ default: gcc_unreachable (); ++ } ++ ftype = build_function_type_list (return_type, eltype, NULL); ++ break; ++ } ++ case NEON_FLOAT_NARROW: ++ { ++ tree eltype = NULL_TREE; ++ tree return_type = NULL_TREE; ++ ++ switch (insn_data[d->code].operand[1].mode) ++ { ++ case V4SFmode: ++ eltype = V4SF_type_node; ++ return_type = V4HF_type_node; ++ break; ++ default: gcc_unreachable (); ++ } ++ ftype = build_function_type_list (return_type, eltype, NULL); ++ break; ++ } + default: + gcc_unreachable (); + } +@@ -21408,6 +21898,8 @@ + case NEON_DUP: + case NEON_RINT: + case NEON_SPLIT: ++ case NEON_FLOAT_WIDEN: ++ case NEON_FLOAT_NARROW: + case NEON_REINTERP: + return arm_expand_neon_args (target, icode, 1, type_mode, exp, fcode, + NEON_ARG_COPY_TO_REG, NEON_ARG_STOP); +@@ -21605,7 +22097,7 @@ + rtx op1; + rtx op2; + rtx pat; +- int fcode = DECL_FUNCTION_CODE (fndecl); ++ unsigned int fcode = DECL_FUNCTION_CODE (fndecl); + size_t i; + enum machine_mode tmode; + enum machine_mode mode0; +@@ -23771,6 +24263,8 @@ + { + if (TARGET_THUMB2) + thumb2_emit_ldrd_pop (saved_regs_mask); ++ else if (TARGET_ARM && !IS_INTERRUPT (func_type)) ++ arm_emit_ldrd_pop (saved_regs_mask); + else + arm_emit_multi_reg_pop (saved_regs_mask); + } +@@ -25039,7 +25533,7 @@ + { + /* Neon also supports V2SImode, etc. listed in the clause below. */ + if (TARGET_NEON && (mode == V2SFmode || mode == V4SImode || mode == V8HImode +- || mode == V16QImode || mode == V4SFmode || mode == V2DImode)) ++ || mode == V4HFmode || mode == V16QImode || mode == V4SFmode || mode == V2DImode)) + return true; + + if ((TARGET_NEON || TARGET_IWMMXT) +@@ -25854,6 +26348,7 @@ case cortexa7: case cortexa8: case cortexa9: @@ -2190,7 +13950,76 @@ case fa726te: case marvell_pj4: return 2; -@@ -26203,40 +26226,72 @@ +@@ -25882,6 +26377,7 @@ + { V8QImode, "__builtin_neon_uqi", "16__simd64_uint8_t" }, + { V4HImode, "__builtin_neon_hi", "16__simd64_int16_t" }, + { V4HImode, "__builtin_neon_uhi", "17__simd64_uint16_t" }, ++ { V4HFmode, "__builtin_neon_hf", "18__simd64_float16_t" }, + { V2SImode, "__builtin_neon_si", "16__simd64_int32_t" }, + { V2SImode, "__builtin_neon_usi", "17__simd64_uint32_t" }, + { V2SFmode, "__builtin_neon_sf", "18__simd64_float32_t" }, +@@ -25980,6 +26476,60 @@ + return !TARGET_THUMB1; + } + ++tree ++arm_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in) ++{ ++ enum machine_mode in_mode, out_mode; ++ int in_n, out_n; ++ ++ if (TREE_CODE (type_out) != VECTOR_TYPE ++ || TREE_CODE (type_in) != VECTOR_TYPE ++ || !(TARGET_NEON && TARGET_FPU_ARMV8 && flag_unsafe_math_optimizations)) ++ return NULL_TREE; ++ ++ out_mode = TYPE_MODE (TREE_TYPE (type_out)); ++ out_n = TYPE_VECTOR_SUBPARTS (type_out); ++ in_mode = TYPE_MODE (TREE_TYPE (type_in)); ++ in_n = TYPE_VECTOR_SUBPARTS (type_in); ++ ++/* ARM_CHECK_BUILTIN_MODE and ARM_FIND_VRINT_VARIANT are used to find the ++ decl of the vectorized builtin for the appropriate vector mode. ++ NULL_TREE is returned if no such builtin is available. */ ++#undef ARM_CHECK_BUILTIN_MODE ++#define ARM_CHECK_BUILTIN_MODE(C) \ ++ (out_mode == SFmode && out_n == C \ ++ && in_mode == SFmode && in_n == C) ++ ++#undef ARM_FIND_VRINT_VARIANT ++#define ARM_FIND_VRINT_VARIANT(N) \ ++ (ARM_CHECK_BUILTIN_MODE (2) \ ++ ? arm_builtin_decl(ARM_BUILTIN_NEON_##N##v2sf, false) \ ++ : (ARM_CHECK_BUILTIN_MODE (4) \ ++ ? arm_builtin_decl(ARM_BUILTIN_NEON_##N##v4sf, false) \ ++ : NULL_TREE)) ++ ++ if (DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL) ++ { ++ enum built_in_function fn = DECL_FUNCTION_CODE (fndecl); ++ switch (fn) ++ { ++ case BUILT_IN_FLOORF: ++ return ARM_FIND_VRINT_VARIANT (vrintm); ++ case BUILT_IN_CEILF: ++ return ARM_FIND_VRINT_VARIANT (vrintp); ++ case BUILT_IN_TRUNCF: ++ return ARM_FIND_VRINT_VARIANT (vrintz); ++ case BUILT_IN_ROUNDF: ++ return ARM_FIND_VRINT_VARIANT (vrinta); ++ default: ++ return NULL_TREE; ++ } ++ } ++ return NULL_TREE; ++} ++#undef ARM_CHECK_BUILTIN_MODE ++#undef ARM_FIND_VRINT_VARIANT ++ + /* The AAPCS sets the maximum alignment of a vector to 64 bits. */ + static HOST_WIDE_INT + arm_vector_alignment (const_tree type) +@@ -26210,40 +26760,72 @@ emit_insn (gen_memory_barrier ()); } @@ -2280,7 +14109,7 @@ emit_insn (gen (bval, rval, mem)); } -@@ -26271,6 +26326,15 @@ +@@ -26278,6 +26860,15 @@ mod_f = operands[7]; mode = GET_MODE (mem); @@ -2296,7 +14125,7 @@ switch (mode) { case QImode: -@@ -26345,8 +26409,20 @@ +@@ -26352,8 +26943,20 @@ scratch = operands[7]; mode = GET_MODE (mem); @@ -2318,7 +14147,7 @@ label1 = NULL_RTX; if (!is_weak) { -@@ -26355,7 +26431,7 @@ +@@ -26362,7 +26965,7 @@ } label2 = gen_label_rtx (); @@ -2327,7 +14156,7 @@ cond = arm_gen_compare_reg (NE, rval, oldval, scratch); x = gen_rtx_NE (VOIDmode, cond, const0_rtx); -@@ -26363,7 +26439,7 @@ +@@ -26370,7 +26973,7 @@ gen_rtx_LABEL_REF (Pmode, label2), pc_rtx); emit_unlikely_jump (gen_rtx_SET (VOIDmode, pc_rtx, x)); @@ -2336,7 +14165,7 @@ /* Weak or strong, we want EQ to be true for success, so that we match the flags that we got from the compare above. */ -@@ -26382,7 +26458,9 @@ +@@ -26389,7 +26992,9 @@ if (mod_f != MEMMODEL_RELAXED) emit_label (label2); @@ -2347,7 +14176,7 @@ if (mod_f == MEMMODEL_RELAXED) emit_label (label2); -@@ -26397,8 +26475,20 @@ +@@ -26404,8 +27009,20 @@ enum machine_mode wmode = (mode == DImode ? DImode : SImode); rtx label, x; @@ -2369,7 +14198,7 @@ label = gen_label_rtx (); emit_label (label); -@@ -26410,7 +26500,7 @@ +@@ -26417,7 +27034,7 @@ old_out = new_out; value = simplify_gen_subreg (wmode, value, mode, 0); @@ -2378,7 +14207,7 @@ switch (code) { -@@ -26458,12 +26548,15 @@ +@@ -26465,12 +27082,15 @@ break; } @@ -2426,9 +14255,27 @@ #ifndef TARGET_DEFAULT #define TARGET_DEFAULT (MASK_APCS_FRAME) #endif +@@ -1040,7 +1050,7 @@ + /* Modes valid for Neon D registers. */ + #define VALID_NEON_DREG_MODE(MODE) \ + ((MODE) == V2SImode || (MODE) == V4HImode || (MODE) == V8QImode \ +- || (MODE) == V2SFmode || (MODE) == DImode) ++ || (MODE) == V4HFmode || (MODE) == V2SFmode || (MODE) == DImode) + + /* Modes valid for Neon Q registers. */ + #define VALID_NEON_QREG_MODE(MODE) \ --- a/src/gcc/config/arm/unspecs.md +++ b/src/gcc/config/arm/unspecs.md -@@ -139,6 +139,10 @@ +@@ -83,6 +83,8 @@ + ; FPSCR rounding mode and signal inexactness. + UNSPEC_VRINTA ; Represent a float to integral float rounding + ; towards nearest, ties away from zero. ++ UNSPEC_RRX ; Rotate Right with Extend shifts register right ++ ; by one place, with Carry flag shifted into bit[31]. + ]) + + (define_c_enum "unspec" [ +@@ -139,6 +141,10 @@ VUNSPEC_ATOMIC_OP ; Represent an atomic operation. VUNSPEC_LL ; Represent a load-register-exclusive. VUNSPEC_SC ; Represent a store-register-exclusive. @@ -2464,7 +14311,23 @@ (const (symbol_ref "((enum attr_tune) arm_tune)"))) --- a/src/gcc/config/arm/arm-protos.h +++ b/src/gcc/config/arm/arm-protos.h -@@ -269,6 +269,8 @@ +@@ -78,6 +78,7 @@ + extern void neon_pairwise_reduce (rtx, rtx, enum machine_mode, + rtx (*) (rtx, rtx, rtx)); + extern rtx neon_make_constant (rtx); ++extern tree arm_builtin_vectorized_function (tree, tree, tree); + extern void neon_expand_vector_init (rtx, rtx); + extern void neon_lane_bounds (rtx, HOST_WIDE_INT, HOST_WIDE_INT); + extern void neon_const_bounds (rtx, HOST_WIDE_INT, HOST_WIDE_INT); +@@ -117,6 +118,7 @@ + extern rtx arm_gen_store_multiple (int *, int, rtx, int, rtx, HOST_WIDE_INT *); + extern bool offset_ok_for_ldrd_strd (HOST_WIDE_INT); + extern bool operands_ok_ldrd_strd (rtx, rtx, rtx, HOST_WIDE_INT, bool, bool); ++extern bool gen_operands_ldrd_strd (rtx *, bool, bool, bool); + extern int arm_gen_movmemqi (rtx *); + extern enum machine_mode arm_select_cc_mode (RTX_CODE, rtx, rtx); + extern enum machine_mode arm_select_dominance_cc_mode (rtx, rtx, +@@ -269,6 +271,8 @@ bool logical_op_non_short_circuit[2]; /* Vectorizer costs. */ const struct cpu_vec_costs* vec_costs; @@ -2473,6 +14336,19 @@ }; extern const struct tune_params *current_tune; +--- a/src/gcc/config/arm/vfp.md ++++ b/src/gcc/config/arm/vfp.md +@@ -132,8 +132,8 @@ + ;; DImode moves + + (define_insn "*movdi_vfp" +- [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r,r,r,r,r,r,m,w,r,w,w, Uv") +- (match_operand:DI 1 "di_operand" "r,rDa,Db,Dc,mi,mi,r,r,w,w,Uvi,w"))] ++ [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r,r,r,r,q,q,m,w,r,w,w, Uv") ++ (match_operand:DI 1 "di_operand" "r,rDa,Db,Dc,mi,mi,q,r,w,w,Uvi,w"))] + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP && arm_tune != cortexa8 + && ( register_operand (operands[0], DImode) + || register_operand (operands[1], DImode)) --- a/src/gcc/config/arm/neon.md +++ b/src/gcc/config/arm/neon.md @@ -487,7 +487,7 @@ @@ -2502,16 +14378,37 @@ ) ;; The concrete forms of the Neon immediate-logic instructions are vbic and -@@ -744,7 +744,7 @@ - } - [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*,neon_int_1,neon_int_1") - (set_attr "length" "*,*,8,8,*,*") -- (set_attr "arch" "nota8,nota8,*,*,onlya8,onlya8")] -+ (set_attr "arch" "neon_for_64bits,neon_for_64bits,*,*,avoid_neon_for_64bits,avoid_neon_for_64bits")] +@@ -724,29 +724,6 @@ + [(set_attr "neon_type" "neon_int_1")] ) +-(define_insn "anddi3_neon" +- [(set (match_operand:DI 0 "s_register_operand" "=w,w,?&r,?&r,?w,?w") +- (and:DI (match_operand:DI 1 "s_register_operand" "%w,0,0,r,w,0") +- (match_operand:DI 2 "neon_inv_logic_op2" "w,DL,r,r,w,DL")))] +- "TARGET_NEON" +-{ +- switch (which_alternative) +- { +- case 0: /* fall through */ +- case 4: return "vand\t%P0, %P1, %P2"; +- case 1: /* fall through */ +- case 5: return neon_output_logic_immediate ("vand", &operands[2], +- DImode, 1, VALID_NEON_QREG_MODE (DImode)); +- case 2: return "#"; +- case 3: return "#"; +- default: gcc_unreachable (); +- } +-} +- [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*,neon_int_1,neon_int_1") +- (set_attr "length" "*,*,8,8,*,*") +- (set_attr "arch" "nota8,nota8,*,*,onlya8,onlya8")] +-) +- (define_insn "orn3_neon" -@@ -840,7 +840,7 @@ + [(set (match_operand:VDQ 0 "s_register_operand" "=w") + (ior:VDQ (not:VDQ (match_operand:VDQ 2 "s_register_operand" "w")) +@@ -840,7 +817,7 @@ veor\t%P0, %P1, %P2" [(set_attr "neon_type" "neon_int_1,*,*,neon_int_1") (set_attr "length" "*,8,8,*") @@ -2520,7 +14417,7 @@ ) (define_insn "one_cmpl2" -@@ -1162,7 +1162,7 @@ +@@ -1162,7 +1139,7 @@ } DONE; }" @@ -2529,7 +14426,7 @@ (set_attr "opt" "*,*,speed,speed,*,*")] ) -@@ -1263,7 +1263,7 @@ +@@ -1263,7 +1240,7 @@ DONE; }" @@ -2538,6 +14435,513 @@ (set_attr "opt" "*,*,speed,speed,*,*")] ) +@@ -3281,6 +3258,24 @@ + (const_string "neon_fp_vadd_qqq_vabs_qq")))] + ) + ++(define_insn "neon_vcvtv4sfv4hf" ++ [(set (match_operand:V4SF 0 "s_register_operand" "=w") ++ (unspec:V4SF [(match_operand:V4HF 1 "s_register_operand" "w")] ++ UNSPEC_VCVT))] ++ "TARGET_NEON && TARGET_FP16" ++ "vcvt.f32.f16\t%q0, %P1" ++ [(set_attr "neon_type" "neon_fp_vadd_ddd_vabs_dd")] ++) ++ ++(define_insn "neon_vcvtv4hfv4sf" ++ [(set (match_operand:V4HF 0 "s_register_operand" "=w") ++ (unspec:V4HF [(match_operand:V4SF 1 "s_register_operand" "w")] ++ UNSPEC_VCVT))] ++ "TARGET_NEON && TARGET_FP16" ++ "vcvt.f16.f32\t%P0, %q1" ++ [(set_attr "neon_type" "neon_fp_vadd_ddd_vabs_dd")] ++) ++ + (define_insn "neon_vcvt_n" + [(set (match_operand: 0 "s_register_operand" "=w") + (unspec: [(match_operand:VCVTF 1 "s_register_operand" "w") +@@ -5611,7 +5606,7 @@ + (match_operand:SI 3 "immediate_operand" "")] + "TARGET_NEON" + { +- emit_insn (gen_and3 (operands[0], operands[1], operands[2])); ++ emit_insn (gen_and3 (operands[0], operands[1], operands[2])); + DONE; + }) + +--- a/src/gcc/config/arm/arm_neon_builtins.def ++++ b/src/gcc/config/arm/arm_neon_builtins.def +@@ -0,0 +1,212 @@ ++/* NEON builtin definitions for ARM. ++ Copyright (C) 2013 ++ Free Software Foundation, Inc. ++ Contributed by ARM Ltd. ++ ++ This file is part of GCC. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published ++ by the Free Software Foundation; either version 3, or (at your ++ option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++VAR10 (BINOP, vadd, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR3 (BINOP, vaddl, v8qi, v4hi, v2si), ++VAR3 (BINOP, vaddw, v8qi, v4hi, v2si), ++VAR6 (BINOP, vhadd, v8qi, v4hi, v2si, v16qi, v8hi, v4si), ++VAR8 (BINOP, vqadd, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), ++VAR3 (BINOP, vaddhn, v8hi, v4si, v2di), ++VAR8 (BINOP, vmul, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR8 (TERNOP, vmla, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR3 (TERNOP, vmlal, v8qi, v4hi, v2si), ++VAR2 (TERNOP, vfma, v2sf, v4sf), ++VAR2 (TERNOP, vfms, v2sf, v4sf), ++VAR8 (TERNOP, vmls, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR3 (TERNOP, vmlsl, v8qi, v4hi, v2si), ++VAR4 (BINOP, vqdmulh, v4hi, v2si, v8hi, v4si), ++VAR2 (TERNOP, vqdmlal, v4hi, v2si), ++VAR2 (TERNOP, vqdmlsl, v4hi, v2si), ++VAR3 (BINOP, vmull, v8qi, v4hi, v2si), ++VAR2 (SCALARMULL, vmull_n, v4hi, v2si), ++VAR2 (LANEMULL, vmull_lane, v4hi, v2si), ++VAR2 (SCALARMULL, vqdmull_n, v4hi, v2si), ++VAR2 (LANEMULL, vqdmull_lane, v4hi, v2si), ++VAR4 (SCALARMULH, vqdmulh_n, v4hi, v2si, v8hi, v4si), ++VAR4 (LANEMULH, vqdmulh_lane, v4hi, v2si, v8hi, v4si), ++VAR2 (BINOP, vqdmull, v4hi, v2si), ++VAR8 (BINOP, vshl, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), ++VAR8 (BINOP, vqshl, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), ++VAR8 (SHIFTIMM, vshr_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), ++VAR3 (SHIFTIMM, vshrn_n, v8hi, v4si, v2di), ++VAR3 (SHIFTIMM, vqshrn_n, v8hi, v4si, v2di), ++VAR3 (SHIFTIMM, vqshrun_n, v8hi, v4si, v2di), ++VAR8 (SHIFTIMM, vshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), ++VAR8 (SHIFTIMM, vqshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), ++VAR8 (SHIFTIMM, vqshlu_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), ++VAR3 (SHIFTIMM, vshll_n, v8qi, v4hi, v2si), ++VAR8 (SHIFTACC, vsra_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), ++VAR10 (BINOP, vsub, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR3 (BINOP, vsubl, v8qi, v4hi, v2si), ++VAR3 (BINOP, vsubw, v8qi, v4hi, v2si), ++VAR8 (BINOP, vqsub, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), ++VAR6 (BINOP, vhsub, v8qi, v4hi, v2si, v16qi, v8hi, v4si), ++VAR3 (BINOP, vsubhn, v8hi, v4si, v2di), ++VAR8 (BINOP, vceq, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR8 (BINOP, vcge, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR6 (BINOP, vcgeu, v8qi, v4hi, v2si, v16qi, v8hi, v4si), ++VAR8 (BINOP, vcgt, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR6 (BINOP, vcgtu, v8qi, v4hi, v2si, v16qi, v8hi, v4si), ++VAR2 (BINOP, vcage, v2sf, v4sf), ++VAR2 (BINOP, vcagt, v2sf, v4sf), ++VAR6 (BINOP, vtst, v8qi, v4hi, v2si, v16qi, v8hi, v4si), ++VAR8 (BINOP, vabd, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR3 (BINOP, vabdl, v8qi, v4hi, v2si), ++VAR6 (TERNOP, vaba, v8qi, v4hi, v2si, v16qi, v8hi, v4si), ++VAR3 (TERNOP, vabal, v8qi, v4hi, v2si), ++VAR8 (BINOP, vmax, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR8 (BINOP, vmin, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR4 (BINOP, vpadd, v8qi, v4hi, v2si, v2sf), ++VAR6 (UNOP, vpaddl, v8qi, v4hi, v2si, v16qi, v8hi, v4si), ++VAR6 (BINOP, vpadal, v8qi, v4hi, v2si, v16qi, v8hi, v4si), ++VAR4 (BINOP, vpmax, v8qi, v4hi, v2si, v2sf), ++VAR4 (BINOP, vpmin, v8qi, v4hi, v2si, v2sf), ++VAR2 (BINOP, vrecps, v2sf, v4sf), ++VAR2 (BINOP, vrsqrts, v2sf, v4sf), ++VAR8 (SHIFTINSERT, vsri_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), ++VAR8 (SHIFTINSERT, vsli_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di), ++VAR8 (UNOP, vabs, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR6 (UNOP, vqabs, v8qi, v4hi, v2si, v16qi, v8hi, v4si), ++VAR8 (UNOP, vneg, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR6 (UNOP, vqneg, v8qi, v4hi, v2si, v16qi, v8hi, v4si), ++VAR6 (UNOP, vcls, v8qi, v4hi, v2si, v16qi, v8hi, v4si), ++VAR6 (UNOP, vclz, v8qi, v4hi, v2si, v16qi, v8hi, v4si), ++VAR2 (UNOP, vcnt, v8qi, v16qi), ++VAR4 (UNOP, vrecpe, v2si, v2sf, v4si, v4sf), ++VAR4 (UNOP, vrsqrte, v2si, v2sf, v4si, v4sf), ++VAR6 (UNOP, vmvn, v8qi, v4hi, v2si, v16qi, v8hi, v4si), ++ /* FIXME: vget_lane supports more variants than this! */ ++VAR10 (GETLANE, vget_lane, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR10 (SETLANE, vset_lane, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR5 (CREATE, vcreate, v8qi, v4hi, v2si, v2sf, di), ++VAR10 (DUP, vdup_n, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR10 (DUPLANE, vdup_lane, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR5 (COMBINE, vcombine, v8qi, v4hi, v2si, v2sf, di), ++VAR5 (SPLIT, vget_high, v16qi, v8hi, v4si, v4sf, v2di), ++VAR5 (SPLIT, vget_low, v16qi, v8hi, v4si, v4sf, v2di), ++VAR3 (UNOP, vmovn, v8hi, v4si, v2di), ++VAR3 (UNOP, vqmovn, v8hi, v4si, v2di), ++VAR3 (UNOP, vqmovun, v8hi, v4si, v2di), ++VAR3 (UNOP, vmovl, v8qi, v4hi, v2si), ++VAR6 (LANEMUL, vmul_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf), ++VAR6 (LANEMAC, vmla_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf), ++VAR2 (LANEMAC, vmlal_lane, v4hi, v2si), ++VAR2 (LANEMAC, vqdmlal_lane, v4hi, v2si), ++VAR6 (LANEMAC, vmls_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf), ++VAR2 (LANEMAC, vmlsl_lane, v4hi, v2si), ++VAR2 (LANEMAC, vqdmlsl_lane, v4hi, v2si), ++VAR6 (SCALARMUL, vmul_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf), ++VAR6 (SCALARMAC, vmla_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf), ++VAR2 (SCALARMAC, vmlal_n, v4hi, v2si), ++VAR2 (SCALARMAC, vqdmlal_n, v4hi, v2si), ++VAR6 (SCALARMAC, vmls_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf), ++VAR2 (SCALARMAC, vmlsl_n, v4hi, v2si), ++VAR2 (SCALARMAC, vqdmlsl_n, v4hi, v2si), ++VAR10 (BINOP, vext, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR8 (UNOP, vrev64, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR4 (UNOP, vrev32, v8qi, v4hi, v16qi, v8hi), ++VAR2 (UNOP, vrev16, v8qi, v16qi), ++VAR4 (CONVERT, vcvt, v2si, v2sf, v4si, v4sf), ++VAR4 (FIXCONV, vcvt_n, v2si, v2sf, v4si, v4sf), ++VAR1 (FLOAT_WIDEN, vcvtv4sf, v4hf), ++VAR1 (FLOAT_NARROW, vcvtv4hf, v4sf), ++VAR10 (SELECT, vbsl, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR2 (RINT, vrintn, v2sf, v4sf), ++VAR2 (RINT, vrinta, v2sf, v4sf), ++VAR2 (RINT, vrintp, v2sf, v4sf), ++VAR2 (RINT, vrintm, v2sf, v4sf), ++VAR2 (RINT, vrintz, v2sf, v4sf), ++VAR2 (RINT, vrintx, v2sf, v4sf), ++VAR1 (VTBL, vtbl1, v8qi), ++VAR1 (VTBL, vtbl2, v8qi), ++VAR1 (VTBL, vtbl3, v8qi), ++VAR1 (VTBL, vtbl4, v8qi), ++VAR1 (VTBX, vtbx1, v8qi), ++VAR1 (VTBX, vtbx2, v8qi), ++VAR1 (VTBX, vtbx3, v8qi), ++VAR1 (VTBX, vtbx4, v8qi), ++VAR8 (RESULTPAIR, vtrn, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR8 (RESULTPAIR, vzip, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR8 (RESULTPAIR, vuzp, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf), ++VAR5 (REINTERP, vreinterpretv8qi, v8qi, v4hi, v2si, v2sf, di), ++VAR5 (REINTERP, vreinterpretv4hi, v8qi, v4hi, v2si, v2sf, di), ++VAR5 (REINTERP, vreinterpretv2si, v8qi, v4hi, v2si, v2sf, di), ++VAR5 (REINTERP, vreinterpretv2sf, v8qi, v4hi, v2si, v2sf, di), ++VAR5 (REINTERP, vreinterpretdi, v8qi, v4hi, v2si, v2sf, di), ++VAR5 (REINTERP, vreinterpretv16qi, v16qi, v8hi, v4si, v4sf, v2di), ++VAR5 (REINTERP, vreinterpretv8hi, v16qi, v8hi, v4si, v4sf, v2di), ++VAR5 (REINTERP, vreinterpretv4si, v16qi, v8hi, v4si, v4sf, v2di), ++VAR5 (REINTERP, vreinterpretv4sf, v16qi, v8hi, v4si, v4sf, v2di), ++VAR5 (REINTERP, vreinterpretv2di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR10 (LOAD1, vld1, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR10 (LOAD1LANE, vld1_lane, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR10 (LOAD1, vld1_dup, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR10 (STORE1, vst1, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR10 (STORE1LANE, vst1_lane, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR9 (LOADSTRUCT, ++ vld2, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), ++VAR7 (LOADSTRUCTLANE, vld2_lane, ++ v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), ++VAR5 (LOADSTRUCT, vld2_dup, v8qi, v4hi, v2si, v2sf, di), ++VAR9 (STORESTRUCT, vst2, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), ++VAR7 (STORESTRUCTLANE, vst2_lane, ++ v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), ++VAR9 (LOADSTRUCT, ++ vld3, v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), ++VAR7 (LOADSTRUCTLANE, vld3_lane, ++ v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), ++VAR5 (LOADSTRUCT, vld3_dup, v8qi, v4hi, v2si, v2sf, di), ++VAR9 (STORESTRUCT, vst3, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), ++VAR7 (STORESTRUCTLANE, vst3_lane, ++ v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), ++VAR9 (LOADSTRUCT, vld4, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), ++VAR7 (LOADSTRUCTLANE, vld4_lane, ++ v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), ++VAR5 (LOADSTRUCT, vld4_dup, v8qi, v4hi, v2si, v2sf, di), ++VAR9 (STORESTRUCT, vst4, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf), ++VAR7 (STORESTRUCTLANE, vst4_lane, ++ v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf), ++VAR10 (LOGICBINOP, vand, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR10 (LOGICBINOP, vorr, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR10 (BINOP, veor, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR10 (LOGICBINOP, vbic, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di), ++VAR10 (LOGICBINOP, vorn, ++ v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di) +--- a/src/gcc/config/arm/neon.ml ++++ b/src/gcc/config/arm/neon.ml +@@ -21,7 +21,7 @@ + . *) + + (* Shorthand types for vector elements. *) +-type elts = S8 | S16 | S32 | S64 | F32 | U8 | U16 | U32 | U64 | P8 | P16 ++type elts = S8 | S16 | S32 | S64 | F16 | F32 | U8 | U16 | U32 | U64 | P8 | P16 + | I8 | I16 | I32 | I64 | B8 | B16 | B32 | B64 | Conv of elts * elts + | Cast of elts * elts | NoElts + +@@ -37,6 +37,7 @@ + | T_uint16x4 | T_uint16x8 + | T_uint32x2 | T_uint32x4 + | T_uint64x1 | T_uint64x2 ++ | T_float16x4 + | T_float32x2 | T_float32x4 + | T_poly8x8 | T_poly8x16 + | T_poly16x4 | T_poly16x8 +@@ -46,11 +47,13 @@ + | T_uint8 | T_uint16 + | T_uint32 | T_uint64 + | T_poly8 | T_poly16 +- | T_float32 | T_arrayof of int * vectype ++ | T_float16 | T_float32 ++ | T_arrayof of int * vectype + | T_ptrto of vectype | T_const of vectype + | T_void | T_intQI + | T_intHI | T_intSI +- | T_intDI | T_floatSF ++ | T_intDI | T_floatHF ++ | T_floatSF + + (* The meanings of the following are: + TImode : "Tetra", two registers (four words). +@@ -92,7 +95,7 @@ + | Arity3 of vectype * vectype * vectype * vectype + | Arity4 of vectype * vectype * vectype * vectype * vectype + +-type vecmode = V8QI | V4HI | V2SI | V2SF | DI ++type vecmode = V8QI | V4HI | V4HF |V2SI | V2SF | DI + | V16QI | V8HI | V4SI | V4SF | V2DI + | QI | HI | SI | SF + +@@ -284,18 +287,22 @@ + | Fixed_core_reg + (* Mark that the intrinsic requires __ARM_FEATURE_string to be defined. *) + | Requires_feature of string ++ (* Mark that the intrinsic requires a particular architecture version. *) + | Requires_arch of int ++ (* Mark that the intrinsic requires a particular bit in __ARM_FP to ++ be set. *) ++ | Requires_FP_bit of int + + exception MixedMode of elts * elts + + let rec elt_width = function + S8 | U8 | P8 | I8 | B8 -> 8 +- | S16 | U16 | P16 | I16 | B16 -> 16 ++ | S16 | U16 | P16 | I16 | B16 | F16 -> 16 + | S32 | F32 | U32 | I32 | B32 -> 32 + | S64 | U64 | I64 | B64 -> 64 + | Conv (a, b) -> + let wa = elt_width a and wb = elt_width b in +- if wa = wb then wa else failwith "element width?" ++ if wa = wb then wa else raise (MixedMode (a, b)) + | Cast (a, b) -> raise (MixedMode (a, b)) + | NoElts -> failwith "No elts" + +@@ -303,7 +310,7 @@ + S8 | S16 | S32 | S64 -> Signed + | U8 | U16 | U32 | U64 -> Unsigned + | P8 | P16 -> Poly +- | F32 -> Float ++ | F16 | F32 -> Float + | I8 | I16 | I32 | I64 -> Int + | B8 | B16 | B32 | B64 -> Bits + | Conv (a, b) | Cast (a, b) -> ConvClass (elt_class a, elt_class b) +@@ -315,6 +322,7 @@ + | Signed, 16 -> S16 + | Signed, 32 -> S32 + | Signed, 64 -> S64 ++ | Float, 16 -> F16 + | Float, 32 -> F32 + | Unsigned, 8 -> U8 + | Unsigned, 16 -> U16 +@@ -384,7 +392,12 @@ + in + scan ((Array.length operands) - 1) + +-let rec mode_of_elt elt shape = ++(* Find a vecmode from a shape_elt ELT for an instruction with shape_form ++ SHAPE. For a Use_operands shape, if ARGPOS is passed then return the mode ++ for the given argument position, else determine which argument to return a ++ mode for automatically. *) ++ ++let rec mode_of_elt ?argpos elt shape = + let flt = match elt_class elt with + Float | ConvClass(_, Float) -> true | _ -> false in + let idx = +@@ -394,7 +407,10 @@ + in match shape with + All (_, Dreg) | By_scalar Dreg | Pair_result Dreg | Unary_scalar Dreg + | Binary_imm Dreg | Long_noreg Dreg | Wide_noreg Dreg -> +- [| V8QI; V4HI; if flt then V2SF else V2SI; DI |].(idx) ++ if flt then ++ [| V8QI; V4HF; V2SF; DI |].(idx) ++ else ++ [| V8QI; V4HI; V2SI; DI |].(idx) + | All (_, Qreg) | By_scalar Qreg | Pair_result Qreg | Unary_scalar Qreg + | Binary_imm Qreg | Long_noreg Qreg | Wide_noreg Qreg -> + [| V16QI; V8HI; if flt then V4SF else V4SI; V2DI |].(idx) +@@ -404,7 +420,11 @@ + | Long_imm -> + [| V8QI; V4HI; V2SI; DI |].(idx) + | Narrow | Narrow_imm -> [| V16QI; V8HI; V4SI; V2DI |].(idx) +- | Use_operands ops -> mode_of_elt elt (All (0, (find_key_operand ops))) ++ | Use_operands ops -> ++ begin match argpos with ++ None -> mode_of_elt ?argpos elt (All (0, (find_key_operand ops))) ++ | Some pos -> mode_of_elt ?argpos elt (All (0, ops.(pos))) ++ end + | _ -> failwith "invalid shape" + + (* Modify an element type dependent on the shape of the instruction and the +@@ -454,10 +474,11 @@ + | U16 -> T_uint16x4 + | U32 -> T_uint32x2 + | U64 -> T_uint64x1 ++ | F16 -> T_float16x4 + | F32 -> T_float32x2 + | P8 -> T_poly8x8 + | P16 -> T_poly16x4 +- | _ -> failwith "Bad elt type" ++ | _ -> failwith "Bad elt type for Dreg" + end + | Qreg -> + begin match elt with +@@ -472,7 +493,7 @@ + | F32 -> T_float32x4 + | P8 -> T_poly8x16 + | P16 -> T_poly16x8 +- | _ -> failwith "Bad elt type" ++ | _ -> failwith "Bad elt type for Qreg" + end + | Corereg -> + begin match elt with +@@ -487,7 +508,7 @@ + | P8 -> T_poly8 + | P16 -> T_poly16 + | F32 -> T_float32 +- | _ -> failwith "Bad elt type" ++ | _ -> failwith "Bad elt type for Corereg" + end + | Immed -> + T_immediate (0, 0) +@@ -506,7 +527,7 @@ + let vectype_size = function + T_int8x8 | T_int16x4 | T_int32x2 | T_int64x1 + | T_uint8x8 | T_uint16x4 | T_uint32x2 | T_uint64x1 +- | T_float32x2 | T_poly8x8 | T_poly16x4 -> 64 ++ | T_float32x2 | T_poly8x8 | T_poly16x4 | T_float16x4 -> 64 + | T_int8x16 | T_int16x8 | T_int32x4 | T_int64x2 + | T_uint8x16 | T_uint16x8 | T_uint32x4 | T_uint64x2 + | T_float32x4 | T_poly8x16 | T_poly16x8 -> 128 +@@ -1217,6 +1238,10 @@ + [Conv (S32, F32); Conv (U32, F32); Conv (F32, S32); Conv (F32, U32)]; + Vcvt, [InfoWord], All (2, Qreg), "vcvtQ", conv_1, + [Conv (S32, F32); Conv (U32, F32); Conv (F32, S32); Conv (F32, U32)]; ++ Vcvt, [Builtin_name "vcvt" ; Requires_FP_bit 1], ++ Use_operands [| Dreg; Qreg; |], "vcvt", conv_1, [Conv (F16, F32)]; ++ Vcvt, [Builtin_name "vcvt" ; Requires_FP_bit 1], ++ Use_operands [| Qreg; Dreg; |], "vcvt", conv_1, [Conv (F32, F16)]; + Vcvt_n, [InfoWord], Use_operands [| Dreg; Dreg; Immed |], "vcvt_n", conv_2, + [Conv (S32, F32); Conv (U32, F32); Conv (F32, S32); Conv (F32, U32)]; + Vcvt_n, [InfoWord], Use_operands [| Qreg; Qreg; Immed |], "vcvtQ_n", conv_2, +@@ -1782,7 +1807,7 @@ + | U8 -> "u8" | U16 -> "u16" | U32 -> "u32" | U64 -> "u64" + | I8 -> "i8" | I16 -> "i16" | I32 -> "i32" | I64 -> "i64" + | B8 -> "8" | B16 -> "16" | B32 -> "32" | B64 -> "64" +- | F32 -> "f32" | P8 -> "p8" | P16 -> "p16" ++ | F16 -> "f16" | F32 -> "f32" | P8 -> "p8" | P16 -> "p16" + | Conv (a, b) | Cast (a, b) -> string_of_elt a ^ "_" ^ string_of_elt b + | NoElts -> failwith "No elts" + +@@ -1809,6 +1834,7 @@ + | T_uint32x4 -> affix "uint32x4" + | T_uint64x1 -> affix "uint64x1" + | T_uint64x2 -> affix "uint64x2" ++ | T_float16x4 -> affix "float16x4" + | T_float32x2 -> affix "float32x2" + | T_float32x4 -> affix "float32x4" + | T_poly8x8 -> affix "poly8x8" +@@ -1825,6 +1851,7 @@ + | T_uint64 -> affix "uint64" + | T_poly8 -> affix "poly8" + | T_poly16 -> affix "poly16" ++ | T_float16 -> affix "float16" + | T_float32 -> affix "float32" + | T_immediate _ -> "const int" + | T_void -> "void" +@@ -1832,6 +1859,7 @@ + | T_intHI -> "__builtin_neon_hi" + | T_intSI -> "__builtin_neon_si" + | T_intDI -> "__builtin_neon_di" ++ | T_floatHF -> "__builtin_neon_hf" + | T_floatSF -> "__builtin_neon_sf" + | T_arrayof (num, base) -> + let basename = name (fun x -> x) base in +@@ -1853,10 +1881,10 @@ + | B_XImode -> "__builtin_neon_xi" + + let string_of_mode = function +- V8QI -> "v8qi" | V4HI -> "v4hi" | V2SI -> "v2si" | V2SF -> "v2sf" +- | DI -> "di" | V16QI -> "v16qi" | V8HI -> "v8hi" | V4SI -> "v4si" +- | V4SF -> "v4sf" | V2DI -> "v2di" | QI -> "qi" | HI -> "hi" | SI -> "si" +- | SF -> "sf" ++ V8QI -> "v8qi" | V4HI -> "v4hi" | V4HF -> "v4hf" | V2SI -> "v2si" ++ | V2SF -> "v2sf" | DI -> "di" | V16QI -> "v16qi" | V8HI -> "v8hi" ++ | V4SI -> "v4si" | V4SF -> "v4sf" | V2DI -> "v2di" | QI -> "qi" ++ | HI -> "hi" | SI -> "si" | SF -> "sf" + + (* Use uppercase chars for letters which form part of the intrinsic name, but + should be omitted from the builtin name (the info is passed in an extra +--- a/src/gcc/config/arm/constraints.md ++++ b/src/gcc/config/arm/constraints.md +@@ -21,7 +21,7 @@ + ;; The following register constraints have been used: + ;; - in ARM/Thumb-2 state: t, w, x, y, z + ;; - in Thumb state: h, b +-;; - in both states: l, c, k ++;; - in both states: l, c, k, q + ;; In ARM state, 'l' is an alias for 'r' + ;; 'f' and 'v' were previously used for FPA and MAVERICK registers. + +@@ -86,6 +86,9 @@ + (define_register_constraint "k" "STACK_REG" + "@internal The stack register.") + ++(define_register_constraint "q" "(TARGET_ARM && TARGET_LDRD) ? CORE_REGS : GENERAL_REGS" ++ "@internal In ARM state with LDRD support, core registers, otherwise general registers.") ++ + (define_register_constraint "b" "TARGET_THUMB ? BASE_REGS : NO_REGS" + "@internal + Thumb only. The union of the low registers and the stack register.") +@@ -248,6 +251,12 @@ + (and (match_code "const_int") + (match_test "TARGET_32BIT && const_ok_for_dimode_op (ival, PLUS)"))) + ++(define_constraint "De" ++ "@internal ++ In ARM/Thumb-2 state a const_int that can be used by insn anddi." ++ (and (match_code "const_int") ++ (match_test "TARGET_32BIT && const_ok_for_dimode_op (ival, AND)"))) ++ + (define_constraint "Di" + "@internal + In ARM/Thumb-2 state a const_int or const_double where both the high --- a/src/gcc/config/arm/arm-arches.def +++ b/src/gcc/config/arm/arm-arches.def @@ -53,6 +53,6 @@ @@ -2558,6 +14962,24 @@ $(srcdir)/config/arm/cortex-m4-fpu.md \ $(srcdir)/config/arm/cortex-m4.md \ $(srcdir)/config/arm/cortex-r4f.md \ +@@ -52,6 +53,7 @@ + $(srcdir)/config/arm/iwmmxt.md \ + $(srcdir)/config/arm/iwmmxt2.md \ + $(srcdir)/config/arm/ldmstm.md \ ++ $(srcdir)/config/arm/ldrdstrd.md \ + $(srcdir)/config/arm/marvell-f-iwmmxt.md \ + $(srcdir)/config/arm/neon.md \ + $(srcdir)/config/arm/predicates.md \ +@@ -84,7 +86,8 @@ + $(GGC_H) except.h $(C_PRAGMA_H) $(TM_P_H) \ + $(TARGET_H) $(TARGET_DEF_H) debug.h langhooks.h $(DF_H) \ + intl.h libfuncs.h $(PARAMS_H) $(OPTS_H) $(srcdir)/config/arm/arm-cores.def \ +- $(srcdir)/config/arm/arm-arches.def $(srcdir)/config/arm/arm-fpus.def ++ $(srcdir)/config/arm/arm-arches.def $(srcdir)/config/arm/arm-fpus.def \ ++ $(srcdir)/config/arm/arm_neon_builtins.def + + arm-c.o: $(srcdir)/config/arm/arm-c.c $(CONFIG_H) $(SYSTEM_H) \ + coretypes.h $(TM_H) $(TREE_H) output.h $(C_COMMON_H) --- a/src/gcc/config/arm/arm.opt +++ b/src/gcc/config/arm/arm.opt @@ -247,3 +247,7 @@ @@ -2565,12 +14987,306 @@ Target Report Var(unaligned_access) Init(2) Enable unaligned word and halfword accesses to packed data. + -+mneon-for-64bits -+Target Report RejectNegative Var(use_neon_for_64bits) Init(0) -+Use Neon to perform 64-bits operations rather than core registers. ++mneon-for-64bits ++Target Report RejectNegative Var(use_neon_for_64bits) Init(0) ++Use Neon to perform 64-bits operations rather than core registers. +--- a/src/gcc/config/arm/ldrdstrd.md ++++ b/src/gcc/config/arm/ldrdstrd.md +@@ -0,0 +1,260 @@ ++;; ARM ldrd/strd peephole optimizations. ++;; ++;; Copyright (C) 2013 Free Software Foundation, Inc. ++;; ++;; Written by Greta Yorsh ++ ++;; This file is part of GCC. ++;; ++;; GCC is free software; you can redistribute it and/or modify it ++;; under the terms of the GNU General Public License as published by ++;; the Free Software Foundation; either version 3, or (at your option) ++;; any later version. ++;; ++;; GCC is distributed in the hope that it will be useful, but ++;; WITHOUT ANY WARRANTY; without even the implied warranty of ++;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++;; General Public License for more details. ++;; ++;; You should have received a copy of the GNU General Public License ++;; along with GCC; see the file COPYING3. If not see ++;; . ++ ++;; The following peephole optimizations identify consecutive memory ++;; accesses, and try to rearrange the operands to enable generation of ++;; ldrd/strd. ++ ++(define_peephole2 ; ldrd ++ [(set (match_operand:SI 0 "arm_general_register_operand" "") ++ (match_operand:SI 2 "memory_operand" "")) ++ (set (match_operand:SI 1 "arm_general_register_operand" "") ++ (match_operand:SI 3 "memory_operand" ""))] ++ "TARGET_LDRD ++ && current_tune->prefer_ldrd_strd ++ && !optimize_function_for_size_p (cfun)" ++ [(const_int 0)] ++{ ++ if (!gen_operands_ldrd_strd (operands, true, false, false)) ++ FAIL; ++ else if (TARGET_ARM) ++ { ++ /* In ARM state, the destination registers of LDRD/STRD must be ++ consecutive. We emit DImode access. */ ++ operands[0] = gen_rtx_REG (DImode, REGNO (operands[0])); ++ operands[2] = adjust_address (operands[2], DImode, 0); ++ /* Emit [(set (match_dup 0) (match_dup 2))] */ ++ emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[2])); ++ DONE; ++ } ++ else if (TARGET_THUMB2) ++ { ++ /* Emit the pattern: ++ [(parallel [(set (match_dup 0) (match_dup 2)) ++ (set (match_dup 1) (match_dup 3))])] */ ++ rtx t1 = gen_rtx_SET (VOIDmode, operands[0], operands[2]); ++ rtx t2 = gen_rtx_SET (VOIDmode, operands[1], operands[3]); ++ emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, t1, t2))); ++ DONE; ++ } ++}) ++ ++(define_peephole2 ; strd ++ [(set (match_operand:SI 2 "memory_operand" "") ++ (match_operand:SI 0 "arm_general_register_operand" "")) ++ (set (match_operand:SI 3 "memory_operand" "") ++ (match_operand:SI 1 "arm_general_register_operand" ""))] ++ "TARGET_LDRD ++ && current_tune->prefer_ldrd_strd ++ && !optimize_function_for_size_p (cfun)" ++ [(const_int 0)] ++{ ++ if (!gen_operands_ldrd_strd (operands, false, false, false)) ++ FAIL; ++ else if (TARGET_ARM) ++ { ++ /* In ARM state, the destination registers of LDRD/STRD must be ++ consecutive. We emit DImode access. */ ++ operands[0] = gen_rtx_REG (DImode, REGNO (operands[0])); ++ operands[2] = adjust_address (operands[2], DImode, 0); ++ /* Emit [(set (match_dup 2) (match_dup 0))] */ ++ emit_insn (gen_rtx_SET (VOIDmode, operands[2], operands[0])); ++ DONE; ++ } ++ else if (TARGET_THUMB2) ++ { ++ /* Emit the pattern: ++ [(parallel [(set (match_dup 2) (match_dup 0)) ++ (set (match_dup 3) (match_dup 1))])] */ ++ rtx t1 = gen_rtx_SET (VOIDmode, operands[2], operands[0]); ++ rtx t2 = gen_rtx_SET (VOIDmode, operands[3], operands[1]); ++ emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, t1, t2))); ++ DONE; ++ } ++}) ++ ++;; The following peepholes reorder registers to enable LDRD/STRD. ++(define_peephole2 ; strd of constants ++ [(set (match_operand:SI 0 "arm_general_register_operand" "") ++ (match_operand:SI 4 "const_int_operand" "")) ++ (set (match_operand:SI 2 "memory_operand" "") ++ (match_dup 0)) ++ (set (match_operand:SI 1 "arm_general_register_operand" "") ++ (match_operand:SI 5 "const_int_operand" "")) ++ (set (match_operand:SI 3 "memory_operand" "") ++ (match_dup 1))] ++ "TARGET_LDRD ++ && current_tune->prefer_ldrd_strd ++ && !optimize_function_for_size_p (cfun)" ++ [(const_int 0)] ++{ ++ if (!gen_operands_ldrd_strd (operands, false, true, false)) ++ FAIL; ++ else if (TARGET_ARM) ++ { ++ rtx tmp = gen_rtx_REG (DImode, REGNO (operands[0])); ++ operands[2] = adjust_address (operands[2], DImode, 0); ++ /* Emit the pattern: ++ [(set (match_dup 0) (match_dup 4)) ++ (set (match_dup 1) (match_dup 5)) ++ (set (match_dup 2) tmp)] */ ++ emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[4])); ++ emit_insn (gen_rtx_SET (VOIDmode, operands[1], operands[5])); ++ emit_insn (gen_rtx_SET (VOIDmode, operands[2], tmp)); ++ DONE; ++ } ++ else if (TARGET_THUMB2) ++ { ++ /* Emit the pattern: ++ [(set (match_dup 0) (match_dup 4)) ++ (set (match_dup 1) (match_dup 5)) ++ (parallel [(set (match_dup 2) (match_dup 0)) ++ (set (match_dup 3) (match_dup 1))])] */ ++ emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[4])); ++ emit_insn (gen_rtx_SET (VOIDmode, operands[1], operands[5])); ++ rtx t1 = gen_rtx_SET (VOIDmode, operands[2], operands[0]); ++ rtx t2 = gen_rtx_SET (VOIDmode, operands[3], operands[1]); ++ emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, t1, t2))); ++ DONE; ++ } ++}) ++ ++(define_peephole2 ; strd of constants ++ [(set (match_operand:SI 0 "arm_general_register_operand" "") ++ (match_operand:SI 4 "const_int_operand" "")) ++ (set (match_operand:SI 1 "arm_general_register_operand" "") ++ (match_operand:SI 5 "const_int_operand" "")) ++ (set (match_operand:SI 2 "memory_operand" "") ++ (match_dup 0)) ++ (set (match_operand:SI 3 "memory_operand" "") ++ (match_dup 1))] ++ "TARGET_LDRD ++ && current_tune->prefer_ldrd_strd ++ && !optimize_function_for_size_p (cfun)" ++ [(const_int 0)] ++{ ++ if (!gen_operands_ldrd_strd (operands, false, true, false)) ++ FAIL; ++ else if (TARGET_ARM) ++ { ++ rtx tmp = gen_rtx_REG (DImode, REGNO (operands[0])); ++ operands[2] = adjust_address (operands[2], DImode, 0); ++ /* Emit the pattern ++ [(set (match_dup 0) (match_dup 4)) ++ (set (match_dup 1) (match_dup 5)) ++ (set (match_dup 2) tmp)] */ ++ emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[4])); ++ emit_insn (gen_rtx_SET (VOIDmode, operands[1], operands[5])); ++ emit_insn (gen_rtx_SET (VOIDmode, operands[2], tmp)); ++ DONE; ++ } ++ else if (TARGET_THUMB2) ++ { ++ /* Emit the pattern: ++ [(set (match_dup 0) (match_dup 4)) ++ (set (match_dup 1) (match_dup 5)) ++ (parallel [(set (match_dup 2) (match_dup 0)) ++ (set (match_dup 3) (match_dup 1))])] */ ++ emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[4])); ++ emit_insn (gen_rtx_SET (VOIDmode, operands[1], operands[5])); ++ rtx t1 = gen_rtx_SET (VOIDmode, operands[2], operands[0]); ++ rtx t2 = gen_rtx_SET (VOIDmode, operands[3], operands[1]); ++ emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, t1, t2))); ++ DONE; ++ } ++}) ++ ++;; The following two peephole optimizations are only relevant for ARM ++;; mode where LDRD/STRD require consecutive registers. ++ ++(define_peephole2 ; swap the destination registers of two loads ++ ; before a commutative operation. ++ [(set (match_operand:SI 0 "arm_general_register_operand" "") ++ (match_operand:SI 2 "memory_operand" "")) ++ (set (match_operand:SI 1 "arm_general_register_operand" "") ++ (match_operand:SI 3 "memory_operand" "")) ++ (set (match_operand:SI 4 "arm_general_register_operand" "") ++ (match_operator:SI 5 "commutative_binary_operator" ++ [(match_operand 6 "arm_general_register_operand" "") ++ (match_operand 7 "arm_general_register_operand" "") ]))] ++ "TARGET_LDRD && TARGET_ARM ++ && current_tune->prefer_ldrd_strd ++ && !optimize_function_for_size_p (cfun) ++ && ( ((rtx_equal_p(operands[0], operands[6])) && (rtx_equal_p(operands[1], operands[7]))) ++ ||((rtx_equal_p(operands[0], operands[7])) && (rtx_equal_p(operands[1], operands[6])))) ++ && (peep2_reg_dead_p (3, operands[0]) || rtx_equal_p (operands[0], operands[4])) ++ && (peep2_reg_dead_p (3, operands[1]) || rtx_equal_p (operands[1], operands[4]))" ++ [(set (match_dup 0) (match_dup 2)) ++ (set (match_dup 4) (match_op_dup 5 [(match_dup 6) (match_dup 7)]))] ++ { ++ if (!gen_operands_ldrd_strd (operands, true, false, true)) ++ { ++ FAIL; ++ } ++ else ++ { ++ operands[0] = gen_rtx_REG (DImode, REGNO (operands[0])); ++ operands[2] = adjust_address (operands[2], DImode, 0); ++ } ++ } ++) ++ ++(define_peephole2 ; swap the destination registers of two loads ++ ; before a commutative operation that sets the flags. ++ [(set (match_operand:SI 0 "arm_general_register_operand" "") ++ (match_operand:SI 2 "memory_operand" "")) ++ (set (match_operand:SI 1 "arm_general_register_operand" "") ++ (match_operand:SI 3 "memory_operand" "")) ++ (parallel ++ [(set (match_operand:SI 4 "arm_general_register_operand" "") ++ (match_operator:SI 5 "commutative_binary_operator" ++ [(match_operand 6 "arm_general_register_operand" "") ++ (match_operand 7 "arm_general_register_operand" "") ])) ++ (clobber (reg:CC CC_REGNUM))])] ++ "TARGET_LDRD && TARGET_ARM ++ && current_tune->prefer_ldrd_strd ++ && !optimize_function_for_size_p (cfun) ++ && ( ((rtx_equal_p(operands[0], operands[6])) && (rtx_equal_p(operands[1], operands[7]))) ++ ||((rtx_equal_p(operands[0], operands[7])) && (rtx_equal_p(operands[1], operands[6])))) ++ && (peep2_reg_dead_p (3, operands[0]) || rtx_equal_p (operands[0], operands[4])) ++ && (peep2_reg_dead_p (3, operands[1]) || rtx_equal_p (operands[1], operands[4]))" ++ [(set (match_dup 0) (match_dup 2)) ++ (parallel ++ [(set (match_dup 4) ++ (match_op_dup 5 [(match_dup 6) (match_dup 7)])) ++ (clobber (reg:CC CC_REGNUM))])] ++ { ++ if (!gen_operands_ldrd_strd (operands, true, false, true)) ++ { ++ FAIL; ++ } ++ else ++ { ++ operands[0] = gen_rtx_REG (DImode, REGNO (operands[0])); ++ operands[2] = adjust_address (operands[2], DImode, 0); ++ } ++ } ++) ++ ++;; TODO: Handle LDRD/STRD with writeback: ++;; (a) memory operands can be POST_INC, POST_DEC, PRE_MODIFY, POST_MODIFY ++;; (b) Patterns may be followed by an update of the base address. --- a/src/gcc/config/arm/predicates.md +++ b/src/gcc/config/arm/predicates.md -@@ -270,6 +270,18 @@ +@@ -31,6 +31,17 @@ + || REGNO_REG_CLASS (REGNO (op)) != NO_REGS)); + }) + ++(define_predicate "imm_for_neon_inv_logic_operand" ++ (match_code "const_vector") ++{ ++ return (TARGET_NEON ++ && neon_immediate_valid_for_logic (op, mode, 1, NULL, NULL)); ++}) ++ ++(define_predicate "neon_inv_logic_op2" ++ (ior (match_operand 0 "imm_for_neon_inv_logic_operand") ++ (match_operand 0 "s_register_operand"))) ++ + ;; Any hard register. + (define_predicate "arm_hard_register_operand" + (match_code "reg") +@@ -145,6 +156,12 @@ + (ior (match_operand 0 "arm_rhs_operand") + (match_operand 0 "arm_neg_immediate_operand"))) + ++(define_predicate "arm_anddi_operand_neon" ++ (ior (match_operand 0 "s_register_operand") ++ (and (match_code "const_int") ++ (match_test "const_ok_for_dimode_op (INTVAL (op), AND)")) ++ (match_operand 0 "neon_inv_logic_op2"))) ++ + (define_predicate "arm_adddi_operand" + (ior (match_operand 0 "s_register_operand") + (and (match_code "const_int") +@@ -270,6 +287,18 @@ (define_special_predicate "lt_ge_comparison_operator" (match_code "lt,ge")) @@ -2589,6 +15305,61 @@ (define_special_predicate "noov_comparison_operator" (match_code "lt,ge,eq,ne")) +@@ -513,21 +542,10 @@ + && neon_immediate_valid_for_logic (op, mode, 0, NULL, NULL)); + }) + +-(define_predicate "imm_for_neon_inv_logic_operand" +- (match_code "const_vector") +-{ +- return (TARGET_NEON +- && neon_immediate_valid_for_logic (op, mode, 1, NULL, NULL)); +-}) +- + (define_predicate "neon_logic_op2" + (ior (match_operand 0 "imm_for_neon_logic_operand") + (match_operand 0 "s_register_operand"))) + +-(define_predicate "neon_inv_logic_op2" +- (ior (match_operand 0 "imm_for_neon_inv_logic_operand") +- (match_operand 0 "s_register_operand"))) +- + ;; Predicates for named expanders that overlap multiple ISAs. + + (define_predicate "cmpdi_operand" +--- a/src/gcc/config/arm/arm_neon.h ++++ b/src/gcc/config/arm/arm_neon.h +@@ -43,6 +43,7 @@ + typedef __builtin_neon_si int32x2_t __attribute__ ((__vector_size__ (8))); + typedef __builtin_neon_di int64x1_t; + typedef __builtin_neon_sf float32x2_t __attribute__ ((__vector_size__ (8))); ++typedef __builtin_neon_hf float16x4_t __attribute__ ((__vector_size__ (8))); + typedef __builtin_neon_poly8 poly8x8_t __attribute__ ((__vector_size__ (8))); + typedef __builtin_neon_poly16 poly16x4_t __attribute__ ((__vector_size__ (8))); + typedef __builtin_neon_uqi uint8x8_t __attribute__ ((__vector_size__ (8))); +@@ -6016,6 +6017,22 @@ + return (uint32x4_t)__builtin_neon_vcvtv4sf (__a, 0); + } + ++#if ((__ARM_FP & 0x2) != 0) ++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__)) ++vcvt_f16_f32 (float32x4_t __a) ++{ ++ return (float16x4_t)__builtin_neon_vcvtv4hfv4sf (__a); ++} ++ ++#endif ++#if ((__ARM_FP & 0x2) != 0) ++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) ++vcvt_f32_f16 (float16x4_t __a) ++{ ++ return (float32x4_t)__builtin_neon_vcvtv4sfv4hf (__a); ++} ++ ++#endif + __extension__ static __inline int32x2_t __attribute__ ((__always_inline__)) + vcvt_n_s32_f32 (float32x2_t __a, const int __b) + { --- a/src/gcc/config/arm/cortex-a53.md +++ b/src/gcc/config/arm/cortex-a53.md @@ -0,0 +1,296 @@ @@ -3032,6 +15803,21 @@ + "TARGET_HAVE_LDACQ" + "stlex%?\t%0, %2, %C1" + [(set_attr "predicable" "yes")]) +--- a/src/gcc/config/arm/neon-testgen.ml ++++ b/src/gcc/config/arm/neon-testgen.ml +@@ -163,10 +163,12 @@ + match List.find (fun feature -> + match feature with Requires_feature _ -> true + | Requires_arch _ -> true ++ | Requires_FP_bit 1 -> true + | _ -> false) + features with + Requires_feature "FMA" -> "arm_neonv2" + | Requires_arch 8 -> "arm_v8_neon" ++ | Requires_FP_bit 1 -> "arm_neon_fp16" + | _ -> assert false + with Not_found -> "arm_neon" + --- a/src/gcc/config/arm/arm.md +++ b/src/gcc/config/arm/arm.md @@ -94,7 +94,7 @@ @@ -3109,7 +15895,986 @@ (include "cortex-r4.md") (include "cortex-r4f.md") (include "cortex-m4.md") -@@ -4330,7 +4325,7 @@ +@@ -844,7 +839,7 @@ + + ;; This is the canonicalization of addsi3_compare0_for_combiner when the + ;; addend is a constant. +-(define_insn "*cmpsi2_addneg" ++(define_insn "cmpsi2_addneg" + [(set (reg:CC CC_REGNUM) + (compare:CC + (match_operand:SI 1 "s_register_operand" "r,r") +@@ -975,7 +970,8 @@ + "@ + adc%?\\t%0, %1, %2 + sbc%?\\t%0, %1, #%B2" +- [(set_attr "conds" "use")] ++ [(set_attr "conds" "use") ++ (set_attr "predicable" "yes")] + ) + + (define_insn "*addsi3_carryin_alt2_" +@@ -987,7 +983,8 @@ + "@ + adc%?\\t%0, %1, %2 + sbc%?\\t%0, %1, #%B2" +- [(set_attr "conds" "use")] ++ [(set_attr "conds" "use") ++ (set_attr "predicable" "yes")] + ) + + (define_insn "*addsi3_carryin_shift_" +@@ -1001,6 +998,7 @@ + "TARGET_32BIT" + "adc%?\\t%0, %1, %3%S2" + [(set_attr "conds" "use") ++ (set_attr "predicable" "yes") + (set (attr "type") (if_then_else (match_operand 4 "const_int_operand" "") + (const_string "alu_shift") + (const_string "alu_shift_reg")))] +@@ -1017,26 +1015,88 @@ + [(set_attr "conds" "set")] + ) + +-(define_expand "incscc" ++(define_insn "*subsi3_carryin" + [(set (match_operand:SI 0 "s_register_operand" "=r,r") +- (plus:SI (match_operator:SI 2 "arm_comparison_operator" +- [(match_operand:CC 3 "cc_register" "") (const_int 0)]) +- (match_operand:SI 1 "s_register_operand" "0,?r")))] ++ (minus:SI (minus:SI (match_operand:SI 1 "reg_or_int_operand" "r,I") ++ (match_operand:SI 2 "s_register_operand" "r,r")) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] + "TARGET_32BIT" +- "" ++ "@ ++ sbc%?\\t%0, %1, %2 ++ rsc%?\\t%0, %2, %1" ++ [(set_attr "conds" "use") ++ (set_attr "arch" "*,a") ++ (set_attr "predicable" "yes")] + ) + +-(define_insn "*arm_incscc" +- [(set (match_operand:SI 0 "s_register_operand" "=r,r") +- (plus:SI (match_operator:SI 2 "arm_comparison_operator" +- [(match_operand:CC 3 "cc_register" "") (const_int 0)]) +- (match_operand:SI 1 "s_register_operand" "0,?r")))] ++(define_insn "*subsi3_carryin_const" ++ [(set (match_operand:SI 0 "s_register_operand" "=r") ++ (minus:SI (plus:SI (match_operand:SI 1 "reg_or_int_operand" "r") ++ (match_operand:SI 2 "arm_not_operand" "K")) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] ++ "TARGET_32BIT" ++ "sbc\\t%0, %1, #%B2" ++ [(set_attr "conds" "use")] ++) ++ ++(define_insn "*subsi3_carryin_compare" ++ [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_operand:SI 1 "s_register_operand" "r") ++ (match_operand:SI 2 "s_register_operand" "r"))) ++ (set (match_operand:SI 0 "s_register_operand" "=r") ++ (minus:SI (minus:SI (match_dup 1) ++ (match_dup 2)) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] ++ "TARGET_32BIT" ++ "sbcs\\t%0, %1, %2" ++ [(set_attr "conds" "set")] ++) ++ ++(define_insn "*subsi3_carryin_compare_const" ++ [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_operand:SI 1 "reg_or_int_operand" "r") ++ (match_operand:SI 2 "arm_not_operand" "K"))) ++ (set (match_operand:SI 0 "s_register_operand" "=r") ++ (minus:SI (plus:SI (match_dup 1) ++ (match_dup 2)) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] ++ "TARGET_32BIT" ++ "sbcs\\t%0, %1, #%B2" ++ [(set_attr "conds" "set")] ++) ++ ++(define_insn "*subsi3_carryin_shift" ++ [(set (match_operand:SI 0 "s_register_operand" "=r") ++ (minus:SI (minus:SI ++ (match_operand:SI 1 "s_register_operand" "r") ++ (match_operator:SI 2 "shift_operator" ++ [(match_operand:SI 3 "s_register_operand" "r") ++ (match_operand:SI 4 "reg_or_int_operand" "rM")])) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] ++ "TARGET_32BIT" ++ "sbc%?\\t%0, %1, %3%S2" ++ [(set_attr "conds" "use") ++ (set_attr "predicable" "yes") ++ (set (attr "type") (if_then_else (match_operand 4 "const_int_operand" "") ++ (const_string "alu_shift") ++ (const_string "alu_shift_reg")))] ++) ++ ++(define_insn "*rsbsi3_carryin_shift" ++ [(set (match_operand:SI 0 "s_register_operand" "=r") ++ (minus:SI (minus:SI ++ (match_operator:SI 2 "shift_operator" ++ [(match_operand:SI 3 "s_register_operand" "r") ++ (match_operand:SI 4 "reg_or_int_operand" "rM")]) ++ (match_operand:SI 1 "s_register_operand" "r")) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] + "TARGET_ARM" +- "@ +- add%d2\\t%0, %1, #1 +- mov%D2\\t%0, %1\;add%d2\\t%0, %1, #1" ++ "rsc%?\\t%0, %1, %3%S2" + [(set_attr "conds" "use") +- (set_attr "length" "4,8")] ++ (set_attr "predicable" "yes") ++ (set (attr "type") (if_then_else (match_operand 4 "const_int_operand" "") ++ (const_string "alu_shift") ++ (const_string "alu_shift_reg")))] + ) + + ; transform ((x << y) - 1) to ~(~(x-1) << y) Where X is a constant. +@@ -1087,13 +1147,27 @@ + " + ) + +-(define_insn "*arm_subdi3" ++(define_insn_and_split "*arm_subdi3" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r,&r") + (minus:DI (match_operand:DI 1 "s_register_operand" "0,r,0") + (match_operand:DI 2 "s_register_operand" "r,0,0"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT && !TARGET_NEON" +- "subs\\t%Q0, %Q1, %Q2\;sbc\\t%R0, %R1, %R2" ++ "#" ; "subs\\t%Q0, %Q1, %Q2\;sbc\\t%R0, %R1, %R2" ++ "&& reload_completed" ++ [(parallel [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 1) (match_dup 2))) ++ (set (match_dup 0) (minus:SI (match_dup 1) (match_dup 2)))]) ++ (set (match_dup 3) (minus:SI (minus:SI (match_dup 4) (match_dup 5)) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] ++ { ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ operands[4] = gen_highpart (SImode, operands[1]); ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ operands[5] = gen_highpart (SImode, operands[2]); ++ operands[2] = gen_lowpart (SImode, operands[2]); ++ } + [(set_attr "conds" "clob") + (set_attr "length" "8")] + ) +@@ -1108,55 +1182,113 @@ + [(set_attr "length" "4")] + ) + +-(define_insn "*subdi_di_zesidi" ++(define_insn_and_split "*subdi_di_zesidi" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (minus:DI (match_operand:DI 1 "s_register_operand" "0,r") + (zero_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT" +- "subs\\t%Q0, %Q1, %2\;sbc\\t%R0, %R1, #0" ++ "#" ; "subs\\t%Q0, %Q1, %2\;sbc\\t%R0, %R1, #0" ++ "&& reload_completed" ++ [(parallel [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 1) (match_dup 2))) ++ (set (match_dup 0) (minus:SI (match_dup 1) (match_dup 2)))]) ++ (set (match_dup 3) (minus:SI (plus:SI (match_dup 4) (match_dup 5)) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] ++ { ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ operands[4] = gen_highpart (SImode, operands[1]); ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ operands[5] = GEN_INT (~0); ++ } + [(set_attr "conds" "clob") + (set_attr "length" "8")] + ) + +-(define_insn "*subdi_di_sesidi" ++(define_insn_and_split "*subdi_di_sesidi" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (minus:DI (match_operand:DI 1 "s_register_operand" "0,r") + (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT" +- "subs\\t%Q0, %Q1, %2\;sbc\\t%R0, %R1, %2, asr #31" ++ "#" ; "subs\\t%Q0, %Q1, %2\;sbc\\t%R0, %R1, %2, asr #31" ++ "&& reload_completed" ++ [(parallel [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 1) (match_dup 2))) ++ (set (match_dup 0) (minus:SI (match_dup 1) (match_dup 2)))]) ++ (set (match_dup 3) (minus:SI (minus:SI (match_dup 4) ++ (ashiftrt:SI (match_dup 2) ++ (const_int 31))) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] ++ { ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ operands[4] = gen_highpart (SImode, operands[1]); ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ } + [(set_attr "conds" "clob") + (set_attr "length" "8")] + ) + +-(define_insn "*subdi_zesidi_di" ++(define_insn_and_split "*subdi_zesidi_di" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (minus:DI (zero_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) + (match_operand:DI 1 "s_register_operand" "0,r"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" +- "rsbs\\t%Q0, %Q1, %2\;rsc\\t%R0, %R1, #0" ++ "#" ; "rsbs\\t%Q0, %Q1, %2\;rsc\\t%R0, %R1, #0" ++ ; is equivalent to: ++ ; "subs\\t%Q0, %2, %Q1\;rsc\\t%R0, %R1, #0" ++ "&& reload_completed" ++ [(parallel [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 2) (match_dup 1))) ++ (set (match_dup 0) (minus:SI (match_dup 2) (match_dup 1)))]) ++ (set (match_dup 3) (minus:SI (minus:SI (const_int 0) (match_dup 4)) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] ++ { ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ operands[4] = gen_highpart (SImode, operands[1]); ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ } + [(set_attr "conds" "clob") + (set_attr "length" "8")] + ) + +-(define_insn "*subdi_sesidi_di" ++(define_insn_and_split "*subdi_sesidi_di" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (minus:DI (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) + (match_operand:DI 1 "s_register_operand" "0,r"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" +- "rsbs\\t%Q0, %Q1, %2\;rsc\\t%R0, %R1, %2, asr #31" ++ "#" ; "rsbs\\t%Q0, %Q1, %2\;rsc\\t%R0, %R1, %2, asr #31" ++ ; is equivalent to: ++ ; "subs\\t%Q0, %2, %Q1\;rsc\\t%R0, %R1, %2, asr #31" ++ "&& reload_completed" ++ [(parallel [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 2) (match_dup 1))) ++ (set (match_dup 0) (minus:SI (match_dup 2) (match_dup 1)))]) ++ (set (match_dup 3) (minus:SI (minus:SI ++ (ashiftrt:SI (match_dup 2) ++ (const_int 31)) ++ (match_dup 4)) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] ++ { ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ operands[4] = gen_highpart (SImode, operands[1]); ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ } + [(set_attr "conds" "clob") + (set_attr "length" "8")] + ) + +-(define_insn "*subdi_zesidi_zesidi" ++(define_insn_and_split "*subdi_zesidi_zesidi" + [(set (match_operand:DI 0 "s_register_operand" "=r") + (minus:DI (zero_extend:DI + (match_operand:SI 1 "s_register_operand" "r")) +@@ -1164,7 +1296,17 @@ + (match_operand:SI 2 "s_register_operand" "r")))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT" +- "subs\\t%Q0, %1, %2\;sbc\\t%R0, %1, %1" ++ "#" ; "subs\\t%Q0, %1, %2\;sbc\\t%R0, %1, %1" ++ "&& reload_completed" ++ [(parallel [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 1) (match_dup 2))) ++ (set (match_dup 0) (minus:SI (match_dup 1) (match_dup 2)))]) ++ (set (match_dup 3) (minus:SI (minus:SI (match_dup 1) (match_dup 1)) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] ++ { ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ } + [(set_attr "conds" "clob") + (set_attr "length" "8")] + ) +@@ -1254,7 +1396,7 @@ + (set_attr "type" "simple_alu_imm,*,*")] + ) + +-(define_insn "*subsi3_compare" ++(define_insn "subsi3_compare" + [(set (reg:CC CC_REGNUM) + (compare:CC (match_operand:SI 1 "arm_rhs_operand" "r,r,I") + (match_operand:SI 2 "arm_rhs_operand" "I,r,r"))) +@@ -1269,29 +1411,6 @@ + (set_attr "type" "simple_alu_imm,*,*")] + ) + +-(define_expand "decscc" +- [(set (match_operand:SI 0 "s_register_operand" "=r,r") +- (minus:SI (match_operand:SI 1 "s_register_operand" "0,?r") +- (match_operator:SI 2 "arm_comparison_operator" +- [(match_operand 3 "cc_register" "") (const_int 0)])))] +- "TARGET_32BIT" +- "" +-) +- +-(define_insn "*arm_decscc" +- [(set (match_operand:SI 0 "s_register_operand" "=r,r") +- (minus:SI (match_operand:SI 1 "s_register_operand" "0,?r") +- (match_operator:SI 2 "arm_comparison_operator" +- [(match_operand 3 "cc_register" "") (const_int 0)])))] +- "TARGET_ARM" +- "@ +- sub%d2\\t%0, %1, #1 +- mov%D2\\t%0, %1\;sub%d2\\t%0, %1, #1" +- [(set_attr "conds" "use") +- (set_attr "length" "*,8") +- (set_attr "type" "simple_alu_imm,*")] +-) +- + (define_expand "subsf3" + [(set (match_operand:SF 0 "s_register_operand" "") + (minus:SF (match_operand:SF 1 "s_register_operand" "") +@@ -2024,13 +2143,58 @@ + "" + ) + +-(define_insn "*anddi3_insn" +- [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") +- (and:DI (match_operand:DI 1 "s_register_operand" "%0,r") +- (match_operand:DI 2 "s_register_operand" "r,r")))] +- "TARGET_32BIT && !TARGET_IWMMXT && !TARGET_NEON" +- "#" +- [(set_attr "length" "8")] ++(define_insn_and_split "*anddi3_insn" ++ [(set (match_operand:DI 0 "s_register_operand" "=&r,&r,&r,&r,w,w ,?&r,?&r,?w,?w") ++ (and:DI (match_operand:DI 1 "s_register_operand" "%0 ,r ,0,r ,w,0 ,0 ,r ,w ,0") ++ (match_operand:DI 2 "arm_anddi_operand_neon" "r ,r ,De,De,w,DL,r ,r ,w ,DL")))] ++ "TARGET_32BIT && !TARGET_IWMMXT" ++{ ++ switch (which_alternative) ++ { ++ case 0: ++ case 1: ++ case 2: ++ case 3: /* fall through */ ++ return "#"; ++ case 4: /* fall through */ ++ case 8: return "vand\t%P0, %P1, %P2"; ++ case 5: /* fall through */ ++ case 9: return neon_output_logic_immediate ("vand", &operands[2], ++ DImode, 1, VALID_NEON_QREG_MODE (DImode)); ++ case 6: return "#"; ++ case 7: return "#"; ++ default: gcc_unreachable (); ++ } ++} ++ "TARGET_32BIT && !TARGET_IWMMXT" ++ [(set (match_dup 3) (match_dup 4)) ++ (set (match_dup 5) (match_dup 6))] ++ " ++ { ++ operands[3] = gen_lowpart (SImode, operands[0]); ++ operands[5] = gen_highpart (SImode, operands[0]); ++ ++ operands[4] = simplify_gen_binary (AND, SImode, ++ gen_lowpart (SImode, operands[1]), ++ gen_lowpart (SImode, operands[2])); ++ operands[6] = simplify_gen_binary (AND, SImode, ++ gen_highpart (SImode, operands[1]), ++ gen_highpart_mode (SImode, DImode, operands[2])); ++ ++ }" ++ [(set_attr "neon_type" "*,*,*,*,neon_int_1,neon_int_1,*,*,neon_int_1,neon_int_1") ++ (set_attr "arch" "*,*,*,*,neon_for_64bits,neon_for_64bits,*,*, ++ avoid_neon_for_64bits,avoid_neon_for_64bits") ++ (set_attr "length" "8,8,8,8,*,*,8,8,*,*") ++ (set (attr "insn_enabled") (if_then_else ++ (lt (symbol_ref "which_alternative") ++ (const_int 4)) ++ (if_then_else (match_test "!TARGET_NEON") ++ (const_string "yes") ++ (const_string "no")) ++ (if_then_else (match_test "TARGET_NEON") ++ (const_string "yes") ++ (const_string "no"))))] + ) + + (define_insn_and_split "*anddi_zesidi_di" +@@ -3096,13 +3260,17 @@ + "" + ) + +-(define_insn "*andsi_iorsi3_notsi" ++(define_insn_and_split "*andsi_iorsi3_notsi" + [(set (match_operand:SI 0 "s_register_operand" "=&r,&r,&r") + (and:SI (ior:SI (match_operand:SI 1 "s_register_operand" "%0,r,r") + (match_operand:SI 2 "arm_rhs_operand" "rI,0,rI")) + (not:SI (match_operand:SI 3 "arm_rhs_operand" "rI,rI,rI"))))] + "TARGET_32BIT" +- "orr%?\\t%0, %1, %2\;bic%?\\t%0, %0, %3" ++ "#" ; "orr%?\\t%0, %1, %2\;bic%?\\t%0, %0, %3" ++ "&& reload_completed" ++ [(set (match_dup 0) (ior:SI (match_dup 1) (match_dup 2))) ++ (set (match_dup 0) (and:SI (not:SI (match_dup 3)) (match_dup 0)))] ++ "" + [(set_attr "length" "8") + (set_attr "ce_count" "2") + (set_attr "predicable" "yes")] +@@ -3253,15 +3421,23 @@ + [(set_attr "predicable" "yes")] + ) + +-(define_insn "*arm_smax_insn" ++(define_insn_and_split "*arm_smax_insn" + [(set (match_operand:SI 0 "s_register_operand" "=r,r") + (smax:SI (match_operand:SI 1 "s_register_operand" "%0,?r") + (match_operand:SI 2 "arm_rhs_operand" "rI,rI"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" +- "@ +- cmp\\t%1, %2\;movlt\\t%0, %2 +- cmp\\t%1, %2\;movge\\t%0, %1\;movlt\\t%0, %2" ++ "#" ++ ; cmp\\t%1, %2\;movlt\\t%0, %2 ++ ; cmp\\t%1, %2\;movge\\t%0, %1\;movlt\\t%0, %2" ++ "TARGET_ARM" ++ [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 1) (match_dup 2))) ++ (set (match_dup 0) ++ (if_then_else:SI (ge:SI (reg:CC CC_REGNUM) (const_int 0)) ++ (match_dup 1) ++ (match_dup 2)))] ++ "" + [(set_attr "conds" "clob") + (set_attr "length" "8,12")] + ) +@@ -3293,15 +3469,23 @@ + [(set_attr "predicable" "yes")] + ) + +-(define_insn "*arm_smin_insn" ++(define_insn_and_split "*arm_smin_insn" + [(set (match_operand:SI 0 "s_register_operand" "=r,r") + (smin:SI (match_operand:SI 1 "s_register_operand" "%0,?r") + (match_operand:SI 2 "arm_rhs_operand" "rI,rI"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" +- "@ +- cmp\\t%1, %2\;movge\\t%0, %2 +- cmp\\t%1, %2\;movlt\\t%0, %1\;movge\\t%0, %2" ++ "#" ++ ; cmp\\t%1, %2\;movge\\t%0, %2 ++ ; cmp\\t%1, %2\;movlt\\t%0, %1\;movge\\t%0, %2" ++ "TARGET_ARM" ++ [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 1) (match_dup 2))) ++ (set (match_dup 0) ++ (if_then_else:SI (lt:SI (reg:CC CC_REGNUM) (const_int 0)) ++ (match_dup 1) ++ (match_dup 2)))] ++ "" + [(set_attr "conds" "clob") + (set_attr "length" "8,12")] + ) +@@ -3316,16 +3500,24 @@ + "" + ) + +-(define_insn "*arm_umaxsi3" ++(define_insn_and_split "*arm_umaxsi3" + [(set (match_operand:SI 0 "s_register_operand" "=r,r,r") + (umax:SI (match_operand:SI 1 "s_register_operand" "0,r,?r") + (match_operand:SI 2 "arm_rhs_operand" "rI,0,rI"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" +- "@ +- cmp\\t%1, %2\;movcc\\t%0, %2 +- cmp\\t%1, %2\;movcs\\t%0, %1 +- cmp\\t%1, %2\;movcs\\t%0, %1\;movcc\\t%0, %2" ++ "#" ++ ; cmp\\t%1, %2\;movcc\\t%0, %2 ++ ; cmp\\t%1, %2\;movcs\\t%0, %1 ++ ; cmp\\t%1, %2\;movcs\\t%0, %1\;movcc\\t%0, %2" ++ "TARGET_ARM" ++ [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 1) (match_dup 2))) ++ (set (match_dup 0) ++ (if_then_else:SI (geu:SI (reg:CC CC_REGNUM) (const_int 0)) ++ (match_dup 1) ++ (match_dup 2)))] ++ "" + [(set_attr "conds" "clob") + (set_attr "length" "8,8,12")] + ) +@@ -3340,16 +3532,24 @@ + "" + ) + +-(define_insn "*arm_uminsi3" ++(define_insn_and_split "*arm_uminsi3" + [(set (match_operand:SI 0 "s_register_operand" "=r,r,r") + (umin:SI (match_operand:SI 1 "s_register_operand" "0,r,?r") + (match_operand:SI 2 "arm_rhs_operand" "rI,0,rI"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" +- "@ +- cmp\\t%1, %2\;movcs\\t%0, %2 +- cmp\\t%1, %2\;movcc\\t%0, %1 +- cmp\\t%1, %2\;movcc\\t%0, %1\;movcs\\t%0, %2" ++ "#" ++ ; cmp\\t%1, %2\;movcs\\t%0, %2 ++ ; cmp\\t%1, %2\;movcc\\t%0, %1 ++ ; cmp\\t%1, %2\;movcc\\t%0, %1\;movcs\\t%0, %2" ++ "TARGET_ARM" ++ [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 1) (match_dup 2))) ++ (set (match_dup 0) ++ (if_then_else:SI (ltu:SI (reg:CC CC_REGNUM) (const_int 0)) ++ (match_dup 1) ++ (match_dup 2)))] ++ "" + [(set_attr "conds" "clob") + (set_attr "length" "8,8,12")] + ) +@@ -3360,7 +3560,7 @@ + [(match_operand:SI 1 "s_register_operand" "r") + (match_operand:SI 2 "s_register_operand" "r")])) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_32BIT" ++ "TARGET_32BIT && optimize_insn_for_size_p()" + "* + operands[3] = gen_rtx_fmt_ee (minmax_code (operands[3]), SImode, + operands[1], operands[2]); +@@ -3423,6 +3623,50 @@ + (const_int 12)))] + ) + ++; Reject the frame pointer in operand[1], since reloading this after ++; it has been eliminated can cause carnage. ++(define_insn_and_split "*minmax_arithsi_non_canon" ++ [(set (match_operand:SI 0 "s_register_operand" "=r,r") ++ (minus:SI ++ (match_operand:SI 1 "s_register_operand" "0,?r") ++ (match_operator:SI 4 "minmax_operator" ++ [(match_operand:SI 2 "s_register_operand" "r,r") ++ (match_operand:SI 3 "arm_rhs_operand" "rI,rI")]))) ++ (clobber (reg:CC CC_REGNUM))] ++ "TARGET_32BIT && !arm_eliminable_register (operands[1])" ++ "#" ++ "TARGET_32BIT && !arm_eliminable_register (operands[1]) && reload_completed" ++ [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 2) (match_dup 3))) ++ ++ (cond_exec (match_op_dup 4 [(reg:CC CC_REGNUM) (const_int 0)]) ++ (set (match_dup 0) ++ (minus:SI (match_dup 1) ++ (match_dup 2)))) ++ (cond_exec (match_op_dup 5 [(reg:CC CC_REGNUM) (const_int 0)]) ++ (set (match_dup 0) ++ (minus:SI (match_dup 1) ++ (match_dup 3))))] ++ { ++ enum machine_mode mode = SELECT_CC_MODE (GET_CODE (operands[1]), ++ operands[2], operands[3]); ++ enum rtx_code rc = minmax_code (operands[4]); ++ operands[4] = gen_rtx_fmt_ee (rc, VOIDmode, ++ operands[2], operands[3]); ++ ++ if (mode == CCFPmode || mode == CCFPEmode) ++ rc = reverse_condition_maybe_unordered (rc); ++ else ++ rc = reverse_condition (rc); ++ operands[5] = gen_rtx_fmt_ee (rc, SImode, operands[2], operands[3]); ++ } ++ [(set_attr "conds" "clob") ++ (set (attr "length") ++ (if_then_else (eq_attr "is_thumb" "yes") ++ (const_int 14) ++ (const_int 12)))] ++) ++ + (define_code_iterator SAT [smin smax]) + (define_code_iterator SATrev [smin smax]) + (define_code_attr SATlo [(smin "1") (smax "2")]) +@@ -3533,13 +3777,26 @@ + " + ) + +-(define_insn "arm_ashldi3_1bit" ++(define_insn_and_split "arm_ashldi3_1bit" + [(set (match_operand:DI 0 "s_register_operand" "=r,&r") + (ashift:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT" +- "movs\\t%Q0, %Q1, asl #1\;adc\\t%R0, %R1, %R1" ++ "#" ; "movs\\t%Q0, %Q1, asl #1\;adc\\t%R0, %R1, %R1" ++ "&& reload_completed" ++ [(parallel [(set (reg:CC CC_REGNUM) ++ (compare:CC (ashift:SI (match_dup 1) (const_int 1)) ++ (const_int 0))) ++ (set (match_dup 0) (ashift:SI (match_dup 1) (const_int 1)))]) ++ (set (match_dup 2) (plus:SI (plus:SI (match_dup 3) (match_dup 3)) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] ++ { ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ operands[3] = gen_highpart (SImode, operands[1]); ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ } + [(set_attr "conds" "clob") + (set_attr "length" "8")] + ) +@@ -3615,18 +3872,43 @@ + " + ) + +-(define_insn "arm_ashrdi3_1bit" ++(define_insn_and_split "arm_ashrdi3_1bit" + [(set (match_operand:DI 0 "s_register_operand" "=r,&r") + (ashiftrt:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT" +- "movs\\t%R0, %R1, asr #1\;mov\\t%Q0, %Q1, rrx" ++ "#" ; "movs\\t%R0, %R1, asr #1\;mov\\t%Q0, %Q1, rrx" ++ "&& reload_completed" ++ [(parallel [(set (reg:CC CC_REGNUM) ++ (compare:CC (ashiftrt:SI (match_dup 3) (const_int 1)) ++ (const_int 0))) ++ (set (match_dup 2) (ashiftrt:SI (match_dup 3) (const_int 1)))]) ++ (set (match_dup 0) (unspec:SI [(match_dup 1) ++ (reg:CC_C CC_REGNUM)] ++ UNSPEC_RRX))] ++ { ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ operands[3] = gen_highpart (SImode, operands[1]); ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ } + [(set_attr "conds" "clob") +- (set_attr "insn" "mov") + (set_attr "length" "8")] + ) + ++(define_insn "*rrx" ++ [(set (match_operand:SI 0 "s_register_operand" "=r") ++ (unspec:SI [(match_operand:SI 1 "s_register_operand" "r") ++ (reg:CC_C CC_REGNUM)] ++ UNSPEC_RRX))] ++ "TARGET_32BIT" ++ "mov\\t%0, %1, rrx" ++ [(set_attr "conds" "use") ++ (set_attr "insn" "mov") ++ (set_attr "type" "alu_shift")] ++) ++ + (define_expand "ashrsi3" + [(set (match_operand:SI 0 "s_register_operand" "") + (ashiftrt:SI (match_operand:SI 1 "s_register_operand" "") +@@ -3695,15 +3977,28 @@ + " + ) + +-(define_insn "arm_lshrdi3_1bit" ++(define_insn_and_split "arm_lshrdi3_1bit" + [(set (match_operand:DI 0 "s_register_operand" "=r,&r") + (lshiftrt:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT" +- "movs\\t%R0, %R1, lsr #1\;mov\\t%Q0, %Q1, rrx" ++ "#" ; "movs\\t%R0, %R1, lsr #1\;mov\\t%Q0, %Q1, rrx" ++ "&& reload_completed" ++ [(parallel [(set (reg:CC CC_REGNUM) ++ (compare:CC (lshiftrt:SI (match_dup 3) (const_int 1)) ++ (const_int 0))) ++ (set (match_dup 2) (lshiftrt:SI (match_dup 3) (const_int 1)))]) ++ (set (match_dup 0) (unspec:SI [(match_dup 1) ++ (reg:CC_C CC_REGNUM)] ++ UNSPEC_RRX))] ++ { ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ operands[3] = gen_highpart (SImode, operands[1]); ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ } + [(set_attr "conds" "clob") +- (set_attr "insn" "mov") + (set_attr "length" "8")] + ) + +@@ -3791,6 +4086,23 @@ + (const_string "alu_shift_reg")))] + ) + ++(define_insn "*shiftsi3_compare" ++ [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_operator:SI 3 "shift_operator" ++ [(match_operand:SI 1 "s_register_operand" "r") ++ (match_operand:SI 2 "arm_rhs_operand" "rM")]) ++ (const_int 0))) ++ (set (match_operand:SI 0 "s_register_operand" "=r") ++ (match_op_dup 3 [(match_dup 1) (match_dup 2)]))] ++ "TARGET_32BIT" ++ "* return arm_output_shift(operands, 1);" ++ [(set_attr "conds" "set") ++ (set_attr "shift" "1") ++ (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "") ++ (const_string "alu_shift") ++ (const_string "alu_shift_reg")))] ++) ++ + (define_insn "*shiftsi3_compare0" + [(set (reg:CC_NOOV CC_REGNUM) + (compare:CC_NOOV (match_operator:SI 3 "shift_operator" +@@ -4154,12 +4466,24 @@ + + ;; The constraints here are to prevent a *partial* overlap (where %Q0 == %R1). + ;; The first alternative allows the common case of a *full* overlap. +-(define_insn "*arm_negdi2" ++(define_insn_and_split "*arm_negdi2" + [(set (match_operand:DI 0 "s_register_operand" "=r,&r") + (neg:DI (match_operand:DI 1 "s_register_operand" "0,r"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" +- "rsbs\\t%Q0, %Q1, #0\;rsc\\t%R0, %R1, #0" ++ "#" ; "rsbs\\t%Q0, %Q1, #0\;rsc\\t%R0, %R1, #0" ++ "&& reload_completed" ++ [(parallel [(set (reg:CC CC_REGNUM) ++ (compare:CC (const_int 0) (match_dup 1))) ++ (set (match_dup 0) (minus:SI (const_int 0) (match_dup 1)))]) ++ (set (match_dup 2) (minus:SI (minus:SI (const_int 0) (match_dup 3)) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] ++ { ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ operands[3] = gen_highpart (SImode, operands[1]); ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ } + [(set_attr "conds" "clob") + (set_attr "length" "8")] + ) +@@ -4209,6 +4533,73 @@ + "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "") + ++;; Negate an extended 32-bit value. ++(define_insn_and_split "*negdi_extendsidi" ++ [(set (match_operand:DI 0 "s_register_operand" "=r,&r,l,&l") ++ (neg:DI (sign_extend:DI (match_operand:SI 1 "s_register_operand" "0,r,0,l")))) ++ (clobber (reg:CC CC_REGNUM))] ++ "TARGET_32BIT" ++ "#" ; rsb\\t%Q0, %1, #0\;asr\\t%R0, %Q0, #31 ++ "&& reload_completed" ++ [(const_int 0)] ++ { ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ rtx tmp = gen_rtx_SET (VOIDmode, ++ operands[0], ++ gen_rtx_MINUS (SImode, ++ const0_rtx, ++ operands[1])); ++ if (TARGET_ARM) ++ { ++ emit_insn (tmp); ++ } ++ else ++ { ++ /* Set the flags, to emit the short encoding in Thumb2. */ ++ rtx flags = gen_rtx_SET (VOIDmode, ++ gen_rtx_REG (CCmode, CC_REGNUM), ++ gen_rtx_COMPARE (CCmode, ++ const0_rtx, ++ operands[1])); ++ emit_insn (gen_rtx_PARALLEL (VOIDmode, ++ gen_rtvec (2, ++ flags, ++ tmp))); ++ } ++ emit_insn (gen_rtx_SET (VOIDmode, ++ operands[2], ++ gen_rtx_ASHIFTRT (SImode, ++ operands[0], ++ GEN_INT (31)))); ++ DONE; ++ } ++ [(set_attr "length" "8,8,4,4") ++ (set_attr "arch" "a,a,t2,t2")] ++) ++ ++(define_insn_and_split "*negdi_zero_extendsidi" ++ [(set (match_operand:DI 0 "s_register_operand" "=r,&r") ++ (neg:DI (zero_extend:DI (match_operand:SI 1 "s_register_operand" "0,r")))) ++ (clobber (reg:CC CC_REGNUM))] ++ "TARGET_32BIT" ++ "#" ; "rsbs\\t%Q0, %1, #0\;sbc\\t%R0,%R0,%R0" ++ ;; Don't care what register is input to sbc, ++ ;; since we just just need to propagate the carry. ++ "&& reload_completed" ++ [(parallel [(set (reg:CC CC_REGNUM) ++ (compare:CC (const_int 0) (match_dup 1))) ++ (set (match_dup 0) (minus:SI (const_int 0) (match_dup 1)))]) ++ (set (match_dup 2) (minus:SI (minus:SI (match_dup 2) (match_dup 2)) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] ++ { ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ } ++ [(set_attr "conds" "clob") ++ (set_attr "length" "8")] ;; length in thumb is 4 ++) ++ + ;; abssi2 doesn't really clobber the condition codes if a different register + ;; is being set. To keep things simple, assume during rtl manipulations that + ;; it does, but tell the final scan operator the truth. Similarly for +@@ -4227,14 +4618,67 @@ + operands[2] = gen_rtx_REG (CCmode, CC_REGNUM); + ") + +-(define_insn "*arm_abssi2" ++(define_insn_and_split "*arm_abssi2" + [(set (match_operand:SI 0 "s_register_operand" "=r,&r") + (abs:SI (match_operand:SI 1 "s_register_operand" "0,r"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" +- "@ +- cmp\\t%0, #0\;rsblt\\t%0, %0, #0 +- eor%?\\t%0, %1, %1, asr #31\;sub%?\\t%0, %0, %1, asr #31" ++ "#" ++ "&& reload_completed" ++ [(const_int 0)] ++ { ++ /* if (which_alternative == 0) */ ++ if (REGNO(operands[0]) == REGNO(operands[1])) ++ { ++ /* Emit the pattern: ++ cmp\\t%0, #0\;rsblt\\t%0, %0, #0 ++ [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 0) (const_int 0))) ++ (cond_exec (lt:CC (reg:CC CC_REGNUM) (const_int 0)) ++ (set (match_dup 0) (minus:SI (const_int 0) (match_dup 1))))] ++ */ ++ emit_insn (gen_rtx_SET (VOIDmode, ++ gen_rtx_REG (CCmode, CC_REGNUM), ++ gen_rtx_COMPARE (CCmode, operands[0], const0_rtx))); ++ emit_insn (gen_rtx_COND_EXEC (VOIDmode, ++ (gen_rtx_LT (SImode, ++ gen_rtx_REG (CCmode, CC_REGNUM), ++ const0_rtx)), ++ (gen_rtx_SET (VOIDmode, ++ operands[0], ++ (gen_rtx_MINUS (SImode, ++ const0_rtx, ++ operands[1])))))); ++ DONE; ++ } ++ else ++ { ++ /* Emit the pattern: ++ alt1: eor%?\\t%0, %1, %1, asr #31\;sub%?\\t%0, %0, %1, asr #31 ++ [(set (match_dup 0) ++ (xor:SI (match_dup 1) ++ (ashiftrt:SI (match_dup 1) (const_int 31)))) ++ (set (match_dup 0) ++ (minus:SI (match_dup 0) ++ (ashiftrt:SI (match_dup 1) (const_int 31))))] ++ */ ++ emit_insn (gen_rtx_SET (VOIDmode, ++ operands[0], ++ gen_rtx_XOR (SImode, ++ gen_rtx_ASHIFTRT (SImode, ++ operands[1], ++ GEN_INT (31)), ++ operands[1]))); ++ emit_insn (gen_rtx_SET (VOIDmode, ++ operands[0], ++ gen_rtx_MINUS (SImode, ++ operands[0], ++ gen_rtx_ASHIFTRT (SImode, ++ operands[1], ++ GEN_INT (31))))); ++ DONE; ++ } ++ } + [(set_attr "conds" "clob,*") + (set_attr "shift" "1") + (set_attr "predicable" "no, yes") +@@ -4255,14 +4699,56 @@ + [(set_attr "length" "6")] + ) + +-(define_insn "*arm_neg_abssi2" ++(define_insn_and_split "*arm_neg_abssi2" + [(set (match_operand:SI 0 "s_register_operand" "=r,&r") + (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" "0,r")))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" +- "@ +- cmp\\t%0, #0\;rsbgt\\t%0, %0, #0 +- eor%?\\t%0, %1, %1, asr #31\;rsb%?\\t%0, %0, %1, asr #31" ++ "#" ++ "&& reload_completed" ++ [(const_int 0)] ++ { ++ /* if (which_alternative == 0) */ ++ if (REGNO (operands[0]) == REGNO (operands[1])) ++ { ++ /* Emit the pattern: ++ cmp\\t%0, #0\;rsbgt\\t%0, %0, #0 ++ */ ++ emit_insn (gen_rtx_SET (VOIDmode, ++ gen_rtx_REG (CCmode, CC_REGNUM), ++ gen_rtx_COMPARE (CCmode, operands[0], const0_rtx))); ++ emit_insn (gen_rtx_COND_EXEC (VOIDmode, ++ gen_rtx_GT (SImode, ++ gen_rtx_REG (CCmode, CC_REGNUM), ++ const0_rtx), ++ gen_rtx_SET (VOIDmode, ++ operands[0], ++ (gen_rtx_MINUS (SImode, ++ const0_rtx, ++ operands[1]))))); ++ } ++ else ++ { ++ /* Emit the pattern: ++ eor%?\\t%0, %1, %1, asr #31\;rsb%?\\t%0, %0, %1, asr #31 ++ */ ++ emit_insn (gen_rtx_SET (VOIDmode, ++ operands[0], ++ gen_rtx_XOR (SImode, ++ gen_rtx_ASHIFTRT (SImode, ++ operands[1], ++ GEN_INT (31)), ++ operands[1]))); ++ emit_insn (gen_rtx_SET (VOIDmode, ++ operands[0], ++ gen_rtx_MINUS (SImode, ++ gen_rtx_ASHIFTRT (SImode, ++ operands[1], ++ GEN_INT (31)), ++ operands[0]))); ++ } ++ DONE; ++ } + [(set_attr "conds" "clob,*") + (set_attr "shift" "1") + (set_attr "predicable" "no, yes") +@@ -4330,7 +4816,7 @@ [(set_attr "length" "*,8,8,*") (set_attr "predicable" "no,yes,yes,no") (set_attr "neon_type" "neon_int_1,*,*,neon_int_1") @@ -3118,7 +16883,7 @@ ) (define_expand "one_cmplsi2" -@@ -4498,7 +4493,7 @@ +@@ -4498,7 +4984,7 @@ "TARGET_32BIT " "#" [(set_attr "length" "8,4,8,8") @@ -3127,7 +16892,7 @@ (set_attr "ce_count" "2") (set_attr "predicable" "yes")] ) -@@ -4513,7 +4508,7 @@ +@@ -4513,7 +4999,7 @@ (set_attr "ce_count" "2") (set_attr "shift" "1") (set_attr "predicable" "yes") @@ -3136,10 +16901,168 @@ ) ;; Splits for all extensions to DImode -@@ -8110,6 +8105,39 @@ +@@ -5313,8 +5799,8 @@ + ) + + (define_insn "*arm_movdi" +- [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, r, r, m") +- (match_operand:DI 1 "di_operand" "rDa,Db,Dc,mi,r"))] ++ [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, r, q, m") ++ (match_operand:DI 1 "di_operand" "rDa,Db,Dc,mi,q"))] + "TARGET_32BIT + && !(TARGET_HARD_FLOAT && TARGET_VFP) + && !TARGET_IWMMXT +@@ -6738,8 +7224,8 @@ + ) + + (define_insn "*movdf_soft_insn" +- [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=r,r,r,r,m") +- (match_operand:DF 1 "soft_df_operand" "rDa,Db,Dc,mF,r"))] ++ [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=r,r,r,q,m") ++ (match_operand:DF 1 "soft_df_operand" "rDa,Db,Dc,mF,q"))] + "TARGET_32BIT && TARGET_SOFT_FLOAT + && ( register_operand (operands[0], DFmode) + || register_operand (operands[1], DFmode))" +@@ -7617,23 +8103,64 @@ + ;; if-conversion can not reduce to a conditional compare, so we do + ;; that directly. + +-(define_insn "*arm_cmpdi_insn" ++(define_insn_and_split "*arm_cmpdi_insn" + [(set (reg:CC_NCV CC_REGNUM) + (compare:CC_NCV (match_operand:DI 0 "s_register_operand" "r") + (match_operand:DI 1 "arm_di_operand" "rDi"))) + (clobber (match_scratch:SI 2 "=r"))] + "TARGET_32BIT" +- "cmp\\t%Q0, %Q1\;sbcs\\t%2, %R0, %R1" ++ "#" ; "cmp\\t%Q0, %Q1\;sbcs\\t%2, %R0, %R1" ++ "&& reload_completed" ++ [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 0) (match_dup 1))) ++ (parallel [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 3) (match_dup 4))) ++ (set (match_dup 2) ++ (minus:SI (match_dup 5) ++ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))])] ++ { ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ if (CONST_INT_P (operands[1])) ++ { ++ operands[4] = GEN_INT (~INTVAL (gen_highpart_mode (SImode, ++ DImode, ++ operands[1]))); ++ operands[5] = gen_rtx_PLUS (SImode, operands[3], operands[4]); ++ } ++ else ++ { ++ operands[4] = gen_highpart (SImode, operands[1]); ++ operands[5] = gen_rtx_MINUS (SImode, operands[3], operands[4]); ++ } ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ operands[2] = gen_lowpart (SImode, operands[2]); ++ } + [(set_attr "conds" "set") + (set_attr "length" "8")] + ) + +-(define_insn "*arm_cmpdi_unsigned" ++(define_insn_and_split "*arm_cmpdi_unsigned" + [(set (reg:CC_CZ CC_REGNUM) + (compare:CC_CZ (match_operand:DI 0 "s_register_operand" "r") + (match_operand:DI 1 "arm_di_operand" "rDi")))] + "TARGET_32BIT" +- "cmp\\t%R0, %R1\;it eq\;cmpeq\\t%Q0, %Q1" ++ "#" ; "cmp\\t%R0, %R1\;it eq\;cmpeq\\t%Q0, %Q1" ++ "&& reload_completed" ++ [(set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 2) (match_dup 3))) ++ (cond_exec (eq:SI (reg:CC CC_REGNUM) (const_int 0)) ++ (set (reg:CC CC_REGNUM) ++ (compare:CC (match_dup 0) (match_dup 1))))] ++ { ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[0] = gen_lowpart (SImode, operands[0]); ++ if (CONST_INT_P (operands[1])) ++ operands[3] = gen_highpart_mode (SImode, DImode, operands[1]); ++ else ++ operands[3] = gen_highpart (SImode, operands[1]); ++ operands[1] = gen_lowpart (SImode, operands[1]); ++ } + [(set_attr "conds" "set") + (set_attr "length" "8")] + ) +@@ -7758,36 +8285,56 @@ + operands[3] = const0_rtx;" + ) + +-(define_insn "*mov_scc" ++(define_insn_and_split "*mov_scc" + [(set (match_operand:SI 0 "s_register_operand" "=r") + (match_operator:SI 1 "arm_comparison_operator" + [(match_operand 2 "cc_register" "") (const_int 0)]))] + "TARGET_ARM" +- "mov%D1\\t%0, #0\;mov%d1\\t%0, #1" ++ "#" ; "mov%D1\\t%0, #0\;mov%d1\\t%0, #1" ++ "TARGET_ARM" ++ [(set (match_dup 0) ++ (if_then_else:SI (match_dup 1) ++ (const_int 1) ++ (const_int 0)))] ++ "" + [(set_attr "conds" "use") +- (set_attr "insn" "mov") + (set_attr "length" "8")] + ) + +-(define_insn "*mov_negscc" ++(define_insn_and_split "*mov_negscc" + [(set (match_operand:SI 0 "s_register_operand" "=r") + (neg:SI (match_operator:SI 1 "arm_comparison_operator" + [(match_operand 2 "cc_register" "") (const_int 0)])))] + "TARGET_ARM" +- "mov%D1\\t%0, #0\;mvn%d1\\t%0, #0" ++ "#" ; "mov%D1\\t%0, #0\;mvn%d1\\t%0, #0" ++ "TARGET_ARM" ++ [(set (match_dup 0) ++ (if_then_else:SI (match_dup 1) ++ (match_dup 3) ++ (const_int 0)))] ++ { ++ operands[3] = GEN_INT (~0); ++ } + [(set_attr "conds" "use") +- (set_attr "insn" "mov") + (set_attr "length" "8")] + ) + +-(define_insn "*mov_notscc" ++(define_insn_and_split "*mov_notscc" + [(set (match_operand:SI 0 "s_register_operand" "=r") + (not:SI (match_operator:SI 1 "arm_comparison_operator" + [(match_operand 2 "cc_register" "") (const_int 0)])))] + "TARGET_ARM" +- "mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1" ++ "#" ; "mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1" ++ "TARGET_ARM" ++ [(set (match_dup 0) ++ (if_then_else:SI (match_dup 1) ++ (match_dup 3) ++ (match_dup 4)))] ++ { ++ operands[3] = GEN_INT (~1); ++ operands[4] = GEN_INT (~0); ++ } + [(set_attr "conds" "use") +- (set_attr "insn" "mov") + (set_attr "length" "8")] + ) + +@@ -8110,7 +8657,40 @@ }" ) +-(define_insn "*movsicc_insn" +(define_insn "*cmov" + [(set (match_operand:SDF 0 "s_register_operand" "=") + (if_then_else:SDF (match_operator 1 "arm_vsel_comparison_operator" @@ -3173,6 +17096,333 @@ + (set_attr "type" "f_sel")] +) + - (define_insn "*movsicc_insn" ++(define_insn_and_split "*movsicc_insn" [(set (match_operand:SI 0 "s_register_operand" "=r,r,r,r,r,r,r,r") (if_then_else:SI + (match_operator 3 "arm_comparison_operator" +@@ -8123,10 +8703,45 @@ + mvn%D3\\t%0, #%B2 + mov%d3\\t%0, %1 + mvn%d3\\t%0, #%B1 +- mov%d3\\t%0, %1\;mov%D3\\t%0, %2 +- mov%d3\\t%0, %1\;mvn%D3\\t%0, #%B2 +- mvn%d3\\t%0, #%B1\;mov%D3\\t%0, %2 +- mvn%d3\\t%0, #%B1\;mvn%D3\\t%0, #%B2" ++ # ++ # ++ # ++ #" ++ ; alt4: mov%d3\\t%0, %1\;mov%D3\\t%0, %2 ++ ; alt5: mov%d3\\t%0, %1\;mvn%D3\\t%0, #%B2 ++ ; alt6: mvn%d3\\t%0, #%B1\;mov%D3\\t%0, %2 ++ ; alt7: mvn%d3\\t%0, #%B1\;mvn%D3\\t%0, #%B2" ++ "&& reload_completed" ++ [(const_int 0)] ++ { ++ enum rtx_code rev_code; ++ enum machine_mode mode; ++ rtx rev_cond; ++ ++ emit_insn (gen_rtx_COND_EXEC (VOIDmode, ++ operands[3], ++ gen_rtx_SET (VOIDmode, ++ operands[0], ++ operands[1]))); ++ ++ rev_code = GET_CODE (operands[3]); ++ mode = GET_MODE (operands[4]); ++ if (mode == CCFPmode || mode == CCFPEmode) ++ rev_code = reverse_condition_maybe_unordered (rev_code); ++ else ++ rev_code = reverse_condition (rev_code); ++ ++ rev_cond = gen_rtx_fmt_ee (rev_code, ++ VOIDmode, ++ operands[4], ++ const0_rtx); ++ emit_insn (gen_rtx_COND_EXEC (VOIDmode, ++ rev_cond, ++ gen_rtx_SET (VOIDmode, ++ operands[0], ++ operands[2]))); ++ DONE; ++ } + [(set_attr "length" "4,4,4,4,8,8,8,8") + (set_attr "conds" "use") + (set_attr "insn" "mov,mvn,mov,mvn,mov,mov,mvn,mvn") +@@ -9095,27 +9710,64 @@ + (set_attr "type" "alu_shift,alu_shift_reg")]) + + +-(define_insn "*and_scc" ++(define_insn_and_split "*and_scc" + [(set (match_operand:SI 0 "s_register_operand" "=r") + (and:SI (match_operator:SI 1 "arm_comparison_operator" +- [(match_operand 3 "cc_register" "") (const_int 0)]) +- (match_operand:SI 2 "s_register_operand" "r")))] ++ [(match_operand 2 "cc_register" "") (const_int 0)]) ++ (match_operand:SI 3 "s_register_operand" "r")))] + "TARGET_ARM" +- "mov%D1\\t%0, #0\;and%d1\\t%0, %2, #1" ++ "#" ; "mov%D1\\t%0, #0\;and%d1\\t%0, %3, #1" ++ "&& reload_completed" ++ [(cond_exec (match_dup 5) (set (match_dup 0) (const_int 0))) ++ (cond_exec (match_dup 4) (set (match_dup 0) ++ (and:SI (match_dup 3) (const_int 1))))] ++ { ++ enum machine_mode mode = GET_MODE (operands[2]); ++ enum rtx_code rc = GET_CODE (operands[1]); ++ ++ /* Note that operands[4] is the same as operands[1], ++ but with VOIDmode as the result. */ ++ operands[4] = gen_rtx_fmt_ee (rc, VOIDmode, operands[2], const0_rtx); ++ if (mode == CCFPmode || mode == CCFPEmode) ++ rc = reverse_condition_maybe_unordered (rc); ++ else ++ rc = reverse_condition (rc); ++ operands[5] = gen_rtx_fmt_ee (rc, VOIDmode, operands[2], const0_rtx); ++ } + [(set_attr "conds" "use") + (set_attr "insn" "mov") + (set_attr "length" "8")] + ) + +-(define_insn "*ior_scc" ++(define_insn_and_split "*ior_scc" + [(set (match_operand:SI 0 "s_register_operand" "=r,r") +- (ior:SI (match_operator:SI 2 "arm_comparison_operator" +- [(match_operand 3 "cc_register" "") (const_int 0)]) +- (match_operand:SI 1 "s_register_operand" "0,?r")))] ++ (ior:SI (match_operator:SI 1 "arm_comparison_operator" ++ [(match_operand 2 "cc_register" "") (const_int 0)]) ++ (match_operand:SI 3 "s_register_operand" "0,?r")))] + "TARGET_ARM" + "@ +- orr%d2\\t%0, %1, #1 +- mov%D2\\t%0, %1\;orr%d2\\t%0, %1, #1" ++ orr%d1\\t%0, %3, #1 ++ #" ++ "&& reload_completed ++ && REGNO (operands [0]) != REGNO (operands[3])" ++ ;; && which_alternative == 1 ++ ; mov%D1\\t%0, %3\;orr%d1\\t%0, %3, #1 ++ [(cond_exec (match_dup 5) (set (match_dup 0) (match_dup 3))) ++ (cond_exec (match_dup 4) (set (match_dup 0) ++ (ior:SI (match_dup 3) (const_int 1))))] ++ { ++ enum machine_mode mode = GET_MODE (operands[2]); ++ enum rtx_code rc = GET_CODE (operands[1]); ++ ++ /* Note that operands[4] is the same as operands[1], ++ but with VOIDmode as the result. */ ++ operands[4] = gen_rtx_fmt_ee (rc, VOIDmode, operands[2], const0_rtx); ++ if (mode == CCFPmode || mode == CCFPEmode) ++ rc = reverse_condition_maybe_unordered (rc); ++ else ++ rc = reverse_condition (rc); ++ operands[5] = gen_rtx_fmt_ee (rc, VOIDmode, operands[2], const0_rtx); ++ } + [(set_attr "conds" "use") + (set_attr "length" "4,8")] + ) +@@ -9822,24 +10474,75 @@ + "") + ;; ??? The conditional patterns above need checking for Thumb-2 usefulness + +-(define_insn "*negscc" ++(define_insn_and_split "*negscc" + [(set (match_operand:SI 0 "s_register_operand" "=r") + (neg:SI (match_operator 3 "arm_comparison_operator" + [(match_operand:SI 1 "s_register_operand" "r") + (match_operand:SI 2 "arm_rhs_operand" "rI")]))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" +- "* +- if (GET_CODE (operands[3]) == LT && operands[2] == const0_rtx) +- return \"mov\\t%0, %1, asr #31\"; ++ "#" ++ "&& reload_completed" ++ [(const_int 0)] ++ { ++ rtx cc_reg = gen_rtx_REG (CCmode, CC_REGNUM); + +- if (GET_CODE (operands[3]) == NE) +- return \"subs\\t%0, %1, %2\;mvnne\\t%0, #0\"; ++ if (GET_CODE (operands[3]) == LT && operands[2] == const0_rtx) ++ { ++ /* Emit mov\\t%0, %1, asr #31 */ ++ emit_insn (gen_rtx_SET (VOIDmode, ++ operands[0], ++ gen_rtx_ASHIFTRT (SImode, ++ operands[1], ++ GEN_INT (31)))); ++ DONE; ++ } ++ else if (GET_CODE (operands[3]) == NE) ++ { ++ /* Emit subs\\t%0, %1, %2\;mvnne\\t%0, #0 */ ++ if (CONST_INT_P (operands[2])) ++ emit_insn (gen_cmpsi2_addneg (operands[0], operands[1], operands[2], ++ GEN_INT (- INTVAL (operands[2])))); ++ else ++ emit_insn (gen_subsi3_compare (operands[0], operands[1], operands[2])); + +- output_asm_insn (\"cmp\\t%1, %2\", operands); +- output_asm_insn (\"mov%D3\\t%0, #0\", operands); +- return \"mvn%d3\\t%0, #0\"; +- " ++ emit_insn (gen_rtx_COND_EXEC (VOIDmode, ++ gen_rtx_NE (SImode, ++ cc_reg, ++ const0_rtx), ++ gen_rtx_SET (SImode, ++ operands[0], ++ GEN_INT (~0)))); ++ DONE; ++ } ++ else ++ { ++ /* Emit: cmp\\t%1, %2\;mov%D3\\t%0, #0\;mvn%d3\\t%0, #0 */ ++ emit_insn (gen_rtx_SET (VOIDmode, ++ cc_reg, ++ gen_rtx_COMPARE (CCmode, operands[1], operands[2]))); ++ enum rtx_code rc = GET_CODE (operands[3]); ++ ++ rc = reverse_condition (rc); ++ emit_insn (gen_rtx_COND_EXEC (VOIDmode, ++ gen_rtx_fmt_ee (rc, ++ VOIDmode, ++ cc_reg, ++ const0_rtx), ++ gen_rtx_SET (VOIDmode, operands[0], const0_rtx))); ++ rc = GET_CODE (operands[3]); ++ emit_insn (gen_rtx_COND_EXEC (VOIDmode, ++ gen_rtx_fmt_ee (rc, ++ VOIDmode, ++ cc_reg, ++ const0_rtx), ++ gen_rtx_SET (VOIDmode, ++ operands[0], ++ GEN_INT (~0)))); ++ DONE; ++ } ++ FAIL; ++ } + [(set_attr "conds" "clob") + (set_attr "length" "12")] + ) +@@ -11626,6 +12329,9 @@ + (set_attr "predicable" "yes")]) + + ++;; Load the load/store double peephole optimizations. ++(include "ldrdstrd.md") ++ + ;; Load the load/store multiple patterns + (include "ldmstm.md") + +--- a/src/gcc/config/arm/neon-gen.ml ++++ b/src/gcc/config/arm/neon-gen.ml +@@ -121,6 +121,7 @@ + | T_uint16 | T_int16 -> T_intHI + | T_uint32 | T_int32 -> T_intSI + | T_uint64 | T_int64 -> T_intDI ++ | T_float16 -> T_floatHF + | T_float32 -> T_floatSF + | T_poly8 -> T_intQI + | T_poly16 -> T_intHI +@@ -275,8 +276,8 @@ + let mode = mode_of_elt elttype shape in + string_of_mode mode + with MixedMode (dst, src) -> +- let dstmode = mode_of_elt dst shape +- and srcmode = mode_of_elt src shape in ++ let dstmode = mode_of_elt ~argpos:0 dst shape ++ and srcmode = mode_of_elt ~argpos:1 src shape in + string_of_mode dstmode ^ string_of_mode srcmode + + let get_shuffle features = +@@ -291,19 +292,24 @@ + match List.find (fun feature -> + match feature with Requires_feature _ -> true + | Requires_arch _ -> true ++ | Requires_FP_bit _ -> true + | _ -> false) + features with +- Requires_feature feature -> ++ Requires_feature feature -> + Format.printf "#ifdef __ARM_FEATURE_%s@\n" feature + | Requires_arch arch -> + Format.printf "#if __ARM_ARCH >= %d@\n" arch ++ | Requires_FP_bit bit -> ++ Format.printf "#if ((__ARM_FP & 0x%X) != 0)@\n" ++ (1 lsl bit) + | _ -> assert false + with Not_found -> assert true + + let print_feature_test_end features = + let feature = +- List.exists (function Requires_feature x -> true +- | Requires_arch x -> true ++ List.exists (function Requires_feature _ -> true ++ | Requires_arch _ -> true ++ | Requires_FP_bit _ -> true + | _ -> false) features in + if feature then Format.printf "#endif@\n" + +@@ -365,6 +371,7 @@ + "__builtin_neon_hi", "int", 16, 4; + "__builtin_neon_si", "int", 32, 2; + "__builtin_neon_di", "int", 64, 1; ++ "__builtin_neon_hf", "float", 16, 4; + "__builtin_neon_sf", "float", 32, 2; + "__builtin_neon_poly8", "poly", 8, 8; + "__builtin_neon_poly16", "poly", 16, 4; +--- a/src/libobjc/ChangeLog.linaro ++++ b/src/libobjc/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libgfortran/ChangeLog.linaro ++++ b/src/libgfortran/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libada/ChangeLog.linaro ++++ b/src/libada/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libffi/ChangeLog.linaro ++++ b/src/libffi/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libssp/ChangeLog.linaro ++++ b/src/libssp/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libcpp/ChangeLog.linaro ++++ b/src/libcpp/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/libcpp/po/ChangeLog.linaro ++++ b/src/libcpp/po/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. +--- a/src/fixincludes/ChangeLog.linaro ++++ b/src/fixincludes/ChangeLog.linaro +@@ -0,0 +1,3 @@ ++2013-04-09 Matthew Gretton-Dann ++ ++ * GCC Linaro 4.8-2013.04 released. diff -Nru gcc-4.8-4.8.0/debian/patches/gcc-multiarch.diff gcc-4.8-4.8.1/debian/patches/gcc-multiarch.diff --- gcc-4.8-4.8.0/debian/patches/gcc-multiarch.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/gcc-multiarch.diff 2013-06-05 12:12:51.000000000 +0000 @@ -33,8 +33,8 @@ +MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) Index: b/src/gcc/config/rs6000/t-linux =================================================================== ---- a/src/gcc/config/rs6000/t-linux 2013-02-26 16:17:56.196765767 +0100 -+++ b/src/gcc/config/rs6000/t-linux 2013-02-26 16:20:18.608762524 +0100 +--- a/src/gcc/config/rs6000/t-linux ++++ b/src/gcc/config/rs6000/t-linux @@ -2,7 +2,7 @@ # or soft-float. ifeq (,$(filter $(with_cpu),$(SOFT_FLOAT_CPUS))$(findstring soft,$(with_float))) @@ -76,7 +76,12 @@ =================================================================== --- a/src/gcc/config/i386/t-kfreebsd +++ b/src/gcc/config/i386/t-kfreebsd -@@ -3,3 +3,5 @@ +@@ -1,5 +1,9 @@ +-MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu) ++ifeq (,$(MULTIARCH_DIRNAME)) ++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu) ++endif + # MULTILIB_OSDIRNAMES are set in t-linux64. KFREEBSD_OS = $(filter kfreebsd%, $(word 3, $(subst -, ,$(target)))) MULTILIB_OSDIRNAMES := $(filter-out mx32=%,$(subst linux,$(KFREEBSD_OS),$(MULTILIB_OSDIRNAMES))) @@ -113,3 +118,14 @@ ;; i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu) tmake_file="$tmake_file i386/t-kfreebsd" +--- a/src/gcc/java/jvspec.c ++++ b/src/gcc/java/jvspec.c +@@ -59,7 +59,7 @@ + "jvgenmain %{findirect-dispatch} %{D*} %b %m.i |\n\ + cc1 %m.i %1 \ + %{!Q:-quiet} -dumpbase %b.c %{d*} %{m*}\ +- %{g*} %{O*} \ ++ %{g*} %{O*} %I \ + %{v:-version} %{pg:-p} %{p}\ + %= level. -- --@item ident --Compile in debug code identified by ident. --@end table -- --@item -fintfc --@cindex @option{-fintfc} --Generate D interface files. -- --@item -fintfc-dir=@var{directory} --@cindex @option{-fintfc-dir} --Write D interface files to @var{directory}. -- --@item -fintfc-file=@var{filename} --@cindex @option{-fintfc-file} --Write D interface file to @var{filename}. -- --@item -fdoc --@cindex @option{-fdoc} --Generate documentation. -- --@item -fdoc-dir=@var{directory} --@cindex @option{-fdoc-dir} --Write documentation file in @var{directory}. -- --@item -fdoc-file=@var{filename} --@cindex @option{-fdoc-file} --Write documentation file to @var{filename}. -- --@item -fdoc-inc=@var{filename} --@cindex @option{-fdoc-inc} --Include a Ddoc macro file. -- --@item -fXf=@var{filename} --@cindex @option{-fXf} --Write JSON file to filename. -- --@item -fdump-source --@cindex @option{fdump-source} --Dump decoded UTF-8 text from source. -- --@item -Wcast-result --@cindex @option{Wcast-result} --Warn about casts that will produce a null or nil result. -- --@item -Werror --@cindex @option{Werror} --Make all warnings into errors. -- --@item -Wno-deprecated --@cindex @option{Wno-deprecated} --Do not warn about usage of deprecated features. -- --@item -Wunknown-pragmas --@cindex @option{Wunknown-pragmas} --Warn when a pragma is encountered that is not understood by GDC. --@end table -- --@c man end -- --@node Index --@unnumbered Index -- --@printindex cp -- -+@cindex introduction -+The official GNU compilers' documentation is released under the terms -+of the GNU Free Documentation License with cover texts. This has been -+considered non free by the Debian Project. Thus you will find it in the -+non-free section of the Debian archive. - @bye -- diff -Nru gcc-4.8-4.8.0/debian/patches/gdc-driver-nophobos.diff gcc-4.8-4.8.1/debian/patches/gdc-driver-nophobos.diff --- gcc-4.8-4.8.0/debian/patches/gdc-driver-nophobos.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/gdc-driver-nophobos.diff 2013-06-05 12:12:51.000000000 +0000 @@ -1,24 +1,24 @@ # DP: Modify gdc driver to have no libphobos by default. ---- a/src/gcc/d/d-lang.cc 2011-07-24 15:48:55.796035654 +0100 -+++ b/src/gcc/d/d-lang.cc 2011-07-24 18:19:45.108908785 +0100 +--- a/src/gcc/d/d-lang.cc ++++ b/src/gcc/d/d-lang.cc @@ -148,7 +148,7 @@ d_init_options_struct (struct gcc_options *opts) { - // GCC options -- opts->x_flag_exceptions = 1; -+ opts->x_flag_exceptions = 0; + // GCC options +- opts->x_flag_exceptions = 1; ++ opts->x_flag_exceptions = 0; - // Avoid range issues for complex multiply and divide. - opts->x_flag_complex_method = 2; ---- a/src/gcc/d/d-spec.c 2011-07-24 15:48:55.820035782 +0100 -+++ b/src/gcc/d/d-spec.c 2011-07-24 18:20:43.841200023 +0100 + // Avoid range issues for complex multiply and divide. + opts->x_flag_complex_method = 2; +--- a/src/gcc/d/d-spec.c ++++ b/src/gcc/d/d-spec.c @@ -84,7 +84,7 @@ - /* If nonzero, use the standard D runtime library when linking with - standard libraries. */ -- int phobos = 1; -+ int phobos = 0; + /* If nonzero, use the standard D runtime library when linking with + standard libraries. */ +- int phobos = 1; ++ int phobos = 0; - /* The number of arguments being added to what's in argv, other than - libraries. We use this to track the number of times we've inserted + /* The number of arguments being added to what's in argv, other than + libraries. We use this to track the number of times we've inserted diff -Nru gcc-4.8-4.8.0/debian/patches/gdc-frontend-posix.diff gcc-4.8-4.8.1/debian/patches/gdc-frontend-posix.diff --- gcc-4.8-4.8.0/debian/patches/gdc-frontend-posix.diff 1970-01-01 00:00:00.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/gdc-frontend-posix.diff 2013-06-05 12:12:51.000000000 +0000 @@ -0,0 +1,13 @@ +# DP: Fix build of the D frontend on the Hurd and KFreeBSD. + +--- a/src/gcc/d/dfrontend/root.c ++++ b/src/gcc/d/dfrontend/root.c +@@ -7,7 +7,7 @@ + // in artistic.txt, or the GNU General Public License in gnu.txt. + // See the included readme.txt for details. + +-#define POSIX (linux || __APPLE__ || __FreeBSD__ || __OpenBSD__ || __sun) ++#define POSIX (__linux__ || __GLIBC__ || __gnu_hurd__ || __APPLE__ || __FreeBSD__ || __OpenBSD__ || __sun) + + #include + #include diff -Nru gcc-4.8-4.8.0/debian/patches/gdc-libphobos-build.diff gcc-4.8-4.8.1/debian/patches/gdc-libphobos-build.diff --- gcc-4.8-4.8.0/debian/patches/gdc-libphobos-build.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/gdc-libphobos-build.diff 2013-06-05 12:12:51.000000000 +0000 @@ -1,7 +1,7 @@ # DP: This implements building of libphobos library in GCC. ---- a/src/configure 2013-02-15 17:45:54.000000000 +0000 -+++ b/src/configure 2013-03-20 16:26:18.442235719 +0000 +--- a/src/configure ++++ b/src/configure @@ -2781,7 +2781,8 @@ target_libraries="target-libgcc \ ${libgcj} \ target-libobjc \ @@ -12,8 +12,8 @@ # these tools are built using the target libraries, and are intended to # run only in the target environment ---- a/src/configure.ac 2013-02-15 17:45:54.000000000 +0000 -+++ b/src/configure.ac 2013-03-20 16:26:18.462235720 +0000 +--- a/src/configure.ac ++++ b/src/configure.ac @@ -168,7 +168,8 @@ target_libraries="target-libgcc \ ${libgcj} \ target-libobjc \ @@ -24,8 +24,8 @@ # these tools are built using the target libraries, and are intended to # run only in the target environment ---- a/src/Makefile.def 2013-01-14 16:15:21.000000000 +0000 -+++ b/src/Makefile.def 2013-03-20 16:26:18.466235720 +0000 +--- a/src/Makefile.def ++++ b/src/Makefile.def @@ -131,6 +131,7 @@ target_modules = { module= libquadmath; target_modules = { module= libgfortran; }; target_modules = { module= libobjc; }; @@ -52,8 +52,8 @@ // Toplevel bootstrap bootstrap_stage = { id=1 ; }; ---- a/src/Makefile.in 2013-01-14 16:15:21.000000000 +0000 -+++ b/src/Makefile.in 2013-03-20 16:26:18.514235720 +0000 +--- a/src/Makefile.in ++++ b/src/Makefile.in @@ -933,6 +933,7 @@ configure-target: \ maybe-configure-target-libgfortran \ maybe-configure-target-libobjc \ diff -Nru gcc-4.8-4.8.0/debian/patches/gdc-texinfo.diff gcc-4.8-4.8.1/debian/patches/gdc-texinfo.diff --- gcc-4.8-4.8.0/debian/patches/gdc-texinfo.diff 1970-01-01 00:00:00.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/gdc-texinfo.diff 2013-06-05 12:12:51.000000000 +0000 @@ -0,0 +1,53 @@ +# DP: Add macros for the gdc texinfo documentation. + +--- a/src/gcc/d/gdc.texi ++++ b/src/gcc/d/gdc.texi +@@ -43,6 +43,22 @@ + @insertcopying + @end ifinfo + ++@macro versionsubtitle ++@ifclear DEVELOPMENT ++@subtitle For @sc{gcc} version @value{version-GCC} ++@end ifclear ++@ifset DEVELOPMENT ++@subtitle For @sc{gcc} version @value{version-GCC} (pre-release) ++@end ifset ++@ifset VERSION_PACKAGE ++@sp 1 ++@subtitle @value{VERSION_PACKAGE} ++@end ifset ++@c Even if there are no authors, the second titlepage line should be ++@c forced to the bottom of the page. ++@vskip 0pt plus 1filll ++@end macro ++ + @titlepage + @title The GNU D Compiler + @versionsubtitle +@@ -138,6 +154,25 @@ + + @c man end + ++@macro gcctabopt{body} ++@code{\body\} ++@end macro ++@macro gccoptlist{body} ++@smallexample ++\body\ ++@end smallexample ++@end macro ++@c Makeinfo handles the above macro OK, TeX needs manual line breaks; ++@c they get lost at some point in handling the macro. But if @macro is ++@c used here rather than @alias, it produces double line breaks. ++@iftex ++@alias gol = * ++@end iftex ++@ifnottex ++@macro gol ++@end macro ++@end ifnottex ++ + @c man begin OPTIONS gdc + + @table @gcctabopt diff -Nru gcc-4.8-4.8.0/debian/patches/gdc-updates.diff gcc-4.8-4.8.1/debian/patches/gdc-updates.diff --- gcc-4.8-4.8.0/debian/patches/gdc-updates.diff 1970-01-01 00:00:00.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/gdc-updates.diff 2013-06-05 12:12:51.000000000 +0000 @@ -0,0 +1,374 @@ +# DP: Updates for gdc. + +--- a/src/gcc/d/ChangeLog ++++ b/src/gcc/d/ChangeLog +@@ -1,3 +1,10 @@ ++2013-06-03 Iain Buclaw ++ ++ * d-decls.cc(VarDeclaration::toSymbol): Don't set default tls model. ++ * d-objfile.cc(ObjectFile::setupSymbolStorage): Set default tls ++ model for var decls before determining whether symbol is public. ++ (build_tlssections): Likewise for TLS symbols. ++ + 2013-06-01 Johannes Pfau + + * d-codegen.cc(maybe_set_builtin_frontend): Check parameter and +--- a/src/gcc/d/d-codegen.cc ++++ b/src/gcc/d/d-codegen.cc +@@ -3130,20 +3130,20 @@ + + switch (i) + { +- case 0: +- case 1: ++ case INTRINSIC_BSF: ++ case INTRINSIC_BSR: + if (!(strcmp (ftype->deco, FuintZint) == 0 || strcmp (ftype->deco, FulongZint) == 0)) + return; + break; + +- case 2: ++ case INTRINSIC_BSWAP: + if (!(strcmp (ftype->deco, FuintZuint) == 0)) + return; + break; + +- case 3: +- case 4: +- case 5: ++ case INTRINSIC_BTC: ++ case INTRINSIC_BTR: ++ case INTRINSIC_BTS: + if (!(strcmp (ftype->deco, FlongplongZint) == 0 || strcmp (ftype->deco, FintpintZint) == 0)) + return; + break; +@@ -3170,27 +3170,31 @@ + if (i == -1) + return; + ++ // Adjust 'i' for this range of enums ++ i += INTRINSIC_COS; ++ gcc_assert (i >= INTRINSIC_COS && i <= INTRINSIC_SQRT); ++ + switch (i) + { +- case 0: +- case 1: +- case 3: +- case 5: ++ case INTRINSIC_COS: ++ case INTRINSIC_FABS: ++ case INTRINSIC_RINT: ++ case INTRINSIC_SIN: + if (!(strcmp (ftype->deco, FeZe) == 0 || strcmp (ftype->deco, FeZe2) == 0)) + return; + break; + +- case 2: ++ case INTRINSIC_LDEXP: + if (!(strcmp (ftype->deco, FrealintZint) == 0)) + return; + break; + +- case 4: ++ case INTRINSIC_RNDTOL: + if (!(strcmp (ftype->deco, FrealZlong) == 0)) + return; + break; + +- case 6: ++ case INTRINSIC_SQRT: + if (!(strcmp (ftype->deco, "FNaNbNfdZd") == 0 || //double + strcmp (ftype->deco, "FNaNbNffZf") == 0 || //& float version + strcmp (ftype->deco, FeZe) == 0 || +@@ -3199,9 +3203,6 @@ + break; + } + +- // Adjust 'i' for this range of enums +- i += INTRINSIC_COS; +- gcc_assert (i >= INTRINSIC_COS && i <= INTRINSIC_SQRT); + tree t = decl->toSymbol()->Stree; + + // rndtol returns a long type, sqrt any float type, +--- a/src/gcc/d/d-decls.cc ++++ b/src/gcc/d/d-decls.cc +@@ -234,18 +234,12 @@ + insert_decl_attributes (var_decl, "dllexport"); + #endif + +- if (isDataseg() && isThreadlocal()) ++ if (global.params.vtls && isDataseg() && isThreadlocal()) + { +- // Tell backend this is a thread local decl. +- DECL_TLS_MODEL (var_decl) = decl_default_tls_model (var_decl); +- +- if (global.params.vtls) +- { +- char *p = loc.toChars(); +- fprintf (stderr, "%s: %s is thread local\n", p ? p : "", toChars()); +- if (p) +- free (p); +- } ++ char *p = loc.toChars(); ++ fprintf (stderr, "%s: %s is thread local\n", p ? p : "", toChars()); ++ if (p) ++ free (p); + } + } + return csym; +--- a/src/gcc/d/dfrontend/argtypes.c ++++ b/src/gcc/d/dfrontend/argtypes.c +@@ -159,6 +159,9 @@ + + TypeTuple *TypeDArray::toArgTypes() + { ++ if (size(0) == 8) ++ return new TypeTuple(Type::tint64); ++ + /* Should be done as if it were: + * struct S { size_t length; void* ptr; } + */ +@@ -177,6 +180,9 @@ + + TypeTuple *TypeDelegate::toArgTypes() + { ++ if (size(0) == 8) ++ return new TypeTuple(Type::tint64); ++ + /* Should be done as if it were: + * struct S { void* ptr; void* funcptr; } + */ +--- a/src/gcc/d/d-objfile.cc ++++ b/src/gcc/d/d-objfile.cc +@@ -1419,35 +1419,35 @@ + + + void +-ObjectFile::makeDeclOneOnly (tree decl_tree) ++ObjectFile::makeDeclOneOnly (tree decl) + { +- if (!D_DECL_IS_TEMPLATE (decl_tree) || emitTemplates != TEprivate) ++ if (!D_DECL_IS_TEMPLATE (decl) || emitTemplates != TEprivate) + { + // Weak definitions have to be public. +- if (!TREE_PUBLIC (decl_tree)) ++ if (!TREE_PUBLIC (decl)) + return; + } + + /* First method: Use one-only. If user has specified -femit-templates, + honor that even if the target supports one-only. */ +- if (!D_DECL_IS_TEMPLATE (decl_tree) || emitTemplates != TEprivate) ++ if (!D_DECL_IS_TEMPLATE (decl) || emitTemplates != TEprivate) + { + // Necessary to allow DECL_ONE_ONLY or DECL_WEAK functions to be inlined +- if (TREE_CODE (decl_tree) == FUNCTION_DECL) +- DECL_DECLARED_INLINE_P (decl_tree) = 1; ++ if (TREE_CODE (decl) == FUNCTION_DECL) ++ DECL_DECLARED_INLINE_P (decl) = 1; + + // The following makes assumptions about the behavior of make_decl_one_only. + if (SUPPORTS_ONE_ONLY) + { +- make_decl_one_only (decl_tree, d_comdat_group (decl_tree)); ++ make_decl_one_only (decl, d_comdat_group (decl)); + return; + } + else if (SUPPORTS_WEAK) + { +- tree decl_init = DECL_INITIAL (decl_tree); +- DECL_INITIAL (decl_tree) = integer_zero_node; +- make_decl_one_only (decl_tree, d_comdat_group (decl_tree)); +- DECL_INITIAL (decl_tree) = decl_init; ++ tree decl_init = DECL_INITIAL (decl); ++ DECL_INITIAL (decl) = integer_zero_node; ++ make_decl_one_only (decl, d_comdat_group (decl)); ++ DECL_INITIAL (decl) = decl_init; + return; + } + } +@@ -1456,25 +1456,24 @@ + -femit-templates. */ + else if (emitTemplates == TEprivate) + { +- TREE_PRIVATE (decl_tree) = 1; +- TREE_PUBLIC (decl_tree) = 0; ++ TREE_PRIVATE (decl) = 1; ++ TREE_PUBLIC (decl) = 0; + } + + /* Fallback, cannot have multiple copies. */ +- if (DECL_INITIAL (decl_tree) == NULL_TREE +- || DECL_INITIAL (decl_tree) == error_mark_node) +- DECL_COMMON (decl_tree) = 1; ++ if (DECL_INITIAL (decl) == NULL_TREE ++ || DECL_INITIAL (decl) == error_mark_node) ++ DECL_COMMON (decl) = 1; + } + + void +-ObjectFile::setupSymbolStorage (Dsymbol *dsym, tree decl_tree, bool force_static_public) ++ObjectFile::setupSymbolStorage (Dsymbol *dsym, tree decl, bool is_public) + { +- Declaration *real_decl = dsym->isDeclaration(); +- FuncDeclaration *func_decl = real_decl ? real_decl->isFuncDeclaration() : 0; ++ Declaration *rd = dsym->isDeclaration(); + +- if (force_static_public +- || (TREE_CODE (decl_tree) == VAR_DECL && (real_decl && real_decl->isDataseg())) +- || (TREE_CODE (decl_tree) == FUNCTION_DECL)) ++ if (is_public ++ || (TREE_CODE (decl) == VAR_DECL && (rd && rd->isDataseg())) ++ || (TREE_CODE (decl) == FUNCTION_DECL)) + { + bool has_module = false; + bool is_template = false; +@@ -1495,58 +1494,63 @@ + + if (is_template) + { +- D_DECL_ONE_ONLY (decl_tree) = 1; +- D_DECL_IS_TEMPLATE (decl_tree) = 1; ++ D_DECL_ONE_ONLY (decl) = 1; ++ D_DECL_IS_TEMPLATE (decl) = 1; + has_module = hasModule (ti_obj_file_mod) && emitTemplates != TEnone; + } + else + has_module = hasModule (dsym->getModule()); + +- if (real_decl) ++ VarDeclaration *vd = rd ? rd->isVarDeclaration() : NULL; ++ if (vd != NULL) + { +- if (real_decl->isVarDeclaration() +- && real_decl->storage_class & STCextern) ++ if (vd->storage_class & STCextern) + has_module = false; ++ ++ // Tell backend this is a thread local decl. ++ if (vd->isDataseg() && vd->isThreadlocal()) ++ DECL_TLS_MODEL (decl) = decl_default_tls_model (decl); + } + + if (has_module) + { +- DECL_EXTERNAL (decl_tree) = 0; +- TREE_STATIC (decl_tree) = 1; ++ DECL_EXTERNAL (decl) = 0; ++ TREE_STATIC (decl) = 1; + +- if (real_decl && real_decl->storage_class & STCcomdat) +- D_DECL_ONE_ONLY (decl_tree) = 1; ++ if (rd && rd->storage_class & STCcomdat) ++ D_DECL_ONE_ONLY (decl) = 1; + } + else + { +- DECL_EXTERNAL (decl_tree) = 1; +- TREE_STATIC (decl_tree) = 0; ++ DECL_EXTERNAL (decl) = 1; ++ TREE_STATIC (decl) = 0; + } + + // Do this by default, but allow private templates to override +- if (!func_decl || !func_decl->isNested() || force_static_public) +- TREE_PUBLIC (decl_tree) = 1; ++ FuncDeclaration *fd = rd ? rd->isFuncDeclaration() : NULL; ++ if (!fd || !fd->isNested() || is_public) ++ TREE_PUBLIC (decl) = 1; + +- if (D_DECL_ONE_ONLY (decl_tree)) +- makeDeclOneOnly (decl_tree); ++ if (D_DECL_ONE_ONLY (decl)) ++ makeDeclOneOnly (decl); + } + else + { +- TREE_STATIC (decl_tree) = 0; +- DECL_EXTERNAL (decl_tree) = 0; +- TREE_PUBLIC (decl_tree) = 0; ++ TREE_STATIC (decl) = 0; ++ DECL_EXTERNAL (decl) = 0; ++ TREE_PUBLIC (decl) = 0; + } + +- if (real_decl && real_decl->userAttributes) +- decl_attributes (&decl_tree, build_attributes (real_decl->userAttributes), 0); +- else if (DECL_ATTRIBUTES (decl_tree) != NULL) +- decl_attributes (&decl_tree, DECL_ATTRIBUTES (decl_tree), 0); ++ if (rd && rd->userAttributes) ++ decl_attributes (&decl, build_attributes (rd->userAttributes), 0); ++ else if (DECL_ATTRIBUTES (decl) != NULL) ++ decl_attributes (&decl, DECL_ATTRIBUTES (decl), 0); + } + + void +-ObjectFile::setupStaticStorage (Dsymbol *dsym, tree decl_tree) ++ObjectFile::setupStaticStorage (Dsymbol *dsym, tree decl) + { +- setupSymbolStorage (dsym, decl_tree, true); ++ setupSymbolStorage (dsym, decl, true); + } + + +@@ -2239,23 +2243,23 @@ + + tlsstart = build_decl (UNKNOWN_LOCATION, VAR_DECL, + get_identifier ("_tlsstart"), size_type_node); +- TREE_PUBLIC (tlsstart) = 1; + TREE_STATIC (tlsstart) = 1; +- DECL_ARTIFICIAL (tlsstart) = 1; + // DECL_INITIAL so the symbol goes in .tdata + DECL_INITIAL (tlsstart) = build_int_cst (size_type_node, 3); + DECL_TLS_MODEL (tlsstart) = decl_default_tls_model (tlsstart); ++ TREE_PUBLIC (tlsstart) = 1; ++ DECL_ARTIFICIAL (tlsstart) = 1; + object_file->setDeclLoc (tlsstart, cmodule); + rest_of_decl_compilation (tlsstart, 1, 0); + + tlsend = build_decl (UNKNOWN_LOCATION, VAR_DECL, + get_identifier ("_tlsend"), size_type_node); +- TREE_PUBLIC (tlsend) = 1; + TREE_STATIC (tlsend) = 1; +- DECL_ARTIFICIAL (tlsend) = 1; + // DECL_COMMON so the symbol goes in .tcommon + DECL_COMMON (tlsend) = 1; + DECL_TLS_MODEL (tlsend) = decl_default_tls_model (tlsend); ++ TREE_PUBLIC (tlsend) = 1; ++ DECL_ARTIFICIAL (tlsend) = 1; + object_file->setDeclLoc (tlsend, cmodule); + rest_of_decl_compilation (tlsend, 1, 0); + } +--- a/src/libphobos/libdruntime/gcc/deh.d ++++ b/src/libphobos/libdruntime/gcc/deh.d +@@ -102,13 +102,17 @@ + } + } + +- version (GNU_ARM_EABI_Unwinder) +- int _pad; // to place 'obj' behind unwindHeader ++ // To place 'obj' behing unwindHeader. ++ enum UNWIND_PAD = (Phase1Info.sizeof + Object.sizeof) ++ % _Unwind_Exception.alignof; ++ ++ static if (UNWIND_PAD > 0) ++ byte[UNWIND_PAD] _pad; + + Object obj; + + // The exception object must be directly behind unwindHeader. +- // (See IRState::exceptionObject.) ++ // (See build_exception_object.) + static assert(unwindHeader.offsetof - obj.offsetof == obj.sizeof); + + // The generic exception header +@@ -358,7 +362,7 @@ + while (p < info.action_table) + { + _Unwind_Ptr cs_start, cs_len, cs_lp; +- _Unwind_Word cs_action; ++ _uleb128_t cs_action; + + // Note that all call-site encodings are "absolute" displacements. + p = read_encoded_value (null, info.call_site_encoding, p, &cs_start); diff -Nru gcc-4.8-4.8.0/debian/patches/gdc-versym-cpu.diff gcc-4.8-4.8.1/debian/patches/gdc-versym-cpu.diff --- gcc-4.8-4.8.0/debian/patches/gdc-versym-cpu.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/gdc-versym-cpu.diff 2013-06-05 12:12:51.000000000 +0000 @@ -1,7 +1,50 @@ # DP: Implements D CPU version conditions. ---- a/src/gcc/config/aarch64/aarch64.h 2013-01-10 20:38:27.000000000 +0000 -+++ b/src/gcc/config/aarch64/aarch64.h 2013-03-20 16:26:18.726235723 +0000 +This implements the following versions: +* D_HardFloat +* D_SoftFloat + +for all supported architectures. And these where appropriate: +* ARM +** ARM_Thumb +** ARM_HardFloat +** ARM_SoftFloat +** ARM_SoftFP +* AArch64 +* Alpha +** Alpha_SoftFloat +** Alpha_HardFloat +* X86 +* X86_64 +** D_X32 +* IA64 +* MIPS32 +* MIPS64 +** MIPS_O32 +** MIPS_O64 +** MIPS_N32 +** MIPS_N64 +** MIPS_EABI +** MIPS_HardFloat +** MIPS_SoftFloat +* HPPA +* HPPA64 +* PPC +* PPC64 +** PPC_HardFloat +** PPC_SoftFloat +* S390 +* S390X +* SH +* SH64 +* SPARC +* SPARC64 +* SPARC_V8Plus +** SPARC_HardFloat +** SPARC_SoftFloat + +--- a/src/gcc/config/aarch64/aarch64.h ++++ b/src/gcc/config/aarch64/aarch64.h @@ -51,6 +51,14 @@ \ } while (0) @@ -17,8 +60,8 @@ /* Target machine storage layout. */ ---- a/src/gcc/config/alpha/alpha.h 2013-01-10 20:38:27.000000000 +0000 -+++ b/src/gcc/config/alpha/alpha.h 2013-03-20 16:26:18.734235722 +0000 +--- a/src/gcc/config/alpha/alpha.h ++++ b/src/gcc/config/alpha/alpha.h @@ -72,6 +72,23 @@ along with GCC; see the file COPYING3. SUBTARGET_LANGUAGE_CPP_BUILTINS(); \ } while (0) @@ -43,8 +86,8 @@ #ifndef SUBTARGET_LANGUAGE_CPP_BUILTINS #define SUBTARGET_LANGUAGE_CPP_BUILTINS() \ do \ ---- a/src/gcc/config/arm/arm.h 2013-01-15 16:17:28.000000000 +0000 -+++ b/src/gcc/config/arm/arm.h 2013-03-20 16:26:18.746235724 +0000 +--- a/src/gcc/config/arm/arm.h ++++ b/src/gcc/config/arm/arm.h @@ -158,6 +158,31 @@ extern char arm_arch_name[]; builtin_define ("__ARM_ARCH_EXT_IDIV__"); \ } while (0) @@ -77,8 +120,8 @@ #include "config/arm/arm-opts.h" enum target_cpus ---- a/src/gcc/config/i386/i386.h 2013-01-28 20:42:55.000000000 +0000 -+++ b/src/gcc/config/i386/i386.h 2013-03-20 16:26:18.754235724 +0000 +--- a/src/gcc/config/i386/i386.h ++++ b/src/gcc/config/i386/i386.h @@ -588,6 +588,24 @@ extern const char *host_detect_local_cpu /* Target CPU builtins. */ #define TARGET_CPU_CPP_BUILTINS() ix86_target_macros () @@ -104,8 +147,8 @@ /* Target Pragmas. */ #define REGISTER_TARGET_PRAGMAS() ix86_register_pragmas () ---- a/src/gcc/config/ia64/ia64.h 2013-01-10 20:38:27.000000000 +0000 -+++ b/src/gcc/config/ia64/ia64.h 2013-03-20 16:26:18.766235724 +0000 +--- a/src/gcc/config/ia64/ia64.h ++++ b/src/gcc/config/ia64/ia64.h @@ -40,6 +40,13 @@ do { \ builtin_define("__BIG_ENDIAN__"); \ } while (0) @@ -120,8 +163,8 @@ #ifndef SUBTARGET_EXTRA_SPECS #define SUBTARGET_EXTRA_SPECS #endif ---- a/src/gcc/config/mips/mips.h 2013-02-25 13:53:16.000000000 +0000 -+++ b/src/gcc/config/mips/mips.h 2013-03-20 16:26:18.778235723 +0000 +--- a/src/gcc/config/mips/mips.h ++++ b/src/gcc/config/mips/mips.h @@ -551,6 +551,54 @@ struct mips_cpu_info { } \ while (0) @@ -177,8 +220,8 @@ /* Default target_flags if no switches are specified */ #ifndef TARGET_DEFAULT ---- a/src/gcc/config/pa/pa.h 2013-02-03 19:52:37.000000000 +0000 -+++ b/src/gcc/config/pa/pa.h 2013-03-20 16:26:18.870235724 +0000 +--- a/src/gcc/config/pa/pa.h ++++ b/src/gcc/config/pa/pa.h @@ -185,6 +185,20 @@ do { \ builtin_define("_PA_RISC1_0"); \ } while (0) @@ -200,8 +243,8 @@ /* An old set of OS defines for various BSD-like systems. */ #define TARGET_OS_CPP_BUILTINS() \ do \ ---- a/src/gcc/config/rs6000/rs6000.h 2013-02-09 09:30:45.000000000 +0000 -+++ b/src/gcc/config/rs6000/rs6000.h 2013-03-20 16:26:19.058235728 +0000 +--- a/src/gcc/config/rs6000/rs6000.h ++++ b/src/gcc/config/rs6000/rs6000.h @@ -613,6 +613,28 @@ extern unsigned char rs6000_recip_bits[] #define TARGET_CPU_CPP_BUILTINS() \ rs6000_cpu_cpp_builtins (pfile) @@ -231,9 +274,9 @@ /* This is used by rs6000_cpu_cpp_builtins to indicate the byte order we're compiling for. Some configurations may need to override it. */ #define RS6000_CPU_CPP_ENDIAN_BUILTINS() \ ---- a/src/gcc/config/s390/s390.h 2013-03-05 12:02:06.000000000 +0000 -+++ b/src/gcc/config/s390/s390.h 2013-03-20 16:26:19.094235727 +0000 -@@ -108,6 +108,21 @@ enum processor_flags +--- a/src/gcc/config/s390/s390.h ++++ b/src/gcc/config/s390/s390.h +@@ -108,6 +108,22 @@ enum processor_flags } \ while (0) @@ -250,13 +293,14 @@ + builtin_define ("D_SoftFloat"); \ + else if(TARGET_HARD_FLOAT) \ + builtin_define ("D_HardFloat"); \ ++ } \ + while (0) + #ifdef DEFAULT_TARGET_64BIT #define TARGET_DEFAULT (MASK_64BIT | MASK_ZARCH | MASK_HARD_DFP) #else ---- a/src/gcc/config/sh/sh.h 2013-03-13 18:09:10.000000000 +0000 -+++ b/src/gcc/config/sh/sh.h 2013-03-20 16:26:19.102235728 +0000 +--- a/src/gcc/config/sh/sh.h ++++ b/src/gcc/config/sh/sh.h @@ -31,6 +31,22 @@ extern int code_for_indirect_jump_scratc #define TARGET_CPU_CPP_BUILTINS() sh_cpu_cpp_builtins (pfile) @@ -280,8 +324,8 @@ /* Value should be nonzero if functions must have frame pointers. Zero means the frame pointer need not be set up (and parms may be accessed via the stack pointer) in functions that seem suitable. */ ---- a/src/gcc/config/sparc/sparc.h 2013-01-10 20:38:27.000000000 +0000 -+++ b/src/gcc/config/sparc/sparc.h 2013-03-20 16:26:19.110235727 +0000 +--- a/src/gcc/config/sparc/sparc.h ++++ b/src/gcc/config/sparc/sparc.h @@ -27,6 +27,31 @@ along with GCC; see the file COPYING3. #define TARGET_CPU_CPP_BUILTINS() sparc_target_macros () diff -Nru gcc-4.8-4.8.0/debian/patches/gdc-versym-os.diff gcc-4.8-4.8.1/debian/patches/gdc-versym-os.diff --- gcc-4.8-4.8.0/debian/patches/gdc-versym-os.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/gdc-versym-os.diff 2013-06-05 12:12:51.000000000 +0000 @@ -1,7 +1,39 @@ # DP: Implements D OS version conditions. ---- a/src/gcc/config/arm/linux-eabi.h 2013-01-10 20:38:27.000000000 +0000 -+++ b/src/gcc/config/arm/linux-eabi.h 2013-03-20 16:26:19.134235729 +0000 +This implements the following official versions: +* Windows +** Win32 +** Win64 +** Cygwin +** MinGW +* linux +* OSX +* FreeBSD +* OpenBSD +* NetBSD +* Solaris +* Posix +* AIX +* SysV4 +* Hurd +* Android + +These gdc specific versions are also implemented: +* GNU_MinGW64 (for mingw-w64) +* GNU_OpenSolaris (for opensolaris) +* GNU_GLibc (implemented for linux & bsd & opensolaris) +* GNU_UCLibc (implemented for linux) +* GNU_Bionic (implemented for linux) + +These official OS versions are not implemented: +* DragonFlyBSD +* BSD (other BSDs) +* Haiku +* SkyOS +* SysV3 + +--- a/src/gcc/config/arm/linux-eabi.h ++++ b/src/gcc/config/arm/linux-eabi.h @@ -30,6 +30,15 @@ } \ while (false) @@ -18,8 +50,8 @@ /* We default to a soft-float ABI so that binaries can run on all target hardware. If you override this to use the hard-float ABI then change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well. */ ---- a/src/gcc/config/darwin.h 2013-02-11 23:30:10.000000000 +0000 -+++ b/src/gcc/config/darwin.h 2013-03-20 16:26:19.162235729 +0000 +--- a/src/gcc/config/darwin.h ++++ b/src/gcc/config/darwin.h @@ -921,4 +921,10 @@ extern void darwin_driver_init (unsigned providing an osx-version-min of this unless overridden by the User. */ #define DEF_MIN_OSX_VERSION "10.4" @@ -31,8 +63,8 @@ + } while (0) + #endif /* CONFIG_DARWIN_H */ ---- a/src/gcc/config/freebsd.h 2013-01-10 20:38:27.000000000 +0000 -+++ b/src/gcc/config/freebsd.h 2013-03-20 16:26:19.178235729 +0000 +--- a/src/gcc/config/freebsd.h ++++ b/src/gcc/config/freebsd.h @@ -32,6 +32,13 @@ along with GCC; see the file COPYING3. #undef TARGET_OS_CPP_BUILTINS #define TARGET_OS_CPP_BUILTINS() FBSD_TARGET_OS_CPP_BUILTINS() @@ -47,8 +79,8 @@ #undef CPP_SPEC #define CPP_SPEC FBSD_CPP_SPEC ---- a/src/gcc/config/gnu.h 2013-02-06 23:12:03.000000000 +0000 -+++ b/src/gcc/config/gnu.h 2013-03-20 16:26:19.182235728 +0000 +--- a/src/gcc/config/gnu.h ++++ b/src/gcc/config/gnu.h @@ -39,3 +39,11 @@ along with GCC. If not, see + + * include/Makefile.am (bits_headers): Remove ${bits_host_headers}. + (ext_headers): Remove ${ext_host_headers}. + (stamp-${host_alias}): Create ${host_builddir}/../ext. + (stamp-host): Link ${bits_host_headers} and ${ext_host_headers}. + (install-headers): Install ${bits_host_headers} and ${ext_host_headers}. + * include/Makefile.in: Regenerate. + * include/ext/random: Include ext/opt_random.h. + +Index: b/src/libstdc++-v3/include/Makefile.am +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.am 2013-05-12 17:29:35.231053893 +0000 ++++ b/src/libstdc++-v3/include/Makefile.am 2013-05-19 11:45:38.434218502 +0000 +@@ -172,8 +172,7 @@ + ${bits_srcdir}/valarray_array.tcc \ + ${bits_srcdir}/valarray_before.h \ + ${bits_srcdir}/valarray_after.h \ +- ${bits_srcdir}/vector.tcc \ +- ${bits_host_headers} ++ ${bits_srcdir}/vector.tcc + + bits_host_headers = \ + ${glibcxx_srcdir}/${CPU_OPT_BITS_RANDOM} +@@ -535,8 +534,7 @@ + ${ext_srcdir}/vstring.tcc \ + ${ext_srcdir}/vstring_fwd.h \ + ${ext_srcdir}/vstring_util.h \ +- ${ext_compat_headers} \ +- ${ext_host_headers} ++ ${ext_compat_headers} + + ext_compat_headers = \ + ${backward_srcdir}/hash_set \ +@@ -1048,13 +1046,14 @@ + + stamp-${host_alias}: + @-mkdir -p ${host_builddir} ++ @-mkdir -p ${host_builddir}/../ext + @$(STAMP) stamp-${host_alias} + + # Host includes static. + # XXX Missing dependency info for {host_headers_extra} +-stamp-host: ${host_headers} ${host_headers_noinst} stamp-${host_alias} ++stamp-host: ${host_headers} ${bits_host_headers} ${ext_host_headers} ${host_headers_noinst} stamp-${host_alias} + @cd ${host_builddir} && {\ +- $(LN_S) ${host_headers} . || true ;\ ++ $(LN_S) ${host_headers} ${bits_host_headers} . || true ;\ + $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_H) basic_file.h || true ;\ + $(LN_S) ${glibcxx_srcdir}/$(ALLOCATOR_H) c++allocator.h || true ;\ + $(LN_S) ${glibcxx_srcdir}/$(CSTDIO_H) c++io.h || true ;\ +@@ -1064,6 +1063,9 @@ + $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_H) messages_members.h || true ;\ + $(LN_S) ${glibcxx_srcdir}/$(CTIME_H) time_members.h || true;\ + } 2>/dev/null ++ @cd ${host_builddir}/../ext && {\ ++ $(LN_S) ${ext_host_headers} . || true ;\ ++ } 2>/dev/null + $(STAMP) stamp-host + + # Host includes dynamic. +@@ -1290,9 +1292,12 @@ + for file in ${profile_impl_headers}; do \ + $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${profile_impl_builddir}; done + $(mkinstalldirs) $(DESTDIR)${host_installdir} +- for file in ${host_headers} ${host_headers_extra} \ ++ for file in ${host_headers} ${bits_host_headers} ${host_headers_extra} \ + ${thread_host_headers}; do \ + $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done ++ $(mkinstalldirs) $(DESTDIR)${host_installdir}/../ext ++ for file in ${ext_host_headers}; do \ ++ $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}/../ext; done + + # By adding these files here, automake will remove them for 'make clean' + CLEANFILES = ${pch_output} ${pch_output_anchors} stamp-host +Index: b/src/libstdc++-v3/include/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.in 2013-05-12 17:29:35.231053893 +0000 ++++ b/src/libstdc++-v3/include/Makefile.in 2013-05-19 11:46:14.778466710 +0000 +@@ -434,8 +434,7 @@ + ${bits_srcdir}/valarray_array.tcc \ + ${bits_srcdir}/valarray_before.h \ + ${bits_srcdir}/valarray_after.h \ +- ${bits_srcdir}/vector.tcc \ +- ${bits_host_headers} ++ ${bits_srcdir}/vector.tcc + + bits_host_headers = \ + ${glibcxx_srcdir}/${CPU_OPT_BITS_RANDOM} +@@ -795,8 +794,7 @@ + ${ext_srcdir}/vstring.tcc \ + ${ext_srcdir}/vstring_fwd.h \ + ${ext_srcdir}/vstring_util.h \ +- ${ext_compat_headers} \ +- ${ext_host_headers} ++ ${ext_compat_headers} + + ext_compat_headers = \ + ${backward_srcdir}/hash_set \ +@@ -1461,13 +1459,14 @@ + + stamp-${host_alias}: + @-mkdir -p ${host_builddir} ++ @-mkdir -p ${host_builddir}/../ext + @$(STAMP) stamp-${host_alias} + + # Host includes static. + # XXX Missing dependency info for {host_headers_extra} +-stamp-host: ${host_headers} ${host_headers_noinst} stamp-${host_alias} ++stamp-host: ${host_headers} ${bits_host_headers} ${ext_host_headers} ${host_headers_noinst} stamp-${host_alias} + @cd ${host_builddir} && {\ +- $(LN_S) ${host_headers} . || true ;\ ++ $(LN_S) ${host_headers} ${bits_host_headers} . || true ;\ + $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_H) basic_file.h || true ;\ + $(LN_S) ${glibcxx_srcdir}/$(ALLOCATOR_H) c++allocator.h || true ;\ + $(LN_S) ${glibcxx_srcdir}/$(CSTDIO_H) c++io.h || true ;\ +@@ -1477,6 +1476,9 @@ + $(LN_S) ${glibcxx_srcdir}/$(CMESSAGES_H) messages_members.h || true ;\ + $(LN_S) ${glibcxx_srcdir}/$(CTIME_H) time_members.h || true;\ + } 2>/dev/null ++ @cd ${host_builddir}/../ext && {\ ++ $(LN_S) ${ext_host_headers} . || true ;\ ++ } 2>/dev/null + $(STAMP) stamp-host + + # Host includes dynamic. +@@ -1688,9 +1690,12 @@ + for file in ${profile_impl_headers}; do \ + $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${profile_impl_builddir}; done + $(mkinstalldirs) $(DESTDIR)${host_installdir} +- for file in ${host_headers} ${host_headers_extra} \ ++ for file in ${host_headers} ${bits_host_headers} ${host_headers_extra} \ + ${thread_host_headers}; do \ + $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done ++ $(mkinstalldirs) $(DESTDIR)${host_installdir}/../ext ++ for file in ${ext_host_headers}; do \ ++ $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}/../ext; done + + # To remove directories. + clean-local: +--- a/src/libstdc++-v3/include/ext/random ++++ b/src/libstdc++-v3/include/ext/random +@@ -2848,7 +2848,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace __gnu_cxx + +-#include "opt_random.h" ++#include "ext/opt_random.h" + #include "random.tcc" + + #endif // _GLIBCXX_USE_C99_STDINT_TR1 diff -Nru gcc-4.8-4.8.0/debian/patches/m68k-ada.diff gcc-4.8-4.8.1/debian/patches/m68k-ada.diff --- gcc-4.8-4.8.0/debian/patches/m68k-ada.diff 1970-01-01 00:00:00.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/m68k-ada.diff 2013-06-05 12:12:51.000000000 +0000 @@ -0,0 +1,250 @@ +gcc/ada/ + +2011-10-12 Mikael Pettersson + + PR ada/48835 + * gcc-interface/Makefile.in: Add support for m68k-linux. + * system-linux-m68k.ads: New file based on system-linux-ppc.ads + and system-vxworks-m68k.ads. + * s-memory.adb (Gnat_Malloc): New wrapper around Alloc, returning + the memory address as a pointer not an integer. + Add Gnat_Malloc -> __gnat_malloc export. + * s-memory.ads: Remove Alloc -> __gnat_malloc export. + +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -1919,6 +1919,35 @@ ifeq ($(strip $(filter-out arm%-linux,$( + LIBRARY_VERSION := $(LIB_VERSION) + endif + ++# m68k Linux ++ifeq ($(strip $(filter-out m68k% linux%,$(arch) $(osys))),) ++ LIBGNAT_TARGET_PAIRS = \ ++ a-intnam.ads. -- ++-- -- ++-- GNAT was originally developed by the GNAT team at New York University. -- ++-- Extensive contributions were provided by Ada Core Technologies Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++package System is ++ pragma Pure; ++ -- Note that we take advantage of the implementation permission to make ++ -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ++ -- 2005, this is Pure in any case (AI-362). ++ ++ type Name is (SYSTEM_NAME_GNAT); ++ System_Name : constant Name := SYSTEM_NAME_GNAT; ++ ++ -- System-Dependent Named Numbers ++ ++ Min_Int : constant := Long_Long_Integer'First; ++ Max_Int : constant := Long_Long_Integer'Last; ++ ++ Max_Binary_Modulus : constant := 2 ** Long_Long_Integer'Size; ++ Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1; ++ ++ Max_Base_Digits : constant := Long_Long_Float'Digits; ++ Max_Digits : constant := Long_Long_Float'Digits; ++ ++ Max_Mantissa : constant := 63; ++ Fine_Delta : constant := 2.0 ** (-Max_Mantissa); ++ ++ Tick : constant := 0.000_001; ++ ++ -- Storage-related Declarations ++ ++ type Address is private; ++ pragma Preelaborable_Initialization (Address); ++ Null_Address : constant Address; ++ ++ Storage_Unit : constant := 8; ++ Word_Size : constant := 32; ++ Memory_Size : constant := 2 ** 32; ++ ++ -- Address comparison ++ ++ function "<" (Left, Right : Address) return Boolean; ++ function "<=" (Left, Right : Address) return Boolean; ++ function ">" (Left, Right : Address) return Boolean; ++ function ">=" (Left, Right : Address) return Boolean; ++ function "=" (Left, Right : Address) return Boolean; ++ ++ pragma Import (Intrinsic, "<"); ++ pragma Import (Intrinsic, "<="); ++ pragma Import (Intrinsic, ">"); ++ pragma Import (Intrinsic, ">="); ++ pragma Import (Intrinsic, "="); ++ ++ -- Other System-Dependent Declarations ++ ++ type Bit_Order is (High_Order_First, Low_Order_First); ++ Default_Bit_Order : constant Bit_Order := High_Order_First; ++ pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning ++ ++ -- Priority-related Declarations (RM D.1) ++ ++ -- 0 .. 98 corresponds to the system priority range 1 .. 99. ++ -- ++ -- If the scheduling policy is SCHED_FIFO or SCHED_RR the runtime makes use ++ -- of the entire range provided by the system. ++ -- ++ -- If the scheduling policy is SCHED_OTHER the only valid system priority ++ -- is 1 and other values are simply ignored. ++ ++ Max_Priority : constant Positive := 97; ++ Max_Interrupt_Priority : constant Positive := 98; ++ ++ subtype Any_Priority is Integer range 0 .. 98; ++ subtype Priority is Any_Priority range 0 .. 97; ++ subtype Interrupt_Priority is Any_Priority range 98 .. 98; ++ ++ Default_Priority : constant Priority := 48; ++ ++private ++ ++ type Address is mod Memory_Size; ++ Null_Address : constant Address := 0; ++ ++ -------------------------------------- ++ -- System Implementation Parameters -- ++ -------------------------------------- ++ ++ -- These parameters provide information about the target that is used ++ -- by the compiler. They are in the private part of System, where they ++ -- can be accessed using the special circuitry in the Targparm unit ++ -- whose source should be consulted for more detailed descriptions ++ -- of the individual switch values. ++ ++ Backend_Divide_Checks : constant Boolean := False; ++ Backend_Overflow_Checks : constant Boolean := True; ++ Command_Line_Args : constant Boolean := True; ++ Configurable_Run_Time : constant Boolean := False; ++ Denorm : constant Boolean := True; ++ Duration_32_Bits : constant Boolean := False; ++ Exit_Status_Supported : constant Boolean := True; ++ Fractional_Fixed_Ops : constant Boolean := False; ++ Frontend_Layout : constant Boolean := False; ++ Machine_Overflows : constant Boolean := False; ++ Machine_Rounds : constant Boolean := True; ++ Preallocated_Stacks : constant Boolean := False; ++ Signed_Zeros : constant Boolean := False; ++ Stack_Check_Default : constant Boolean := False; ++ Stack_Check_Probes : constant Boolean := False; ++ Stack_Check_Limits : constant Boolean := False; ++ Support_64_Bit_Divides : constant Boolean := True; ++ Support_Aggregates : constant Boolean := True; ++ Support_Composite_Assign : constant Boolean := True; ++ Support_Composite_Compare : constant Boolean := True; ++ Support_Long_Shifts : constant Boolean := True; ++ Always_Compatible_Rep : constant Boolean := True; ++ Suppress_Standard_Library : constant Boolean := False; ++ Use_Ada_Main_Program_Name : constant Boolean := False; ++ ZCX_By_Default : constant Boolean := True; ++ GCC_ZCX_Support : constant Boolean := True; ++ ++end System; diff -Nru gcc-4.8-4.8.0/debian/patches/pr49940.diff gcc-4.8-4.8.1/debian/patches/pr49940.diff --- gcc-4.8-4.8.0/debian/patches/pr49940.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/pr49940.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -# DP: Apply proposed patch for PR ada/49940. - -# This patch consists in copying the declaration (and import) of lwp_self from -# s-osint-freebsd.ads to s-osint-kfreebsd-gnu.ads. - -Index: b/src/gcc/ada/s-osinte-kfreebsd-gnu.ads -=================================================================== ---- a/src/gcc/ada/s-osinte-kfreebsd-gnu.ads -+++ b/src/gcc/ada/s-osinte-kfreebsd-gnu.ads -@@ -236,6 +236,16 @@ - function getpid return pid_t; - pragma Import (C, getpid, "getpid"); - -+ --------- -+ -- LWP -- -+ --------- -+ -+ function lwp_self return System.Address; -+ -- lwp_self does not exist on this thread library, revert to pthread_self -+ -- which is the closest approximation (with getpid). This function is -+ -- needed to share 7staprop.adb across POSIX-like targets. -+ pragma Import (C, lwp_self, "pthread_self"); -+ - ------------- - -- Threads -- - ------------- diff -Nru gcc-4.8-4.8.0/debian/patches/pr57211.diff gcc-4.8-4.8.1/debian/patches/pr57211.diff --- gcc-4.8-4.8.0/debian/patches/pr57211.diff 1970-01-01 00:00:00.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/pr57211.diff 2013-06-05 12:12:51.000000000 +0000 @@ -0,0 +1,65 @@ +# DP: Fix PR c++/57211, don't warn about unused parameters of defaulted functions. + +/cp +2013-05-22 Paolo Carlini + + PR c++/57211 + * method.c (defaultable_fn_check): Avoid do_warn_unused_parameter + warnings about defaulted functions. + +/testsuite +2013-05-22 Paolo Carlini + + PR c++/57211 + * g++.dg/cpp0x/Wunused-parm.C: New. + +--- a/src/gcc/cp/method.c ++++ b/src/gcc/cp/method.c +@@ -1864,13 +1864,19 @@ defaultable_fn_check (tree fn) + } + else + { +- tree t = FUNCTION_FIRST_USER_PARMTYPE (fn); +- for (; t && t != void_list_node; t = TREE_CHAIN (t)) ++ for (tree t = FUNCTION_FIRST_USER_PARMTYPE (fn); ++ t && t != void_list_node; t = TREE_CHAIN (t)) + if (TREE_PURPOSE (t)) + { + error ("defaulted function %q+D with default argument", fn); + break; + } ++ ++ /* Avoid do_warn_unused_parameter warnings. */ ++ for (tree p = FUNCTION_FIRST_USER_PARM (fn); p; p = DECL_CHAIN (p)) ++ if (DECL_NAME (p)) ++ TREE_NO_WARNING (p) = 1; ++ + if (TYPE_BEING_DEFINED (DECL_CONTEXT (fn))) + /* Defer checking. */; + else if (!processing_template_decl) +--- a/src/gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C ++++ b/src/gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C +@@ -0,0 +1,23 @@ ++// PR c++/57211 ++// { dg-options "-std=c++11 -Wunused-parameter" } ++ ++template T&& move(T&); ++ ++struct A ++{ ++ struct B ++ { ++ B& operator=(B&&); ++ }; ++ ++ B f; ++ ++ A& operator=(A&& p) = default; ++}; ++ ++int main() ++{ ++ A a; ++ A b; ++ b = move(a); ++} diff -Nru gcc-4.8-4.8.0/debian/patches/svn-updates.diff gcc-4.8-4.8.1/debian/patches/svn-updates.diff --- gcc-4.8-4.8.0/debian/patches/svn-updates.diff 2013-06-05 12:12:49.000000000 +0000 +++ gcc-4.8-4.8.1/debian/patches/svn-updates.diff 2013-06-05 12:12:51.000000000 +0000 @@ -1,33650 +1,768 @@ -# DP: updates from the 4.8 branch upto 20120421 (r198115). +# DP: updates from the 4.8 branch upto 20120604 (r199643). last_updated() { cat > ${dir}LAST_UPDATED <$(distdir).tar.gz -- $(am__remove_distdir) -- --dist-bzip2: distdir -- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 -- $(am__remove_distdir) -- --dist-lzma: distdir -- tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma -- $(am__remove_distdir) -- --dist-xz: distdir -- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz -- $(am__remove_distdir) -- --dist-tarZ: distdir -- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z -- $(am__remove_distdir) -- --dist-shar: distdir -- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz -- $(am__remove_distdir) -- --dist-zip: distdir -- -rm -f $(distdir).zip -- zip -rq $(distdir).zip $(distdir) -- $(am__remove_distdir) -- --dist dist-all: distdir -- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -- $(am__remove_distdir) -- --# This target untars the dist file and tries a VPATH configuration. Then --# it guarantees that the distribution is self-contained by making another --# tarfile. --distcheck: dist -- case '$(DIST_ARCHIVES)' in \ -- *.tar.gz*) \ -- GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ -- *.tar.bz2*) \ -- bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ -- *.tar.lzma*) \ -- lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ -- *.tar.xz*) \ -- xz -dc $(distdir).tar.xz | $(am__untar) ;;\ -- *.tar.Z*) \ -- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ -- *.shar.gz*) \ -- GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ -- *.zip*) \ -- unzip $(distdir).zip ;;\ -- esac -- chmod -R a-w $(distdir); chmod a+w $(distdir) -- mkdir $(distdir)/_build -- mkdir $(distdir)/_inst -- chmod a-w $(distdir) -- test -d $(distdir)/_build || exit 0; \ -- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ -- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ -- && am__cwd=`pwd` \ -- && $(am__cd) $(distdir)/_build \ -- && ../configure --srcdir=.. --prefix="$$dc_install_base" \ -- $(DISTCHECK_CONFIGURE_FLAGS) \ -- && $(MAKE) $(AM_MAKEFLAGS) \ -- && $(MAKE) $(AM_MAKEFLAGS) dvi \ -- && $(MAKE) $(AM_MAKEFLAGS) check \ -- && $(MAKE) $(AM_MAKEFLAGS) install \ -- && $(MAKE) $(AM_MAKEFLAGS) installcheck \ -- && $(MAKE) $(AM_MAKEFLAGS) uninstall \ -- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ -- distuninstallcheck \ -- && chmod -R a-w "$$dc_install_base" \ -- && ({ \ -- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ -- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ -- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ -- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ -- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ -- } || { rm -rf "$$dc_destdir"; exit 1; }) \ -- && rm -rf "$$dc_destdir" \ -- && $(MAKE) $(AM_MAKEFLAGS) dist \ -- && rm -rf $(DIST_ARCHIVES) \ -- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ -- && cd "$$am__cwd" \ -- || exit 1 -- $(am__remove_distdir) -- @(echo "$(distdir) archives ready for distribution: "; \ -- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ -- sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' --distuninstallcheck: -- @$(am__cd) '$(distuninstallcheck_dir)' \ -- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ -- || { echo "ERROR: files left after uninstall:" ; \ -- if test -n "$(DESTDIR)"; then \ -- echo " (check DESTDIR support)"; \ -- fi ; \ -- $(distuninstallcheck_listfiles) ; \ -- exit 1; } >&2 --distcleancheck: distclean -- @if test '$(srcdir)' = . ; then \ -- echo "ERROR: distcleancheck can only run from a VPATH build" ; \ -- exit 1 ; \ -- fi -- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ -- || { echo "ERROR: files left in build directory after distclean:" ; \ -- $(distcleancheck_listfiles) ; \ -- exit 1; } >&2 - check-am: all-am - check: check-recursive - all-am: Makefile all-multi -@@ -774,20 +558,17 @@ - .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am all-multi am--refresh check check-am clean \ - clean-generic clean-libtool clean-multi ctags ctags-recursive \ -- dist dist-all dist-bzip2 dist-gzip dist-lzma dist-shar \ -- dist-tarZ dist-xz dist-zip distcheck distclean \ -- distclean-generic distclean-libtool distclean-multi \ -- distclean-tags distcleancheck distdir distuninstallcheck dvi \ -- dvi-am html html-am info info-am install install-am \ -- install-data install-data-am install-dvi install-dvi-am \ -- install-exec install-exec-am install-html install-html-am \ -- install-info install-info-am install-man install-multi \ -- install-pdf install-pdf-am install-ps install-ps-am \ -- install-strip installcheck installcheck-am installdirs \ -- installdirs-am maintainer-clean maintainer-clean-generic \ -- maintainer-clean-multi mostlyclean mostlyclean-generic \ -- mostlyclean-libtool mostlyclean-multi pdf pdf-am ps ps-am tags \ -- tags-recursive uninstall uninstall-am -+ distclean distclean-generic distclean-libtool distclean-multi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ -+ install-dvi-am install-exec install-exec-am install-html \ -+ install-html-am install-info install-info-am install-man \ -+ install-multi install-pdf install-pdf-am install-ps \ -+ install-ps-am install-strip installcheck installcheck-am \ -+ installdirs installdirs-am maintainer-clean \ -+ maintainer-clean-generic maintainer-clean-multi mostlyclean \ -+ mostlyclean-generic mostlyclean-libtool mostlyclean-multi pdf \ -+ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am - - - # Tell versions [3.59,3.63) of GNU make to not export all variables. -Index: libsanitizer/asan/Makefile.in -=================================================================== ---- a/src/libsanitizer/asan/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libsanitizer/asan/Makefile.in (.../branches/gcc-4_8-branch) -@@ -38,7 +38,7 @@ - target_triplet = @target@ - @USING_MAC_INTERPOSE_TRUE@am__append_1 = -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT - subdir = asan --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ - $(top_srcdir)/../config/depstand.m4 \ -@@ -111,11 +111,9 @@ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libasan_la_SOURCES) --DIST_SOURCES = $(libasan_la_SOURCES) - HEADERS = $(nodist_toolexeclib_HEADERS) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - AR = @AR@ -@@ -523,37 +521,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) -@@ -664,8 +631,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-toolexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nodist_toolexeclibHEADERS install-pdf install-pdf-am \ -Index: libsanitizer/ChangeLog -=================================================================== ---- a/src/libsanitizer/ChangeLog (.../tags/gcc_4_8_0_release) -+++ b/src/libsanitizer/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,13 @@ -+2013-03-22 Jakub Jelinek -+ -+ PR other/43620 -+ * configure.ac (AM_INIT_AUTOMAKE): Add no-dist. -+ * Makefile.in: Regenerated. -+ * asan/Makefile.in: Regenerated. -+ * interception/Makefile.in: Regenerated. -+ * sanitizer_common/Makefile.in: Regenerated. -+ * tsan/Makefile.in: Regenerated. -+ - 2013-03-22 Release Manager - - * GCC 4.8.0 released. -Index: libsanitizer/configure.ac -=================================================================== ---- a/src/libsanitizer/configure.ac (.../tags/gcc_4_8_0_release) -+++ b/src/libsanitizer/configure.ac (.../branches/gcc-4_8-branch) -@@ -23,7 +23,7 @@ - AC_SUBST(target_alias) - GCC_LIBSTDCXX_RAW_CXX_FLAGS - --AM_INIT_AUTOMAKE(foreign) -+AM_INIT_AUTOMAKE(foreign no-dist) - AM_ENABLE_MULTILIB(, ..) - AM_MAINTAINER_MODE - -Index: libsanitizer/interception/Makefile.in -=================================================================== ---- a/src/libsanitizer/interception/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libsanitizer/interception/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = interception --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ - $(top_srcdir)/../config/depstand.m4 \ -@@ -73,10 +73,8 @@ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libinterception_la_SOURCES) --DIST_SOURCES = $(libinterception_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - AR = @AR@ -@@ -400,37 +398,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -536,8 +503,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ -Index: libsanitizer/tsan/Makefile.in -=================================================================== ---- a/src/libsanitizer/tsan/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libsanitizer/tsan/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = tsan --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ - $(top_srcdir)/../config/depstand.m4 \ -@@ -123,10 +123,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libtsan_la_SOURCES) --DIST_SOURCES = $(libtsan_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - AR = @AR@ -@@ -537,37 +535,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -676,8 +643,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-toolexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ -Index: libstdc++-v3/configure +Index: libgcc/ChangeLog =================================================================== ---- a/src/libstdc++-v3/configure (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/configure (.../branches/gcc-4_8-branch) -@@ -20413,11 +20413,65 @@ - - - -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: for suitable sys/sdt.h" >&5 -+$as_echo "for suitable sys/sdt.h" >&6; } -+ # Note that this test has to be run with the C language. -+ # Otherwise, sdt.h will try to include some headers from -+ # libstdc++ itself. -+ -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ if test "${glibcxx_cv_sys_sdt_h+set}" = set; then : -+ $as_echo_n "(cached) " >&6 -+else -+ -+ # Because we have to run the test in C, we use grep rather -+ # than the compiler to check for the bug. The bug is that -+ # were strings without trailing whitespace, causing g++ -+ # to look for operator"". The pattern searches for the fixed -+ # output. -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+ #include -+ int f() { STAP_PROBE(hi, bob); } -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP " \",\" " >/dev/null 2>&1; then : -+ glibcxx_cv_sys_sdt_h=yes -+else -+ glibcxx_cv_sys_sdt_h=no -+fi -+rm -f conftest* -+ -+ -+fi -+ -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ if test $glibcxx_cv_sys_sdt_h = yes; then -+ -+$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h -+ -+ fi -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_sys_sdt_h" >&5 -+$as_echo "$glibcxx_cv_sys_sdt_h" >&6; } +--- a/src/libgcc/ChangeLog (.../tags/gcc_4_8_1_release) ++++ b/src/libgcc/ChangeLog (.../branches/gcc-4_8-branch) +@@ -1,3 +1,9 @@ ++2013-05-31 Richard Henderson + ++ PR target/49146 ++ * unwind-dw2.c (UNWIND_COLUMN_IN_RANGE): New macro. ++ (execute_cfa_program): Use it when storing to fs->regs. + - # Check for available headers. - for ac_header in endian.h execinfo.h float.h fp.h ieeefp.h inttypes.h \ - locale.h machine/endian.h machine/param.h nan.h stdint.h stdlib.h string.h \ - strings.h sys/ipc.h sys/isa_defs.h sys/machine.h sys/param.h \ --sys/resource.h sys/sdt.h sys/sem.h sys/stat.h sys/time.h sys/types.h unistd.h \ -+sys/resource.h sys/sem.h sys/stat.h sys/time.h sys/types.h unistd.h \ - wchar.h wctype.h - do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -Index: libstdc++-v3/configure.ac -=================================================================== ---- a/src/libstdc++-v3/configure.ac (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/configure.ac (.../branches/gcc-4_8-branch) -@@ -211,12 +211,13 @@ - GLIBCXX_CHECK_SC_NPROC_ONLN - GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP - GLIBCXX_CHECK_SYSCTL_HW_NCPU -+GLIBCXX_CHECK_SDT_H - - # Check for available headers. - AC_CHECK_HEADERS([endian.h execinfo.h float.h fp.h ieeefp.h inttypes.h \ - locale.h machine/endian.h machine/param.h nan.h stdint.h stdlib.h string.h \ - strings.h sys/ipc.h sys/isa_defs.h sys/machine.h sys/param.h \ --sys/resource.h sys/sdt.h sys/sem.h sys/stat.h sys/time.h sys/types.h unistd.h \ -+sys/resource.h sys/sem.h sys/stat.h sys/time.h sys/types.h unistd.h \ - wchar.h wctype.h]) - - # Only do link tests if native. Else, hardcode. -Index: libstdc++-v3/doc/xml/manual/allocator.xml -=================================================================== ---- a/src/libstdc++-v3/doc/xml/manual/allocator.xml (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/doc/xml/manual/allocator.xml (.../branches/gcc-4_8-branch) -@@ -504,7 +504,7 @@ - - - <link xmlns:xlink="http://www.w3.org/1999/xlink" -- xlink:href="http://www.drdobbs.com/cpp/184403759"> -+ xlink:href="http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759"> - The Standard Librarian: What Are Allocators Good For? - </link> - -Index: libstdc++-v3/doc/xml/manual/shared_ptr.xml -=================================================================== ---- a/src/libstdc++-v3/doc/xml/manual/shared_ptr.xml (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/doc/xml/manual/shared_ptr.xml (.../branches/gcc-4_8-branch) -@@ -159,7 +159,7 @@ - - - The --Thread -+Thread - Safety section of the Boost shared_ptr documentation says "shared_ptr - objects offer the same level of thread safety as built-in types." - The implementation must ensure that concurrent updates to separate shared_ptr -Index: libstdc++-v3/doc/xml/manual/profile_mode.xml -=================================================================== ---- a/src/libstdc++-v3/doc/xml/manual/profile_mode.xml (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/doc/xml/manual/profile_mode.xml (.../branches/gcc-4_8-branch) -@@ -1401,7 +1401,7 @@ - - Fundamentals: - See papers: -- -+ - A framework for adaptive algorithm selection in STAPL and - - Optimizing Sorting with Machine Learning Algorithms. -@@ -1597,7 +1597,7 @@ - Keep a shadow for each container. Record iterator dereferences and - container member accesses. Issue advice for elements referenced by - multiple threads. -- See paper: -+ See paper: - The LRPD test: speculative run-time parallelization of loops with - privatization and reduction parallelization. - -Index: libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml -=================================================================== ---- a/src/libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml (.../branches/gcc-4_8-branch) -@@ -895,7 +895,7 @@ - - - <link xmlns:xlink="http://www.w3.org/1999/xlink" -- xlink:href="http://magic.aladdin.cs.cmu.edu/2005/08/01/deamortization-part-2-binomial-heaps"> -+ xlink:href="http://magic.aladdin.cs.cmu.edu/2005/08/01/deamortization-part-2-binomial-heaps/"> - Deamortization - Part 2: Binomial Heaps - </link> - -@@ -1142,7 +1142,7 @@ - - - <link xmlns:xlink="http://www.w3.org/1999/xlink" -- xlink:href="http://www.dogma.net/markn/articles/pq_stl/priority.htm">Priority Queues and the STL -+ xlink:href="http://marknelson.us/1996/01/01/priority-queues/">Priority Queues and the STL - </link> - - -Index: libstdc++-v3/doc/xml/manual/debug.xml -=================================================================== ---- a/src/libstdc++-v3/doc/xml/manual/debug.xml (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/doc/xml/manual/debug.xml (.../branches/gcc-4_8-branch) -@@ -234,7 +234,7 @@ - xlink:href="http://valgrind.org/docs/manual/hg-manual.html"> - Helgrind, and - -+ xlink:href="http://code.google.com/p/data-race-test/"> - ThreadSanitizer. - - -Index: libstdc++-v3/doc/xml/manual/debug_mode.xml -=================================================================== ---- a/src/libstdc++-v3/doc/xml/manual/debug_mode.xml (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/doc/xml/manual/debug_mode.xml (.../branches/gcc-4_8-branch) -@@ -856,7 +856,7 @@ - supports debugging for programs using libstdc++. The existing - implementations include: - -- SafeSTL: -+ SafeSTL: - SafeSTL was the original debugging version of the Standard Template - Library (STL), implemented by Cay S. Horstmann on top of the - Hewlett-Packard STL. Though it inspired much work in this area, it -Index: libstdc++-v3/doc/xml/manual/policy_data_structures.xml -=================================================================== ---- a/src/libstdc++-v3/doc/xml/manual/policy_data_structures.xml (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/doc/xml/manual/policy_data_structures.xml (.../branches/gcc-4_8-branch) -@@ -5061,8 +5061,7 @@ - - - -- This library was partially written at -- IBM's Haifa Research Labs. -+ This library was partially written at IBM's Haifa Research Labs. - It is based heavily on policy-based design and uses many useful - techniques from Modern C++ Design: Generic Programming and Design - Patterns Applied by Andrei Alexandrescu. -Index: libstdc++-v3/doc/xml/manual/documentation_hacking.xml -=================================================================== ---- a/src/libstdc++-v3/doc/xml/manual/documentation_hacking.xml (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/doc/xml/manual/documentation_hacking.xml (.../branches/gcc-4_8-branch) -@@ -443,9 +443,8 @@ - - - Some commentary to accompany -- the first list in the Special -- Documentation Blocks section of -- the Doxygen manual: -+ the first list in the Special -+ Documentation Blocks section of the Doxygen manual: - - - -Index: libstdc++-v3/doc/xml/manual/appendix_contributing.xml -=================================================================== ---- a/src/libstdc++-v3/doc/xml/manual/appendix_contributing.xml (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/doc/xml/manual/appendix_contributing.xml (.../branches/gcc-4_8-branch) -@@ -68,7 +68,7 @@ - - - Peruse -- the GNU -+ the GNU - Coding Standards, and chuckle when you hit the part - about Using Languages Other Than C. - -Index: libstdc++-v3/doc/xml/manual/messages.xml -=================================================================== ---- a/src/libstdc++-v3/doc/xml/manual/messages.xml (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/doc/xml/manual/messages.xml (.../branches/gcc-4_8-branch) -@@ -541,7 +541,7 @@ - - - <link xmlns:xlink="http://www.w3.org/1999/xlink" -- xlink:href="http://java.sun.com/reference/api/index.html"> -+ xlink:href="http://www.oracle.com/technetwork/java/api/index.html"> - API Specifications, Java Platform - </link> - -Index: libstdc++-v3/include/debug/array -=================================================================== ---- a/src/libstdc++-v3/include/debug/array (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/include/debug/array (.../branches/gcc-4_8-branch) -@@ -289,17 +289,11 @@ - // Tuple interface to class template array. - - /// tuple_size -- template -- class tuple_size; -- - template - struct tuple_size<__debug::array<_Tp, _Nm>> - : public integral_constant { }; - - /// tuple_element -- template -- class tuple_element; -- - template - struct tuple_element<_Int, __debug::array<_Tp, _Nm>> - { -Index: libstdc++-v3/include/std/chrono -=================================================================== ---- a/src/libstdc++-v3/include/std/chrono (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/include/std/chrono (.../branches/gcc-4_8-branch) -@@ -225,7 +225,7 @@ - { return numeric_limits<_Rep>::lowest(); } - }; + 2013-05-31 Release Manager -- template -+ template - struct __is_ratio - : std::false_type - { }; -Index: libstdc++-v3/include/std/mutex + * GCC 4.8.1 released. +Index: libgcc/unwind-dw2.c =================================================================== ---- a/src/libstdc++-v3/include/std/mutex (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/include/std/mutex (.../branches/gcc-4_8-branch) -@@ -45,12 +45,13 @@ - #include - #include // for std::swap - --#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) -+#ifdef _GLIBCXX_USE_C99_STDINT_TR1 +--- a/src/libgcc/unwind-dw2.c (.../tags/gcc_4_8_1_release) ++++ b/src/libgcc/unwind-dw2.c (.../branches/gcc-4_8-branch) +@@ -59,6 +59,35 @@ + #define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO) + #endif - namespace std _GLIBCXX_VISIBILITY(default) - { - _GLIBCXX_BEGIN_NAMESPACE_VERSION ++/* ??? For the public function interfaces, we tend to gcc_assert that the ++ column numbers are in range. For the dwarf2 unwind info this does happen, ++ although so far in a case that doesn't actually matter. ++ ++ See PR49146, in which a call from x86_64 ms abi to x86_64 unix abi stores ++ the call-saved xmm registers and annotates them. We havn't bothered ++ providing support for the xmm registers for the x86_64 port primarily ++ because the 64-bit windows targets don't use dwarf2 unwind, using sjlj or ++ SEH instead. Adding the support for unix targets would generally be a ++ waste. However, some runtime libraries supplied with ICC do contain such ++ an unorthodox transition, as well as the unwind info to match. This loss ++ of register restoration doesn't matter in practice, because the exception ++ is caught in the native unix abi, where all of the xmm registers are ++ call clobbered. ++ ++ Ideally, we'd record some bit to notice when we're failing to restore some ++ register recorded in the unwind info, but to do that we need annotation on ++ the unix->ms abi edge, so that we know when the register data may be ++ discarded. And since this edge is also within the ICC library, we're ++ unlikely to be able to get the new annotation. ++ ++ Barring a magic solution to restore the ms abi defined 128-bit xmm registers ++ (as distictly opposed to the full runtime width) without causing extra ++ overhead for normal unix abis, the best solution seems to be to simply ++ ignore unwind data for unknown columns. */ ++ ++#define UNWIND_COLUMN_IN_RANGE(x) \ ++ __builtin_expect((x) <= DWARF_FRAME_REGISTERS, 1) ++ + #ifdef REG_VALUE_IN_UNWIND_CONTEXT + typedef _Unwind_Word _Unwind_Context_Reg_Val; + +@@ -939,14 +968,19 @@ + reg = insn & 0x3f; + insn_ptr = read_uleb128 (insn_ptr, &utmp); + offset = (_Unwind_Sword) utmp * fs->data_align; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how +- = REG_SAVED_OFFSET; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset; ++ reg = DWARF_REG_TO_UNWIND_COLUMN (reg); ++ if (UNWIND_COLUMN_IN_RANGE (reg)) ++ { ++ fs->regs.reg[reg].how = REG_SAVED_OFFSET; ++ fs->regs.reg[reg].loc.offset = offset; ++ } + } + else if ((insn & 0xc0) == DW_CFA_restore) + { + reg = insn & 0x3f; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_UNSAVED; ++ reg = DWARF_REG_TO_UNWIND_COLUMN (reg); ++ if (UNWIND_COLUMN_IN_RANGE (reg)) ++ fs->regs.reg[reg].how = REG_UNSAVED; + } + else switch (insn) + { +@@ -977,26 +1011,35 @@ + insn_ptr = read_uleb128 (insn_ptr, ®); + insn_ptr = read_uleb128 (insn_ptr, &utmp); + offset = (_Unwind_Sword) utmp * fs->data_align; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how +- = REG_SAVED_OFFSET; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset; ++ reg = DWARF_REG_TO_UNWIND_COLUMN (reg); ++ if (UNWIND_COLUMN_IN_RANGE (reg)) ++ { ++ fs->regs.reg[reg].how = REG_SAVED_OFFSET; ++ fs->regs.reg[reg].loc.offset = offset; ++ } + break; -+#ifdef _GLIBCXX_HAS_GTHREADS - // Common base class for std::mutex and std::timed_mutex - class __mutex_base - { -@@ -384,6 +385,7 @@ - } - }; - #endif -+#endif // _GLIBCXX_HAS_GTHREADS + case DW_CFA_restore_extended: + insn_ptr = read_uleb128 (insn_ptr, ®); + /* FIXME, this is wrong; the CIE might have said that the + register was saved somewhere. */ +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNSAVED; ++ reg = DWARF_REG_TO_UNWIND_COLUMN (reg); ++ if (UNWIND_COLUMN_IN_RANGE (reg)) ++ fs->regs.reg[reg].how = REG_UNSAVED; + break; - /// Do not acquire ownership of the mutex. - struct defer_lock_t { }; -@@ -719,6 +721,7 @@ - } - } + case DW_CFA_same_value: + insn_ptr = read_uleb128 (insn_ptr, ®); +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNSAVED; ++ reg = DWARF_REG_TO_UNWIND_COLUMN (reg); ++ if (UNWIND_COLUMN_IN_RANGE (reg)) ++ fs->regs.reg[reg].how = REG_UNSAVED; + break; -+#ifdef _GLIBCXX_HAS_GTHREADS - /// once_flag - struct once_flag - { -@@ -790,13 +793,13 @@ - if (__e) - __throw_system_error(__e); - } -+#endif // _GLIBCXX_HAS_GTHREADS + case DW_CFA_undefined: + insn_ptr = read_uleb128 (insn_ptr, ®); +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN(reg)].how = REG_UNDEFINED; ++ reg = DWARF_REG_TO_UNWIND_COLUMN (reg); ++ if (UNWIND_COLUMN_IN_RANGE (reg)) ++ fs->regs.reg[reg].how = REG_UNDEFINED; + break; - // @} group mutexes - _GLIBCXX_END_NAMESPACE_VERSION - } // namespace -+#endif // _GLIBCXX_USE_C99_STDINT_TR1 + case DW_CFA_nop: +@@ -1007,9 +1050,12 @@ + _uleb128_t reg2; + insn_ptr = read_uleb128 (insn_ptr, ®); + insn_ptr = read_uleb128 (insn_ptr, ®2); +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_SAVED_REG; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.reg = +- (_Unwind_Word)reg2; ++ reg = DWARF_REG_TO_UNWIND_COLUMN (reg); ++ if (UNWIND_COLUMN_IN_RANGE (reg)) ++ { ++ fs->regs.reg[reg].how = REG_SAVED_REG; ++ fs->regs.reg[reg].loc.reg = (_Unwind_Word)reg2; ++ } + } + break; --#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1 -- - #endif // C++11 +@@ -1067,8 +1113,12 @@ - #endif // _GLIBCXX_MUTEX -Index: libstdc++-v3/include/profile/array -=================================================================== ---- a/src/libstdc++-v3/include/profile/array (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/include/profile/array (.../branches/gcc-4_8-branch) -@@ -251,17 +251,11 @@ - // Tuple interface to class template array. + case DW_CFA_expression: + insn_ptr = read_uleb128 (insn_ptr, ®); +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how = REG_SAVED_EXP; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.exp = insn_ptr; ++ reg = DWARF_REG_TO_UNWIND_COLUMN (reg); ++ if (UNWIND_COLUMN_IN_RANGE (reg)) ++ { ++ fs->regs.reg[reg].how = REG_SAVED_EXP; ++ fs->regs.reg[reg].loc.exp = insn_ptr; ++ } + insn_ptr = read_uleb128 (insn_ptr, &utmp); + insn_ptr += utmp; + break; +@@ -1078,9 +1128,12 @@ + insn_ptr = read_uleb128 (insn_ptr, ®); + insn_ptr = read_sleb128 (insn_ptr, &stmp); + offset = stmp * fs->data_align; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how +- = REG_SAVED_OFFSET; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset; ++ reg = DWARF_REG_TO_UNWIND_COLUMN (reg); ++ if (UNWIND_COLUMN_IN_RANGE (reg)) ++ { ++ fs->regs.reg[reg].how = REG_SAVED_OFFSET; ++ fs->regs.reg[reg].loc.offset = offset; ++ } + break; - /// tuple_size -- template -- class tuple_size; -- - template - struct tuple_size<__profile::array<_Tp, _Nm>> - : public integral_constant { }; + case DW_CFA_def_cfa_sf: +@@ -1103,25 +1156,34 @@ + insn_ptr = read_uleb128 (insn_ptr, ®); + insn_ptr = read_uleb128 (insn_ptr, &utmp); + offset = (_Unwind_Sword) utmp * fs->data_align; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how +- = REG_SAVED_VAL_OFFSET; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset; ++ reg = DWARF_REG_TO_UNWIND_COLUMN (reg); ++ if (UNWIND_COLUMN_IN_RANGE (reg)) ++ { ++ fs->regs.reg[reg].how = REG_SAVED_VAL_OFFSET; ++ fs->regs.reg[reg].loc.offset = offset; ++ } + break; - /// tuple_element -- template -- class tuple_element; -- - template - struct tuple_element<_Int, __profile::array<_Tp, _Nm>> - { -Index: libstdc++-v3/include/bits/stl_list.h -=================================================================== ---- a/src/libstdc++-v3/include/bits/stl_list.h (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/include/bits/stl_list.h (.../branches/gcc-4_8-branch) -@@ -1487,7 +1487,11 @@ - __false_type) - { - for (; __first != __last; ++__first) -+#if __cplusplus >= 201103L -+ emplace_back(*__first); -+#else - push_back(*__first); -+#endif - } + case DW_CFA_val_offset_sf: + insn_ptr = read_uleb128 (insn_ptr, ®); + insn_ptr = read_sleb128 (insn_ptr, &stmp); + offset = stmp * fs->data_align; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how +- = REG_SAVED_VAL_OFFSET; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = offset; ++ reg = DWARF_REG_TO_UNWIND_COLUMN (reg); ++ if (UNWIND_COLUMN_IN_RANGE (reg)) ++ { ++ fs->regs.reg[reg].how = REG_SAVED_VAL_OFFSET; ++ fs->regs.reg[reg].loc.offset = offset; ++ } + break; - // Called by list(n,v,a), and the range constructor when it turns out -Index: libstdc++-v3/include/bits/stl_vector.h -=================================================================== ---- a/src/libstdc++-v3/include/bits/stl_vector.h (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/include/bits/stl_vector.h (.../branches/gcc-4_8-branch) -@@ -1184,7 +1184,11 @@ - _InputIterator __last, std::input_iterator_tag) - { - for (; __first != __last; ++__first) -+#if __cplusplus >= 201103L -+ emplace_back(*__first); -+#else - push_back(*__first); -+#endif - } + case DW_CFA_val_expression: + insn_ptr = read_uleb128 (insn_ptr, ®); +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how +- = REG_SAVED_VAL_EXP; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.exp = insn_ptr; ++ reg = DWARF_REG_TO_UNWIND_COLUMN (reg); ++ if (UNWIND_COLUMN_IN_RANGE (reg)) ++ { ++ fs->regs.reg[reg].how = REG_SAVED_VAL_EXP; ++ fs->regs.reg[reg].loc.exp = insn_ptr; ++ } + insn_ptr = read_uleb128 (insn_ptr, &utmp); + insn_ptr += utmp; + break; +@@ -1147,9 +1209,12 @@ + insn_ptr = read_uleb128 (insn_ptr, ®); + insn_ptr = read_uleb128 (insn_ptr, &utmp); + offset = (_Unwind_Word) utmp * fs->data_align; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].how +- = REG_SAVED_OFFSET; +- fs->regs.reg[DWARF_REG_TO_UNWIND_COLUMN (reg)].loc.offset = -offset; ++ reg = DWARF_REG_TO_UNWIND_COLUMN (reg); ++ if (UNWIND_COLUMN_IN_RANGE (reg)) ++ { ++ fs->regs.reg[reg].how = REG_SAVED_OFFSET; ++ fs->regs.reg[reg].loc.offset = -offset; ++ } + break; - // Called by the second initialize_dispatch above -Index: libstdc++-v3/include/bits/deque.tcc + default: +Index: gcc/DATESTAMP =================================================================== ---- a/src/libstdc++-v3/include/bits/deque.tcc (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/include/bits/deque.tcc (.../branches/gcc-4_8-branch) -@@ -381,7 +381,11 @@ - __try - { - for (; __first != __last; ++__first) -+#if __cplusplus >= 201103L -+ emplace_back(*__first); -+#else - push_back(*__first); -+#endif - } - __catch(...) - { -Index: libstdc++-v3/ChangeLog +--- a/src/gcc/DATESTAMP (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/DATESTAMP (.../branches/gcc-4_8-branch) +@@ -1 +1 @@ +-20130531 ++20130604 +Index: gcc/ChangeLog =================================================================== ---- a/src/libstdc++-v3/ChangeLog (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,82 @@ -+2013-04-09 Tom Tromey -+ -+ * configure, config.h.in: Rebuild. -+ * configure.ac: Use GLIBCXX_CHECK_SDT_H. Don't check for -+ sys/sdt.h. -+ * acinclude.m4 (GLIBCXX_CHECK_SDT_H): New defun. +--- a/src/gcc/ChangeLog (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/ChangeLog (.../branches/gcc-4_8-branch) +@@ -1,3 +1,17 @@ ++2013-06-03 James Greenhalgh + -+2013-04-04 Gerald Pfeifer ++ Backport from mainline. ++ 2013-04-25 James Greenhalgh + -+ * doc/xml/manual/allocator.xml: Adjust link to Dr.Dobb's article.q ++ * config/aarch64/aarch64.c (aarch64_print_operand): Fix asm_fprintf ++ format specifier in 'X' case. + -+ * doc/xml/manual/appendix_contributing.xml: Adjust link to GNU -+ Coding Standards. ++2013-05-31 Richard Henderson + -+ * doc/xml/manual/debug.xml: Adjust link for ThreadSanitizer. ++ PR target/56742 ++ * config/i386/i386.c (ix86_seh_fixup_eh_fallthru): New. ++ (ix86_reorg): Call it. + -+ * doc/xml/manual/debug_mode.xml: Adjust link for SafeSTL. + 2013-05-31 Release Manager + + * GCC 4.8.1 released. +Index: gcc/testsuite/gfortran.dg/defined_assignment_6.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/defined_assignment_6.f90 (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/testsuite/gfortran.dg/defined_assignment_6.f90 (.../branches/gcc-4_8-branch) +@@ -0,0 +1,36 @@ ++! { dg-do compile } ++! ++! PR fortran/57364 ++! ++! Contributed by Damian Rouson ++! ++module ref_counter_implementation ++ type ref_counter ++ contains ++ procedure :: assign ++ generic :: assignment(=) => assign ++ end type ++contains ++ subroutine assign (lhs, rhs) ++ class (ref_counter), intent(inout) :: lhs ++ class (ref_counter), intent(in) :: rhs ++ end subroutine ++end module ++module foo_parent_implementation ++ use ref_counter_implementation ,only: ref_counter ++ type :: foo_parent ++ type(ref_counter) :: counter ++ end type ++contains ++ type(foo_parent) function new_foo_parent() ++ end function ++end module ++module foo_implementation ++ use foo_parent_implementation ,only: foo_parent,new_foo_parent ++ type, extends(foo_parent) :: foo ++ end type ++contains ++ type(foo) function new_foo() ++ new_foo%foo_parent = new_foo_parent() ++ end function ++end module +Index: gcc/testsuite/gfortran.dg/typebound_override_4.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/typebound_override_4.f90 (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/testsuite/gfortran.dg/typebound_override_4.f90 (.../branches/gcc-4_8-branch) +@@ -0,0 +1,34 @@ ++! { dg-do compile } ++! ++! PR 57217: [4.7/4.8/4.9 Regression][OOP] Accepts invalid TBP overriding - lacking arguments check ++! ++! Contributed by Salvatore Filippone + -+ * doc/xml/manual/documentation_hacking.xml: Adjust Doxygen link. ++module base_mod ++ implicit none ++ type base_type ++ contains ++ procedure, pass(map) :: clone => base_clone ++ end type ++contains ++ subroutine base_clone(map,mapout) ++ class(base_type) :: map ++ class(base_type) :: mapout ++ end subroutine ++end module ++ ++module r_mod ++ use base_mod ++ implicit none ++ type, extends(base_type) :: r_type ++ contains ++ procedure, pass(map) :: clone => r_clone ! { dg-error "Type/rank mismatch in argument" } ++ end type ++contains ++ subroutine r_clone(map,mapout) ++ class(r_type) :: map ++ class(r_type) :: mapout ++ end subroutine ++end module + -+ * doc/xml/manual/messages.xml: Adjust link to Java API specs. ++! { dg-final { cleanup-modules "base_mod r_mod" } } +Index: gcc/testsuite/ChangeLog +=================================================================== +--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-4_8-branch) +@@ -1,3 +1,17 @@ ++2013-06-04 Tobias Burnus + -+ * doc/xml/manual/policy_data_structures: Remove direct link to -+ IBM Haifa Research Labs. ++ Backport from mainline ++ 2013-05-22 Tobias Burnus + -+ * doc/xml/manual/policy_data_structures_biblio.xml: Adjust links -+ for biblio.maverik_lowerbounds and biblio.nelson96stlpq. ++ PR fortran/57364 ++ * gfortran.dg/defined_assignment_6.f90: New. + -+ * doc/xml/manual/profile_mode.xml: Adjust two links to acm.org -+ papers. ++2013-05-31 Janus Weil ++ Tobias Burnus + -+ * doc/xml/manual/shared_ptr.xml: Use canonical address for -+ www.boost.org. ++ PR fortran/57217 ++ * gfortran.dg/typebound_override_4.f90: New. + -+2013-04-03 Paolo Carlini + 2013-05-31 Release Manager + + * GCC 4.8.1 released. +Index: gcc/testsuite/g++.dg/cpp0x/initlist71.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/initlist71.C (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/initlist71.C (.../branches/gcc-4_8-branch) +@@ -0,0 +1,9 @@ ++// PR c++/56930 ++// { dg-require-effective-target c++11 } ++// { dg-options -Wconversion } + -+ PR libstdc++/56834 -+ * include/debug/array (tuple_size, tuple_element): Do not declare. -+ * include/profile/array: Likewise. -+ * testsuite/23_containers/array/tuple_interface/ -+ tuple_element_debug_neg.cc: Adjust dg-error line number. ++int main() ++{ ++ int x = sizeof(int); ++ int y { sizeof(int) }; ++} +Index: gcc/testsuite/g++.dg/cpp0x/defaulted44.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/defaulted44.C (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/defaulted44.C (.../branches/gcc-4_8-branch) +@@ -0,0 +1,24 @@ ++// PR c++/57319 ++// { dg-require-effective-target c++11 } + -+>>>>>>> .r197495 -+2013-03-27 Paolo Carlini ++namespace N1 { ++ struct A { }; ++ struct B: virtual A { }; ++ struct C: virtual B { }; + -+ PR libstdc++/55977 (partial, std::vector and std::deque bits) -+ * include/bits/stl_vector.h (_M_range_initialize(_InputIterator, -+ _InputIterator, std::input_iterator_tag)): Use emplace_back. -+ * include/bits/deque.tcc (_M_range_initialize(_InputIterator, -+ _InputIterator, std::input_iterator_tag)): Likewise. -+ * testsuite/23_containers/vector/cons/55977.cc: New. -+ * testsuite/23_containers/deque/cons/55977.cc: Likewise. -+ * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: -+ Adjust dg-error line number. -+ * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: -+ Likewise. ++ struct D: C ++ { ++ void operator= (D &); ++ }; ++} + -+2013-03-27 Paolo Carlini ++namespace N2 { ++ struct A { A& operator=(A&&); }; ++ struct B: virtual A { }; // { dg-warning "move assignment" } ++ struct C: virtual B { }; // { dg-warning "move assignment" } + -+ PR libstdc++/55979 -+ * include/bits/stl_list.h (_M_initialize_dispatch(_InputIterator, -+ _InputIterator, __false_type)): Use emplace_back. -+ * testsuite/23_containers/list/cons/55979.cc: New. -+ * testsuite/23_containers/list/modifiers/1.h: Adjust. -+ * testsuite/23_containers/list/requirements/dr438/assign_neg.cc: -+ Adjust dg-error line number. ++ struct D: C ++ { ++ void operator= (D &); ++ }; ++} +Index: gcc/cp/class.c +=================================================================== +--- a/src/gcc/cp/class.c (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/cp/class.c (.../branches/gcc-4_8-branch) +@@ -4833,6 +4833,44 @@ + return false; + } + ++/* TYPE is being used as a virtual base, and has a non-trivial move ++ assignment. Return true if this is due to there being a user-provided ++ move assignment in TYPE or one of its subobjects; if there isn't, then ++ multiple move assignment can't cause any harm. */ + -+2013-03-24 Jonathan Wakely ++bool ++vbase_has_user_provided_move_assign (tree type) ++{ ++ /* Does the type itself have a user-provided move assignment operator? */ ++ for (tree fns ++ = lookup_fnfields_slot_nolazy (type, ansi_assopname (NOP_EXPR)); ++ fns; fns = OVL_NEXT (fns)) ++ { ++ tree fn = OVL_CURRENT (fns); ++ if (move_fn_p (fn) && user_provided_p (fn)) ++ return true; ++ } + -+ PR libstdc++/56002 -+ * include/std/mutex (lock_guard, unique_lock, lock): Define without -+ depending on _GLIBCXX_HAS_GTHREADS. -+ * testsuite/30_threads/lock_guard/cons/1.cc: Run on all targets. ++ /* Do any of its bases? */ ++ tree binfo = TYPE_BINFO (type); ++ tree base_binfo; ++ for (int i = 0; BINFO_BASE_ITERATE (binfo, i, base_binfo); ++i) ++ if (vbase_has_user_provided_move_assign (BINFO_TYPE (base_binfo))) ++ return true; + -+2013-03-22 Paolo Carlini ++ /* Or non-static data members? */ ++ for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field)) ++ { ++ if (TREE_CODE (field) == FIELD_DECL ++ && CLASS_TYPE_P (TREE_TYPE (field)) ++ && vbase_has_user_provided_move_assign (TREE_TYPE (field))) ++ return true; ++ } + -+ PR libstdc++/56678 -+ * include/std/chrono (__is_ratio): Uglify T. ++ /* Seems not. */ ++ return false; ++} + - 2013-03-22 Release Manager + /* If default-initialization leaves part of TYPE uninitialized, returns + a DECL for the field or TYPE itself (DR 253). */ - * GCC 4.8.0 released. -Index: libstdc++-v3/testsuite/30_threads/lock_guard/cons/1.cc +Index: gcc/cp/method.c =================================================================== ---- a/src/libstdc++-v3/testsuite/30_threads/lock_guard/cons/1.cc (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/testsuite/30_threads/lock_guard/cons/1.cc (.../branches/gcc-4_8-branch) -@@ -1,9 +1,6 @@ --// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* powerpc-ibm-aix* } } --// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* powerpc-ibm-aix* } } --// { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } } --// { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } } -+// { dg-do run } -+// { dg-options " -std=gnu++11 " } - // { dg-require-cstdint "" } --// { dg-require-gthreads "" } - - // Copyright (C) 2010-2013 Free Software Foundation, Inc. - // -Index: libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc +--- a/src/gcc/cp/method.c (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/cp/method.c (.../branches/gcc-4_8-branch) +@@ -1340,7 +1340,8 @@ + if (diag && assign_p && move_p + && BINFO_VIRTUAL_P (base_binfo) + && rval && TREE_CODE (rval) == FUNCTION_DECL +- && move_fn_p (rval) && !trivial_fn_p (rval)) ++ && move_fn_p (rval) && !trivial_fn_p (rval) ++ && vbase_has_user_provided_move_assign (basetype)) + warning (OPT_Wvirtual_move_assign, + "defaulted move assignment for %qT calls a non-trivial " + "move assignment operator for virtual base %qT", +Index: gcc/cp/ChangeLog =================================================================== ---- a/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc (.../branches/gcc-4_8-branch) -@@ -18,7 +18,7 @@ - // . - - // { dg-do compile } --// { dg-error "no matching" "" { target *-*-* } 1236 } -+// { dg-error "no matching" "" { target *-*-* } 1240 } - - #include +--- a/src/gcc/cp/ChangeLog (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/cp/ChangeLog (.../branches/gcc-4_8-branch) +@@ -1,3 +1,16 @@ ++2013-05-31 Jason Merrill ++ ++ PR c++/57319 ++ * class.c (vbase_has_user_provided_move_assign): New. ++ * method.c (synthesized_method_walk): Check it. ++ * cp-tree.h: Declare it. ++ ++ PR c++/56930 ++ * call.c (convert_like_real): Use cp_convert_and_check. ++ * cvt.c (cp_convert_and_check): Use maybe_constant_value. ++ * semantics.c (cxx_eval_constant_expression): Handle LTGT_EXPR. ++ (potential_constant_expression_1): Handle OMP_ATOMIC*. ++ + 2013-05-31 Release Manager -Index: libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc + * GCC 4.8.1 released. +Index: gcc/cp/semantics.c =================================================================== ---- a/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc (.../branches/gcc-4_8-branch) -@@ -18,7 +18,7 @@ - // . - - // { dg-do compile } --// { dg-error "no matching" "" { target *-*-* } 1277 } -+// { dg-error "no matching" "" { target *-*-* } 1281 } +--- a/src/gcc/cp/semantics.c (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/cp/semantics.c (.../branches/gcc-4_8-branch) +@@ -7990,6 +7990,7 @@ + case UNGT_EXPR: + case UNGE_EXPR: + case UNEQ_EXPR: ++ case LTGT_EXPR: + case RANGE_EXPR: + case COMPLEX_EXPR: + r = cxx_eval_binary_expression (call, t, allow_non_constant, addr, +@@ -8846,6 +8847,12 @@ + } + return false; - #include ++ case OMP_ATOMIC: ++ case OMP_ATOMIC_READ: ++ case OMP_ATOMIC_CAPTURE_OLD: ++ case OMP_ATOMIC_CAPTURE_NEW: ++ return false; ++ + default: + if (objc_is_property_ref (t)) + return false; +Index: gcc/cp/call.c +=================================================================== +--- a/src/gcc/cp/call.c (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/cp/call.c (.../branches/gcc-4_8-branch) +@@ -6195,8 +6195,8 @@ + if (convs->check_narrowing) + check_narrowing (totype, expr); + +- if (issue_conversion_warnings && (complain & tf_warning)) +- expr = convert_and_check (totype, expr); ++ if (issue_conversion_warnings) ++ expr = cp_convert_and_check (totype, expr, complain); + else + expr = convert (totype, expr); + +Index: gcc/cp/cvt.c +=================================================================== +--- a/src/gcc/cp/cvt.c (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/cp/cvt.c (.../branches/gcc-4_8-branch) +@@ -620,6 +620,9 @@ + + if (TREE_TYPE (expr) == type) + return expr; ++ ++ if (TREE_CODE (expr) == SIZEOF_EXPR) ++ expr = maybe_constant_value (expr); + + result = cp_convert (type, expr, complain); -Index: libstdc++-v3/testsuite/23_containers/vector/cons/55977.cc +Index: gcc/cp/cp-tree.h =================================================================== ---- a/src/libstdc++-v3/testsuite/23_containers/vector/cons/55977.cc (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/testsuite/23_containers/vector/cons/55977.cc (.../branches/gcc-4_8-branch) -@@ -0,0 +1,60 @@ -+// { dg-do compile } -+// { dg-options "-std=gnu++11" } -+ -+// Copyright (C) 2013 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 -+#include -+#include -+ -+template -+struct MyAllocator -+{ -+ std::allocator base; -+ typedef T value_type; -+ MyAllocator() = default; -+ template -+ MyAllocator(const MyAllocator& other) : base(other.base) {} -+ T* allocate(std::size_t n) { return base.allocate(n); } -+ void deallocate(T* p, std::size_t n) { return base.deallocate(p, n); } -+ template -+ void construct(U* p, Args&&... args) -+ { -+ ::new (static_cast(p)) U(std::forward(args)...); -+ } -+}; -+ -+struct A -+{ -+private: -+ friend class MyAllocator; -+ A(int value) : value(value) {} -+ int value; -+public: -+ A() : value() {} -+ int get() const { return value; } -+}; -+ -+void foo() -+{ -+ std::vector> v1; -+ const int i = 1; -+ v1.emplace_back(i); // OK -+ std::vector> v2(std::istream_iterator(), {}); // ERROR -+} -Index: libstdc++-v3/testsuite/23_containers/deque/cons/55977.cc +--- a/src/gcc/cp/cp-tree.h (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/cp/cp-tree.h (.../branches/gcc-4_8-branch) +@@ -5057,6 +5057,7 @@ + extern bool user_provided_p (tree); + extern bool type_has_user_provided_constructor (tree); + extern bool type_has_user_provided_default_constructor (tree); ++extern bool vbase_has_user_provided_move_assign (tree); + extern tree default_init_uninitialized_part (tree); + extern bool trivial_default_constructor_is_constexpr (tree); + extern bool type_has_constexpr_default_constructor (tree); +Index: gcc/fortran/interface.c +=================================================================== +--- a/src/gcc/fortran/interface.c (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/fortran/interface.c (.../branches/gcc-4_8-branch) +@@ -1024,7 +1024,8 @@ + bool type_must_agree, char *errmsg, int err_len) + { + /* Check type and rank. */ +- if (type_must_agree && !compare_type_rank (s2, s1)) ++ if (type_must_agree && ++ (!compare_type_rank (s1, s2) || !compare_type_rank (s2, s1))) + { + snprintf (errmsg, err_len, "Type/rank mismatch in argument '%s'", + s1->name); +Index: gcc/fortran/ChangeLog =================================================================== ---- a/src/libstdc++-v3/testsuite/23_containers/deque/cons/55977.cc (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/testsuite/23_containers/deque/cons/55977.cc (.../branches/gcc-4_8-branch) -@@ -0,0 +1,70 @@ -+// { dg-do compile } -+// { dg-options "-std=gnu++11" } -+ -+// Copyright (C) 2013 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 -+#include -+#include +--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-4_8-branch) +@@ -1,3 +1,17 @@ ++2013-06-04 Tobias Burnus + -+template -+struct MyAllocator -+{ -+ std::allocator base; -+ typedef T value_type; ++ Backport from mainline ++ 2013-05-22 Tobias Burnus + -+ // FIXME: these types shouldn't be required. -+ typedef T* pointer; -+ typedef const T* const_pointer; -+ typedef T& reference; -+ typedef const T& const_reference; -+ template -+ struct rebind -+ { typedef MyAllocator other; }; ++ PR fortran/57364 ++ * resolve.c (get_temp_from_expr): Commit created sym. + -+ MyAllocator() = default; -+ template -+ MyAllocator(const MyAllocator& other) : base(other.base) {} -+ T* allocate(std::size_t n) { return base.allocate(n); } -+ void deallocate(T* p, std::size_t n) { return base.deallocate(p, n); } -+ template -+ void construct(U* p, Args&&... args) -+ { -+ ::new (static_cast(p)) U(std::forward(args)...); -+ } -+}; ++2013-05-31 Janus Weil ++ Tobias Burnus + -+struct A -+{ -+private: -+ friend class MyAllocator; -+ A(int value) : value(value) {} -+ int value; -+public: -+ A() : value() {} -+ int get() const { return value; } -+}; ++ PR fortran/57217 ++ * interface.c (check_dummy_characteristics): Symmetrize type check. + -+void foo() -+{ -+ std::deque> v1; -+ const int i = 1; -+ v1.emplace_back(i); // OK -+ std::deque> v2(std::istream_iterator(), {}); // ERROR -+} -Index: libstdc++-v3/testsuite/23_containers/list/modifiers/1.h -=================================================================== ---- a/src/libstdc++-v3/testsuite/23_containers/list/modifiers/1.h (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/testsuite/23_containers/list/modifiers/1.h (.../branches/gcc-4_8-branch) -@@ -89,14 +89,22 @@ - b = list0301.begin(); - list0301.insert(b, A, A + N); // should be [321 322 333 13 13] - VERIFY(list0301.size() == 5); -+#if __cplusplus >= 201103L -+ VERIFY(copy_constructor::count() == 0); -+#else - VERIFY(copy_constructor::count() == 3); -+#endif - VERIFY(m->id() == 13); + 2013-05-31 Release Manager - // range fill at end - value_type::reset(); - list0301.insert(e, A, A + N); // should be [321 322 333 13 13 321 322 333] - VERIFY(list0301.size() == 8); -+#if __cplusplus >= 201103L -+ VERIFY(copy_constructor::count() == 0); -+#else - VERIFY(copy_constructor::count() == 3); -+#endif - VERIFY(e == list0301.end()); - VERIFY(m->id() == 13); - -@@ -104,7 +112,11 @@ - value_type::reset(); - list0301.insert(m, A, A + N); - VERIFY(list0301.size() == 11); -+#if __cplusplus >= 201103L -+ VERIFY(copy_constructor::count() == 0); -+#else - VERIFY(copy_constructor::count() == 3); -+#endif - VERIFY(e == list0301.end()); - VERIFY(m->id() == 13); - -Index: libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc + * GCC 4.8.1 released. +Index: gcc/fortran/resolve.c =================================================================== ---- a/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc (.../branches/gcc-4_8-branch) -@@ -18,7 +18,7 @@ - // . +--- a/src/gcc/fortran/resolve.c (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/fortran/resolve.c (.../branches/gcc-4_8-branch) +@@ -9759,6 +9759,7 @@ - // { dg-do compile } --// { dg-error "no matching" "" { target *-*-* } 1525 } -+// { dg-error "no matching" "" { target *-*-* } 1529 } + gfc_set_sym_referenced (tmp->n.sym); + gfc_add_flavor (&tmp->n.sym->attr, FL_VARIABLE, name, NULL); ++ gfc_commit_symbol (tmp->n.sym); + e = gfc_lval_expr_from_sym (tmp->n.sym); - #include - -Index: libstdc++-v3/testsuite/23_containers/list/cons/55979.cc + /* Should the lhs be a section, use its array ref for the +Index: gcc/config/i386/i386.c =================================================================== ---- a/src/libstdc++-v3/testsuite/23_containers/list/cons/55979.cc (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/testsuite/23_containers/list/cons/55979.cc (.../branches/gcc-4_8-branch) -@@ -0,0 +1,34 @@ -+// { dg-do compile } -+// { dg-options "-std=gnu++11" } +--- a/src/gcc/config/i386/i386.c (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/config/i386/i386.c (.../branches/gcc-4_8-branch) +@@ -35444,6 +35444,46 @@ + } + } + ++/* Fix up a Windows system unwinder issue. If an EH region falls thru into ++ the epilogue, the Windows system unwinder will apply epilogue logic and ++ produce incorrect offsets. This can be avoided by adding a nop between ++ the last insn that can throw and the first insn of the epilogue. */ + -+// Copyright (C) 2013 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 -+// . ++static void ++ix86_seh_fixup_eh_fallthru (void) ++{ ++ edge e; ++ edge_iterator ei; + -+#include ++ FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR->preds) ++ { ++ rtx insn, next; + -+struct A -+{ -+ A(int) { } -+ A(const A&) = delete; -+ A& operator=(const A&) = delete; -+}; ++ /* Find the beginning of the epilogue. */ ++ for (insn = BB_END (e->src); insn != NULL; insn = PREV_INSN (insn)) ++ if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_EPILOGUE_BEG) ++ break; ++ if (insn == NULL) ++ continue; + -+void foo() -+{ -+ int i[] = {1, 2}; -+ std::list li(i, i + 2); ++ /* We only care about preceeding insns that can throw. */ ++ insn = prev_active_insn (insn); ++ if (insn == NULL || !can_throw_internal (insn)) ++ continue; ++ ++ /* Do not separate calls from their debug information. */ ++ for (next = NEXT_INSN (insn); next != NULL; next = NEXT_INSN (next)) ++ if (NOTE_P (next) ++ && (NOTE_KIND (next) == NOTE_INSN_VAR_LOCATION ++ || NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION)) ++ insn = next; ++ else ++ break; ++ ++ emit_insn_after (gen_nops (const1_rtx), insn); ++ } +} -Index: libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc -=================================================================== ---- a/src/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc (.../branches/gcc-4_8-branch) -@@ -23,4 +23,4 @@ - - typedef std::tuple_element<1, std::array>::type type; - --// { dg-error "static assertion failed" "" { target *-*-* } 306 } -+// { dg-error "static assertion failed" "" { target *-*-* } 300 } -Index: libstdc++-v3/config.h.in -=================================================================== ---- a/src/libstdc++-v3/config.h.in (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/config.h.in (.../branches/gcc-4_8-branch) -@@ -400,7 +400,7 @@ - /* Define to 1 if you have the header file. */ - #undef HAVE_SYS_RESOURCE_H - --/* Define to 1 if you have the header file. */ -+/* Define to 1 if you have a suitable header file */ - #undef HAVE_SYS_SDT_H - - /* Define to 1 if you have the header file. */ -Index: libstdc++-v3/acinclude.m4 -=================================================================== ---- a/src/libstdc++-v3/acinclude.m4 (.../tags/gcc_4_8_0_release) -+++ b/src/libstdc++-v3/acinclude.m4 (.../branches/gcc-4_8-branch) -@@ -3660,6 +3660,36 @@ - ]) - - -+dnl -+dnl Check to see if sys/sdt.h exists and that it is suitable for use. -+dnl Some versions of sdt.h were not compatible with C++11. -+dnl -+AC_DEFUN([GLIBCXX_CHECK_SDT_H], [ -+ AC_MSG_RESULT([for suitable sys/sdt.h]) -+ # Note that this test has to be run with the C language. -+ # Otherwise, sdt.h will try to include some headers from -+ # libstdc++ itself. -+ AC_LANG_SAVE -+ AC_LANG_C -+ AC_CACHE_VAL(glibcxx_cv_sys_sdt_h, [ -+ # Because we have to run the test in C, we use grep rather -+ # than the compiler to check for the bug. The bug is that -+ # were strings without trailing whitespace, causing g++ -+ # to look for operator"". The pattern searches for the fixed -+ # output. -+ AC_EGREP_CPP([ \",\" ], [ -+ #include -+ int f() { STAP_PROBE(hi, bob); } -+ ], [glibcxx_cv_sys_sdt_h=yes], [glibcxx_cv_sys_sdt_h=no]) -+ ]) -+ AC_LANG_RESTORE -+ if test $glibcxx_cv_sys_sdt_h = yes; then -+ AC_DEFINE(HAVE_SYS_SDT_H, 1, -+ [Define to 1 if you have a suitable header file]) -+ fi -+ AC_MSG_RESULT($glibcxx_cv_sys_sdt_h) -+]) + - # Macros from the top-level gcc directory. - m4_include([../config/gc++filt.m4]) - m4_include([../config/tls.m4]) -Index: boehm-gc/Makefile.in -=================================================================== ---- a/src/boehm-gc/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/boehm-gc/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,13 +36,10 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = . --DIST_COMMON = $(am__configure_deps) $(srcdir)/../compile \ -- $(srcdir)/../config.guess $(srcdir)/../config.sub \ -- $(srcdir)/../depcomp $(srcdir)/../install-sh \ -- $(srcdir)/../ltmain.sh $(srcdir)/../missing \ -- $(srcdir)/../mkinstalldirs $(srcdir)/Makefile.am \ -- $(srcdir)/Makefile.in $(srcdir)/threads.mk.in \ -- $(top_srcdir)/configure ChangeLog depcomp -+DIST_COMMON = ChangeLog $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ -+ $(top_srcdir)/configure $(am__configure_deps) \ -+ $(srcdir)/../mkinstalldirs $(srcdir)/threads.mk.in \ -+ $(srcdir)/../depcomp - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ - $(top_srcdir)/../config/depstand.m4 \ -@@ -63,14 +60,6 @@ - CONFIG_CLEAN_VPATH_FILES = - LTLIBRARIES = $(noinst_LTLIBRARIES) - am__DEPENDENCIES_1 = --am__libgcjgc_la_SOURCES_DIST = allchblk.c alloc.c blacklst.c \ -- checksums.c dbg_mlc.c dyn_load.c finalize.c gc_dlopen.c \ -- gcj_mlc.c headers.c malloc.c mallocx.c mark.c mark_rts.c \ -- misc.c new_hblk.c obj_map.c os_dep.c pcr_interface.c \ -- ptr_chck.c real_malloc.c reclaim.c specific.c stubborn.c \ -- typd_mlc.c backgraph.c win32_threads.c pthread_support.c \ -- pthread_stop_world.c darwin_stop_world.c \ -- powerpc_darwin_mach_dep.s - @POWERPC_DARWIN_TRUE@am__objects_1 = powerpc_darwin_mach_dep.lo - am_libgcjgc_la_OBJECTS = allchblk.lo alloc.lo blacklst.lo checksums.lo \ - dbg_mlc.lo dyn_load.lo finalize.lo gc_dlopen.lo gcj_mlc.lo \ -@@ -80,14 +69,6 @@ - backgraph.lo win32_threads.lo pthread_support.lo \ - pthread_stop_world.lo darwin_stop_world.lo $(am__objects_1) - libgcjgc_la_OBJECTS = $(am_libgcjgc_la_OBJECTS) --am__libgcjgc_convenience_la_SOURCES_DIST = allchblk.c alloc.c \ -- blacklst.c checksums.c dbg_mlc.c dyn_load.c finalize.c \ -- gc_dlopen.c gcj_mlc.c headers.c malloc.c mallocx.c mark.c \ -- mark_rts.c misc.c new_hblk.c obj_map.c os_dep.c \ -- pcr_interface.c ptr_chck.c real_malloc.c reclaim.c specific.c \ -- stubborn.c typd_mlc.c backgraph.c win32_threads.c \ -- pthread_support.c pthread_stop_world.c darwin_stop_world.c \ -- powerpc_darwin_mach_dep.s - am__objects_2 = allchblk.lo alloc.lo blacklst.lo checksums.lo \ - dbg_mlc.lo dyn_load.lo finalize.lo gc_dlopen.lo gcj_mlc.lo \ - headers.lo malloc.lo mallocx.lo mark.lo mark_rts.lo misc.lo \ -@@ -115,8 +96,6 @@ - LTCCASCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS) - SOURCES = $(libgcjgc_la_SOURCES) $(libgcjgc_convenience_la_SOURCES) --DIST_SOURCES = $(am__libgcjgc_la_SOURCES_DIST) \ -- $(am__libgcjgc_convenience_la_SOURCES_DIST) - MULTISRCTOP = - MULTIBUILDTOP = - MULTIDIRS = -@@ -133,47 +112,10 @@ - RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive - AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ -- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ -- distdir dist dist-all distcheck -+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS - ETAGS = etags - CTAGS = ctags - DIST_SUBDIRS = $(SUBDIRS) --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) --distdir = $(PACKAGE)-$(VERSION) --top_distdir = $(distdir) --am__remove_distdir = \ -- { test ! -d "$(distdir)" \ -- || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ -- && rm -fr "$(distdir)"; }; } --am__relativize = \ -- dir0=`pwd`; \ -- sed_first='s,^\([^/]*\)/.*$$,\1,'; \ -- sed_rest='s,^[^/]*/*,,'; \ -- sed_last='s,^.*/\([^/]*\)$$,\1,'; \ -- sed_butlast='s,/*[^/]*$$,,'; \ -- while test -n "$$dir1"; do \ -- first=`echo "$$dir1" | sed -e "$$sed_first"`; \ -- if test "$$first" != "."; then \ -- if test "$$first" = ".."; then \ -- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ -- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ -- else \ -- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ -- if test "$$first2" = "$$first"; then \ -- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ -- else \ -- dir2="../$$dir2"; \ -- fi; \ -- dir0="$$dir0"/"$$first"; \ -- fi; \ -- fi; \ -- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ -- done; \ -- reldir="$$dir2" --DIST_ARCHIVES = $(distdir).tar.gz --GZIP_ENV = --best --distuninstallcheck_listfiles = find . -type f -print --distcleancheck_listfiles = find . -type f -print - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - AM_CPPFLAGS = @AM_CPPFLAGS@ -@@ -314,7 +256,7 @@ - top_build_prefix = @top_build_prefix@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ --AUTOMAKE_OPTIONS = foreign subdir-objects -+AUTOMAKE_OPTIONS = foreign subdir-objects no-dist - ACLOCAL_AMFLAGS = -I .. -I ../config - SUBDIRS = include testsuite - noinst_LTLIBRARIES = libgcjgc.la libgcjgc_convenience.la -@@ -672,182 +614,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- $(am__remove_distdir) -- test -d "$(distdir)" || mkdir "$(distdir)" -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done -- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- test -d "$(distdir)/$$subdir" \ -- || $(MKDIR_P) "$(distdir)/$$subdir" \ -- || exit 1; \ -- fi; \ -- done -- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ -- $(am__relativize); \ -- new_distdir=$$reldir; \ -- dir1=$$subdir; dir2="$(top_distdir)"; \ -- $(am__relativize); \ -- new_top_distdir=$$reldir; \ -- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ -- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ -- ($(am__cd) $$subdir && \ -- $(MAKE) $(AM_MAKEFLAGS) \ -- top_distdir="$$new_top_distdir" \ -- distdir="$$new_distdir" \ -- am__remove_distdir=: \ -- am__skip_length_check=: \ -- am__skip_mode_fix=: \ -- distdir) \ -- || exit 1; \ -- fi; \ -- done -- -test -n "$(am__skip_mode_fix)" \ -- || find "$(distdir)" -type d ! -perm -755 \ -- -exec chmod u+rwx,go+rx {} \; -o \ -- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ -- ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ -- ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ -- || chmod -R a+r "$(distdir)" --dist-gzip: distdir -- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -- $(am__remove_distdir) -- --dist-bzip2: distdir -- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 -- $(am__remove_distdir) -- --dist-lzma: distdir -- tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma -- $(am__remove_distdir) -- --dist-xz: distdir -- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz -- $(am__remove_distdir) -- --dist-tarZ: distdir -- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z -- $(am__remove_distdir) -- --dist-shar: distdir -- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz -- $(am__remove_distdir) -- --dist-zip: distdir -- -rm -f $(distdir).zip -- zip -rq $(distdir).zip $(distdir) -- $(am__remove_distdir) -- --dist dist-all: distdir -- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -- $(am__remove_distdir) -- --# This target untars the dist file and tries a VPATH configuration. Then --# it guarantees that the distribution is self-contained by making another --# tarfile. --distcheck: dist -- case '$(DIST_ARCHIVES)' in \ -- *.tar.gz*) \ -- GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ -- *.tar.bz2*) \ -- bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ -- *.tar.lzma*) \ -- lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ -- *.tar.xz*) \ -- xz -dc $(distdir).tar.xz | $(am__untar) ;;\ -- *.tar.Z*) \ -- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ -- *.shar.gz*) \ -- GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ -- *.zip*) \ -- unzip $(distdir).zip ;;\ -- esac -- chmod -R a-w $(distdir); chmod a+w $(distdir) -- mkdir $(distdir)/_build -- mkdir $(distdir)/_inst -- chmod a-w $(distdir) -- test -d $(distdir)/_build || exit 0; \ -- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ -- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ -- && am__cwd=`pwd` \ -- && $(am__cd) $(distdir)/_build \ -- && ../configure --srcdir=.. --prefix="$$dc_install_base" \ -- $(DISTCHECK_CONFIGURE_FLAGS) \ -- && $(MAKE) $(AM_MAKEFLAGS) \ -- && $(MAKE) $(AM_MAKEFLAGS) dvi \ -- && $(MAKE) $(AM_MAKEFLAGS) check \ -- && $(MAKE) $(AM_MAKEFLAGS) install \ -- && $(MAKE) $(AM_MAKEFLAGS) installcheck \ -- && $(MAKE) $(AM_MAKEFLAGS) uninstall \ -- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ -- distuninstallcheck \ -- && chmod -R a-w "$$dc_install_base" \ -- && ({ \ -- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ -- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ -- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ -- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ -- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ -- } || { rm -rf "$$dc_destdir"; exit 1; }) \ -- && rm -rf "$$dc_destdir" \ -- && $(MAKE) $(AM_MAKEFLAGS) dist \ -- && rm -rf $(DIST_ARCHIVES) \ -- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ -- && cd "$$am__cwd" \ -- || exit 1 -- $(am__remove_distdir) -- @(echo "$(distdir) archives ready for distribution: "; \ -- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ -- sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' --distuninstallcheck: -- @$(am__cd) '$(distuninstallcheck_dir)' \ -- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ -- || { echo "ERROR: files left after uninstall:" ; \ -- if test -n "$(DESTDIR)"; then \ -- echo " (check DESTDIR support)"; \ -- fi ; \ -- $(distuninstallcheck_listfiles) ; \ -- exit 1; } >&2 --distcleancheck: distclean -- @if test '$(srcdir)' = . ; then \ -- echo "ERROR: distcleancheck can only run from a VPATH build" ; \ -- exit 1 ; \ -- fi -- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ -- || { echo "ERROR: files left in build directory after distclean:" ; \ -- $(distcleancheck_listfiles) ; \ -- exit 1; } >&2 - check-am: all-am - check: check-recursive - all-am: Makefile $(LTLIBRARIES) all-multi -@@ -960,21 +726,19 @@ - .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am all-multi am--refresh check check-am clean \ - clean-generic clean-libtool clean-multi \ -- clean-noinstLTLIBRARIES ctags ctags-recursive dist dist-all \ -- dist-bzip2 dist-gzip dist-lzma dist-shar dist-tarZ dist-xz \ -- dist-zip distcheck distclean distclean-compile \ -- distclean-generic distclean-libtool distclean-multi \ -- distclean-tags distcleancheck distdir distuninstallcheck dvi \ -- dvi-am html html-am info info-am install install-am \ -- install-data install-data-am install-dvi install-dvi-am \ -- install-exec install-exec-am install-html install-html-am \ -- install-info install-info-am install-man install-multi \ -- install-pdf install-pdf-am install-ps install-ps-am \ -- install-strip installcheck installcheck-am installdirs \ -- installdirs-am maintainer-clean maintainer-clean-generic \ -- maintainer-clean-multi mostlyclean mostlyclean-compile \ -- mostlyclean-generic mostlyclean-libtool mostlyclean-multi pdf \ -- pdf-am ps ps-am tags tags-recursive uninstall uninstall-am -+ clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ -+ distclean-compile distclean-generic distclean-libtool \ -+ distclean-multi distclean-tags dvi dvi-am html html-am info \ -+ info-am install install-am install-data install-data-am \ -+ install-dvi install-dvi-am install-exec install-exec-am \ -+ install-html install-html-am install-info install-info-am \ -+ install-man install-multi install-pdf install-pdf-am \ -+ install-ps install-ps-am install-strip installcheck \ -+ installcheck-am installdirs installdirs-am maintainer-clean \ -+ maintainer-clean-generic maintainer-clean-multi mostlyclean \ -+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ -+ mostlyclean-multi pdf pdf-am ps ps-am tags tags-recursive \ -+ uninstall uninstall-am - - override CFLAGS := $(filter-out $(O0_CFLAGS), $(CFLAGS)) $(O0_CFLAGS) - -Index: boehm-gc/include/Makefile.in -=================================================================== ---- a/src/boehm-gc/include/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/boehm-gc/include/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,9 +36,9 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = include --DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ -- $(srcdir)/Makefile.in $(srcdir)/gc_config.h.in \ -- $(srcdir)/gc_ext_config.h.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ -+ $(srcdir)/gc_config.h.in $(srcdir)/gc_ext_config.h.in \ -+ $(noinst_HEADERS) - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ - $(top_srcdir)/../config/depstand.m4 \ -@@ -55,11 +55,9 @@ - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = - HEADERS = $(noinst_HEADERS) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - AM_CPPFLAGS = @AM_CPPFLAGS@ -@@ -200,7 +198,7 @@ - top_build_prefix = @top_build_prefix@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ --AUTOMAKE_OPTIONS = foreign -+AUTOMAKE_OPTIONS = foreign no-dist - noinst_HEADERS = gc.h gc_backptr.h gc_local_alloc.h \ - gc_pthread_redirects.h gc_cpp.h - -@@ -323,37 +321,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(HEADERS) gc_config.h gc_ext_config.h -@@ -453,16 +420,15 @@ - - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool ctags distclean distclean-generic distclean-hdr \ -- distclean-libtool distclean-tags distdir dvi dvi-am html \ -- html-am info info-am install install-am install-data \ -- install-data-am install-dvi install-dvi-am install-exec \ -- install-exec-am install-html install-html-am install-info \ -- install-info-am install-man install-pdf install-pdf-am \ -- install-ps install-ps-am install-strip installcheck \ -- installcheck-am installdirs maintainer-clean \ -- maintainer-clean-generic mostlyclean mostlyclean-generic \ -- mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ -- uninstall-am -+ distclean-libtool distclean-tags dvi dvi-am html html-am info \ -+ info-am install install-am install-data install-data-am \ -+ install-dvi install-dvi-am install-exec install-exec-am \ -+ install-html install-html-am install-info install-info-am \ -+ install-man install-pdf install-pdf-am install-ps \ -+ install-ps-am install-strip installcheck installcheck-am \ -+ installdirs maintainer-clean maintainer-clean-generic \ -+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ -+ ps ps-am tags uninstall uninstall-am - + /* Implement machine specific optimizations. We implement padding of returns + for K8 CPUs and pass to avoid 4 jumps in the single 16 byte window. */ + static void +@@ -35453,6 +35493,9 @@ + with old MDEP_REORGS that are not CFG based. Recompute it now. */ + compute_bb_for_insn (); - # Tell versions [3.59,3.63) of GNU make to not export all variables. -Index: boehm-gc/include/Makefile.am ++ if (TARGET_SEH && current_function_has_exception_handlers ()) ++ ix86_seh_fixup_eh_fallthru (); ++ + if (optimize && optimize_function_for_speed_p (cfun)) + { + if (TARGET_PAD_SHORT_FUNCTION) +Index: gcc/config/aarch64/aarch64.c =================================================================== ---- a/src/boehm-gc/include/Makefile.am (.../tags/gcc_4_8_0_release) -+++ b/src/boehm-gc/include/Makefile.am (.../branches/gcc-4_8-branch) -@@ -1,4 +1,4 @@ --AUTOMAKE_OPTIONS = foreign -+AUTOMAKE_OPTIONS = foreign no-dist +--- a/src/gcc/config/aarch64/aarch64.c (.../tags/gcc_4_8_1_release) ++++ b/src/gcc/config/aarch64/aarch64.c (.../branches/gcc-4_8-branch) +@@ -3373,7 +3373,7 @@ + output_operand_lossage ("invalid operand for '%%%c'", code); + return; + } +- asm_fprintf (f, "0x%x", UINTVAL (x)); ++ asm_fprintf (f, "0x%wx", UINTVAL (x)); + break; - noinst_HEADERS = gc.h gc_backptr.h gc_local_alloc.h \ - gc_pthread_redirects.h gc_cpp.h -Index: boehm-gc/ChangeLog + case 'w': +Index: fixincludes/ChangeLog =================================================================== ---- a/src/boehm-gc/ChangeLog (.../tags/gcc_4_8_0_release) -+++ b/src/boehm-gc/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,13 @@ -+2013-03-22 Jakub Jelinek +--- a/src/fixincludes/ChangeLog (.../tags/gcc_4_8_1_release) ++++ b/src/fixincludes/ChangeLog (.../branches/gcc-4_8-branch) +@@ -1,3 +1,14 @@ ++2013-05-31 Rainer Orth ++ ++ Backport from mainline: ++ 2013-05-17 Rainer Orth + -+ PR other/43620 -+ * Makefile.am (AUTOMAKE_OPTIONS): Add no-dist. -+ * include/Makefile.am (AUTOMAKE_OPTIONS): Add no-dist. -+ * testsuite/Makefile.am (AUTOMAKE_OPTIONS): Add no-dist. -+ * Makefile.in: Regenerated. -+ * include/Makefile.in: Regenerated. -+ * testsuite/Makefile.in: Regenerated. ++ * inclhack.def (solaris_pow_int_overload): Update comment. ++ Change guard to match . ++ * fixincl.x: Regenerate. ++ * tests/base/iso/math_iso.h [SOLARIS_POW_INT_OVERLOAD_CHECK]: ++ Matching change. + - 2013-03-22 Release Manager + 2013-05-31 Release Manager - * GCC 4.8.0 released. -Index: boehm-gc/testsuite/Makefile.in + * GCC 4.8.1 released. +Index: fixincludes/tests/base/iso/math_iso.h =================================================================== ---- a/src/boehm-gc/testsuite/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/boehm-gc/testsuite/Makefile.in (.../branches/gcc-4_8-branch) -@@ -35,7 +35,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = testsuite --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ - $(top_srcdir)/../config/depstand.m4 \ -@@ -53,10 +53,8 @@ - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = - RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir - RUNTEST = runtest --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - AM_CPPFLAGS = @AM_CPPFLAGS@ -@@ -197,7 +195,7 @@ - top_build_prefix = @top_build_prefix@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ --AUTOMAKE_OPTIONS = foreign dejagnu -+AUTOMAKE_OPTIONS = foreign dejagnu no-dist - EXPECT = expect +--- a/src/fixincludes/tests/base/iso/math_iso.h (.../tags/gcc_4_8_1_release) ++++ b/src/fixincludes/tests/base/iso/math_iso.h (.../branches/gcc-4_8-branch) +@@ -10,7 +10,7 @@ - # Override default. -@@ -267,37 +265,6 @@ - -l='$(DEJATOOL)'; for tool in $$l; do \ - rm -f $$tool.sum $$tool.log; \ - done -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU - check: check-am -@@ -399,8 +366,8 @@ - .PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \ - clean-libtool distclean distclean-DEJAGNU distclean-generic \ -- distclean-libtool distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-libtool dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ -Index: boehm-gc/testsuite/Makefile.am + #if defined( SOLARIS_POW_INT_OVERLOAD_CHECK ) +-#ifndef __GXX_EXPERIMENTAL_CXX0X__ ++#if __cplusplus < 201103L + inline long double pow(long double __X, int __Y) { return + __powl(__X, (long double) (__Y)); } + #endif +Index: fixincludes/fixincl.x =================================================================== ---- a/src/boehm-gc/testsuite/Makefile.am (.../tags/gcc_4_8_0_release) -+++ b/src/boehm-gc/testsuite/Makefile.am (.../branches/gcc-4_8-branch) -@@ -1,6 +1,6 @@ - ## Process this file with automake to produce Makefile.in. - --AUTOMAKE_OPTIONS = foreign dejagnu -+AUTOMAKE_OPTIONS = foreign dejagnu no-dist - - EXPECT = expect - -Index: boehm-gc/Makefile.am -=================================================================== ---- a/src/boehm-gc/Makefile.am (.../tags/gcc_4_8_0_release) -+++ b/src/boehm-gc/Makefile.am (.../branches/gcc-4_8-branch) -@@ -4,7 +4,7 @@ - ## files that should be in the distribution are not mentioned in this - ## Makefile.am. - --AUTOMAKE_OPTIONS = foreign subdir-objects -+AUTOMAKE_OPTIONS = foreign subdir-objects no-dist - ACLOCAL_AMFLAGS = -I .. -I ../config - - SUBDIRS = include testsuite -Index: include/ChangeLog -=================================================================== ---- a/src/include/ChangeLog (.../tags/gcc_4_8_0_release) -+++ b/src/include/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,10 @@ -+2013-04-03 Jason Merrill -+ -+ Demangle C++11 ref-qualifier. -+ * demangle.h (enum demangle_component_type): Add -+ DEMANGLE_COMPONENT_REFERENCE_THIS, -+ DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS. -+ - 2013-03-22 Release Manager - - * GCC 4.8.0 released. -Index: include/demangle.h -=================================================================== ---- a/src/include/demangle.h (.../tags/gcc_4_8_0_release) -+++ b/src/include/demangle.h (.../branches/gcc-4_8-branch) -@@ -302,6 +302,12 @@ - /* The const qualifier modifying a member function. The one subtree - is the type which is being qualified. */ - DEMANGLE_COMPONENT_CONST_THIS, -+ /* C++11 A reference modifying a member function. The one subtree is the -+ type which is being referenced. */ -+ DEMANGLE_COMPONENT_REFERENCE_THIS, -+ /* C++11: An rvalue reference modifying a member function. The one -+ subtree is the type which is being referenced. */ -+ DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS, - /* A vendor qualifier. The left subtree is the type which is being - qualified, and the right subtree is the name of the - qualifier. */ -Index: libiberty/ChangeLog -=================================================================== ---- a/src/libiberty/ChangeLog (.../tags/gcc_4_8_0_release) -+++ b/src/libiberty/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,17 @@ -+2013-04-03 Jason Merrill -+ -+ Demangle C++11 ref-qualifier. -+ * cp-demangle.c (d_ref_qualifier): New. -+ (d_nested_name, d_function_type): Use it. -+ (d_parmlist): Don't get confused by a ref-qualifier. -+ (cplus_demangle_type): Reorder ref-qualifier. -+ (d_pointer_to_member_type): Likewise. -+ (d_dump): Handle DEMANGLE_COMPONENT_REFERENCE_THIS and -+ DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS. -+ (d_make_comp, has_return_type, d_encoding): Likewise. -+ (d_print_comp, d_print_mod_list, d_print_mod): Likewise. -+ (d_print_function_type, is_ctor_or_dtor): Likewise. -+ - 2013-03-22 Release Manager - - * GCC 4.8.0 released. -Index: libiberty/testsuite/demangle-expected -=================================================================== ---- a/src/libiberty/testsuite/demangle-expected (.../tags/gcc_4_8_0_release) -+++ b/src/libiberty/testsuite/demangle-expected (.../branches/gcc-4_8-branch) -@@ -4279,3 +4279,15 @@ - --format=gnu-v3 - _ZN4modc6parser8sequenceINS_9astParser13LocatedParserINS0_9ParserRefINS2_UlRNS2_16TokenParserInputEE_EEEEEINS0_14OptionalParserINS2_18ListParserTemplateILNS_6tokens5Token4TypeE4EXadL_ZNSD_Ut_13parenthesizedEEEE6ParserINS4_INS0_6ParserIS5_NS_3ast10ExpressionEEEEEEEEENSA_INS4_INS2_22OneOfKeywordsToTParserINSJ_5StyleEEEEEEENS0_14SequenceParserIS5_INS0_18ExactElementParserIS5_EENSA_ISM_EEEEENS0_14RepeatedParserINS4_INS0_15TransformParserINSU_IS5_INS4_INSP_INSJ_10Annotation12RelationshipEEEEESX_EEENS2_UlNS2_3LocES12_ONS_5MaybeISK_EEE19_EEEEELb0EEEEEENSU_INS0_17ExtractParserTypeIT_E9InputTypeEINS0_8MaybeRefIS1F_E4TypeEDpNS1I_IT0_E4TypeEEEEOS1F_DpOS1L_ - modc::parser::ParserRef::Parser::Style> > > >::InputType, modc::parser::MaybeRef&&)#21}>::Type, modc::parser::RepeatedParser::Parser::Style> >::Parser > >::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe&&)#21}> >, false>::Parser > > > >::Type, modc::parser::RepeatedParser::Parser::Style> >::Parser > >::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe&&)#21}> >, false> >::Parser::Style> > > >::Type, modc::parser::RepeatedParser::Parser::Style> >::Parser > >::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe&&)#21}> >, false>, modc::astParser::LocatedParser > > > >::Type, modc::parser::RepeatedParser::Parser::Style> >::Parser > >::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe&&)#21}> >, false>::Parser::Style> >::Parser > >::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe&&)#21}> >, false> >::Type> modc::parser::sequence >, modc::parser::OptionalParser::Parser > > >, modc::astParser::LocatedParser >::Parser::Style> > >, modc::parser::SequenceParser, modc::astParser::LocatedParser > > >, modc::parser::RepeatedParser::Parser::Style> >::Parser > >::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe&&)#21}> >, false> >(modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe&&)#21}&&, (modc::parser::ExtractParserType > >&&)...) -+--format=gnu-v3 -+_ZNKR1A1hEv -+A::h() const & -+--format=gnu-v3 -+_Z1lM1AKFvvRE -+l(void (A::*)() const &) -+--format=gnu-v3 -+_Z1mIFvvOEEvM1AT_ -+void m(void (A::*)() &&) -+--format=gnu-v3 -+_Z1nIM1AKFvvREEvT_ -+void n(void (A::*)() const &) -Index: libiberty/cp-demangle.c -=================================================================== ---- a/src/libiberty/cp-demangle.c (.../tags/gcc_4_8_0_release) -+++ b/src/libiberty/cp-demangle.c (.../branches/gcc-4_8-branch) -@@ -382,6 +382,9 @@ - d_cv_qualifiers (struct d_info *, struct demangle_component **, int); - - static struct demangle_component * -+d_ref_qualifier (struct d_info *, struct demangle_component *); -+ -+static struct demangle_component * - d_function_type (struct d_info *); - - static struct demangle_component * -@@ -614,6 +617,12 @@ - case DEMANGLE_COMPONENT_CONST_THIS: - printf ("const this\n"); - break; -+ case DEMANGLE_COMPONENT_REFERENCE_THIS: -+ printf ("reference this\n"); -+ break; -+ case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS: -+ printf ("rvalue reference this\n"); -+ break; - case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL: - printf ("vendor type qualifier\n"); - break; -@@ -893,6 +902,8 @@ - case DEMANGLE_COMPONENT_RESTRICT_THIS: - case DEMANGLE_COMPONENT_VOLATILE_THIS: - case DEMANGLE_COMPONENT_CONST_THIS: -+ case DEMANGLE_COMPONENT_REFERENCE_THIS: -+ case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS: - case DEMANGLE_COMPONENT_ARGLIST: - case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST: - break; -@@ -1131,6 +1142,8 @@ - case DEMANGLE_COMPONENT_RESTRICT_THIS: - case DEMANGLE_COMPONENT_VOLATILE_THIS: - case DEMANGLE_COMPONENT_CONST_THIS: -+ case DEMANGLE_COMPONENT_REFERENCE_THIS: -+ case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS: - return has_return_type (d_left (dc)); - } - } -@@ -1186,7 +1199,9 @@ - v2 demangler without DMGL_PARAMS. */ - while (dc->type == DEMANGLE_COMPONENT_RESTRICT_THIS - || dc->type == DEMANGLE_COMPONENT_VOLATILE_THIS -- || dc->type == DEMANGLE_COMPONENT_CONST_THIS) -+ || dc->type == DEMANGLE_COMPONENT_CONST_THIS -+ || dc->type == DEMANGLE_COMPONENT_REFERENCE_THIS -+ || dc->type == DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS) - dc = d_left (dc); - - /* If the top level is a DEMANGLE_COMPONENT_LOCAL_NAME, then -@@ -1200,7 +1215,9 @@ - dcr = d_right (dc); - while (dcr->type == DEMANGLE_COMPONENT_RESTRICT_THIS - || dcr->type == DEMANGLE_COMPONENT_VOLATILE_THIS -- || dcr->type == DEMANGLE_COMPONENT_CONST_THIS) -+ || dcr->type == DEMANGLE_COMPONENT_CONST_THIS -+ || dcr->type == DEMANGLE_COMPONENT_REFERENCE_THIS -+ || dcr->type == DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS) - dcr = d_left (dcr); - dc->u.s_binary.right = dcr; - } -@@ -1322,8 +1339,8 @@ - } - } - --/* ::= N [] E -- ::= N [] E -+/* ::= N [] [] E -+ ::= N [] [] E - */ - - static struct demangle_component * -@@ -1331,6 +1348,7 @@ - { - struct demangle_component *ret; - struct demangle_component **pret; -+ struct demangle_component *rqual; - - if (! d_check_char (di, 'N')) - return NULL; -@@ -1339,10 +1357,20 @@ - if (pret == NULL) - return NULL; - -+ /* Parse the ref-qualifier now and then attach it -+ once we have something to attach it to. */ -+ rqual = d_ref_qualifier (di, NULL); -+ - *pret = d_prefix (di); - if (*pret == NULL) - return NULL; - -+ if (rqual) -+ { -+ d_left (rqual) = ret; -+ ret = rqual; -+ } -+ - if (! d_check_char (di, 'E')) - return NULL; - -@@ -2171,8 +2199,20 @@ - if (pret == NULL) - return NULL; - *pret = cplus_demangle_type (di); -- if (! *pret || ! d_add_substitution (di, ret)) -+ if (! *pret) - return NULL; -+ if ((*pret)->type == DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS -+ || (*pret)->type == DEMANGLE_COMPONENT_REFERENCE_THIS) -+ { -+ /* Move the ref-qualifier outside the cv-qualifiers so that -+ they are printed in the right order. */ -+ struct demangle_component *fn = d_left (*pret); -+ d_left (*pret) = ret; -+ ret = *pret; -+ *pret = fn; -+ } -+ if (! d_add_substitution (di, ret)) -+ return NULL; - return ret; - } - -@@ -2474,9 +2514,40 @@ - return pret; - } - --/* ::= F [Y] E */ -+/* ::= R -+ ::= O */ - - static struct demangle_component * -+d_ref_qualifier (struct d_info *di, struct demangle_component *sub) -+{ -+ struct demangle_component *ret = sub; -+ char peek; -+ -+ peek = d_peek_char (di); -+ if (peek == 'R' || peek == 'O') -+ { -+ enum demangle_component_type t; -+ if (peek == 'R') -+ { -+ t = DEMANGLE_COMPONENT_REFERENCE_THIS; -+ di->expansion += sizeof "&"; -+ } -+ else -+ { -+ t = DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS; -+ di->expansion += sizeof "&&"; -+ } -+ d_advance (di, 1); -+ -+ ret = d_make_comp (di, t, ret, NULL); -+ } -+ -+ return ret; -+} -+ -+/* ::= F [Y] [] E */ -+ -+static struct demangle_component * - d_function_type (struct d_info *di) - { - struct demangle_component *ret; -@@ -2490,6 +2561,8 @@ - d_advance (di, 1); - } - ret = d_bare_function_type (di, 1); -+ ret = d_ref_qualifier (di, ret); -+ - if (! d_check_char (di, 'E')) - return NULL; - return ret; -@@ -2512,6 +2585,10 @@ - char peek = d_peek_char (di); - if (peek == '\0' || peek == 'E' || peek == '.') - break; -+ if ((peek == 'R' || peek == 'O') -+ && d_peek_next_char (di) == 'E') -+ /* Function ref-qualifier, not a ref prefix for a parameter type. */ -+ break; - type = cplus_demangle_type (di); - if (type == NULL) - return NULL; -@@ -2692,6 +2769,18 @@ - if (*pmem == NULL) - return NULL; - -+ if (pmem != &mem -+ && ((*pmem)->type == DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS -+ || (*pmem)->type == DEMANGLE_COMPONENT_REFERENCE_THIS)) -+ { -+ /* Move the ref-qualifier outside the cv-qualifiers so that -+ they are printed in the right order. */ -+ struct demangle_component *fn = d_left (*pmem); -+ d_left (*pmem) = mem; -+ mem = *pmem; -+ *pmem = fn; -+ } -+ - if (pmem != &mem && (*pmem)->type != DEMANGLE_COMPONENT_FUNCTION_TYPE) - { - if (! d_add_substitution (di, mem)) -@@ -3923,7 +4012,9 @@ - - if (typed_name->type != DEMANGLE_COMPONENT_RESTRICT_THIS - && typed_name->type != DEMANGLE_COMPONENT_VOLATILE_THIS -- && typed_name->type != DEMANGLE_COMPONENT_CONST_THIS) -+ && typed_name->type != DEMANGLE_COMPONENT_CONST_THIS -+ && typed_name->type != DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS -+ && typed_name->type != DEMANGLE_COMPONENT_REFERENCE_THIS) - break; - - typed_name = d_left (typed_name); -@@ -3957,7 +4048,10 @@ - local_name = local_name->u.s_unary_num.sub; - while (local_name->type == DEMANGLE_COMPONENT_RESTRICT_THIS - || local_name->type == DEMANGLE_COMPONENT_VOLATILE_THIS -- || local_name->type == DEMANGLE_COMPONENT_CONST_THIS) -+ || local_name->type == DEMANGLE_COMPONENT_CONST_THIS -+ || local_name->type == DEMANGLE_COMPONENT_REFERENCE_THIS -+ || (local_name->type -+ == DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS)) - { - if (i >= sizeof adpm / sizeof adpm[0]) - { -@@ -4234,6 +4328,8 @@ - case DEMANGLE_COMPONENT_RESTRICT_THIS: - case DEMANGLE_COMPONENT_VOLATILE_THIS: - case DEMANGLE_COMPONENT_CONST_THIS: -+ case DEMANGLE_COMPONENT_REFERENCE_THIS: -+ case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS: - case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL: - case DEMANGLE_COMPONENT_POINTER: - case DEMANGLE_COMPONENT_COMPLEX: -@@ -4906,7 +5002,10 @@ - || (! suffix - && (mods->mod->type == DEMANGLE_COMPONENT_RESTRICT_THIS - || mods->mod->type == DEMANGLE_COMPONENT_VOLATILE_THIS -- || mods->mod->type == DEMANGLE_COMPONENT_CONST_THIS))) -+ || mods->mod->type == DEMANGLE_COMPONENT_CONST_THIS -+ || mods->mod->type == DEMANGLE_COMPONENT_REFERENCE_THIS -+ || (mods->mod->type -+ == DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS)))) - { - d_print_mod_list (dpi, options, mods->next, suffix); - return; -@@ -4961,7 +5060,9 @@ - - while (dc->type == DEMANGLE_COMPONENT_RESTRICT_THIS - || dc->type == DEMANGLE_COMPONENT_VOLATILE_THIS -- || dc->type == DEMANGLE_COMPONENT_CONST_THIS) -+ || dc->type == DEMANGLE_COMPONENT_CONST_THIS -+ || dc->type == DEMANGLE_COMPONENT_REFERENCE_THIS -+ || dc->type == DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS) - dc = d_left (dc); - - d_print_comp (dpi, options, dc); -@@ -5006,9 +5107,14 @@ - if ((options & DMGL_JAVA) == 0) - d_append_char (dpi, '*'); - return; -+ case DEMANGLE_COMPONENT_REFERENCE_THIS: -+ /* For the ref-qualifier, put a space before the &. */ -+ d_append_char (dpi, ' '); - case DEMANGLE_COMPONENT_REFERENCE: - d_append_char (dpi, '&'); - return; -+ case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS: -+ d_append_char (dpi, ' '); - case DEMANGLE_COMPONENT_RVALUE_REFERENCE: - d_append_string (dpi, "&&"); - return; -@@ -5080,6 +5186,8 @@ - case DEMANGLE_COMPONENT_RESTRICT_THIS: - case DEMANGLE_COMPONENT_VOLATILE_THIS: - case DEMANGLE_COMPONENT_CONST_THIS: -+ case DEMANGLE_COMPONENT_REFERENCE_THIS: -+ case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS: - break; - default: - break; -@@ -5600,14 +5708,17 @@ - { - switch (dc->type) - { -+ /* These cannot appear on a constructor or destructor. */ -+ case DEMANGLE_COMPONENT_RESTRICT_THIS: -+ case DEMANGLE_COMPONENT_VOLATILE_THIS: -+ case DEMANGLE_COMPONENT_CONST_THIS: -+ case DEMANGLE_COMPONENT_REFERENCE_THIS: -+ case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS: - default: - dc = NULL; - break; - case DEMANGLE_COMPONENT_TYPED_NAME: - case DEMANGLE_COMPONENT_TEMPLATE: -- case DEMANGLE_COMPONENT_RESTRICT_THIS: -- case DEMANGLE_COMPONENT_VOLATILE_THIS: -- case DEMANGLE_COMPONENT_CONST_THIS: - dc = d_left (dc); - break; - case DEMANGLE_COMPONENT_QUAL_NAME: -Index: ChangeLog -=================================================================== ---- a/src/ChangeLog (.../tags/gcc_4_8_0_release) -+++ b/src/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,8 @@ -+2013-03-30 Matthias Klose -+ -+ * Makefile.def (target_modules): Don't install libffi. -+ * Makefile.in: Regenerate. -+ - 2013-03-22 Release Manager - - * GCC 4.8.0 released. -Index: libbacktrace/ChangeLog -=================================================================== ---- a/src/libbacktrace/ChangeLog (.../tags/gcc_4_8_0_release) -+++ b/src/libbacktrace/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,8 @@ -+2013-03-25 Ian Lance Taylor -+ -+ * alloc.c: #include . -+ * mmap.c: Likewise. -+ - 2013-03-22 Release Manager - - * GCC 4.8.0 released. -Index: libbacktrace/alloc.c -=================================================================== ---- a/src/libbacktrace/alloc.c (.../tags/gcc_4_8_0_release) -+++ b/src/libbacktrace/alloc.c (.../branches/gcc-4_8-branch) -@@ -34,6 +34,7 @@ - - #include - #include -+#include - - #include "backtrace.h" - #include "internal.h" -Index: libbacktrace/mmap.c -=================================================================== ---- a/src/libbacktrace/mmap.c (.../tags/gcc_4_8_0_release) -+++ b/src/libbacktrace/mmap.c (.../branches/gcc-4_8-branch) -@@ -36,6 +36,7 @@ - #include - #include - #include -+#include - #include - - #include "backtrace.h" -Index: libjava/classpath/Makefile.in -=================================================================== ---- a/src/libjava/classpath/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/Makefile.in (.../branches/gcc-4_8-branch) -@@ -35,25 +35,15 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = . --DIST_COMMON = README $(am__configure_deps) $(srcdir)/../../compile \ -- $(srcdir)/../../config.guess $(srcdir)/../../config.rpath \ -- $(srcdir)/../../config.sub $(srcdir)/../../install-sh \ -- $(srcdir)/../../ltmain.sh $(srcdir)/../../missing \ -- $(srcdir)/../../mkinstalldirs $(srcdir)/Makefile.am \ -- $(srcdir)/Makefile.in $(top_srcdir)/configure \ -+DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \ -+ $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ -+ $(top_srcdir)/configure $(am__configure_deps) \ -+ $(srcdir)/../../mkinstalldirs \ - $(top_srcdir)/gnu/classpath/Configuration.java.in \ - $(top_srcdir)/gnu/java/security/Configuration.java.in \ - $(top_srcdir)/resource/META-INF/services/java.util.prefs.PreferencesFactory.in \ - $(top_srcdir)/resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader.in \ -- $(top_srcdir)/resource/META-INF/services/javax.sound.sampled.spi.MixerProvider.in \ -- ../../ABOUT-NLS ../../COPYING ../../COPYING.LIB \ -- ../../ChangeLog ../../README ../../compile ../../config.guess \ -- ../../config.rpath ../../config.sub ../../depcomp \ -- ../../install-sh ../../ltmain.sh ../../missing \ -- ../../mkinstalldirs ../../ylwrap AUTHORS COPYING ChangeLog \ -- INSTALL NEWS TODO compile config.guess config.rpath config.sub \ -- depcomp install-sh ltcf-c.sh ltcf-cxx.sh ltcf-gcj.sh ltconfig \ -- ltmain.sh missing mkinstalldirs -+ $(top_srcdir)/resource/META-INF/services/javax.sound.sampled.spi.MixerProvider.in - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -91,7 +81,6 @@ - resource/META-INF/services/javax.sound.sampled.spi.MixerProvider - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = - MULTISRCTOP = - MULTIBUILDTOP = - MULTIDIRS = -@@ -108,46 +97,9 @@ - RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive - AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ -- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ -- distdir dist dist-all distcheck -+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) --distdir = $(PACKAGE)-$(VERSION) --top_distdir = $(distdir) --am__remove_distdir = \ -- { test ! -d "$(distdir)" \ -- || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ -- && rm -fr "$(distdir)"; }; } --am__relativize = \ -- dir0=`pwd`; \ -- sed_first='s,^\([^/]*\)/.*$$,\1,'; \ -- sed_rest='s,^[^/]*/*,,'; \ -- sed_last='s,^.*/\([^/]*\)$$,\1,'; \ -- sed_butlast='s,/*[^/]*$$,,'; \ -- while test -n "$$dir1"; do \ -- first=`echo "$$dir1" | sed -e "$$sed_first"`; \ -- if test "$$first" != "."; then \ -- if test "$$first" = ".."; then \ -- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ -- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ -- else \ -- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ -- if test "$$first2" = "$$first"; then \ -- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ -- else \ -- dir2="../$$dir2"; \ -- fi; \ -- dir0="$$dir0"/"$$first"; \ -- fi; \ -- fi; \ -- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ -- done; \ -- reldir="$$dir2" --DIST_ARCHIVES = $(distdir).tar.gz --GZIP_ENV = --best --distuninstallcheck_listfiles = find . -type f -print --distcleancheck_listfiles = find . -type f -print - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -582,185 +534,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- $(am__remove_distdir) -- test -d "$(distdir)" || mkdir "$(distdir)" -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done -- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- test -d "$(distdir)/$$subdir" \ -- || $(MKDIR_P) "$(distdir)/$$subdir" \ -- || exit 1; \ -- fi; \ -- done -- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ -- $(am__relativize); \ -- new_distdir=$$reldir; \ -- dir1=$$subdir; dir2="$(top_distdir)"; \ -- $(am__relativize); \ -- new_top_distdir=$$reldir; \ -- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ -- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ -- ($(am__cd) $$subdir && \ -- $(MAKE) $(AM_MAKEFLAGS) \ -- top_distdir="$$new_top_distdir" \ -- distdir="$$new_distdir" \ -- am__remove_distdir=: \ -- am__skip_length_check=: \ -- am__skip_mode_fix=: \ -- distdir) \ -- || exit 1; \ -- fi; \ -- done -- $(MAKE) $(AM_MAKEFLAGS) \ -- top_distdir="$(top_distdir)" distdir="$(distdir)" \ -- dist-hook -- -test -n "$(am__skip_mode_fix)" \ -- || find "$(distdir)" -type d ! -perm -755 \ -- -exec chmod u+rwx,go+rx {} \; -o \ -- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ -- ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ -- ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ -- || chmod -R a+r "$(distdir)" --dist-gzip: distdir -- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -- $(am__remove_distdir) -- --dist-bzip2: distdir -- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 -- $(am__remove_distdir) -- --dist-lzma: distdir -- tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma -- $(am__remove_distdir) -- --dist-xz: distdir -- tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz -- $(am__remove_distdir) -- --dist-tarZ: distdir -- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z -- $(am__remove_distdir) -- --dist-shar: distdir -- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz -- $(am__remove_distdir) -- --dist-zip: distdir -- -rm -f $(distdir).zip -- zip -rq $(distdir).zip $(distdir) -- $(am__remove_distdir) -- --dist dist-all: distdir -- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -- $(am__remove_distdir) -- --# This target untars the dist file and tries a VPATH configuration. Then --# it guarantees that the distribution is self-contained by making another --# tarfile. --distcheck: dist -- case '$(DIST_ARCHIVES)' in \ -- *.tar.gz*) \ -- GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ -- *.tar.bz2*) \ -- bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ -- *.tar.lzma*) \ -- lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ -- *.tar.xz*) \ -- xz -dc $(distdir).tar.xz | $(am__untar) ;;\ -- *.tar.Z*) \ -- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ -- *.shar.gz*) \ -- GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ -- *.zip*) \ -- unzip $(distdir).zip ;;\ -- esac -- chmod -R a-w $(distdir); chmod a+w $(distdir) -- mkdir $(distdir)/_build -- mkdir $(distdir)/_inst -- chmod a-w $(distdir) -- test -d $(distdir)/_build || exit 0; \ -- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ -- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ -- && am__cwd=`pwd` \ -- && $(am__cd) $(distdir)/_build \ -- && ../configure --srcdir=.. --prefix="$$dc_install_base" \ -- $(DISTCHECK_CONFIGURE_FLAGS) \ -- && $(MAKE) $(AM_MAKEFLAGS) \ -- && $(MAKE) $(AM_MAKEFLAGS) dvi \ -- && $(MAKE) $(AM_MAKEFLAGS) check \ -- && $(MAKE) $(AM_MAKEFLAGS) install \ -- && $(MAKE) $(AM_MAKEFLAGS) installcheck \ -- && $(MAKE) $(AM_MAKEFLAGS) uninstall \ -- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ -- distuninstallcheck \ -- && chmod -R a-w "$$dc_install_base" \ -- && ({ \ -- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ -- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ -- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ -- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ -- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ -- } || { rm -rf "$$dc_destdir"; exit 1; }) \ -- && rm -rf "$$dc_destdir" \ -- && $(MAKE) $(AM_MAKEFLAGS) dist \ -- && rm -rf $(DIST_ARCHIVES) \ -- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ -- && cd "$$am__cwd" \ -- || exit 1 -- $(am__remove_distdir) -- @(echo "$(distdir) archives ready for distribution: "; \ -- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ -- sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' --distuninstallcheck: -- @$(am__cd) '$(distuninstallcheck_dir)' \ -- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ -- || { echo "ERROR: files left after uninstall:" ; \ -- if test -n "$(DESTDIR)"; then \ -- echo " (check DESTDIR support)"; \ -- fi ; \ -- $(distuninstallcheck_listfiles) ; \ -- exit 1; } >&2 --distcleancheck: distclean -- @if test '$(srcdir)' = . ; then \ -- echo "ERROR: distcleancheck can only run from a VPATH build" ; \ -- exit 1 ; \ -- fi -- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ -- || { echo "ERROR: files left in build directory after distclean:" ; \ -- $(distcleancheck_listfiles) ; \ -- exit 1; } >&2 - check-am: all-am - check: check-recursive - all-am: Makefile all-multi -@@ -869,20 +642,17 @@ - .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am all-multi am--refresh check check-am clean \ - clean-generic clean-libtool clean-multi ctags ctags-recursive \ -- dist dist-all dist-bzip2 dist-gzip dist-hook dist-lzma \ -- dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ -- distclean-generic distclean-libtool distclean-multi \ -- distclean-tags distcleancheck distdir distuninstallcheck dvi \ -- dvi-am html html-am info info-am install install-am \ -- install-data install-data-am install-dvi install-dvi-am \ -- install-exec install-exec-am install-html install-html-am \ -- install-info install-info-am install-man install-multi \ -- install-pdf install-pdf-am install-ps install-ps-am \ -- install-strip installcheck installcheck-am installdirs \ -- installdirs-am maintainer-clean maintainer-clean-generic \ -- maintainer-clean-multi mostlyclean mostlyclean-generic \ -- mostlyclean-libtool mostlyclean-multi pdf pdf-am ps ps-am tags \ -- tags-recursive uninstall uninstall-am -+ distclean distclean-generic distclean-libtool distclean-multi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ -+ install-dvi-am install-exec install-exec-am install-html \ -+ install-html-am install-info install-info-am install-man \ -+ install-multi install-pdf install-pdf-am install-ps \ -+ install-ps-am install-strip installcheck installcheck-am \ -+ installdirs installdirs-am maintainer-clean \ -+ maintainer-clean-generic maintainer-clean-multi mostlyclean \ -+ mostlyclean-generic mostlyclean-libtool mostlyclean-multi pdf \ -+ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am - - - native: lib -Index: libjava/classpath/scripts/Makefile.in -=================================================================== ---- a/src/libjava/classpath/scripts/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/scripts/Makefile.in (.../branches/gcc-4_8-branch) -@@ -35,8 +35,8 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = scripts --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ -- $(srcdir)/check_jni_methods.sh.in $(srcdir)/classpath.spec.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ -+ $(srcdir)/classpath.spec.in $(srcdir)/check_jni_methods.sh.in - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -68,8 +68,6 @@ - CONFIG_CLEAN_FILES = classpath.spec check_jni_methods.sh - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -331,37 +329,6 @@ - ctags: CTAGS - CTAGS: - -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile -@@ -460,13 +427,13 @@ - .MAKE: install-am install-strip - - .PHONY: all all-am check check-am clean clean-generic clean-libtool \ -- distclean distclean-generic distclean-libtool distdir dvi \ -- dvi-am html html-am info info-am install install-am \ -- install-data install-data-am install-dvi install-dvi-am \ -- install-exec install-exec-am install-html install-html-am \ -- install-info install-info-am install-man install-pdf \ -- install-pdf-am install-ps install-ps-am install-strip \ -- installcheck installcheck-am installdirs maintainer-clean \ -+ distclean distclean-generic distclean-libtool dvi dvi-am html \ -+ html-am info info-am install install-am install-data \ -+ install-data-am install-dvi install-dvi-am install-exec \ -+ install-exec-am install-html install-html-am install-info \ -+ install-info-am install-man install-pdf install-pdf-am \ -+ install-ps install-ps-am install-strip installcheck \ -+ installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - -Index: libjava/classpath/resource/Makefile.in -=================================================================== ---- a/src/libjava/classpath/resource/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/resource/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = resource --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -68,7 +68,6 @@ - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = - am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; - am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ -@@ -92,7 +91,6 @@ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' - am__installdirs = "$(DESTDIR)$(loggingdir)" "$(DESTDIR)$(securitydir)" - DATA = $(logging_DATA) $(security_DATA) --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -393,37 +391,6 @@ - ctags: CTAGS - CTAGS: - -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(DATA) -@@ -525,17 +492,17 @@ - .MAKE: install-am install-strip - - .PHONY: all all-am check check-am clean clean-generic clean-libtool \ -- distclean distclean-generic distclean-libtool distdir dvi \ -- dvi-am html html-am info info-am install install-am \ -- install-data install-data-am install-dvi install-dvi-am \ -- install-exec install-exec-am install-html install-html-am \ -- install-info install-info-am install-loggingDATA install-man \ -- install-pdf install-pdf-am install-ps install-ps-am \ -- install-securityDATA install-strip installcheck \ -- installcheck-am installdirs maintainer-clean \ -- maintainer-clean-generic mostlyclean mostlyclean-generic \ -- mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ -- uninstall-loggingDATA uninstall-securityDATA -+ distclean distclean-generic distclean-libtool dvi dvi-am html \ -+ html-am info info-am install install-am install-data \ -+ install-data-am install-dvi install-dvi-am install-exec \ -+ install-exec-am install-html install-html-am install-info \ -+ install-info-am install-loggingDATA install-man install-pdf \ -+ install-pdf-am install-ps install-ps-am install-securityDATA \ -+ install-strip installcheck installcheck-am installdirs \ -+ maintainer-clean maintainer-clean-generic mostlyclean \ -+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ -+ uninstall uninstall-am uninstall-loggingDATA \ -+ uninstall-securityDATA - - - # Tell versions [3.59,3.63) of GNU make to not export all variables. -Index: libjava/classpath/tools/Makefile.in -=================================================================== ---- a/src/libjava/classpath/tools/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/tools/Makefile.in (.../branches/gcc-4_8-branch) -@@ -44,13 +44,13 @@ - @CREATE_WRAPPERS_TRUE@@INSTALL_BINARIES_FALSE@ $(am__EXEEXT_2) - @CREATE_GJDOC_TRUE@@CREATE_WRAPPERS_FALSE@am__append_2 = gjdoc - subdir = tools --DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ -- $(srcdir)/gappletviewer.in $(srcdir)/gjar.in \ -- $(srcdir)/gjarsigner.in $(srcdir)/gjavah.in $(srcdir)/gjdoc.in \ -- $(srcdir)/gkeytool.in $(srcdir)/gnative2ascii.in \ -- $(srcdir)/gorbd.in $(srcdir)/grmic.in $(srcdir)/grmid.in \ -- $(srcdir)/grmiregistry.in $(srcdir)/gserialver.in \ -- $(srcdir)/gtnameserv.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ -+ $(srcdir)/gappletviewer.in $(srcdir)/gjarsigner.in \ -+ $(srcdir)/gkeytool.in $(srcdir)/gjar.in \ -+ $(srcdir)/gnative2ascii.in $(srcdir)/gserialver.in \ -+ $(srcdir)/grmiregistry.in $(srcdir)/gtnameserv.in \ -+ $(srcdir)/gorbd.in $(srcdir)/grmid.in $(srcdir)/grmic.in \ -+ $(srcdir)/gjavah.in $(srcdir)/gjdoc.in - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -95,7 +95,6 @@ - @CREATE_WRAPPERS_TRUE@ $(am__EXEEXT_1) - am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" - PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) --am__gappletviewer_SOURCES_DIST = toolwrapper.c - @CREATE_WRAPPERS_TRUE@am_gappletviewer_OBJECTS = \ - @CREATE_WRAPPERS_TRUE@ gappletviewer-toolwrapper.$(OBJEXT) - gappletviewer_OBJECTS = $(am_gappletviewer_OBJECTS) -@@ -103,14 +102,12 @@ - gappletviewer_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(gappletviewer_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ --am__gjar_SOURCES_DIST = toolwrapper.c - @CREATE_WRAPPERS_TRUE@am_gjar_OBJECTS = gjar-toolwrapper.$(OBJEXT) - gjar_OBJECTS = $(am_gjar_OBJECTS) - gjar_LDADD = $(LDADD) - gjar_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(gjar_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ --am__gjarsigner_SOURCES_DIST = toolwrapper.c - @CREATE_WRAPPERS_TRUE@am_gjarsigner_OBJECTS = \ - @CREATE_WRAPPERS_TRUE@ gjarsigner-toolwrapper.$(OBJEXT) - gjarsigner_OBJECTS = $(am_gjarsigner_OBJECTS) -@@ -118,7 +115,6 @@ - gjarsigner_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(gjarsigner_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ --am__gjavah_SOURCES_DIST = toolwrapper.c - @CREATE_WRAPPERS_TRUE@am_gjavah_OBJECTS = \ - @CREATE_WRAPPERS_TRUE@ gjavah-toolwrapper.$(OBJEXT) - gjavah_OBJECTS = $(am_gjavah_OBJECTS) -@@ -126,14 +122,12 @@ - gjavah_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(gjavah_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ --am__gjdoc_SOURCES_DIST = toolwrapper.c - @CREATE_WRAPPERS_TRUE@am_gjdoc_OBJECTS = gjdoc-toolwrapper.$(OBJEXT) - gjdoc_OBJECTS = $(am_gjdoc_OBJECTS) - gjdoc_LDADD = $(LDADD) - gjdoc_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(gjdoc_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ --am__gkeytool_SOURCES_DIST = toolwrapper.c - @CREATE_WRAPPERS_TRUE@am_gkeytool_OBJECTS = \ - @CREATE_WRAPPERS_TRUE@ gkeytool-toolwrapper.$(OBJEXT) - gkeytool_OBJECTS = $(am_gkeytool_OBJECTS) -@@ -141,7 +135,6 @@ - gkeytool_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(gkeytool_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ --am__gnative2ascii_SOURCES_DIST = toolwrapper.c - @CREATE_WRAPPERS_TRUE@am_gnative2ascii_OBJECTS = \ - @CREATE_WRAPPERS_TRUE@ gnative2ascii-toolwrapper.$(OBJEXT) - gnative2ascii_OBJECTS = $(am_gnative2ascii_OBJECTS) -@@ -149,28 +142,24 @@ - gnative2ascii_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(gnative2ascii_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ --am__gorbd_SOURCES_DIST = toolwrapper.c - @CREATE_WRAPPERS_TRUE@am_gorbd_OBJECTS = gorbd-toolwrapper.$(OBJEXT) - gorbd_OBJECTS = $(am_gorbd_OBJECTS) - gorbd_LDADD = $(LDADD) - gorbd_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(gorbd_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ --am__grmic_SOURCES_DIST = toolwrapper.c - @CREATE_WRAPPERS_TRUE@am_grmic_OBJECTS = grmic-toolwrapper.$(OBJEXT) - grmic_OBJECTS = $(am_grmic_OBJECTS) - grmic_LDADD = $(LDADD) - grmic_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(grmic_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ --am__grmid_SOURCES_DIST = toolwrapper.c - @CREATE_WRAPPERS_TRUE@am_grmid_OBJECTS = grmid-toolwrapper.$(OBJEXT) - grmid_OBJECTS = $(am_grmid_OBJECTS) - grmid_LDADD = $(LDADD) - grmid_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(grmid_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ --am__grmiregistry_SOURCES_DIST = toolwrapper.c - @CREATE_WRAPPERS_TRUE@am_grmiregistry_OBJECTS = \ - @CREATE_WRAPPERS_TRUE@ grmiregistry-toolwrapper.$(OBJEXT) - grmiregistry_OBJECTS = $(am_grmiregistry_OBJECTS) -@@ -178,7 +167,6 @@ - grmiregistry_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(grmiregistry_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ --am__gserialver_SOURCES_DIST = toolwrapper.c - @CREATE_WRAPPERS_TRUE@am_gserialver_OBJECTS = \ - @CREATE_WRAPPERS_TRUE@ gserialver-toolwrapper.$(OBJEXT) - gserialver_OBJECTS = $(am_gserialver_OBJECTS) -@@ -186,7 +174,6 @@ - gserialver_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(gserialver_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ --am__gtnameserv_SOURCES_DIST = toolwrapper.c - @CREATE_WRAPPERS_TRUE@am_gtnameserv_OBJECTS = \ - @CREATE_WRAPPERS_TRUE@ gtnameserv-toolwrapper.$(OBJEXT) - gtnameserv_OBJECTS = $(am_gtnameserv_OBJECTS) -@@ -234,17 +221,9 @@ - $(gkeytool_SOURCES) $(gnative2ascii_SOURCES) $(gorbd_SOURCES) \ - $(grmic_SOURCES) $(grmid_SOURCES) $(grmiregistry_SOURCES) \ - $(gserialver_SOURCES) $(gtnameserv_SOURCES) --DIST_SOURCES = $(am__gappletviewer_SOURCES_DIST) \ -- $(am__gjar_SOURCES_DIST) $(am__gjarsigner_SOURCES_DIST) \ -- $(am__gjavah_SOURCES_DIST) $(am__gjdoc_SOURCES_DIST) \ -- $(am__gkeytool_SOURCES_DIST) $(am__gnative2ascii_SOURCES_DIST) \ -- $(am__gorbd_SOURCES_DIST) $(am__grmic_SOURCES_DIST) \ -- $(am__grmid_SOURCES_DIST) $(am__grmiregistry_SOURCES_DIST) \ -- $(am__gserialver_SOURCES_DIST) $(am__gtnameserv_SOURCES_DIST) - DATA = $(noinst_DATA) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -1199,40 +1178,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done -- $(MAKE) $(AM_MAKEFLAGS) \ -- top_distdir="$(top_distdir)" distdir="$(distdir)" \ -- dist-hook - check-am: all-am - check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am -@@ -1343,9 +1288,9 @@ - - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-libtool clean-local clean-noinstPROGRAMS \ -- ctags dist-hook distclean distclean-compile distclean-generic \ -- distclean-libtool distclean-tags distdir dvi dvi-am html \ -- html-am info info-am install install-am install-binPROGRAMS \ -+ ctags distclean distclean-compile distclean-generic \ -+ distclean-libtool distclean-tags dvi dvi-am html html-am info \ -+ info-am install install-am install-binPROGRAMS \ - install-binSCRIPTS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ -Index: libjava/classpath/doc/Makefile.in -=================================================================== ---- a/src/libjava/classpath/doc/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/doc/Makefile.in (.../branches/gcc-4_8-branch) -@@ -35,7 +35,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = doc --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in texinfo.tex -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -67,7 +67,6 @@ - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = - INFO_DEPS = cp-tools.info - am__TEXINFO_TEX_DIR = $(srcdir)/../../gcc/doc/include - DVIS = cp-tools.dvi -@@ -115,37 +114,10 @@ - RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive - AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ -- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ -- distdir -+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS - ETAGS = etags - CTAGS = ctags - DIST_SUBDIRS = $(SUBDIRS) --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) --am__relativize = \ -- dir0=`pwd`; \ -- sed_first='s,^\([^/]*\)/.*$$,\1,'; \ -- sed_rest='s,^[^/]*/*,,'; \ -- sed_last='s,^.*/\([^/]*\)$$,\1,'; \ -- sed_butlast='s,/*[^/]*$$,,'; \ -- while test -n "$$dir1"; do \ -- first=`echo "$$dir1" | sed -e "$$sed_first"`; \ -- if test "$$first" != "."; then \ -- if test "$$first" = ".."; then \ -- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ -- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ -- else \ -- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ -- if test "$$first2" = "$$first"; then \ -- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ -- else \ -- dir2="../$$dir2"; \ -- fi; \ -- dir0="$$dir0"/"$$first"; \ -- fi; \ -- fi; \ -- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ -- done; \ -- reldir="$$dir2" - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -756,81 +728,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @list='$(MANS)'; if test -n "$$list"; then \ -- list=`for p in $$list; do \ -- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ -- if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ -- if test -n "$$list" && \ -- grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ -- echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ -- grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ -- echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ -- echo " typically \`make maintainer-clean' will remove them" >&2; \ -- exit 1; \ -- else :; fi; \ -- else :; fi -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done -- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- test -d "$(distdir)/$$subdir" \ -- || $(MKDIR_P) "$(distdir)/$$subdir" \ -- || exit 1; \ -- fi; \ -- done -- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ -- $(am__relativize); \ -- new_distdir=$$reldir; \ -- dir1=$$subdir; dir2="$(top_distdir)"; \ -- $(am__relativize); \ -- new_top_distdir=$$reldir; \ -- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ -- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ -- ($(am__cd) $$subdir && \ -- $(MAKE) $(AM_MAKEFLAGS) \ -- top_distdir="$$new_top_distdir" \ -- distdir="$$new_distdir" \ -- am__remove_distdir=: \ -- am__skip_length_check=: \ -- am__skip_mode_fix=: \ -- distdir) \ -- || exit 1; \ -- fi; \ -- done -- $(MAKE) $(AM_MAKEFLAGS) \ -- top_distdir="$(top_distdir)" distdir="$(distdir)" \ -- dist-info - check-am: all-am - check: check-recursive - all-am: Makefile $(INFO_DEPS) $(MANS) all-local -@@ -1021,8 +918,8 @@ - all all-am all-local check check-am clean clean-aminfo \ - clean-generic clean-libtool clean-local ctags ctags-recursive \ - dist-info distclean distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-man1 install-pdf install-pdf-am install-ps \ -Index: libjava/classpath/doc/api/Makefile.in -=================================================================== ---- a/src/libjava/classpath/doc/api/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/doc/api/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = doc/api --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -68,9 +68,7 @@ - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = - DATA = $(noinst_DATA) --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -330,37 +328,6 @@ - ctags: CTAGS - CTAGS: - -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(DATA) -@@ -459,16 +426,16 @@ - .MAKE: install-am install-strip - - .PHONY: all all-am check check-am clean clean-generic clean-libtool \ -- clean-local distclean distclean-generic distclean-libtool \ -- distdir dvi dvi-am html html-am info info-am install \ -- install-am install-data install-data-am install-data-local \ -- install-dvi install-dvi-am install-exec install-exec-am \ -- install-html install-html-am install-info install-info-am \ -- install-man install-pdf install-pdf-am install-ps \ -- install-ps-am install-strip installcheck installcheck-am \ -- installdirs maintainer-clean maintainer-clean-generic \ -- mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ -- ps ps-am uninstall uninstall-am uninstall-local -+ clean-local distclean distclean-generic distclean-libtool dvi \ -+ dvi-am html html-am info info-am install install-am \ -+ install-data install-data-am install-data-local install-dvi \ -+ install-dvi-am install-exec install-exec-am install-html \ -+ install-html-am install-info install-info-am install-man \ -+ install-pdf install-pdf-am install-ps install-ps-am \ -+ install-strip installcheck installcheck-am installdirs \ -+ maintainer-clean maintainer-clean-generic mostlyclean \ -+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ -+ uninstall uninstall-am uninstall-local - - - @CREATE_API_DOCS_TRUE@install-data-local: -Index: libjava/classpath/external/Makefile.in -=================================================================== ---- a/src/libjava/classpath/external/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/external/Makefile.in (.../branches/gcc-4_8-branch) -@@ -35,7 +35,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = external --DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -67,7 +67,6 @@ - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = - RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ -@@ -78,37 +77,10 @@ - RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive - AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ -- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ -- distdir -+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS - ETAGS = etags - CTAGS = ctags - DIST_SUBDIRS = $(SUBDIRS) --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) --am__relativize = \ -- dir0=`pwd`; \ -- sed_first='s,^\([^/]*\)/.*$$,\1,'; \ -- sed_rest='s,^[^/]*/*,,'; \ -- sed_last='s,^.*/\([^/]*\)$$,\1,'; \ -- sed_butlast='s,/*[^/]*$$,,'; \ -- while test -n "$$dir1"; do \ -- first=`echo "$$dir1" | sed -e "$$sed_first"`; \ -- if test "$$first" != "."; then \ -- if test "$$first" = ".."; then \ -- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ -- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ -- else \ -- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ -- if test "$$first2" = "$$first"; then \ -- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ -- else \ -- dir2="../$$dir2"; \ -- fi; \ -- dir0="$$dir0"/"$$first"; \ -- fi; \ -- fi; \ -- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ -- done; \ -- reldir="$$dir2" - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -496,65 +468,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done -- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- test -d "$(distdir)/$$subdir" \ -- || $(MKDIR_P) "$(distdir)/$$subdir" \ -- || exit 1; \ -- fi; \ -- done -- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ -- $(am__relativize); \ -- new_distdir=$$reldir; \ -- dir1=$$subdir; dir2="$(top_distdir)"; \ -- $(am__relativize); \ -- new_top_distdir=$$reldir; \ -- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ -- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ -- ($(am__cd) $$subdir && \ -- $(MAKE) $(AM_MAKEFLAGS) \ -- top_distdir="$$new_top_distdir" \ -- distdir="$$new_distdir" \ -- am__remove_distdir=: \ -- am__skip_length_check=: \ -- am__skip_mode_fix=: \ -- distdir) \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-recursive - all-am: Makefile -@@ -657,13 +570,13 @@ - .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ -- distclean-libtool distclean-tags distdir dvi dvi-am html \ -- html-am info info-am install install-am install-data \ -- install-data-am install-dvi install-dvi-am install-exec \ -- install-exec-am install-html install-html-am install-info \ -- install-info-am install-man install-pdf install-pdf-am \ -- install-ps install-ps-am install-strip installcheck \ -- installcheck-am installdirs installdirs-am maintainer-clean \ -+ distclean-libtool distclean-tags dvi dvi-am html html-am info \ -+ info-am install install-am install-data install-data-am \ -+ install-dvi install-dvi-am install-exec install-exec-am \ -+ install-html install-html-am install-info install-info-am \ -+ install-man install-pdf install-pdf-am install-ps \ -+ install-ps-am install-strip installcheck installcheck-am \ -+ installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am -Index: libjava/classpath/external/jsr166/Makefile.in -=================================================================== ---- a/src/libjava/classpath/external/jsr166/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/external/jsr166/Makefile.in (.../branches/gcc-4_8-branch) -@@ -35,7 +35,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = external/jsr166 --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -67,8 +67,6 @@ - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -398,37 +396,6 @@ - ctags: CTAGS - CTAGS: - -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile -@@ -527,13 +494,13 @@ - .MAKE: install-am install-strip - - .PHONY: all all-am check check-am clean clean-generic clean-libtool \ -- distclean distclean-generic distclean-libtool distdir dvi \ -- dvi-am html html-am info info-am install install-am \ -- install-data install-data-am install-dvi install-dvi-am \ -- install-exec install-exec-am install-html install-html-am \ -- install-info install-info-am install-man install-pdf \ -- install-pdf-am install-ps install-ps-am install-strip \ -- installcheck installcheck-am installdirs maintainer-clean \ -+ distclean distclean-generic distclean-libtool dvi dvi-am html \ -+ html-am info info-am install install-am install-data \ -+ install-data-am install-dvi install-dvi-am install-exec \ -+ install-exec-am install-html install-html-am install-info \ -+ install-info-am install-man install-pdf install-pdf-am \ -+ install-ps install-ps-am install-strip installcheck \ -+ installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - -Index: libjava/classpath/external/sax/Makefile.in -=================================================================== ---- a/src/libjava/classpath/external/sax/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/external/sax/Makefile.in (.../branches/gcc-4_8-branch) -@@ -35,7 +35,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = external/sax --DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -67,8 +67,6 @@ - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -366,37 +364,6 @@ - ctags: CTAGS - CTAGS: - -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile -@@ -495,13 +462,13 @@ - .MAKE: install-am install-strip - - .PHONY: all all-am check check-am clean clean-generic clean-libtool \ -- distclean distclean-generic distclean-libtool distdir dvi \ -- dvi-am html html-am info info-am install install-am \ -- install-data install-data-am install-dvi install-dvi-am \ -- install-exec install-exec-am install-html install-html-am \ -- install-info install-info-am install-man install-pdf \ -- install-pdf-am install-ps install-ps-am install-strip \ -- installcheck installcheck-am installdirs maintainer-clean \ -+ distclean distclean-generic distclean-libtool dvi dvi-am html \ -+ html-am info info-am install install-am install-data \ -+ install-data-am install-dvi install-dvi-am install-exec \ -+ install-exec-am install-html install-html-am install-info \ -+ install-info-am install-man install-pdf install-pdf-am \ -+ install-ps install-ps-am install-strip installcheck \ -+ installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - -Index: libjava/classpath/external/w3c_dom/Makefile.in -=================================================================== ---- a/src/libjava/classpath/external/w3c_dom/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/external/w3c_dom/Makefile.in (.../branches/gcc-4_8-branch) -@@ -35,7 +35,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = external/w3c_dom --DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -67,8 +67,6 @@ - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -473,37 +471,6 @@ - ctags: CTAGS - CTAGS: - -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile -@@ -602,13 +569,13 @@ - .MAKE: install-am install-strip - - .PHONY: all all-am check check-am clean clean-generic clean-libtool \ -- distclean distclean-generic distclean-libtool distdir dvi \ -- dvi-am html html-am info info-am install install-am \ -- install-data install-data-am install-dvi install-dvi-am \ -- install-exec install-exec-am install-html install-html-am \ -- install-info install-info-am install-man install-pdf \ -- install-pdf-am install-ps install-ps-am install-strip \ -- installcheck installcheck-am installdirs maintainer-clean \ -+ distclean distclean-generic distclean-libtool dvi dvi-am html \ -+ html-am info info-am install install-am install-data \ -+ install-data-am install-dvi install-dvi-am install-exec \ -+ install-exec-am install-html install-html-am install-info \ -+ install-info-am install-man install-pdf install-pdf-am \ -+ install-ps install-ps-am install-strip installcheck \ -+ installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - -Index: libjava/classpath/external/relaxngDatatype/Makefile.in -=================================================================== ---- a/src/libjava/classpath/external/relaxngDatatype/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/external/relaxngDatatype/Makefile.in (.../branches/gcc-4_8-branch) -@@ -35,7 +35,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = external/relaxngDatatype --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -67,8 +67,6 @@ - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -338,37 +336,6 @@ - ctags: CTAGS - CTAGS: - -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile -@@ -467,13 +434,13 @@ - .MAKE: install-am install-strip - - .PHONY: all all-am check check-am clean clean-generic clean-libtool \ -- distclean distclean-generic distclean-libtool distdir dvi \ -- dvi-am html html-am info info-am install install-am \ -- install-data install-data-am install-dvi install-dvi-am \ -- install-exec install-exec-am install-html install-html-am \ -- install-info install-info-am install-man install-pdf \ -- install-pdf-am install-ps install-ps-am install-strip \ -- installcheck installcheck-am installdirs maintainer-clean \ -+ distclean distclean-generic distclean-libtool dvi dvi-am html \ -+ html-am info info-am install install-am install-data \ -+ install-data-am install-dvi install-dvi-am install-exec \ -+ install-exec-am install-html install-html-am install-info \ -+ install-info-am install-man install-pdf install-pdf-am \ -+ install-ps install-ps-am install-strip installcheck \ -+ installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - -Index: libjava/classpath/include/Makefile.in -=================================================================== ---- a/src/libjava/classpath/include/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/include/Makefile.in (.../branches/gcc-4_8-branch) -@@ -35,7 +35,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = include --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(srcdir)/config.h.in - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ -@@ -68,8 +68,6 @@ - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -501,37 +499,6 @@ - ctags: CTAGS - CTAGS: - -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - @CREATE_JNI_HEADERS_FALSE@all-local: -@@ -633,8 +600,8 @@ - - .PHONY: all all-am all-local check check-am clean clean-generic \ - clean-libtool distclean distclean-generic distclean-hdr \ -- distclean-libtool distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-libtool dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ -Index: libjava/classpath/native/jni/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/Makefile.in (.../branches/gcc-4_8-branch) -@@ -35,7 +35,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -67,7 +67,6 @@ - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = - RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ -@@ -78,36 +77,9 @@ - RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive - AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ -- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ -- distdir -+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) --am__relativize = \ -- dir0=`pwd`; \ -- sed_first='s,^\([^/]*\)/.*$$,\1,'; \ -- sed_rest='s,^[^/]*/*,,'; \ -- sed_last='s,^.*/\([^/]*\)$$,\1,'; \ -- sed_butlast='s,/*[^/]*$$,,'; \ -- while test -n "$$dir1"; do \ -- first=`echo "$$dir1" | sed -e "$$sed_first"`; \ -- if test "$$first" != "."; then \ -- if test "$$first" = ".."; then \ -- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ -- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ -- else \ -- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ -- if test "$$first2" = "$$first"; then \ -- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ -- else \ -- dir2="../$$dir2"; \ -- fi; \ -- dir0="$$dir0"/"$$first"; \ -- fi; \ -- fi; \ -- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ -- done; \ -- reldir="$$dir2" - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -510,65 +482,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done -- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- test -d "$(distdir)/$$subdir" \ -- || $(MKDIR_P) "$(distdir)/$$subdir" \ -- || exit 1; \ -- fi; \ -- done -- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ -- $(am__relativize); \ -- new_distdir=$$reldir; \ -- dir1=$$subdir; dir2="$(top_distdir)"; \ -- $(am__relativize); \ -- new_top_distdir=$$reldir; \ -- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ -- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ -- ($(am__cd) $$subdir && \ -- $(MAKE) $(AM_MAKEFLAGS) \ -- top_distdir="$$new_top_distdir" \ -- distdir="$$new_distdir" \ -- am__remove_distdir=: \ -- am__skip_length_check=: \ -- am__skip_mode_fix=: \ -- distdir) \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-recursive - all-am: Makefile all-local -@@ -671,16 +584,16 @@ - .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am all-local check check-am clean clean-generic \ - clean-libtool ctags ctags-recursive distclean \ -- distclean-generic distclean-libtool distclean-tags distdir dvi \ -- dvi-am html html-am info info-am install install-am \ -- install-data install-data-am install-dvi install-dvi-am \ -- install-exec install-exec-am install-html install-html-am \ -- install-info install-info-am install-man install-pdf \ -- install-pdf-am install-ps install-ps-am install-strip \ -- installcheck installcheck-am installdirs installdirs-am \ -- maintainer-clean maintainer-clean-generic mostlyclean \ -- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ -- tags tags-recursive uninstall uninstall-am -+ distclean-generic distclean-libtool distclean-tags dvi dvi-am \ -+ html html-am info info-am install install-am install-data \ -+ install-data-am install-dvi install-dvi-am install-exec \ -+ install-exec-am install-html install-html-am install-info \ -+ install-info-am install-man install-pdf install-pdf-am \ -+ install-ps install-ps-am install-strip installcheck \ -+ installcheck-am installdirs installdirs-am maintainer-clean \ -+ maintainer-clean-generic mostlyclean mostlyclean-generic \ -+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ -+ uninstall uninstall-am - - - all-local: -Index: libjava/classpath/native/jni/classpath/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/classpath/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/classpath/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/classpath --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -85,10 +85,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libclasspath_la_SOURCES) --DIST_SOURCES = $(libclasspath_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -445,37 +443,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -581,8 +548,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ -Index: libjava/classpath/native/jni/gstreamer-peer/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/gstreamer-peer/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/gstreamer-peer/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/gstreamer-peer --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -113,10 +113,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libgstreamerpeer_la_SOURCES) --DIST_SOURCES = $(libgstreamerpeer_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -514,37 +512,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -653,8 +620,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \ -Index: libjava/classpath/native/jni/midi-dssi/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/midi-dssi/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/midi-dssi/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/midi-dssi --DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -113,10 +113,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libgjsmdssi_la_SOURCES) --DIST_SOURCES = $(libgjsmdssi_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -496,37 +494,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -635,8 +602,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \ -Index: libjava/classpath/native/jni/gconf-peer/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/gconf-peer/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/gconf-peer/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/gconf-peer --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -111,10 +111,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libgconfpeer_la_SOURCES) --DIST_SOURCES = $(libgconfpeer_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -489,37 +487,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -628,8 +595,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \ -Index: libjava/classpath/native/jni/java-io/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/java-io/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/java-io/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/java-io --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -110,10 +110,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libjavaio_la_SOURCES) --DIST_SOURCES = $(libjavaio_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -496,37 +494,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -635,8 +602,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \ -Index: libjava/classpath/native/jni/native-lib/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/native-lib/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/native-lib/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/native-lib --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -85,10 +85,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libclasspathnative_la_SOURCES) --DIST_SOURCES = $(libclasspathnative_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -448,37 +446,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -584,8 +551,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ -Index: libjava/classpath/native/jni/java-util/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/java-util/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/java-util/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/java-util --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -107,10 +107,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libjavautil_la_SOURCES) --DIST_SOURCES = $(libjavautil_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -483,37 +481,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -622,8 +589,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \ -Index: libjava/classpath/native/jni/java-lang/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/java-lang/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/java-lang/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/java-lang --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -122,12 +122,8 @@ - SOURCES = $(libjavalang_la_SOURCES) \ - $(libjavalangmanagement_la_SOURCES) \ - $(libjavalangreflect_la_SOURCES) --DIST_SOURCES = $(libjavalang_la_SOURCES) \ -- $(libjavalangmanagement_la_SOURCES) \ -- $(libjavalangreflect_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -521,37 +517,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -660,8 +625,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \ -Index: libjava/classpath/native/jni/midi-alsa/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/midi-alsa/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/midi-alsa/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/midi-alsa --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -113,10 +113,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libgjsmalsa_la_SOURCES) --DIST_SOURCES = $(libgjsmalsa_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -496,37 +494,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -635,8 +602,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \ -Index: libjava/classpath/native/jni/java-nio/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/java-nio/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/java-nio/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/java-nio --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -118,10 +118,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libjavanio_la_SOURCES) --DIST_SOURCES = $(libjavanio_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -519,37 +517,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -658,8 +625,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \ -Index: libjava/classpath/native/jni/java-net/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/java-net/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/java-net/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/java-net --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -95,10 +95,6 @@ - $(top_builddir)/native/jni/classpath/jcl.lo \ - $(top_builddir)/native/jni/native-lib/libclasspathnative.la \ - $(am__DEPENDENCIES_1) --am__libjavanet_la_SOURCES_DIST = javanet.c javanet.h \ -- java_net_VMInetAddress.c java_net_VMNetworkInterface.c \ -- java_net_VMURLConnection.c gnu_java_net_VMPlainSocketImpl.c \ -- gnu_java_net_local_LocalSocketImpl.c local.c local.h - @ENABLE_LOCAL_SOCKETS_FALSE@am__objects_1 = gnu_java_net_local_LocalSocketImpl.lo - @ENABLE_LOCAL_SOCKETS_TRUE@am__objects_1 = gnu_java_net_local_LocalSocketImpl.lo \ - @ENABLE_LOCAL_SOCKETS_TRUE@ local.lo -@@ -120,10 +116,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libjavanet_la_SOURCES) --DIST_SOURCES = $(am__libjavanet_la_SOURCES_DIST) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -518,37 +512,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -657,8 +620,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \ -Index: libjava/classpath/native/jni/java-math/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/java-math/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/java-math/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/java-math --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -111,10 +111,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libjavamath_la_SOURCES) --DIST_SOURCES = $(libjavamath_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -487,37 +485,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -626,8 +593,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \ -Index: libjava/classpath/native/jni/xmlj/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/xmlj/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/xmlj/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/xmlj --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -109,10 +109,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libxmlj_la_SOURCES) --DIST_SOURCES = $(libxmlj_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -511,37 +509,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -650,8 +617,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \ -Index: libjava/classpath/native/jni/qt-peer/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/qt-peer/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/qt-peer/Makefile.in (.../branches/gcc-4_8-branch) -@@ -39,7 +39,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/qt-peer --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -115,10 +115,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libqtpeer_la_SOURCES) $(nodist_libqtpeer_la_SOURCES) --DIST_SOURCES = $(libqtpeer_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -577,37 +575,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am -@@ -717,8 +684,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ -Index: libjava/classpath/native/jni/gtk-peer/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jni/gtk-peer/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jni/gtk-peer/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jni/gtk-peer --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -149,10 +149,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libgtkpeer_la_SOURCES) --DIST_SOURCES = $(libgtkpeer_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -620,37 +618,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -759,8 +726,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \ -Index: libjava/classpath/native/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/Makefile.in (.../branches/gcc-4_8-branch) -@@ -35,7 +35,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -67,7 +67,6 @@ - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = - RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ -@@ -78,36 +77,9 @@ - RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive - AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ -- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ -- distdir -+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) --am__relativize = \ -- dir0=`pwd`; \ -- sed_first='s,^\([^/]*\)/.*$$,\1,'; \ -- sed_rest='s,^[^/]*/*,,'; \ -- sed_last='s,^.*/\([^/]*\)$$,\1,'; \ -- sed_butlast='s,/*[^/]*$$,,'; \ -- while test -n "$$dir1"; do \ -- first=`echo "$$dir1" | sed -e "$$sed_first"`; \ -- if test "$$first" != "."; then \ -- if test "$$first" = ".."; then \ -- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ -- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ -- else \ -- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ -- if test "$$first2" = "$$first"; then \ -- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ -- else \ -- dir2="../$$dir2"; \ -- fi; \ -- dir0="$$dir0"/"$$first"; \ -- fi; \ -- fi; \ -- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ -- done; \ -- reldir="$$dir2" - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -498,65 +470,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done -- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- test -d "$(distdir)/$$subdir" \ -- || $(MKDIR_P) "$(distdir)/$$subdir" \ -- || exit 1; \ -- fi; \ -- done -- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ -- $(am__relativize); \ -- new_distdir=$$reldir; \ -- dir1=$$subdir; dir2="$(top_distdir)"; \ -- $(am__relativize); \ -- new_top_distdir=$$reldir; \ -- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ -- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ -- ($(am__cd) $$subdir && \ -- $(MAKE) $(AM_MAKEFLAGS) \ -- top_distdir="$$new_top_distdir" \ -- distdir="$$new_distdir" \ -- am__remove_distdir=: \ -- am__skip_length_check=: \ -- am__skip_mode_fix=: \ -- distdir) \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-recursive - all-am: Makefile -@@ -659,13 +572,13 @@ - .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ -- distclean-libtool distclean-tags distdir dvi dvi-am html \ -- html-am info info-am install install-am install-data \ -- install-data-am install-dvi install-dvi-am install-exec \ -- install-exec-am install-html install-html-am install-info \ -- install-info-am install-man install-pdf install-pdf-am \ -- install-ps install-ps-am install-strip installcheck \ -- installcheck-am installdirs installdirs-am maintainer-clean \ -+ distclean-libtool distclean-tags dvi dvi-am html html-am info \ -+ info-am install install-am install-data install-data-am \ -+ install-dvi install-dvi-am install-exec install-exec-am \ -+ install-html install-html-am install-info install-info-am \ -+ install-man install-pdf install-pdf-am install-ps \ -+ install-ps-am install-strip installcheck installcheck-am \ -+ installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am -Index: libjava/classpath/native/jawt/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/jawt/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/jawt/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/jawt --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -111,10 +111,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libjawt_la_SOURCES) --DIST_SOURCES = $(libjawt_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -492,37 +490,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -631,8 +598,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \ -Index: libjava/classpath/native/fdlibm/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/fdlibm/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/fdlibm/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/fdlibm --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -94,10 +94,8 @@ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libfdlibm_la_SOURCES) --DIST_SOURCES = $(libfdlibm_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -553,37 +551,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -689,8 +656,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ -Index: libjava/classpath/native/plugin/Makefile.in -=================================================================== ---- a/src/libjava/classpath/native/plugin/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/native/plugin/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,7 +36,7 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = native/plugin --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -111,10 +111,8 @@ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ - SOURCES = $(libgcjwebplugin_la_SOURCES) --DIST_SOURCES = $(libgcjwebplugin_la_SOURCES) - ETAGS = etags - CTAGS = ctags --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -497,37 +495,6 @@ - - distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done - check-am: all-am - check: check-am - all-am: Makefile $(LTLIBRARIES) -@@ -636,8 +603,8 @@ - .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ -- distclean-tags distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am install-dvi \ -+ distclean-tags dvi dvi-am html html-am info info-am install \ -+ install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-nativeexeclibLTLIBRARIES install-pdf install-pdf-am \ -Index: libjava/classpath/lib/Makefile.in -=================================================================== ---- a/src/libjava/classpath/lib/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/lib/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,9 +36,9 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = lib --DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ -- $(srcdir)/copy-vmresources.sh.in $(srcdir)/gen-classlist.sh.in \ -- $(srcdir)/mkcollections.pl.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ -+ $(srcdir)/mkcollections.pl.in $(srcdir)/gen-classlist.sh.in \ -+ $(srcdir)/copy-vmresources.sh.in - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -71,9 +71,7 @@ - copy-vmresources.sh - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = - DATA = $(noinst_DATA) --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -356,40 +354,6 @@ - ctags: CTAGS - CTAGS: - -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done -- $(MAKE) $(AM_MAKEFLAGS) \ -- top_distdir="$(top_distdir)" distdir="$(distdir)" \ -- dist-hook - check-am: all-am - check: check-am - all-am: Makefile $(DATA) -@@ -492,17 +456,16 @@ - .MAKE: install-am install-strip - - .PHONY: all all-am check check-am clean clean-generic clean-libtool \ -- clean-local dist-hook distclean distclean-generic \ -- distclean-libtool distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am \ -- install-data-local install-dvi install-dvi-am install-exec \ -- install-exec-am install-html install-html-am install-info \ -- install-info-am install-man install-pdf install-pdf-am \ -- install-ps install-ps-am install-strip installcheck \ -- installcheck-am installdirs maintainer-clean \ -- maintainer-clean-generic mostlyclean mostlyclean-generic \ -- mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ -- uninstall-local -+ clean-local distclean distclean-generic distclean-libtool dvi \ -+ dvi-am html html-am info info-am install install-am \ -+ install-data install-data-am install-data-local install-dvi \ -+ install-dvi-am install-exec install-exec-am install-html \ -+ install-html-am install-info install-info-am install-man \ -+ install-pdf install-pdf-am install-ps install-ps-am \ -+ install-strip installcheck installcheck-am installdirs \ -+ maintainer-clean maintainer-clean-generic mostlyclean \ -+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ -+ uninstall uninstall-am uninstall-local - - - sinclude $(JAVA_DEPEND) -Index: libjava/classpath/ChangeLog.gcj -=================================================================== ---- a/src/libjava/classpath/ChangeLog.gcj (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/ChangeLog.gcj (.../branches/gcc-4_8-branch) -@@ -1,3 +1,41 @@ -+2013-03-22 Jakub Jelinek -+ -+ PR other/43620 -+ * Makefile.in: Regenerated. -+ * doc/Makefile.in: Regenerated. -+ * doc/api/Makefile.in: Regenerated. -+ * examples/Makefile.in: Regenerated. -+ * external/Makefile.in: Regenerated. -+ * external/jsr166/Makefile.in: Regenerated. -+ * external/relaxngDatatype/Makefile.in: Regenerated. -+ * external/sax/Makefile.in: Regenerated. -+ * external/w3c_dom/Makefile.in: Regenerated. -+ * include/Makefile.in: Regenerated. -+ * lib/Makefile.in: Regenerated. -+ * native/Makefile.in: Regenerated. -+ * native/fdlibm/Makefile.in: Regenerated. -+ * native/jawt/Makefile.in: Regenerated. -+ * native/jni/Makefile.in: Regenerated. -+ * native/jni/classpath/Makefile.in: Regenerated. -+ * native/jni/gconf-peer/Makefile.in: Regenerated. -+ * native/jni/gstreamer-peer/Makefile.in: Regenerated. -+ * native/jni/gtk-peer/Makefile.in: Regenerated. -+ * native/jni/java-io/Makefile.in: Regenerated. -+ * native/jni/java-lang/Makefile.in: Regenerated. -+ * native/jni/java-math/Makefile.in: Regenerated. -+ * native/jni/java-net/Makefile.in: Regenerated. -+ * native/jni/java-nio/Makefile.in: Regenerated. -+ * native/jni/java-util/Makefile.in: Regenerated. -+ * native/jni/midi-alsa/Makefile.in: Regenerated. -+ * native/jni/midi-dssi/Makefile.in: Regenerated. -+ * native/jni/native-lib/Makefile.in: Regenerated. -+ * native/jni/qt-peer/Makefile.in: Regenerated. -+ * native/jni/xmlj/Makefile.in: Regenerated. -+ * native/plugin/Makefile.in: Regenerated. -+ * resource/Makefile.in: Regenerated. -+ * scripts/Makefile.in: Regenerated. -+ * tools/Makefile.in: Regenerated. -+ - 2013-02-21 Jakub Jelinek - - PR bootstrap/56258 -Index: libjava/classpath/examples/Makefile.in -=================================================================== ---- a/src/libjava/classpath/examples/Makefile.in (.../tags/gcc_4_8_0_release) -+++ b/src/libjava/classpath/examples/Makefile.in (.../branches/gcc-4_8-branch) -@@ -36,8 +36,8 @@ - host_triplet = @host@ - target_triplet = @target@ - subdir = examples --DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ -- $(srcdir)/Makefile.java2d.in $(srcdir)/Makefile.jawt.in -+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ -+ $(srcdir)/Makefile.jawt.in $(srcdir)/Makefile.java2d.in - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ - $(top_srcdir)/../../config/lead-dot.m4 \ -@@ -69,7 +69,6 @@ - CONFIG_CLEAN_FILES = Makefile.jawt Makefile.java2d - CONFIG_CLEAN_VPATH_FILES = - SOURCES = --DIST_SOURCES = - am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; - am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ -@@ -93,7 +92,6 @@ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' - am__installdirs = "$(DESTDIR)$(exampledir)" - DATA = $(example_DATA) --DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ - ANTLR = @ANTLR@ -@@ -419,40 +417,6 @@ - ctags: CTAGS - CTAGS: - -- --distdir: $(DISTFILES) -- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -- list='$(DISTFILES)'; \ -- dist_files=`for file in $$list; do echo $$file; done | \ -- sed -e "s|^$$srcdirstrip/||;t" \ -- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -- case $$dist_files in \ -- */*) $(MKDIR_P) `echo "$$dist_files" | \ -- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -- sort -u` ;; \ -- esac; \ -- for file in $$dist_files; do \ -- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -- if test -d $$d/$$file; then \ -- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -- if test -d "$(distdir)/$$file"; then \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -- fi; \ -- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -- else \ -- test -f "$(distdir)/$$file" \ -- || cp -p $$d/$$file "$(distdir)/$$file" \ -- || exit 1; \ -- fi; \ -- done -- $(MAKE) $(AM_MAKEFLAGS) \ -- top_distdir="$(top_distdir)" distdir="$(distdir)" \ -- dist-hook - check-am: all-am - check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am -@@ -557,17 +521,17 @@ - .MAKE: all check install install-am install-strip - - .PHONY: all all-am check check-am clean clean-generic clean-libtool \ -- clean-local dist-hook distclean distclean-generic \ -- distclean-libtool distdir dvi dvi-am html html-am info info-am \ -- install install-am install-data install-data-am \ -- install-data-local install-dvi install-dvi-am \ -- install-exampleDATA install-exec install-exec-am install-html \ -- install-html-am install-info install-info-am install-man \ -- install-pdf install-pdf-am install-ps install-ps-am \ -- install-strip installcheck installcheck-am installdirs \ -- maintainer-clean maintainer-clean-generic mostlyclean \ -- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ -- uninstall uninstall-am uninstall-exampleDATA uninstall-local -+ clean-local distclean distclean-generic distclean-libtool dvi \ -+ dvi-am html html-am info info-am install install-am \ -+ install-data install-data-am install-data-local install-dvi \ -+ install-dvi-am install-exampleDATA install-exec \ -+ install-exec-am install-html install-html-am install-info \ -+ install-info-am install-man install-pdf install-pdf-am \ -+ install-ps install-ps-am install-strip installcheck \ -+ installcheck-am installdirs maintainer-clean \ -+ maintainer-clean-generic mostlyclean mostlyclean-generic \ -+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ -+ uninstall-exampleDATA uninstall-local - - - # Make sure all sources and icons are also installed so users can use them. -Index: libgcc/ChangeLog -=================================================================== ---- a/src/libgcc/ChangeLog (.../tags/gcc_4_8_0_release) -+++ b/src/libgcc/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,35 @@ -+2013-04-11 Julian Brown -+ -+ * config/arm/linux-atomic.c (SUBWORD_SYNC_OP, SUBWORD_VAL_CAS) -+ (SUBWORD_TEST_AND_SET): Use signed char/short types instead of -+ unsigned char/unsigned short. -+ (__sync_val_compare_and_swap_{1,2}): Handle signed argument. -+ -+2013-04-06 John David Anglin -+ -+ PR other/55274 -+ * config/t-slibgcc-hpux (SHLIB_MAPFILES): Define. -+ -+2013-03-26 Robert Mason -+ -+ PR target/54805 -+ -+ Backport from mainline: -+ 2013-03-20 Robert Mason -+ -+ * config/vxlib-tls.c (__gthread_get_tsd_data,) -+ (__gthread_set_tsd_data, __gthread_enter_tsd_dtor_context,) -+ (__gthread_leave_tsd_dtor_context): Add prototypes. -+ (tls_delete_hook): Update. -+ -+2013-03-26 Walter Lee -+ -+ Backport from mainline: -+ 2013-03-26 Walter Lee -+ -+ * config/tilegx/t-crtstuff: Add -fno-asynchronous-unwind-tables -+ -mcmodel=large to CRTSTUFF_T_CFLAGS_S variable. -+ - 2013-03-22 Release Manager - - * GCC 4.8.0 released. -Index: libgcc/config/t-slibgcc-hpux -=================================================================== ---- a/src/libgcc/config/t-slibgcc-hpux (.../tags/gcc_4_8_0_release) -+++ b/src/libgcc/config/t-slibgcc-hpux (.../branches/gcc-4_8-branch) -@@ -5,3 +5,4 @@ - INSTALL_SHLIB = $(INSTALL_DATA) -m 555 - - SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk -+SHLIB_MAPFILES = libgcc-std.ver -Index: libgcc/config/tilegx/t-crtstuff -=================================================================== ---- a/src/libgcc/config/tilegx/t-crtstuff (.../tags/gcc_4_8_0_release) -+++ b/src/libgcc/config/tilegx/t-crtstuff (.../branches/gcc-4_8-branch) -@@ -2,3 +2,7 @@ - # because then __FRAME_END__ might not be the last thing in .eh_frame - # section. - CRTSTUFF_T_CFLAGS += -fno-asynchronous-unwind-tables -+CRTSTUFF_T_CFLAGS_S += -fno-asynchronous-unwind-tables -+ -+# Compile crtbeginS.o and crtendS.o with -mcmodel=large -+CRTSTUFF_T_CFLAGS_S += -mcmodel=large -Index: libgcc/config/vxlib-tls.c -=================================================================== ---- a/src/libgcc/config/vxlib-tls.c (.../tags/gcc_4_8_0_release) -+++ b/src/libgcc/config/vxlib-tls.c (.../branches/gcc-4_8-branch) -@@ -102,7 +102,15 @@ - extern void __gthread_enter_tls_dtor_context (void); - extern void __gthread_leave_tls_dtor_context (void); - -+#ifndef __RTP__ - -+extern void *__gthread_get_tsd_data (WIND_TCB *tcb); -+extern void __gthread_set_tsd_data (WIND_TCB *tcb, void *data); -+extern void __gthread_enter_tsd_dtor_context (WIND_TCB *tcb); -+extern void __gthread_leave_tsd_dtor_context (WIND_TCB *tcb); -+ -+#endif /* __RTP__ */ -+ - /* This is a global structure which records all of the active keys. - - A key is potentially valid (i.e. has been handed out by -@@ -185,7 +193,7 @@ - #ifdef __RTP__ - __gthread_leave_tls_dtor_context (); - #else -- __gthread_leave_tsd_dtor_context (); -+ __gthread_leave_tsd_dtor_context (tcb); - #endif - - #ifdef __RTP__ -Index: libgcc/config/arm/linux-atomic.c -=================================================================== ---- a/src/libgcc/config/arm/linux-atomic.c (.../tags/gcc_4_8_0_release) -+++ b/src/libgcc/config/arm/linux-atomic.c (.../branches/gcc-4_8-branch) -@@ -97,19 +97,19 @@ - return (RETURN & mask) >> shift; \ - } - --SUBWORD_SYNC_OP (add, , +, unsigned short, 2, oldval) --SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, oldval) --SUBWORD_SYNC_OP (or, , |, unsigned short, 2, oldval) --SUBWORD_SYNC_OP (and, , &, unsigned short, 2, oldval) --SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, oldval) --SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, oldval) -+SUBWORD_SYNC_OP (add, , +, short, 2, oldval) -+SUBWORD_SYNC_OP (sub, , -, short, 2, oldval) -+SUBWORD_SYNC_OP (or, , |, short, 2, oldval) -+SUBWORD_SYNC_OP (and, , &, short, 2, oldval) -+SUBWORD_SYNC_OP (xor, , ^, short, 2, oldval) -+SUBWORD_SYNC_OP (nand, ~, &, short, 2, oldval) - --SUBWORD_SYNC_OP (add, , +, unsigned char, 1, oldval) --SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, oldval) --SUBWORD_SYNC_OP (or, , |, unsigned char, 1, oldval) --SUBWORD_SYNC_OP (and, , &, unsigned char, 1, oldval) --SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, oldval) --SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, oldval) -+SUBWORD_SYNC_OP (add, , +, signed char, 1, oldval) -+SUBWORD_SYNC_OP (sub, , -, signed char, 1, oldval) -+SUBWORD_SYNC_OP (or, , |, signed char, 1, oldval) -+SUBWORD_SYNC_OP (and, , &, signed char, 1, oldval) -+SUBWORD_SYNC_OP (xor, , ^, signed char, 1, oldval) -+SUBWORD_SYNC_OP (nand, ~, &, signed char, 1, oldval) - - #define OP_AND_FETCH_WORD(OP, PFX_OP, INF_OP) \ - int HIDDEN \ -@@ -132,19 +132,19 @@ - OP_AND_FETCH_WORD (xor, , ^) - OP_AND_FETCH_WORD (nand, ~, &) - --SUBWORD_SYNC_OP (add, , +, unsigned short, 2, newval) --SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, newval) --SUBWORD_SYNC_OP (or, , |, unsigned short, 2, newval) --SUBWORD_SYNC_OP (and, , &, unsigned short, 2, newval) --SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, newval) --SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, newval) -+SUBWORD_SYNC_OP (add, , +, short, 2, newval) -+SUBWORD_SYNC_OP (sub, , -, short, 2, newval) -+SUBWORD_SYNC_OP (or, , |, short, 2, newval) -+SUBWORD_SYNC_OP (and, , &, short, 2, newval) -+SUBWORD_SYNC_OP (xor, , ^, short, 2, newval) -+SUBWORD_SYNC_OP (nand, ~, &, short, 2, newval) - --SUBWORD_SYNC_OP (add, , +, unsigned char, 1, newval) --SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, newval) --SUBWORD_SYNC_OP (or, , |, unsigned char, 1, newval) --SUBWORD_SYNC_OP (and, , &, unsigned char, 1, newval) --SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, newval) --SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, newval) -+SUBWORD_SYNC_OP (add, , +, signed char, 1, newval) -+SUBWORD_SYNC_OP (sub, , -, signed char, 1, newval) -+SUBWORD_SYNC_OP (or, , |, signed char, 1, newval) -+SUBWORD_SYNC_OP (and, , &, signed char, 1, newval) -+SUBWORD_SYNC_OP (xor, , ^, signed char, 1, newval) -+SUBWORD_SYNC_OP (nand, ~, &, signed char, 1, newval) - - int HIDDEN - __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval) -@@ -181,7 +181,7 @@ - actual_oldval = *wordptr; \ - \ - if (__builtin_expect (((actual_oldval & mask) >> shift) != \ -- (unsigned int) oldval, 0)) \ -+ ((unsigned int) oldval & MASK_##WIDTH), 0)) \ - return (actual_oldval & mask) >> shift; \ - \ - actual_newval = (actual_oldval & ~mask) \ -@@ -195,8 +195,8 @@ - } \ - } - --SUBWORD_VAL_CAS (unsigned short, 2) --SUBWORD_VAL_CAS (unsigned char, 1) -+SUBWORD_VAL_CAS (short, 2) -+SUBWORD_VAL_CAS (signed char, 1) - - typedef unsigned char bool; - -@@ -217,8 +217,8 @@ - return (oldval == actual_oldval); \ - } - --SUBWORD_BOOL_CAS (unsigned short, 2) --SUBWORD_BOOL_CAS (unsigned char, 1) -+SUBWORD_BOOL_CAS (short, 2) -+SUBWORD_BOOL_CAS (signed char, 1) - - void HIDDEN - __sync_synchronize (void) -@@ -260,8 +260,8 @@ - return (oldval & mask) >> shift; \ - } - --SUBWORD_TEST_AND_SET (unsigned short, 2) --SUBWORD_TEST_AND_SET (unsigned char, 1) -+SUBWORD_TEST_AND_SET (short, 2) -+SUBWORD_TEST_AND_SET (signed char, 1) - - #define SYNC_LOCK_RELEASE(TYPE, WIDTH) \ - void HIDDEN \ -Index: gcc/tree-vrp.c -=================================================================== ---- a/src/gcc/tree-vrp.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/tree-vrp.c (.../branches/gcc-4_8-branch) -@@ -4895,7 +4895,13 @@ - new_comp_code = comp_code == EQ_EXPR ? LE_EXPR : GT_EXPR; - } - else if (comp_code == LT_EXPR || comp_code == GE_EXPR) -- new_val = val2; -+ { -+ double_int minval -+ = double_int::min_value (prec, TYPE_UNSIGNED (TREE_TYPE (val))); -+ new_val = val2; -+ if (minval == tree_to_double_int (new_val)) -+ new_val = NULL_TREE; -+ } - else - { - double_int maxval -Index: gcc/tree-loop-distribution.c -=================================================================== ---- a/src/gcc/tree-loop-distribution.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/tree-loop-distribution.c (.../branches/gcc-4_8-branch) -@@ -942,13 +942,17 @@ - gimple stmt = DR_STMT (single_store); - tree rhs = gimple_assign_rhs1 (stmt); - if (!(integer_zerop (rhs) -- || integer_all_onesp (rhs) - || real_zerop (rhs) - || (TREE_CODE (rhs) == CONSTRUCTOR - && !TREE_CLOBBER_P (rhs)) -- || (INTEGRAL_TYPE_P (TREE_TYPE (rhs)) -- && (TYPE_MODE (TREE_TYPE (gimple_assign_lhs (stmt))) -- == TYPE_MODE (unsigned_char_type_node))))) -+ || ((integer_all_onesp (rhs) -+ || (INTEGRAL_TYPE_P (TREE_TYPE (rhs)) -+ && (TYPE_MODE (TREE_TYPE (rhs)) -+ == TYPE_MODE (unsigned_char_type_node)))) -+ /* For stores of a non-zero value require that the precision -+ of the value matches its actual size. */ -+ && (TYPE_PRECISION (TREE_TYPE (rhs)) -+ == GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (rhs))))))) - return; - if (TREE_CODE (rhs) == SSA_NAME - && !SSA_NAME_IS_DEFAULT_DEF (rhs) -Index: gcc/DATESTAMP -=================================================================== ---- a/src/gcc/DATESTAMP (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/DATESTAMP (.../branches/gcc-4_8-branch) -@@ -1 +1 @@ --20130322 -+20130421 -Index: gcc/fold-const.c -=================================================================== ---- a/src/gcc/fold-const.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/fold-const.c (.../branches/gcc-4_8-branch) -@@ -984,12 +984,17 @@ - break; - - case MULT_HIGHPART_EXPR: -- /* ??? Need quad precision, or an additional shift operand -- to the multiply primitive, to handle very large highparts. */ - if (TYPE_PRECISION (type) > HOST_BITS_PER_WIDE_INT) - return NULL_TREE; -- tmp = op1 - op2; -- res = tmp.rshift (TYPE_PRECISION (type), TYPE_PRECISION (type), !uns); -+ else -+ { -+ bool dummy_overflow; -+ /* MULT_HIGHPART_EXPR can't ever oveflow, as the multiplication -+ is performed in twice the precision of arguments. */ -+ tmp = op1.mul_with_sign (op2, false, &dummy_overflow); -+ res = tmp.rshift (TYPE_PRECISION (type), -+ 2 * TYPE_PRECISION (type), !uns); -+ } - break; - - case TRUNC_DIV_EXPR: -@@ -5848,8 +5853,10 @@ - - /* The last case is if we are a multiply. In that case, we can - apply the distributive law to commute the multiply and addition -- if the multiplication of the constants doesn't overflow. */ -- if (code == MULT_EXPR) -+ if the multiplication of the constants doesn't overflow -+ and overflow is defined. With undefined overflow -+ op0 * c might overflow, while (op0 + orig_op1) * c doesn't. */ -+ if (code == MULT_EXPR && TYPE_OVERFLOW_WRAPS (ctype)) - return fold_build2 (tcode, ctype, - fold_build2 (code, ctype, - fold_convert (ctype, op0), -Index: gcc/omp-low.c -=================================================================== ---- a/src/gcc/omp-low.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/omp-low.c (.../branches/gcc-4_8-branch) -@@ -3920,8 +3920,10 @@ - if (POINTER_TYPE_P (type)) - t = fold_convert (signed_type_for (type), t); - t = fold_convert (type, t); -- t = force_gimple_operand_gsi (&gsi, t, false, NULL_TREE, -- false, GSI_CONTINUE_LINKING); -+ t = force_gimple_operand_gsi (&gsi, t, -+ DECL_P (fd->loop.v) -+ && TREE_ADDRESSABLE (fd->loop.v), -+ NULL_TREE, false, GSI_CONTINUE_LINKING); - stmt = gimple_build_assign (fd->loop.v, t); - gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING); - -@@ -3952,8 +3954,11 @@ - t = fold_build_pointer_plus (fd->loops[i].n1, t); - else - t = fold_build2 (PLUS_EXPR, itype, fd->loops[i].n1, t); -- t = force_gimple_operand_gsi (&gsi, t, false, NULL_TREE, -- false, GSI_CONTINUE_LINKING); -+ t = force_gimple_operand_gsi (&gsi, t, -+ DECL_P (fd->loops[i].v) -+ && TREE_ADDRESSABLE (fd->loops[i].v), -+ NULL_TREE, false, -+ GSI_CONTINUE_LINKING); - stmt = gimple_build_assign (fd->loops[i].v, t); - gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING); - if (i != 0) -@@ -3981,12 +3986,15 @@ - t = fold_build_pointer_plus (vmain, fd->loop.step); - else - t = fold_build2 (PLUS_EXPR, type, vmain, fd->loop.step); -- t = force_gimple_operand_gsi (&gsi, t, false, NULL_TREE, -- true, GSI_SAME_STMT); -+ t = force_gimple_operand_gsi (&gsi, t, -+ DECL_P (vback) && TREE_ADDRESSABLE (vback), -+ NULL_TREE, true, GSI_SAME_STMT); - stmt = gimple_build_assign (vback, t); - gsi_insert_before (&gsi, stmt, GSI_SAME_STMT); - -- t = build2 (fd->loop.cond_code, boolean_type_node, vback, iend); -+ t = build2 (fd->loop.cond_code, boolean_type_node, -+ DECL_P (vback) && TREE_ADDRESSABLE (vback) ? t : vback, -+ iend); - stmt = gimple_build_cond_empty (t); - gsi_insert_before (&gsi, stmt, GSI_SAME_STMT); - -@@ -4011,8 +4019,12 @@ - e->probability = REG_BR_PROB_BASE / 8; - - t = fd->loops[i + 1].n1; -- t = force_gimple_operand_gsi (&gsi, t, false, NULL_TREE, -- false, GSI_CONTINUE_LINKING); -+ t = force_gimple_operand_gsi (&gsi, t, -+ DECL_P (fd->loops[i + 1].v) -+ && TREE_ADDRESSABLE -+ (fd->loops[i + 1].v), -+ NULL_TREE, false, -+ GSI_CONTINUE_LINKING); - stmt = gimple_build_assign (fd->loops[i + 1].v, t); - gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING); - } -@@ -4026,8 +4038,11 @@ - else - t = fold_build2 (PLUS_EXPR, vtype, fd->loops[i].v, - fd->loops[i].step); -- t = force_gimple_operand_gsi (&gsi, t, false, NULL_TREE, -- false, GSI_CONTINUE_LINKING); -+ t = force_gimple_operand_gsi (&gsi, t, -+ DECL_P (fd->loops[i].v) -+ && TREE_ADDRESSABLE (fd->loops[i].v), -+ NULL_TREE, false, -+ GSI_CONTINUE_LINKING); - stmt = gimple_build_assign (fd->loops[i].v, t); - gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING); - -@@ -4036,8 +4051,12 @@ - t = fd->loops[i].n2; - t = force_gimple_operand_gsi (&gsi, t, true, NULL_TREE, - false, GSI_CONTINUE_LINKING); -+ tree v = fd->loops[i].v; -+ if (DECL_P (v) && TREE_ADDRESSABLE (v)) -+ v = force_gimple_operand_gsi (&gsi, v, true, NULL_TREE, -+ false, GSI_CONTINUE_LINKING); - t = fold_build2 (fd->loops[i].cond_code, boolean_type_node, -- fd->loops[i].v, t); -+ v, t); - stmt = gimple_build_cond_empty (t); - gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING); - e = make_edge (bb, l1_bb, EDGE_TRUE_VALUE); -@@ -4273,8 +4292,10 @@ - t = fold_build_pointer_plus (fd->loop.n1, t); - else - t = fold_build2 (PLUS_EXPR, type, t, fd->loop.n1); -- t = force_gimple_operand_gsi (&gsi, t, false, NULL_TREE, -- false, GSI_CONTINUE_LINKING); -+ t = force_gimple_operand_gsi (&gsi, t, -+ DECL_P (fd->loop.v) -+ && TREE_ADDRESSABLE (fd->loop.v), -+ NULL_TREE, false, GSI_CONTINUE_LINKING); - stmt = gimple_build_assign (fd->loop.v, t); - gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING); - -@@ -4299,12 +4320,14 @@ - t = fold_build_pointer_plus (vmain, fd->loop.step); - else - t = fold_build2 (PLUS_EXPR, type, vmain, fd->loop.step); -- t = force_gimple_operand_gsi (&gsi, t, false, NULL_TREE, -- true, GSI_SAME_STMT); -+ t = force_gimple_operand_gsi (&gsi, t, -+ DECL_P (vback) && TREE_ADDRESSABLE (vback), -+ NULL_TREE, true, GSI_SAME_STMT); - stmt = gimple_build_assign (vback, t); - gsi_insert_before (&gsi, stmt, GSI_SAME_STMT); - -- t = build2 (fd->loop.cond_code, boolean_type_node, vback, e); -+ t = build2 (fd->loop.cond_code, boolean_type_node, -+ DECL_P (vback) && TREE_ADDRESSABLE (vback) ? t : vback, e); - gsi_insert_before (&gsi, gimple_build_cond_empty (t), GSI_SAME_STMT); - - /* Remove the GIMPLE_OMP_CONTINUE statement. */ -@@ -4504,8 +4527,10 @@ - t = fold_build_pointer_plus (fd->loop.n1, t); - else - t = fold_build2 (PLUS_EXPR, type, t, fd->loop.n1); -- t = force_gimple_operand_gsi (&si, t, false, NULL_TREE, -- false, GSI_CONTINUE_LINKING); -+ t = force_gimple_operand_gsi (&si, t, -+ DECL_P (fd->loop.v) -+ && TREE_ADDRESSABLE (fd->loop.v), -+ NULL_TREE, false, GSI_CONTINUE_LINKING); - stmt = gimple_build_assign (fd->loop.v, t); - gsi_insert_after (&si, stmt, GSI_CONTINUE_LINKING); - -@@ -4530,10 +4555,15 @@ - t = fold_build_pointer_plus (v_main, fd->loop.step); - else - t = fold_build2 (PLUS_EXPR, type, v_main, fd->loop.step); -+ if (DECL_P (v_back) && TREE_ADDRESSABLE (v_back)) -+ t = force_gimple_operand_gsi (&si, t, true, NULL_TREE, -+ true, GSI_SAME_STMT); - stmt = gimple_build_assign (v_back, t); - gsi_insert_before (&si, stmt, GSI_SAME_STMT); - -- t = build2 (fd->loop.cond_code, boolean_type_node, v_back, e); -+ t = build2 (fd->loop.cond_code, boolean_type_node, -+ DECL_P (v_back) && TREE_ADDRESSABLE (v_back) -+ ? t : v_back, e); - gsi_insert_before (&si, gimple_build_cond_empty (t), GSI_SAME_STMT); - - /* Remove GIMPLE_OMP_CONTINUE. */ -Index: gcc/toplev.c -=================================================================== ---- a/src/gcc/toplev.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/toplev.c (.../branches/gcc-4_8-branch) -@@ -1527,18 +1527,6 @@ - if (!flag_stack_protect) - warn_stack_protect = 0; - -- /* ??? Unwind info is not correct around the CFG unless either a frame -- pointer is present or A_O_A is set. Fixing this requires rewriting -- unwind info generation to be aware of the CFG and propagating states -- around edges. */ -- if (flag_unwind_tables && !ACCUMULATE_OUTGOING_ARGS -- && flag_omit_frame_pointer) -- { -- warning (0, "unwind tables currently require a frame pointer " -- "for correctness"); -- flag_omit_frame_pointer = 0; -- } -- - /* Address Sanitizer needs porting to each target architecture. */ - if (flag_asan - && (targetm.asan_shadow_offset == NULL -Index: gcc/ChangeLog -=================================================================== ---- a/src/gcc/ChangeLog (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,334 @@ -+2013-04-18 Jakub Jelinek -+ -+ PR tree-optimization/56984 -+ * tree-vrp.c (register_edge_assert_for_2): For (x >> M) < N -+ and (x >> M) >= N don't register any assertion if N << M is the -+ minimum value. -+ -+2013-04-17 David Edelsohn -+ -+ PR target/56948 -+ * config/rs6000/vsx.md (vsx_mov): Add j->r alternative. -+ -+2013-04-15 Jakub Jelinek -+ -+ PR tree-optimization/56962 -+ * gimple-ssa-strength-reduction.c (record_increment): Only set -+ initializer if gimple_assign_rhs_code is {,POINTER_}PLUS_EXPR and -+ either rhs1 or rhs2 is equal to c->base_expr. -+ -+2013-04-15 Andreas Krebbel -+ -+ * emit-rtl.c (reset_all_used_flags): New function. -+ (verify_rtl_sharing): Call reset_all_used_flags before and after -+ performing the checks. -+ -+2013-04-15 Eric Botcazou -+ -+ PR target/56890 -+ * config/sparc/sparc.c (enum sparc_mode_class): Add H_MODE value. -+ (S_MODES): Set H_MODE bit. -+ (SF_MODES): Set only S_MODE and SF_MODE bits. -+ (DF_MODES): Set SF_MODES and only D_MODE and DF_MODE bits. -+ (sparc_init_modes) : Set H_MODE bit for sub-word modes. -+ : Do not set SF_MODE for sub-word modes. -+ : Likewise. -+ -+2013-04-12 Vladimir Makarov -+ -+ PR target/56903 -+ * config/i386/i386.c (ix86_hard_regno_mode_ok): Add -+ lra_in_progress for return. -+ -+2013-04-12 Jakub Jelinek -+ -+ PR tree-optimization/56918 -+ PR tree-optimization/56920 -+ * fold-const.c (int_const_binop_1): Use op1.mul_with_sign (op2, ...) -+ instead of op1 - op2. Pass 2 * TYPE_PRECISION (type) as second -+ argument to rshift method. -+ -+2013-04-12 Andreas Krebbel -+ -+ * ifcvt.c (end_ifcvt_sequence): Mark a and b for unsharing as -+ well. -+ -+2013-04-11 Marek Polacek -+ -+ PR tree-optimization/48184 -+ * params.def (PARAM_ALIGN_THRESHOLD): Increase the minimum -+ value to 1. -+ -+2013-04-11 James Greenhalgh -+ -+ Backported from mainline. -+ 2013-04-11 James Greenhalgh -+ -+ * config/aarch64/aarch64-simd.md (aarch64_vcond_internal): Fix -+ floating-point vector comparisons against 0. -+ -+2013-04-11 Jakub Jelinek -+ -+ PR tree-optimization/56899 -+ * fold-const.c (extract_muldiv_1): Apply distributive law -+ only if TYPE_OVERFLOW_WRAPS (ctype). -+ -+2013-04-10 David S. Miller -+ -+ * config/sparc/sparc.h (ASM_CPU_SPEC): Pass -Av8 if -mcpu=supersparc -+ or -mcpu=hypersparc. -+ -+2013-04-10 Jakub Jelinek -+ -+ Backported from mainline -+ 2013-04-09 Jakub Jelinek -+ -+ PR middle-end/56883 -+ * omp-low.c (expand_omp_for_generic, expand_omp_for_static_nochunk, -+ expand_omp_for_static_chunk): Use simple_p = true in -+ force_gimple_operand_gsi calls when assigning to addressable decls. -+ -+2013-04-09 Marek Polacek -+ -+ PR tree-optimization/48762 -+ * params.def (PARAM_MAX_CSE_INSNS): Increase the minimum -+ value to 1. -+ -+2013-04-08 Andreas Krebbel -+ -+ * config/s390/s390.c (s390_expand_insv): Only accept insertions -+ within mode size. -+ -+2013-04-08 Marek Polacek -+ -+ PR rtl-optimization/48182 -+ * params.def (PARAM_MIN_CROSSJUMP_INSNS): Increase the minimum -+ value to 1. -+ -+2013-04-06 John David Anglin -+ -+ PR target/55487 -+ * config/pa/pa.c (legitimize_pic_address): Before incrementing label -+ nuses, make sure we have a label. -+ -+2013-04-04 Ian Lance Taylor -+ -+ Backport from mainline: -+ * doc/standards.texi (Standards): The Go frontend supports the Go -+ 1 language standard. -+ -+2013-04-04 Marek Polacek -+ -+ Backport from mainline: -+ 2013-04-04 Marek Polacek -+ -+ PR tree-optimization/48186 -+ * predict.c (maybe_hot_frequency_p): Return false if -+ HOT_BB_FREQUENCY_FRACTION is 0. -+ (cgraph_maybe_hot_edge_p): Likewise. -+ -+2013-04-04 Kyrylo Tkachov -+ -+ Backport from mainline: -+ 2013-03-25 Kyrylo Tkachov -+ -+ PR target/56720 -+ * config/arm/iterators.md (v_cmp_result): New mode attribute. -+ * config/arm/neon.md (vcond): Handle unordered cases. -+ -+2013-04-04 Richard Biener -+ -+ PR tree-optimization/56837 -+ * tree-loop-distribution.c (classify_partition): For non-zero -+ values require that the value has the same precision as its -+ mode to be useful as memset value. -+ -+2013-04-03 Roland McGrath -+ -+ Backport from mainline: -+ 2013-03-26 Roland McGrath -+ -+ * config/arm/arm.c (arm_print_operand: case 'w'): Use fputs rather -+ than fprintf with a non-constant, non-format string. -+ -+2013-04-03 Marek Polacek -+ -+ Backport from mainline: -+ 2013-04-03 Marek Polacek -+ -+ PR sanitizer/55702 -+ * tsan.c (instrument_func_exit): Allow BUILT_IN_RETURN -+ functions. -+ -+2013-04-03 Richard Biener -+ -+ PR tree-optimization/56817 -+ * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely): -+ Split out ... -+ (tree_unroll_loops_completely_1): ... new function to manually -+ walk the loop tree, properly defering outer loops of unrolled -+ loops to later iterations. -+ -+2013-04-02 Jakub Jelinek -+ -+ PR rtl-optimization/56745 -+ * ifcvt.c (cond_exec_find_if_block): Don't try to optimize -+ if then_bb has no successors and else_bb is EXIT_BLOCK_PTR. -+ -+2013-04-02 Wei Mi -+ -+ * config/i386/i386.c (ix86_rtx_costs): Set proper rtx cost for -+ ashl3_mask, *3_mask and -+ *3_mask in i386.md. -+ -+2013-04-01 Wei Mi -+ -+ * config/i386/i386.md (*ashl3_mask): Rewrite as define_insn. -+ Truncate operand 2 using %b asm operand modifier. -+ (*3_mask): Ditto. -+ (*3_mask): Ditto. -+ -+2013-04-01 Uros Bizjak -+ -+ * config/i386/i386.md (*movsf_internal): Change type of -+ alternatives 3,4 to imov. -+ -+2013-03-29 Paolo Carlini -+ -+ PR lto/56777 -+ * doc/invoke.texi ([-fwhole-program]): Fix typo. -+ -+2013-03-29 Kirill Yukhin -+ -+ * config/i386/avx2intrin.h (_mm256_broadcastsi128_si256): -+ Fix declaration name. -+ -+2013-03-28 Gerald Pfeifer -+ -+ * doc/invoke.texi (AVR Options): Tweak link for AVR-LibC user manual. -+ * doc/extend.texi (Named Address Spaces): Ditto. -+ (Variable Attributes): Ditto. -+ -+2013-03-28 Eric Botcazou -+ -+ * toplev.c (process_options): Do not disable -fomit-frame-pointer on a -+ general basis if unwind info is requested and ACCUMULATE_OUTGOING_ARGS -+ is not enabled. -+ -+2013-03-27 Walter Lee -+ -+ Backport from mainline: -+ 2013-03-27 Walter Lee -+ -+ * config/tilegx/tilegx.c (tilegx_expand_prologue): Avoid -+ double-decrement of next_scratch_regno. -+ -+2013-03-27 Walter Lee -+ -+ Backport from mainline: -+ 2013-03-27 Walter Lee -+ -+ * config/tilegx/tilegx.md (insn_v1mulu): Fix predicates on -+ input operands. -+ (insn_v1mulus): Ditto. -+ (insn_v2muls): Ditto. -+ -+2013-03-27 Walter Lee -+ -+ Backport from mainline: -+ 2013-03-27 Walter Lee -+ -+ * config/tilegx/tilegx.h (ASM_OUTPUT_ADDR_VEC_ELT): Delete -+ extra tab. -+ (ASM_OUTPUT_ADDR_DIFF_ELT): Ditto. -+ -+2013-03-27 Walter Lee -+ -+ Backport from mainline: -+ 2013-03-27 Walter Lee -+ -+ * config/tilegx/tilegx.md (*sibcall_insn): Fix type atribute for jr. -+ (*sibcall_value): Ditto. -+ -+2013-03-27 Walter Lee -+ -+ Backport from mainline: -+ 2013-03-27 Walter Lee -+ -+ * config/tilegx/tilegx.md (insn_mnz_): Replaced by ... -+ (insn_mnz_v8qi): ... this ... -+ (insn_mnz_v4hi): ... and this. Replace (const_int 0) with the -+ vector equivalent. -+ (insn_vmnz): Replaced by ... -+ (insn_v1mnz): ... this ... -+ (insn_v2mnz): ... and this. Replace (const_int 0) with the vector -+ equivalent. -+ (insn_mz_): Replaced by ... -+ (insn_mz_v8qi): ... this ... -+ (insn_mz_v4hi): ... and this. Replace (const_int 0) with the -+ vector equivalent. -+ (insn_vmz): Replaced by ... -+ (insn_v1mz): ... this ... -+ (insn_v2mz): ... and this. Replace (const_int 0) with the vector -+ equivalent. -+ -+2013-03-26 Eric Botcazou -+ -+ * doc/invoke.texi (SPARC options): Remove -mlittle-endian. -+ -+2013-03-26 Sebastian Huber -+ -+ * config/rtems.opt: Add -pthread option. -+ -+2013-03-26 Sofiane Naci -+ -+ * config/aarch64/aarch64.c (aarch64_classify_address): Support -+ PC-relative load in SI modes and above only. -+ -+2013-03-26 Walter Lee -+ -+ Backport from mainline: -+ 2013-03-26 Walter Lee -+ -+ * config/tilegx/tilegx.h (PROFILE_BEFORE_PROLOGUE): Define. -+ * config/tilegx/tilepro.h (PROFILE_BEFORE_PROLOGUE): Define. -+ -+2013-03-26 Walter Lee -+ -+ Backport from mainline: -+ 2013-03-25 Walter Lee -+ -+ * config/tilegx/tilegx-builtins.h (enum tilegx_builtin): Add -+ TILEGX_INSN_SHUFFLEBYTES1. -+ * config/tilegx/tilegx.c (tilegx_builtin_info): Add entry for -+ shufflebytes1. -+ (tilegx_builtins): Ditto. -+ * config/tilegx/tilegx.md (insn_shufflebytes1): New pattern. -+ -+2013-03-26 Walter Lee -+ -+ Backport from mainline: -+ 2013-03-25 Walter Lee -+ -+ * config/tilegx/tilegx.c (expand_set_cint64_one_inst): Inline -+ tests for constraint J, K, N, P. -+ -+2013-03-26 Walter Lee -+ -+ Backport from mainline: -+ 2013-03-25 Walter Lee -+ -+ * config/tilegx/tilegx.c (tilegx_asm_preferred_eh_data_format): -+ Use indirect/pcrel encoding. -+ * config/tilepro/tilepro.c (tilepro_asm_preferred_eh_data_format): -+ Ditto. -+ -+2013-03-25 Richard Biener -+ -+ PR middle-end/56694 -+ * tree-eh.c (lower_eh_must_not_throw): Strip BLOCKs from the -+ must-not-throw stmt location. -+ - 2013-03-22 Release Manager - - * GCC 4.8.0 released. -@@ -44,30 +380,31 @@ - - * configure.ac: Add MicroBlaze TLS support detection. - * configure: Regenerate. -- * config/microblaze/microblaze-protos.h: (microblaze_cannot_force_const_mem, -- microblaze_tls_referenced_p, symbol_mentioned_p, label_mentioned_p): -- Add prototypes. -- * config/microblaze/microblaze.c (microblaze_address_type): Add ADDRESS_TLS -- and tls_reloc address types. -+ * config/microblaze/microblaze-protos.h -+ (microblaze_cannot_force_const_mem, microblaze_tls_referenced_p, -+ symbol_mentioned_p, label_mentioned_p): Add prototypes. -+ * config/microblaze/microblaze.c (microblaze_address_type): Add -+ ADDRESS_TLS and tls_reloc address types. - (microblaze_address_info): Add tls_reloc. - (TARGET_HAVE_TLS): Define. - (get_tls_get_addr, microblaze_tls_symbol_p, microblaze_tls_operand_p_1, -- microblaze_tls_referenced_p, microblaze_cannot_force_const_mem, -- symbol_mentioned_p, label_mentioned_p, tls_mentioned_p, load_tls_operand, -- microblaze_call_tls_get_addr, microblaze_legitimize_tls_address): New functions. -+ microblaze_tls_referenced_p, microblaze_cannot_force_const_mem, -+ symbol_mentioned_p, label_mentioned_p, tls_mentioned_p, -+ load_tls_operand, microblaze_call_tls_get_addr, -+ microblaze_legitimize_tls_address): New functions. - (microblaze_classify_unspec): Handle UNSPEC_TLS. - (get_base_reg): Use microblaze_tls_symbol_p. - (microblaze_classify_address): Handle TLS. -- (microblaze_legitimate_pic_operand): Use symbol_mentioned_p, label_mentioned_p -- and microblaze_tls_referenced_p. -+ (microblaze_legitimate_pic_operand): Use symbol_mentioned_p, -+ label_mentioned_p and microblaze_tls_referenced_p. - (microblaze_legitimize_address): Handle TLS. - (microblaze_address_insns): Handle ADDRESS_TLS. - (pic_address_needs_scratch): Handle TLS. - (print_operand_address): Handle TLS. - (microblaze_expand_prologue): Check TLS_NEEDS_GOT. - (microblaze_expand_move): Handle TLS. -- (microblaze_legitimate_constant_p): Check microblaze_cannot_force_const_mem -- and microblaze_tls_symbol_p. -+ (microblaze_legitimate_constant_p): Check -+ microblaze_cannot_force_const_mem and microblaze_tls_symbol_p. - (TARGET_CANNOT_FORCE_CONST_MEM): Define. - * config/microblaze/microblaze.h (TLS_NEEDS_GOT): Define - (PIC_OFFSET_TABLE_REGNUM): Set. -@@ -75,7 +412,8 @@ - * config/microblaze/microblaze.md (UNSPEC_TLS): Define. - (addsi3, movsi_internal2, movdf_internal): Update constraints - * config/microblaze/predicates.md (arith_plus_operand): Define -- (move_operand): Redefine as move_src_operand, check microblaze_tls_referenced_p. -+ (move_operand): Redefine as move_src_operand, check -+ microblaze_tls_referenced_p. - - 2013-03-14 Ian Bolton - -@@ -173,7 +511,7 @@ - PR target/56591 - * config/avr/avr.c (avr_print_operand): Add space after '%c' in - output_operand_lossage message. -- -+ - 2013-03-11 Richard Earnshaw - - PR target/56470 -@@ -518,10 +856,10 @@ - - 2013-03-04 David Holsgrove - -- * config/microblaze/microblaze.c (microblaze_valid_pic_const): New -- (microblaze_legitimate_pic_operand): Likewise -- * config/microblaze/microblaze.h (LEGITIMATE_PIC_OPERAND_P): calls -- new function microblaze_legitimate_pic_operand -+ * config/microblaze/microblaze.c (microblaze_valid_pic_const): New. -+ (microblaze_legitimate_pic_operand): Likewise. -+ * config/microblaze/microblaze.h (LEGITIMATE_PIC_OPERAND_P): Call -+ new function microblaze_legitimate_pic_operand. - * config/microblaze/microblaze-protos.h - (microblaze_legitimate_pic_operand): Declare. - -@@ -572,8 +910,8 @@ - DRIVER_SELF_SPECS. - * config/microblaze/microblaze.md: New bswapsi2 and bswaphi2. - instructions emitted if TARGET_REORDER. -- * config/microblaze/microblaze.opt: New option -mxl-reorder set to 1 -- or 0 for -m/-mno case, but initialises as 2 to detect default use case -+ * config/microblaze/microblaze.opt: New option -mxl-reorder set to 1 -+ or 0 for -m/-mno case, but initialises as 2 to detect default use case - separately. - - 2013-03-01 Xinliang David Li -@@ -610,12 +948,10 @@ - (Other MIPS Built-in Functions): Move last MIPS entry before - "picoChip Built-in Functions". - (SH Built-in Functions): Move after RX Built-in Functions. -- * doc/gcc.texi (Introduction): Change order in @menu -- to match @node. -+ * doc/gcc.texi (Introduction): Change order in @menu to match @node. - * doc/md.texi (Constraints): Ditto. - * gty.texi (Type Information): Ditto. -- (User-provided marking routines for template types): Make -- subsection. -+ (User-provided marking routines for template types): Make subsection. - * doc/invoke.texi (AArch64 Options): Move before - "Adapteva Epiphany Options". - -@@ -743,8 +1079,7 @@ - pointer_set_destroy on not_executed_last_iteration. - - PR middle-end/56461 -- * tree-vect-loop.c (vectorizable_reduction): Release vect_defs -- vector. -+ * tree-vect-loop.c (vectorizable_reduction): Release vect_defs vector. - - PR middle-end/56461 - * ipa-pure-const.c (propagate): Use FOR_EACH_FUNCTION instead of -@@ -905,8 +1240,9 @@ - Iain Sandoe - Nathan Froyd - Chao-ying Fu -- * doc/extend.texi: (micromips, nomicromips, nocompression): -- Document new function attributes. -+ -+ * doc/extend.texi (micromips, nomicromips, nocompression): -+ Document new function attributes. - * doc/invoke.texi (minterlink-compressed, mmicromips, - m14k, m14ke, m14kec): Document new options. - (minterlink-mips16): Update documentation. -@@ -1055,8 +1391,8 @@ - Nathan Froyd - Chao-ying Fu - -- * doc/extend.texi: (micromips, nomicromips, nocompression): -- Document new function attributes. -+ * doc/extend.texi (micromips, nomicromips, nocompression): -+ Document new function attributes. - * doc/invoke.texi (minterlink-compressed, mmicromips, - m14k, m14ke, m14kec): Document new options. - (minterlink-mips16): Update documentation. -@@ -1219,8 +1555,8 @@ - ((dword_type) -1) << (BITS_PER_WORD - 1). Improve multiplication by - ((dword_type) 1) << (BITS_PER_WORD - 1). Avoid undefined behavior - in the compiler if coeff is HOST_WIDE_INT_MIN. -- (expand_divmod): Don't make ext_op1 static, change it's type to -- uhwi. Avoid undefined behavior in -INTVAL (op1). -+ (expand_divmod): Don't make ext_op1 static, change it's type to uhwi. -+ Avoid undefined behavior in -INTVAL (op1). - - PR rtl-optimization/50339 - * lower-subreg.h (struct lower_subreg_choices): Add splitting_ashiftrt -@@ -1291,8 +1627,8 @@ - 2013-02-20 Jan Hubicka - - PR tree-optimization/56265 -- * ipa-prop.c (ipa_make_edge_direct_to_target): Fixup callgraph when target is -- referenced for firs ttime. -+ * ipa-prop.c (ipa_make_edge_direct_to_target): Fixup callgraph when -+ target is referenced for first time. - - 2013-02-20 Richard Biener - -@@ -1303,8 +1639,7 @@ - not return anything. - (rename_ssa_copies): Do not remove unused locals. - * tree-ssa-ccp.c (do_ssa_ccp): Likewise. -- * tree-ssanames.c (pass_release_ssa_names): Remove unused -- locals first. -+ * tree-ssanames.c (pass_release_ssa_names): Remove unused locals first. - * passes.c (execute_function_todo): Do not schedule unused locals - removal if cleanup_tree_cfg did something. - * tree-ssa-live.c (remove_unused_locals): Dump statistics -@@ -1360,7 +1695,7 @@ - - * config/microblaze/microblaze.c: microblaze_has_clz = 0 - Add version check for v8.10.a to enable microblaze_has_clz -- * config/microblaze/microblaze.h: Add TARGET_HAS_CLZ as combined -+ * config/microblaze/microblaze.h: Add TARGET_HAS_CLZ as combined - version and TARGET_PATTERN_COMPARE check - * config/microblaze/microblaze.md: New clzsi2 instruction - -@@ -1378,11 +1713,10 @@ - 2012-02-19 Andrey Belevantsev - - PR middle-end/55889 -- - * sel-sched.c: Include ira.h. - (implicit_clobber_conflict_p): New function. - (moveup_expr): Use it. -- * Makefile.in (sel-sched.o): Depend on ira.h. -+ * Makefile.in (sel-sched.o): Depend on ira.h. - - 2013-02-19 Richard Biener - -@@ -1413,8 +1747,7 @@ - * genopinit.c (raw_optab_handler): Use this_fn_optabs. - (swap_optab_enable): Same. - (init_all_optabs): Use argument instead of global. -- * tree.h (struct tree_optimization_option): New field -- target_optabs. -+ * tree.h (struct tree_optimization_option): New field target_optabs. - * expr.h (init_all_optabs): Add argument to prototype. - (TREE_OPTIMIZATION_OPTABS): New. - (save_optabs_if_changed): Protoize. -@@ -1438,8 +1771,8 @@ - - PR target/56214 - * config/pa/predicates.md (base14_operand): Except for BLKmode, QImode -- and HImode, require all displacements to be an integer multiple of their -- mode size. -+ and HImode, require all displacements to be an integer multiple of -+ their mode size. - * config/pa/pa.c (pa_legitimate_address_p): For REG+BASE addresses, - only allow QImode and HImode when reload is in progress and strict is - true. Likewise for symbolic addresses. Use base14_operand to check -@@ -1480,10 +1813,10 @@ - - 2013-02-16 Edgar E. Iglesias - -- * config/microblaze/microblaze.c (microblaze_asm_trampoline_template): -+ * config/microblaze/microblaze.c (microblaze_asm_trampoline_template): - Replace with a microblaze version. - (microblaze_trampoline_init): Adapt for microblaze. -- * gcc/config/microblaze/microblaze.h (TRAMPOLINE_SIZE): Adapt for -+ * config/microblaze/microblaze.h (TRAMPOLINE_SIZE): Adapt for - microblaze. - - 2013-02-16 Jakub Jelinek -Index: gcc/testsuite/gcc.target/arm/neon-vcond-ltgt.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/arm/neon-vcond-ltgt.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/arm/neon-vcond-ltgt.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,18 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_neon_ok } */ -+/* { dg-options "-O1 -funsafe-math-optimizations -ftree-vectorize" } */ -+/* { dg-add-options arm_neon } */ -+ -+#define LTGT(a, b) (__builtin_islessgreater (a, b) ? a : b) -+void foo (int ilast,float* w, float* w2) -+{ -+ int i; -+ for (i = 0; i < ilast; ++i) -+ { -+ w[i] = LTGT (0.0f, w2[i]); -+ } -+} -+ -+/* { dg-final { scan-assembler-times "vcgt\\.f32\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" 2 } } */ -+/* { dg-final { scan-assembler "vorr\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */ -+/* { dg-final { scan-assembler "vbsl\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */ -Index: gcc/testsuite/gcc.target/arm/neon-vcond-unordered.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/arm/neon-vcond-unordered.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/arm/neon-vcond-unordered.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,19 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_neon_ok } */ -+/* { dg-options "-O1 -funsafe-math-optimizations -ftree-vectorize" } */ -+/* { dg-add-options arm_neon } */ -+ -+#define UNORD(a, b) (__builtin_isunordered (a, b) ? a : b) -+void foo (int ilast,float* w, float* w2) -+{ -+ int i; -+ for (i = 0; i < ilast; ++i) -+ { -+ w[i] = UNORD (0.0f, w2[i]); -+ } -+} -+ -+/* { dg-final { scan-assembler "vcgt\\.f32\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */ -+/* { dg-final { scan-assembler "vcge\\.f32\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */ -+/* { dg-final { scan-assembler "vorr\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */ -+/* { dg-final { scan-assembler "vbsl\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */ -Index: gcc/testsuite/gcc.target/arm/neon-vcond-gt.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/arm/neon-vcond-gt.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/arm/neon-vcond-gt.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,17 @@ -+/* { dg-do compile } */ -+/* { dg-require-effective-target arm_neon_ok } */ -+/* { dg-options "-O1 -funsafe-math-optimizations -ftree-vectorize" } */ -+/* { dg-add-options arm_neon } */ -+ -+#define MAX(a, b) (a > b ? a : b) -+void foo (int ilast,float* w, float* w2) -+{ -+ int i; -+ for (i = 0; i < ilast; ++i) -+ { -+ w[i] = MAX (0.0f, w2[i]); -+ } -+} -+ -+/* { dg-final { scan-assembler "vcgt\\.f32\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */ -+/* { dg-final { scan-assembler "vbit\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+,\[\\t \]*q\[0-9\]+" } } */ -Index: gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c (.../branches/gcc-4_8-branch) -@@ -7,8 +7,9 @@ - - #include "vect-fcm.x" - --/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */ -+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */ - /* { dg-final { scan-assembler "fcmgt\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s" } } */ - /* { dg-final { scan-assembler "fcmgt\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, 0" } } */ -+/* { dg-final { scan-assembler "fcmle\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, 0" } } */ - /* { dg-final { cleanup-tree-dump "vect" } } */ - /* { dg-final { cleanup-saved-temps } } */ -Index: gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c (.../branches/gcc-4_8-branch) -@@ -7,7 +7,7 @@ - - #include "vect-fcm.x" - --/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */ -+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */ - /* { dg-final { scan-assembler "fcmeq\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ - /* { dg-final { scan-assembler "fcmeq\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, 0" } } */ - /* { dg-final { cleanup-tree-dump "vect" } } */ -Index: gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c (.../branches/gcc-4_8-branch) -@@ -7,7 +7,7 @@ - - #include "vect-fcm.x" - --/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */ -+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */ - /* { dg-final { scan-assembler "fcmeq\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s" } } */ - /* { dg-final { scan-assembler "fcmeq\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, 0" } } */ - /* { dg-final { cleanup-tree-dump "vect" } } */ -Index: gcc/testsuite/gcc.target/aarch64/vect-fcm.x -=================================================================== ---- a/src/gcc/testsuite/gcc.target/aarch64/vect-fcm.x (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fcm.x (.../branches/gcc-4_8-branch) -@@ -40,6 +40,15 @@ - output[i] = (in1[i] OP 0.0) ? 4.0 : 2.0; - } - -+void -+foobarbar (FTYPE *in1, FTYPE *in2, FTYPE *output) -+{ -+ int i = 0; -+ /* Vectorizable. */ -+ for (i = 0; i < N; i++) -+ output[i] = (in1[i] INV_OP 0.0) ? 4.0 : 2.0; -+} -+ - int - main (int argc, char **argv) - { -@@ -51,6 +60,11 @@ - for (i = 0; i < N; i++) - if (out1[i] != out2[i]) - abort (); -+ foobar (input1, input2, out1); -+ foobarbar (input1, input2, out2); -+ for (i = 0; i < N; i++) -+ if (out1[i] == out2[i]) -+ abort (); - return 0; - } - -Index: gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c (.../branches/gcc-4_8-branch) -@@ -7,8 +7,9 @@ - - #include "vect-fcm.x" - --/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */ -+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */ - /* { dg-final { scan-assembler "fcmge\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ - /* { dg-final { scan-assembler "fcmge\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, 0" } } */ -+/* { dg-final { scan-assembler "fcmlt\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, 0" } } */ - /* { dg-final { cleanup-tree-dump "vect" } } */ - /* { dg-final { cleanup-saved-temps } } */ -Index: gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c (.../branches/gcc-4_8-branch) -@@ -7,8 +7,9 @@ - - #include "vect-fcm.x" - --/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */ -+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */ - /* { dg-final { scan-assembler "fcmge\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s" } } */ - /* { dg-final { scan-assembler "fcmge\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, 0" } } */ -+/* { dg-final { scan-assembler "fcmlt\\tv\[0-9\]+\.\[24\]s, v\[0-9\]+\.\[24\]s, 0" } } */ - /* { dg-final { cleanup-tree-dump "vect" } } */ - /* { dg-final { cleanup-saved-temps } } */ -Index: gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c (.../branches/gcc-4_8-branch) -@@ -7,8 +7,9 @@ - - #include "vect-fcm.x" - --/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */ -+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */ - /* { dg-final { scan-assembler "fcmgt\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d" } } */ - /* { dg-final { scan-assembler "fcmgt\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, 0" } } */ -+/* { dg-final { scan-assembler "fcmle\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, 0" } } */ - /* { dg-final { cleanup-tree-dump "vect" } } */ - /* { dg-final { cleanup-saved-temps } } */ -Index: gcc/testsuite/gcc.target/i386/pr56560.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/i386/pr56560.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/i386/pr56560.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,19 @@ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -mavx -mvzeroupper -dp" } */ -+ -+extern void abort (void); -+ -+typedef double vec_t __attribute__((vector_size(32))); -+ -+struct S { int i1; int i2; int i3; }; -+ -+extern int bar (vec_t, int, int, int, int, int, struct S); -+ -+void foo (vec_t v, struct S s) -+{ -+ int i = bar (v, 1, 2, 3, 4, 5, s); -+ if (i == 0) -+ abort (); -+} -+ -+/* { dg-final { scan-assembler-not "avx_vzeroupper" } } */ -Index: gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c (.../branches/gcc-4_8-branch) -@@ -10,5 +10,5 @@ - void extern - avx2_test (void) - { -- x = _mm_broadcastsi128_si256 (y); -+ x = _mm256_broadcastsi128_si256 (y); - } -Index: gcc/testsuite/gcc.target/i386/pr56903.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/i386/pr56903.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/i386/pr56903.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,18 @@ -+/* PR rtl-optimization/56903 */ -+/* { dg-do compile } */ -+/* { dg-options "-Os" } */ -+/* { dg-additional-options "-march=pentium3" { target ia32 } } */ -+ -+int a, *b, c; -+struct S { int s : 1; } *fn1 (void); -+extern int fn3 (void), fn4 (int *); -+ -+void -+fn2 (void) -+{ -+ int e = fn3 (); -+ char f = c + fn1 ()->s * 4; -+ if (*b && f == e) -+ a = *b; -+ fn4 (b); -+} -Index: gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c (.../branches/gcc-4_8-branch) -@@ -19,7 +19,7 @@ - for (j = 0; j < 2; j++) - s1.a[j] = j * i; - -- res.x = _mm_broadcastsi128_si256 (s1.x); -+ res.x = _mm256_broadcastsi128_si256 (s1.x); - - memcpy (res_ref, s1.a, 16); - memcpy (res_ref + 2, s1.a, 16); -Index: gcc/testsuite/gcc.target/i386/mmx-1.c -=================================================================== ---- a/src/gcc/testsuite/gcc.target/i386/mmx-1.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.target/i386/mmx-1.c (.../branches/gcc-4_8-branch) -@@ -1,4 +1,5 @@ - /* { dg-do compile } */ -+/* { dg-do compile { target { nonpic } } } */ - /* { dg-options "-O2 -Werror-implicit-function-declaration -mmmx" } */ - - /* Test that the intrinsics compile with optimization. All of them are -Index: gcc/testsuite/gfortran.dg/eof_5.f90 -=================================================================== ---- a/src/gcc/testsuite/gfortran.dg/eof_5.f90 (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gfortran.dg/eof_5.f90 (.../branches/gcc-4_8-branch) -@@ -0,0 +1,21 @@ -+! { dg-do run } -+! -+! PR fortran/56696 -+! -+! Contributed by Keith Refson -+! -+ -+program iotest -+ character(len=258) :: inp = ' 1.0 1.0 1.0' -+ character(len=7) :: inp2 = '1 2 3 4' -+ integer :: ios -+ real :: a1, a2, a3, a4 -+ -+ read(inp2,*,iostat=ios) a1, a2, a3, a4 -+ if (ios /= 0) call abort () -+ -+ read(inp,*,iostat=ios) a1, a2, a3, a4 -+ if (ios == 0) call abort () -+! write(*,*) 'IOSTAT=',ios -+end program iotest -+ -Index: gcc/testsuite/gfortran.dg/namelist_80.f90 -=================================================================== ---- a/src/gcc/testsuite/gfortran.dg/namelist_80.f90 (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gfortran.dg/namelist_80.f90 (.../branches/gcc-4_8-branch) -@@ -0,0 +1,27 @@ -+! { dg-do run } -+! -+! PR fortran/56735 -+! -+! Contributed by Adam Williams -+! -+ PROGRAM TEST -+ INTEGER int1,int2,int3 -+ NAMELIST /temp/ int1,int2,int3 -+ -+ int1 = -1; int2 = -2; int3 = -3 -+ -+ OPEN (53, STATUS='scratch') -+ WRITE (53, '(a)') ' ?' -+ WRITE (53, '(a)') -+ WRITE (53, '(a)') '$temp' -+ WRITE (53, '(a)') ' int1=1' -+ WRITE (53, '(a)') ' int2=2' -+ WRITE (53, '(a)') ' int3=3' -+ WRITE (53, '(a)') '$END' -+ REWIND(53) -+ -+ READ (53, temp) -+ CLOSE (53) -+ -+ if (int1 /= 1 .or. int2 /= 2 .or. int3 /= 3) call abort() -+ END PROGRAM -Index: gcc/testsuite/gfortran.dg/select_type_33.f03 -=================================================================== ---- a/src/gcc/testsuite/gfortran.dg/select_type_33.f03 (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gfortran.dg/select_type_33.f03 (.../branches/gcc-4_8-branch) -@@ -0,0 +1,43 @@ -+! { dg-do compile } -+! -+! PR fortran/56816 -+! The unfinished SELECT TYPE statement below was leading to an ICE because -+! at the time the statement was rejected, the compiler tried to free -+! some symbols that had already been freed with the SELECT TYPE -+! namespace. -+! -+! Original testcase from Dominique Pelletier -+! -+module any_list_module -+ implicit none -+ -+ private -+ public :: anylist, anyitem -+ -+ type anylist -+ end type -+ -+ type anyitem -+ class(*), allocatable :: value -+ end type -+end module any_list_module -+ -+ -+module my_item_list_module -+ -+ use any_list_module -+ implicit none -+ -+ type, extends (anyitem) :: myitem -+ end type myitem -+ -+contains -+ -+ subroutine myprint (this) -+ class (myitem) :: this -+ -+ select type ( v => this % value ! { dg-error "parse error in SELECT TYPE" } -+ end select ! { dg-error "Expecting END SUBROUTINE" } -+ end subroutine myprint -+ -+end module my_item_list_module -Index: gcc/testsuite/gfortran.dg/do_1.f90 -=================================================================== ---- a/src/gcc/testsuite/gfortran.dg/do_1.f90 (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gfortran.dg/do_1.f90 (.../branches/gcc-4_8-branch) -@@ -1,5 +1,4 @@ --! { dg-do run { xfail *-*-* } } --! XFAIL is tracked in PR 54932 -+! { dg-do run } - ! Program to check corner cases for DO statements. - program do_1 - implicit none -Index: gcc/testsuite/gfortran.dg/array_constructor_44.f90 -=================================================================== ---- a/src/gcc/testsuite/gfortran.dg/array_constructor_44.f90 (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gfortran.dg/array_constructor_44.f90 (.../branches/gcc-4_8-branch) -@@ -0,0 +1,12 @@ -+! { dg-do run } -+! { dg-options "-ffrontend-optimize" } -+! PR 56872 - wrong front-end optimization with a single constructor. -+! Original bug report by Rich Townsend. -+ integer :: k -+ real :: s -+ integer :: m -+ s = 2.0 -+ m = 4 -+ res = SUM([(s**(REAL(k-1)/REAL(m-1)),k=1,m)]) -+ if (abs(res - 5.84732246) > 1e-6) call abort -+ end -Index: gcc/testsuite/gfortran.dg/fmt_cache_3.f90 -=================================================================== ---- a/src/gcc/testsuite/gfortran.dg/fmt_cache_3.f90 (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gfortran.dg/fmt_cache_3.f90 (.../branches/gcc-4_8-branch) -@@ -0,0 +1,80 @@ -+! { dg-do run } -+! -+! PR fortran/56737 -+! -+! Contributed by Jonathan Hogg -+! -+module hsl_mc73_single -+ implicit none -+ integer, parameter, private :: wp = kind(0.0) -+contains -+ subroutine mc73_fiedler(n,lirn,irn,ip,list) -+ integer, intent (in) :: n -+ integer, intent (in) :: lirn -+ integer, intent (in) :: irn(*) -+ integer, intent (in) :: ip(*) -+ integer, intent (out) :: list(*) -+ -+ integer :: icntl(10) -+ -+ call fiedler_graph(icntl) -+ end subroutine mc73_fiedler -+ -+ subroutine mc73_order -+ integer :: icntl(10) -+ -+ call fiedler_graph(icntl) -+ end subroutine mc73_order -+ -+ subroutine fiedler_graph(icntl) -+ integer, intent (in) :: icntl(10) -+ -+ real (kind = wp) :: tol -+ real (kind = wp) :: tol1 -+ real (kind = wp) :: rtol -+ -+ call multilevel_eig(tol,tol1,rtol,icntl) -+ end subroutine fiedler_graph -+ -+ subroutine multilevel_eig(tol,tol1,rtol,icntl) -+ real (kind = wp), intent (in) :: tol,tol1,rtol -+ integer, intent(in) :: icntl(10) -+ -+ call level_print(6,'end of level ',1) -+ end subroutine multilevel_eig -+ -+ subroutine level_print(mp,title1,level) -+ character (len = *), intent(in) :: title1 -+ integer, intent(in) :: mp,level -+ character(len=80) fmt -+ integer :: char_len1,char_len2 -+ -+ char_len1=len_trim(title1) -+ -+ write (fmt,"('(',i4,'(1H ),6h===== ,a',i4,',i4,6h =====)')") & -+ level*3, char_len1 -+! print *, "fmt = ", fmt -+! print *, "title1= ", title1 -+! print *, "level = ", level -+ write (66,fmt) title1,level -+ end subroutine level_print -+end module hsl_mc73_single -+ -+program test -+ use hsl_mc73_single -+ implicit none -+ character(len=200) :: str(2) -+ integer, parameter :: wp = kind(0.0) -+ -+ integer :: n, lirn -+ integer :: irn(1), ip(1), list(1) -+ -+ str = "" -+ open (66, status='scratch') -+ call mc73_order -+ call mc73_fiedler(n,lirn,irn,ip,list) -+ rewind (66) -+ read (66, '(a)') str -+ close (66) -+ if (any (str /= " ===== end of level 1 =====")) call abort() -+end program test -Index: gcc/testsuite/gcc.c-torture/execute/pr33992.c -=================================================================== ---- a/src/gcc/testsuite/gcc.c-torture/execute/pr33992.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr33992.c (.../branches/gcc-4_8-branch) -@@ -7,7 +7,7 @@ - abort (); - } - --void __attribute__((always_inline)) -+static void __attribute__((always_inline)) - foo (unsigned long long *r) - { - int i; -Index: gcc/testsuite/gcc.c-torture/execute/pr56899.c -=================================================================== ---- a/src/gcc/testsuite/gcc.c-torture/execute/pr56899.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr56899.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,47 @@ -+/* PR tree-optimization/56899 */ -+ -+#if __SIZEOF_INT__ == 4 && __CHAR_BIT__ == 8 -+__attribute__((noinline, noclone)) void -+f1 (int v) -+{ -+ int x = -214748365 * (v - 1); -+ if (x != -1932735285) -+ __builtin_abort (); -+} -+ -+__attribute__((noinline, noclone)) void -+f2 (int v) -+{ -+ int x = 214748365 * (v + 1); -+ if (x != -1932735285) -+ __builtin_abort (); -+} -+ -+__attribute__((noinline, noclone)) void -+f3 (unsigned int v) -+{ -+ unsigned int x = -214748365U * (v - 1); -+ if (x != -1932735285U) -+ __builtin_abort (); -+} -+ -+__attribute__((noinline, noclone)) void -+f4 (unsigned int v) -+{ -+ unsigned int x = 214748365U * (v + 1); -+ if (x != -1932735285U) -+ __builtin_abort (); -+} -+#endif -+ -+int -+main () -+{ -+#if __SIZEOF_INT__ == 4 && __CHAR_BIT__ == 8 -+ f1 (10); -+ f2 (-10); -+ f3 (10); -+ f4 (-10U); -+#endif -+ return 0; -+} -Index: gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp -=================================================================== ---- a/src/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp (.../branches/gcc-4_8-branch) -@@ -43,7 +43,8 @@ - } - if { [istarget *-*-eabi*] - || [istarget *-*-elf] -- || [istarget *-*-mingw*] } { -+ || [istarget *-*-mingw*] -+ || [istarget *-*-rtems*] } { - lappend additional_flags "-Wl,--allow-multiple-definition" - } - -Index: gcc/testsuite/gcc.c-torture/execute/pr56837.c -=================================================================== ---- a/src/gcc/testsuite/gcc.c-torture/execute/pr56837.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr56837.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,21 @@ -+extern void abort (void); -+_Complex int a[1024]; -+ -+__attribute__((noinline, noclone)) void -+foo (void) -+{ -+ int i; -+ for (i = 0; i < 1024; i++) -+ a[i] = -1; -+} -+ -+int -+main () -+{ -+ int i; -+ foo (); -+ for (i = 0; i < 1024; i++) -+ if (a[i] != -1) -+ abort (); -+ return 0; -+} -Index: gcc/testsuite/gcc.c-torture/execute/pr56962.c -=================================================================== ---- a/src/gcc/testsuite/gcc.c-torture/execute/pr56962.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr56962.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,30 @@ -+/* PR tree-optimization/56962 */ -+ -+extern void abort (void); -+long long v[144]; -+ -+__attribute__((noinline, noclone)) void -+bar (long long *x) -+{ -+ if (x != &v[29]) -+ abort (); -+} -+ -+__attribute__((noinline, noclone)) void -+foo (long long *x, long y, long z) -+{ -+ long long a, b, c; -+ a = x[z * 4 + y * 3]; -+ b = x[z * 5 + y * 3]; -+ c = x[z * 5 + y * 4]; -+ x[y * 4] = a; -+ bar (&x[z * 5 + y]); -+ x[z * 5 + y * 5] = b + c; -+} -+ -+int -+main () -+{ -+ foo (v, 24, 1); -+ return 0; -+} -Index: gcc/testsuite/gcc.c-torture/compile/pr56984.c -=================================================================== ---- a/src/gcc/testsuite/gcc.c-torture/compile/pr56984.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.c-torture/compile/pr56984.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,9 @@ -+/* PR tree-optimization/56984 */ -+ -+int -+foo (int x) -+{ -+ if ((x >> 31) < -1) -+ x++; -+ return x; -+} -Index: gcc/testsuite/gcc.c-torture/compile/pr56745.c -=================================================================== ---- a/src/gcc/testsuite/gcc.c-torture/compile/pr56745.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.c-torture/compile/pr56745.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,15 @@ -+/* PR rtl-optimization/56745 */ -+ -+unsigned char a[6]; -+ -+void -+foo () -+{ -+ int i; -+ for (i = 5; i >= 0; i++) -+ { -+ if (++a[i] != 0) -+ break; -+ ++a[i]; -+ } -+} -Index: gcc/testsuite/gcc.dg/pr56890-2.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/pr56890-2.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/pr56890-2.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,19 @@ -+/* PR target/56890 */ -+/* Reported by Rainer Jung */ -+ -+/* { dg-do assemble } */ -+/* { dg-options "-O" } */ -+ -+unsigned int buggy(unsigned int min, unsigned int max) -+{ -+ unsigned int number; -+ if (max < 16384) { -+ unsigned short num16; -+ num16 = min + (long) ((double) (max - min + 1.0) * (num16 / (65535 + 1.0))); -+ return num16; -+ } -+ else { -+ (number) = min + (long) ((double) (max - min + 1.0) * (number / (4294967295U + 1.0))); -+ } -+ return number; -+} -Index: gcc/testsuite/gcc.dg/pr56992.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/pr56992.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/pr56992.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,18 @@ -+/* PR rtl-optimization/56992 */ -+/* { dg-do compile } */ -+/* { dg-options "-Og -g" } */ -+ -+inline int -+foo (const char *x) -+{ -+ return __builtin_strlen (x); -+} -+ -+int -+bar (const char *x, unsigned int *y) -+{ -+ unsigned int l = foo (x); -+ if (l > 15) -+ l = 15; -+ *y = l; -+} -Index: gcc/testsuite/gcc.dg/uninit-pred-5_a.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/uninit-pred-5_a.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/uninit-pred-5_a.c (.../branches/gcc-4_8-branch) -@@ -6,8 +6,9 @@ - int blah(int); - void t(int); - -+static int - __attribute__((always_inline)) --int foo (int n, int* v, int r) -+foo (int n, int* v, int r) - { - int flag = 0; - if (r > n) -Index: gcc/testsuite/gcc.dg/noreturn-8.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/noreturn-8.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/noreturn-8.c (.../branches/gcc-4_8-branch) -@@ -1,4 +1,4 @@ --/* { dg-do run } */ -+/* { dg-do run { target nonpic } } */ - /* { dg-options "-O2" } */ - void exit (int); - void noreturn_autodetection_failed (); -Index: gcc/testsuite/gcc.dg/pr48186.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/pr48186.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/pr48186.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,5 @@ -+/* PR tree-optimization/48186 */ -+/* { dg-do compile } */ -+/* { dg-options "-O --param hot-bb-frequency-fraction=0" } */ -+ -+void foo (void) { } -Index: gcc/testsuite/gcc.dg/uninit-pred-5_b.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/uninit-pred-5_b.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/uninit-pred-5_b.c (.../branches/gcc-4_8-branch) -@@ -6,8 +6,9 @@ - int blah(int); - void t(int); - -+static int - __attribute__((always_inline)) --int foo (int n, int* v, int r) -+foo (int n, int* v, int r) - { - int flag = 0; - if (r > n) -Index: gcc/testsuite/gcc.dg/const-1.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/const-1.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/const-1.c (.../branches/gcc-4_8-branch) -@@ -1,4 +1,4 @@ --/* { dg-do compile } */ -+/* { dg-do compile { target nonpic } } */ - /* { dg-options "-O2 -Wsuggest-attribute=const" } */ - - extern int extern_const(int a) __attribute__ ((const)); -Index: gcc/testsuite/gcc.dg/pr55702.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/pr55702.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/pr55702.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,9 @@ -+/* PR sanitizer/55702 */ -+/* { dg-do compile { target { x86_64-*-linux* && lp64 } } } */ -+/* { dg-options "-fsanitize=thread" } */ -+ -+void -+foo () -+{ -+ __builtin_return (0); -+} -Index: gcc/testsuite/gcc.dg/torture/pr55964-2.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/torture/pr55964-2.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/torture/pr55964-2.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,21 @@ -+/* { dg-do compile } */ -+/* { dg-options "-ftree-loop-distribution -funswitch-loops" } */ -+ -+struct test_struct { -+ int a, b[10], c[10], d[10]; -+}; -+ -+extern struct test_struct* new_struct; -+ -+void testfunc(struct test_struct* old_struct) -+{ -+ int i; -+ for (i = 0; i < 10; ++i) -+ { -+ new_struct->b[i] = old_struct ? old_struct->b[i] : -1; -+ new_struct->c[i] = old_struct ? old_struct->c[i] : 0; -+ new_struct->d[i] = old_struct ? old_struct->d[i] : 0; -+ } -+ if (old_struct) -+ old_struct->a++; -+} -Index: gcc/testsuite/gcc.dg/torture/pr56501.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/torture/pr56501.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/torture/pr56501.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,27 @@ -+/* { dg-do compile } */ -+/* { dg-options "-w" } */ -+ -+int a; -+void try_help () __attribute__ ((__noreturn__)); -+void try_help () -+{ -+} -+ -+int main () -+{ -+ switch (a) -+ { -+ case '1': -+ case '2': -+ case '3': -+ case '4': -+ case '5': -+ case '6': -+ case '7': -+ case '8': -+ case '9': -+ break; -+ default: -+ try_help (); -+ } -+} -Index: gcc/testsuite/gcc.dg/torture/pr56407.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/torture/pr56407.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/torture/pr56407.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,48 @@ -+/* { dg-do run } */ -+ -+extern void abort(void); -+extern int rand(void); -+ -+static void copy(int *r,int *a,int na) -+{ -+ int i; -+ for( i = 0 ; i < na ; i++ ) -+ r[i] = a[i]; -+} -+ -+static void foo(int *a,int na) -+{ -+ int i; -+ for( i = 0 ; i < na ; i++ ) -+ a[i] = rand(); -+} -+ -+static int cmp(int *a,int *b,int n) -+{ -+ int i; -+ for( i = 0 ; i < n ; i++ ) -+ if ( a[i] != b[i] ) -+ return -1; -+ return 0; -+} -+ -+void __attribute__((noinline,noclone)) -+test(int sz,int comm) -+{ -+ int j,n; -+ int v[64],w[64]; -+ for( j = 1 ; j <= sz ; j++ ) -+ { -+ n = (2 * j - 1) * (2 * j - 1); -+ foo(w,n); -+ copy(v,w,n); -+ if ( comm ) -+ if ( cmp(v,w,n) ) abort (); -+ } -+} -+ -+int main() -+{ -+ test(2,1); -+ return 0; -+} -Index: gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c (.../branches/gcc-4_8-branch) -@@ -1,4 +1,4 @@ --/* { dg-do compile } */ -+/* { dg-do compile { target nonpic } } */ - /* { dg-options "-O2 -fdump-tree-pre-stats -fdump-tree-fre1" } */ - #include - -Index: gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c (.../branches/gcc-4_8-branch) -@@ -1,4 +1,4 @@ --/* { dg-do compile } */ -+/* { dg-do compile { target nonpic } } */ - /* { dg-options "-O3 -fdump-tree-fnsplit -fdump-tree-optimized" } */ - - struct a {int a,b;}; -Index: gcc/testsuite/gcc.dg/pr56890-1.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/pr56890-1.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/pr56890-1.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,15 @@ -+/* PR target/56890 */ -+/* Reported by Rainer Jung */ -+ -+/* { dg-do assemble } */ -+/* { dg-options "-O2" } */ -+ -+unsigned int buggy(unsigned int min, unsigned int max) -+{ -+ if (max < 16384) { -+ unsigned short num16 = 0; -+ num16 = min + (long) ((double) (max - min + 1.0) * (num16 / (65535 + 1.0))); -+ return num16; -+ } -+ return 0; -+} -Index: gcc/testsuite/gcc.dg/ipa/pure-const-1.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/ipa/pure-const-1.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/ipa/pure-const-1.c (.../branches/gcc-4_8-branch) -@@ -1,4 +1,4 @@ --/* { dg-do compile } */ -+/* { dg-do compile { target nonpic } } */ - /* { dg-options "-O3 -fdump-tree-local-pure-const1 -fdump-ipa-pure-const -fdump-tree-optimized -fno-early-inlining" } */ - void abort (void); - int error_code; -Index: gcc/testsuite/gcc.dg/vect/pr56920.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/vect/pr56920.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/vect/pr56920.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,21 @@ -+/* PR tree-optimization/56920 */ -+/* { dg-additional-options "-O3" } */ -+ -+#include "tree-vect.h" -+ -+extern void abort (void); -+ -+int -+main () -+{ -+ unsigned int a[15], i; -+ check_vect (); -+ for (i = 0; i < 15; ++i) -+ a[i] = (i * 2) % 15; -+ for (i = 0; i < 15; ++i) -+ if (a[i] != (i * 2) % 15) -+ abort (); -+ return 0; -+} -+ -+/* { dg-final { cleanup-tree-dump "vect" } } */ -Index: gcc/testsuite/gcc.dg/vect/pr56918.c -=================================================================== ---- a/src/gcc/testsuite/gcc.dg/vect/pr56918.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/gcc.dg/vect/pr56918.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,31 @@ -+/* PR tree-optimization/56918 */ -+/* { dg-additional-options "-O3" } */ -+ -+#include "tree-vect.h" -+ -+extern void abort (void); -+double data[8]; -+ -+__attribute__((noinline, noclone)) void -+foo () -+{ -+ int i; -+ for (i = 0; i < 8; ++i) -+ data[i] = ((i + 2) % 3) + 1; -+} -+ -+int -+main () -+{ -+ int i; -+ check_vect (); -+ foo (); -+ if (data[0] != 3 || data[7] != 1) -+ abort (); -+ for (i = 1; i < 4; ++i) -+ if (data[i] != i || data[i + 3] != i) -+ abort (); -+ return 0; -+} -+ -+/* { dg-final { cleanup-tree-dump "vect" } } */ -Index: gcc/testsuite/ChangeLog -=================================================================== ---- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,272 @@ -+2013-04-18 Mikael Morin -+ -+ PR fortran/56816 -+ * gfortran.dg/select_type_33.f03: New test. -+ -+2013-04-18 Jakub Jelinek -+ -+ PR tree-optimization/56984 -+ * gcc.c-torture/compile/pr56984.c: New test. -+ -+ PR rtl-optimization/56992 -+ * gcc.dg/pr56992.c: New test. -+ -+2013-04-16 Uros Bizjak -+ -+ Backport from mainline -+ 2013-04-16 Uros Bizjak -+ -+ * g++.dg/ipa/devirt-c-7.C: Require nonpic effective target. -+ * gcc.c-torture/execute/pr33992.x: Remove. -+ * gcc.c-torture/execute/pr33992.c (foo): Declare as static. -+ * gcc.dg/uninit-pred-5_a.c (foo): Ditto. -+ * gcc.dg/uninit-pred-5_b.c (foo): Ditto. -+ -+ Backport from mainline -+ 2013-03-27 Alexander Ivchenko -+ -+ * g++.dg/ipa/ivinline-1.C: Add target nonpic. -+ * g++.dg/ipa/ivinline-2.C: Likewise. -+ * g++.dg/ipa/ivinline-3.C: Likewise. -+ * g++.dg/ipa/ivinline-4.C: Likewise. -+ * g++.dg/ipa/ivinline-5.C: Likewise. -+ * g++.dg/ipa/ivinline-7.C: Likewise. -+ * g++.dg/ipa/ivinline-8.C: Likewise. -+ * g++.dg/ipa/ivinline-9.C: Likewise. -+ * g++.dg/cpp0x/noexcept03.C: Likewise. -+ * gcc.dg/const-1.c: Likewise. -+ * gcc.dg/ipa/pure-const-1.c: Likewise. -+ * gcc.dg/noreturn-8.c: Likewise. -+ * gcc.target/i386/mmx-1.c: Likewise. -+ * gcc.dg/tree-ssa/ipa-split-5.c: Likewise. -+ * gcc.dg/tree-ssa/loadpre6.c: Likewise. -+ * gcc.c-torture/execute/pr33992.x: New file. -+ -+2013-04-15 Jakub Jelinek -+ -+ PR tree-optimization/56962 -+ * gcc.c-torture/execute/pr56962.c: New test. -+ -+2013-04-15 Eric Botcazou -+ -+ * gcc.dg/pr56890-1.c: New test. -+ * gcc.dg/pr56890-2.c: Likewise. -+ -+2013-04-12 Vladimir Makarov -+ -+ PR target/56903 -+ * gcc.target/i386/pr56903.c: New test. -+ -+2013-04-12 Jakub Jelinek -+ -+ PR tree-optimization/56918 -+ PR tree-optimization/56920 -+ * gcc.dg/vect/pr56918.c: New test. -+ * gcc.dg/vect/pr56920.c: New test. -+ -+2013-04-11 Jakub Jelinek -+ -+ PR c++/56895 -+ * g++.dg/template/arrow4.C: New test. -+ -+2013-04-11 Paolo Carlini -+ -+ PR c++/56913 -+ * g++.dg/cpp0x/sfinae44.C: New. -+ -+2013-04-11 James Greenhalgh -+ -+ Backported from mainline. -+ 2013-04-11 James Greenhalgh -+ -+ * gcc.target/aarch64/vect-fcm.x: Add check for zero forms of -+ inverse operands. -+ * gcc.target/aarch64/vect-fcm-eq-d.c: Check that new zero form -+ loop is vectorized. -+ * gcc.target/aarch64/vect-fcm-eq-f.c: Likewise. -+ * gcc.target/aarch64/vect-fcm-ge-d.c: Check that new zero form -+ loop is vectorized and that the correct instruction is generated. -+ * gcc.target/aarch64/vect-fcm-ge-f.c: Likewise. -+ * gcc.target/aarch64/vect-fcm-gt-d.c: Likewise. -+ * gcc.target/aarch64/vect-fcm-gt-f.c: Likewise. -+ -+2013-04-11 Jakub Jelinek -+ -+ PR tree-optimization/56899 -+ * gcc.c-torture/execute/pr56899.c: New test. -+ -+2013-04-10 Jakub Jelinek -+ -+ PR c++/56895 -+ * g++.dg/template/arrow3.C: New test. -+ -+ Backported from mainline -+ 2013-04-09 Jakub Jelinek -+ -+ PR middle-end/56883 -+ * c-c++-common/gomp/pr56883.c: New test. -+ -+2013-04-08 Thomas Koenig -+ -+ PR fortran/56782 -+ Backport from trunk. -+ * gfortran.dg/array_constructor_44.f90: New test. -+ -+2013-04-08 Jakub Jelinek -+ -+ * gcc.c-torture/execute/pr56837.c: New test. -+ -+2013-04-04 Marek Polacek -+ -+ Backport from mainline: -+ 2013-04-04 Marek Polacek -+ -+ PR tree-optimization/48186 -+ * gcc.dg/pr48186.c: New test. -+ -+2013-04-04 Kyrylo Tkachov -+ -+ Backport from mainline: -+ 2013-03-25 Kyrylo Tkachov -+ -+ PR target/56720 -+ * gcc.target/arm/neon-vcond-gt.c: New test. -+ * gcc.target/arm/neon-vcond-ltgt.c: Likewise. -+ * gcc.target/arm/neon-vcond-unordered.c: Likewise. -+ -+2013-04-04 Richard Biener -+ -+ PR tree-optimization/56837 -+ * g++.dg/torture/pr56837.C: New testcase. -+ -+2013-04-03 Marek Polacek -+ -+ Backport from mainline: -+ 2013-04-03 Marek Polacek -+ -+ PR sanitizer/55702 -+ * gcc.dg/pr55702.c: New test. -+ -+2013-04-03 Jakub Jelinek -+ -+ PR debug/56819 -+ * g++.dg/debug/pr56819.C: New test. -+ -+2013-04-03 Richard Biener -+ -+ PR tree-optimization/56817 -+ * g++.dg/torture/pr56817.C: New testcase. -+ -+2013-04-03 Richard Biener -+ -+ PR tree-optimization/55964 -+ * gcc.dg/torture/pr55964-2.c: New testcase. -+ -+2013-04-03 Richard Biener -+ -+ PR tree-optimization/56501 -+ * gcc.dg/torture/pr56501.c: New testcase. -+ -+2013-04-03 Richard Biener -+ -+ PR tree-optimization/56407 -+ * gcc.dg/torture/pr56407.c: New testcase. -+ -+2013-04-02 Jakub Jelinek -+ -+ PR rtl-optimization/56745 -+ * gcc.c-torture/compile/pr56745.c: New test. -+ -+2013-04-02 Tobias Burnus -+ -+ Backport from mainline: -+ 2013-03-28 Tobias Burnus -+ -+ PR fortran/56735 -+ * gfortran.dg/namelist_80.f90: New. -+ -+2013-04-02 Tobias Burnus -+ -+ Backport from mainline: -+ 2013-03-29 Tobias Burnus -+ -+ PR fortran/56737 -+ * testsuite/gfortran.dg/fmt_cache_3.f90: New. -+ -+2013-04-02 Richard Biener -+ -+ PR middle-end/56768 -+ * g++.dg/torture/pr56768.C: New testcase. -+ -+2013-04-01 Paolo Carlini -+ -+ PR c++/55951 -+ * g++.dg/ext/desig5.C: New. -+ -+2013-03-29 Kirill Yukhin -+ -+ * gcc.target/i386/avx2-vbroadcastsi128-1.c: Fix intrinsic name. -+ * gcc.target/i386/avx2-vbroadcastsi128-1.c: Ditto. -+ -+2013-03-28 Tejas Belagod -+ -+ PR middle-end/56694 -+ * g++.dg/torture/pr56694.C: Fix test case to build on bare-metal -+ targets. -+ -+2013-03-25 Paolo Carlini -+ -+ PR c++/56722 -+ * g++.dg/cpp0x/range-for23.C: New. -+ -+2013-03-25 Richard Biener -+ -+ PR middle-end/56694 -+ * g++.dg/torture/pr56694.C: New testcase. -+ -+2013-03-25 Rainer Orth -+ -+ Backport from mainline: -+ 2013-03-20 Rainer Orth -+ -+ PR fortran/54932 -+ * gfortran.dg/do_1.f90: Don't xfail. -+ -+2013-03-24 Tobias Burnus -+ -+ PR fortran/56696 -+ * gfortran.dg/eof_5.f90: New. -+ -+2013-03-22 Sebastian Huber -+ -+ * gcc.c-torture/execute/builtins/builtins.exp: Sort targets -+ alphabetically. -+ -+2013-03-22 Paolo Carlini -+ -+ PR c++/56582 -+ * g++.dg/cpp0x/constexpr-array5.C: New. -+ -+2013-03-22 H.J. Lu -+ -+ PR target/56560 -+ * gcc.target/i386/pr56560.c: New file. -+ -+2013-03-22 Sebastian Huber -+ -+ PR testsuite/55994 -+ * gcc.c-torture/execute/builtins/builtins.exp: Add -+ -Wl,--allow-multiple-definition for RTEMS targets. -+ -+2013-03-22 Jakub Jelinek -+ -+ Backported from mainline -+ 2013-03-16 Jakub Jelinek -+ -+ PR c++/56607 -+ * g++.dg/warn/Wdiv-by-zero-2.C: New test. -+ * c-c++-common/pr56607.c: New test. -+ - 2013-03-22 Release Manager - - * GCC 4.8.0 released. -@@ -14,8 +283,8 @@ - - 2013-03-15 Tobias Burnus - -- PR fortran/56615 -- * gfortran.dg/transfer_intrinsic_5.f90: New. -+ PR fortran/56615 -+ * gfortran.dg/transfer_intrinsic_5.f90: New. - - 2013-03-15 Kai Tietz - -@@ -181,8 +450,7 @@ - - 2013-03-06 Kai Tietz - -- * gcc.dg/lto/20090914-2_0.c: Skip for mingw and cygwin -- targets. -+ * gcc.dg/lto/20090914-2_0.c: Skip for mingw and cygwin targets. - * gcc.dg/lto/20091013-1_1.c: Set x64-mingw as xfail. - * gcc.dg/lto/20091013-1_2.c: Likewise. - * gcc.dg/pr31490.c: Adjust for LLP64 targets. -@@ -644,8 +912,10 @@ - - Avoid instrumenting duplicated memory access in the same basic block - * c-c++-common/asan/no-redundant-instrumentation-1.c: New test. -- * testsuite/c-c++-common/asan/no-redundant-instrumentation-2.c: Likewise. -- * testsuite/c-c++-common/asan/no-redundant-instrumentation-3.c: Likewise. -+ * testsuite/c-c++-common/asan/no-redundant-instrumentation-2.c: -+ Likewise. -+ * testsuite/c-c++-common/asan/no-redundant-instrumentation-3.c: -+ Likewise. - * testsuite/c-c++-common/asan/inc.c: Likewise. - - 2013-02-12 Vladimir Makarov -@@ -657,8 +927,7 @@ - Tobias Burnus - - PR testsuite/56082 -- * gfortran.dg/bind_c_bool_1.f90 (sub): Change kind=4 -- to kind=2. -+ * gfortran.dg/bind_c_bool_1.f90 (sub): Change kind=4 to kind=2. - - 2013-02-12 Richard Biener - -@@ -865,7 +1134,8 @@ - 2013-02-06 Janus Weil - - PR fortran/55978 -- * gfortran.dg/class_optional_2.f90: Uncomment some cases which work now. -+ * gfortran.dg/class_optional_2.f90: Uncomment some cases -+ which work now. - - 2013-02-06 Jakub Jelinek - -Index: gcc/testsuite/g++.dg/debug/pr56819.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/debug/pr56819.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/debug/pr56819.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,27 @@ -+// PR debug/56819 -+// { dg-do compile } -+// { dg-options "-fcompare-debug" } -+ -+template -+struct A -+{ -+ template -+ struct B; -+}; -+ -+template -+struct C -+{ -+ typedef int I; -+}; -+ -+template -+class D -+{ -+ typedef A E; -+ typedef typename T::template B F; -+ typedef typename C ::I I; -+ A foo () { return A (); } -+}; -+ -+template class D >; -Index: gcc/testsuite/g++.dg/ext/desig5.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/ext/desig5.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/ext/desig5.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,7 @@ -+// PR c++/55951 -+ -+enum { A }; -+ -+static const char *a[] = { -+ [A] = "a" -+}; -Index: gcc/testsuite/g++.dg/warn/Wdiv-by-zero-2.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/warn/Wdiv-by-zero-2.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/warn/Wdiv-by-zero-2.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,34 @@ -+// PR c++/56607 -+// { dg-do compile { target { { lp64 || ilp32 } || llp64 } } } -+// { dg-options "-O2 -Wdiv-by-zero -std=c++11" } -+ -+constexpr int sc () { return sizeof (char); } -+constexpr int si () { return sizeof (int); } -+constexpr int zc () { return sc () - 1; } -+constexpr int zi (int d) { return si () / d - 1; } -+ -+int -+f1 (void) -+{ -+ return 1 / zc (); // { dg-warning "division by zero" } -+} -+ -+int -+f2 (void) -+{ -+ constexpr int x = zc (); -+ return 1 / x; // { dg-warning "division by zero" } -+} -+ -+int -+f3 (void) -+{ -+ return 1 / zi (3); // { dg-warning "division by zero" } -+} -+ -+int -+f4 (void) -+{ -+ constexpr int x = zi (3); -+ return 1 / x; // { dg-warning "division by zero" } -+} -Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this15.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this15.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this15.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,12 @@ -+// PR c++/56692 -+// { dg-require-effective-target c++11 } -+ -+struct Class { -+ void f () { } -+ static void f (int) { } -+}; -+ -+int main () -+{ -+ []{ Class::f(0); }; -+} -Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg4.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg4.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg4.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,8 @@ -+// PR c++/54764 -+// { dg-require-effective-target c++11 } -+ -+template -+struct c -+{ -+ int (*f)(int) = [](int i){return i + i;}; -+}; -Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this16.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this16.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this16.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,28 @@ -+// PR c++/56699 -+// { dg-require-effective-target c++11 } -+ -+struct A -+{ -+ int a; -+}; -+ -+struct T -+{ -+ int x; -+ -+ T() : x([]{ -+ sizeof(::A::a); -+ return 0; -+ }()) -+ {} -+}; -+ -+struct B -+{ -+ int a; -+}; -+ -+void f() -+{ -+ []{sizeof(B::a);}; -+} -Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-sfinae1.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-sfinae1.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-sfinae1.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,55 @@ -+// PR c++/56039 -+// { dg-do compile { target c++11 } } -+ -+template struct BoolSink { typedef void type; }; -+ -+template -+struct AddRvalueReferenceImpl { typedef T type; }; -+ -+template -+struct AddRvalueReferenceImpl::type> { // { dg-error "lambda" } -+ typedef T &&type; -+}; -+ -+template -+struct AddRvalueReference : AddRvalueReferenceImpl { }; -+ -+namespace ImplHelpers { -+ template -+ typename AddRvalueReference::type create(void) { } -+} -+ -+template -+struct IsConstructibleImpl { enum { value = 0 }; }; -+ -+template -+struct IsConstructibleImpl() ...); -+ }>::type, Args ...> { // { dg-error "lambda" } -+ enum { value = 1 }; -+}; -+ -+template -+struct IsConstructible : IsConstructibleImpl { }; -+ -+struct DestroyMe { -+ ~DestroyMe() = delete; -+}; -+ -+static_assert(+IsConstructible::value, "error"); -+static_assert(!IsConstructible::value, "error"); -+static_assert(+IsConstructible::value, "error"); -+static_assert(!IsConstructible::value, "error"); -+static_assert(!IsConstructible::value, "error"); -+ -+static_assert(+IsConstructible::value, "error"); -+static_assert(!IsConstructible::value, "error"); -+static_assert(+IsConstructible::value, "error"); -+ -+// { dg-prune-output "expected" } -+// { dg-prune-output "does not name a class" } -+// { dg-prune-output "static assertion" } -Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this13.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this13.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this13.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,20 @@ -+// PR c++/52374 -+// { dg-do compile { target c++11 } } -+ -+struct B -+{ -+ int get() const { return 42; } -+}; -+ -+template -+struct D -+ : public X -+{ -+ int get() const { return [this]() -> int { return X::get(); }(); } -+}; -+ -+int main() -+{ -+ D d; -+ d.get(); -+} -Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi3.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi3.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi3.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,9 @@ -+// PR c++/55972 -+// { dg-do compile { target c++11 } } -+ -+class C -+{ -+ void f(); -+ int j = 10; -+ int i = [this]() { return this->j; }(); -+}; -Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh3.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh3.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh3.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,14 @@ -+// PR c++/56388 -+// { dg-require-effective-target c++11 } -+ -+int main() -+{ -+ bool /*const*/ condition = false; -+ -+ [&]{ -+ try{} -+ catch(...){ -+ if(condition){} -+ } -+ }(); -+} -Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv8.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv8.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv8.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,15 @@ -+// PR c++/56447 -+// { dg-do compile { target c++11 } } -+ -+template -+void f() -+{ -+ int i; -+ // This lambda should not have a conversion op, since it captures i -+ int (*p)() = [=]{ return i; }; // { dg-error "cannot convert" } -+} -+ -+int main() -+{ -+ f(); -+} -Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this9.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this9.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this9.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,19 @@ -+// PR c++/54277 -+// { dg-do compile { target c++11 } } -+ -+struct Used -+{ -+ void foo() { } -+}; -+ -+template -+struct S -+{ -+ Used x; -+ -+ void bar() -+ { -+ auto f = [this] { x.foo(); }; -+ f(); -+ } -+}; -Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable2.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable2.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable2.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,23 @@ -+// PR c++/55532 -+// { dg-do compile { target c++11 } } -+ -+struct Foo { -+ void doit() { -+ } -+}; -+ -+template -+void oops(Foo &foo, const T &) { -+ auto fun = [&] () mutable { -+ foo.doit(); -+ }; -+ auto fun2 = [=]() { -+ fun(); // { dg-error "" } -+ }; -+ fun2(); -+} -+ -+int main() { -+ Foo foo; -+ oops(foo, 1); -+} -Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this14.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this14.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this14.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,49 @@ -+// PR c++/52014 -+// { dg-require-effective-target c++11 } -+ -+template -+void for_each(const Iterator first, const Iterator last, Func func) -+{ -+ for (Iterator it = first; it != last; ++it) { -+ func(*it); -+ } -+} -+ -+template -+struct helper -+{ -+ typedef typename T::size_type type; -+}; -+ -+template -+struct helper -+{ -+ typedef typename T::size_type type; -+}; -+ -+template -+struct helper -+{ -+ typedef typename T::size_type type; -+}; -+ -+struct bar -+{ -+ struct foo -+ { -+ typedef int size_type; -+ } foo_; -+ -+ void test() -+ { -+ int arr[] = { 1, 2, 3 }; -+ for_each(arr, arr + 3, [&](helper::type i) { -+ for_each(arr, arr + 3, [&](helper::type j) { }); -+ }); -+ } -+}; -+ -+int main() -+{ -+ return 0; -+} -Index: gcc/testsuite/g++.dg/cpp0x/decltype-call1.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/decltype-call1.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/decltype-call1.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,32 @@ -+// PR c++/52748 -+// N3276 -+// { dg-do compile { target c++11 } } -+ -+struct A; // { dg-error "forward declaration" } -+A f(); -+ -+decltype(f()) g1(); // OK -+decltype(((f()))) g2b(); // OK -+decltype(42,f()) g3(); // OK -+decltype(42,45,f()) g3b(); // OK -+decltype(42,45,(f())) g3c(); // OK -+decltype(42,((45,(f())))) g3c(); // OK -+ -+decltype(f(),42) g4(); // { dg-error "" } -+decltype(45,f(),42) g4b(); // { dg-error "" } -+ -+class B -+{ -+ ~B(); // { dg-error "private" } -+public: -+ int i; -+ void operator[](int); -+}; -+B h(); -+ -+void i(const B&); -+ -+decltype(h()) g5a(); // OK -+decltype(h().i) g5(); // { dg-error "" } -+decltype(h()[0]) g6(); // { dg-error "" } -+decltype(i(h())) g7(); // { dg-error "" } -Index: gcc/testsuite/g++.dg/cpp0x/decltype-call3.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/decltype-call3.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/decltype-call3.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,132 @@ -+// Testcase for N3276 and operator overloading -+// { dg-require-effective-target c++11 } -+ -+struct A; -+struct B { -+ A operator()(int); -+ A operator[](int); -+ A operator=(int); -+ A operator+=(int); -+ A operator-=(int); -+ A operator*=(int); -+ A operator/=(int); -+ A operator^=(int); -+ A operator&=(int); -+ A operator|=(int); -+ A operator<<=(int); -+ A operator>>=(int); -+}; -+ -+A operator-(B); -+A operator+(B); -+A operator*(B); -+A operator&(B); -+A operator!(B); -+A operator~(B); -+A operator++(B); -+A operator--(B); -+ -+A operator+(B,B); -+A operator-(B,B); -+A operator*(B,B); -+A operator/(B,B); -+A operator%(B,B); -+A operator^(B,B); -+A operator&(B,B); -+A operator|(B,B); -+A operator<(B,B); -+A operator>(B,B); -+A operator,(B,B); -+A operator<<(B,B); -+A operator>>(B,B); -+A operator==(B,B); -+A operator->*(B,B); -+ -+#define TRY(E) static_cast(0) -+ -+template -+void f() -+{ -+ B b; -+ TRY(b(0)); -+ TRY(b[0]); -+ TRY(b=0); -+ TRY(b+=0); -+ TRY(b-=0); -+ TRY(b*=0); -+ TRY(b/=0); -+ TRY(b^=0); -+ TRY(b&=0); -+ TRY(b|=0); -+ TRY(b<<=0); -+ TRY(b>>=0); -+ -+ TRY(-b); -+ TRY(+b); -+ TRY(*b); -+ TRY(&b); -+ TRY(!b); -+ TRY(~b); -+ TRY(++b); -+ TRY(--b); -+ -+ TRY(b+b); -+ TRY(b-b); -+ TRY(b*b); -+ TRY(b/b); -+ TRY(b%b); -+ TRY(b^b); -+ TRY(b&b); -+ TRY(b|b); -+ TRY(b>b); -+ TRY(b>b); -+ TRY(b==b); -+ TRY(b->*b); -+} -+ -+int main() -+{ -+ B b; -+ TRY(b(0)); -+ TRY(b[0]); -+ TRY(b=0); -+ TRY(b+=0); -+ TRY(b-=0); -+ TRY(b*=0); -+ TRY(b/=0); -+ TRY(b^=0); -+ TRY(b&=0); -+ TRY(b|=0); -+ TRY(b<<=0); -+ TRY(b>>=0); -+ -+ TRY(-b); -+ TRY(+b); -+ TRY(*b); -+ TRY(&b); -+ TRY(!b); -+ TRY(~b); -+ TRY(++b); -+ TRY(--b); -+ -+ TRY(b+b); -+ TRY(b-b); -+ TRY(b*b); -+ TRY(b/b); -+ TRY(b%b); -+ TRY(b^b); -+ TRY(b&b); -+ TRY(b|b); -+ TRY(b>b); -+ TRY(b>b); -+ TRY(b==b); -+ TRY(b->*b); -+ -+ f(); -+} -Index: gcc/testsuite/g++.dg/cpp0x/ref-qual2.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/ref-qual2.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/ref-qual2.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,75 @@ -+// In a .* expression whose object expression is an rvalue, the program is -+// ill-formed if the second operand is a pointer to member function with -+// ref-qualifier &. In a .* expression whose object expression is an -+// lvalue, the program is ill-formed if the second operand is a pointer to -+// member function with ref-qualifier &&. -+ -+// { dg-require-effective-target c++11 } -+ -+struct A { -+ void f() &; -+ void g() &&; -+ void h(); -+}; -+ -+void one() -+{ -+ A a; -+ -+ void (A::*p)() & = &A::f; -+ (a.*p)(); -+ (A().*p)(); // { dg-error "" } -+ -+ p = &A::g; // { dg-error "" } -+ p = &A::h; // { dg-error "" } -+ -+ void (A::*p2)() && = &A::g; -+ (A().*p2)(); -+ (a.*p2)(); // { dg-error "" } -+ p2 = &A::f; // { dg-error "" } -+ p2 = &A::h; // { dg-error "" } -+ -+ void (A::*p3)() = &A::h; -+ (a.*p3)(); -+ (A().*p3)(); -+ p3 = &A::f; // { dg-error "" } -+ p3 = &A::g; // { dg-error "" } -+} -+ -+template -+struct B { -+ void f() &; -+ void g() &&; -+ void h(); -+}; -+ -+template -+void two() -+{ -+ B a; -+ -+ void (B::*p)() & = &B::f; -+ (a.*p)(); -+ (B().*p)(); // { dg-error "" } -+ -+ p = &B::g; // { dg-error "" } -+ p = &B::h; // { dg-error "" } -+ -+ void (B::*p2)() && = &B::g; -+ (B().*p2)(); -+ (a.*p2)(); // { dg-error "" } -+ p2 = &B::f; // { dg-error "" } -+ p2 = &B::h; // { dg-error "" } -+ -+ void (B::*p3)() = &B::h; -+ (a.*p3)(); -+ (B().*p3)(); -+ p3 = &B::f; // { dg-error "" } -+ p3 = &B::g; // { dg-error "" } -+} -+ -+int main() -+{ -+ one(); -+ two(); -+} -Index: gcc/testsuite/g++.dg/cpp0x/trailing9.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/trailing9.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/trailing9.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,12 @@ -+// PR c++/56646 -+// { dg-require-effective-target c++11 } -+ -+struct A { -+ void f(); -+}; -+ -+void A::f() { -+ struct B { -+ auto g() -> void { } -+ }; -+} -Index: gcc/testsuite/g++.dg/cpp0x/sfinae44.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/sfinae44.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/sfinae44.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,26 @@ -+// PR c++/56913 -+// { dg-do compile { target c++11 } } -+ -+template -+T &&declval(); -+ -+template().*declval())())> -+constexpr bool test(int) -+{ -+ return true; -+} -+ -+template -+constexpr bool test(...) -+{ -+ return false; -+} -+ -+struct S -+{}; -+ -+static_assert(!test(0), ""); -+static_assert(test(0), ""); -+static_assert(test(0), ""); -+static_assert(!test(0), ""); -Index: gcc/testsuite/g++.dg/cpp0x/range-for23.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/range-for23.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/range-for23.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,8 @@ -+// PR c++/56722 -+// { dg-do compile { target c++11 } } -+ -+int main() -+{ -+ for (const auto& i, 21) // { dg-error "has no initializer|expected" } -+ i; -+} -Index: gcc/testsuite/g++.dg/cpp0x/enum25.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/enum25.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/enum25.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,18 @@ -+// PR c++/56793 -+// { dg-require-effective-target c++11 } -+ -+struct A -+{ -+ enum struct B {X, Y} b; -+} a; -+ -+enum struct D {X,Y}; -+struct C { } c; -+ -+int main () -+{ -+ if (a.b == a.B::Y) -+ a.b = A::B::X; -+ -+ c.D::Y; // { dg-error "not a member" } -+} -Index: gcc/testsuite/g++.dg/cpp0x/ref-qual4.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/ref-qual4.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/ref-qual4.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,14 @@ -+// 12.1: A constructor shall not be declared with a ref-qualifier. -+// 12.4: A destructor shall not be declared with a ref-qualifier. -+ -+// { dg-require-effective-target c++11 } -+ -+struct A { -+ A() & = default; // { dg-error "constructor" } -+ ~A() & = default; // { dg-error "destructor" } -+}; -+ -+int main() -+{ -+ A a; -+} -Index: gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret1.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret1.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret1.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,39 @@ -+// PR c++/56728 -+// { dg-require-effective-target c++11 } -+ -+// { dg-prune-output "error" } -+ -+class B { -+public: -+ static B instance; -+ class Inner -+ { -+ public: -+ class Wuzi -+ { -+ unsigned int m; -+ } m_Class[3]; -+ unsigned m_Int[4]; -+ }; -+ -+ constexpr static Inner & getInner() -+ { -+ /* I am surprised this is considered a constexpr */ -+ return *((Inner *)4); -+ } -+}; -+ -+B B::instance; -+ -+class A -+{ -+public: -+ constexpr A(B &bridge, B::Inner &bridge2, unsigned char index) -+ : m_Bridge(bridge), m_Wuz(bridge2.m_Class[index]) -+ {} -+ -+ B &m_Bridge; -+ B::Inner::Wuzi &m_Wuz; -+}; -+A works{B::instance, B::getInner(), 3}; -+A crashnkill[1]{{B::instance, B::getInner(), 3}}; -Index: gcc/testsuite/g++.dg/cpp0x/ref-qual6.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/ref-qual6.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/ref-qual6.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,15 @@ -+// Binding an rvalue to && beats binding it to const& (13.3.3.2). -+ -+// { dg-require-effective-target c++11 } -+ -+struct A -+{ -+ int operator+(int) &&; -+}; -+ -+void operator+ (const A&, int); -+ -+int main() -+{ -+ return A() + 42; -+} -Index: gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,9 @@ -+// PR c++/56582 -+// { dg-do compile { target c++11 } } -+ -+// Reliable ICE -+constexpr int n[3] = {}; -+constexpr int k = n[-1]; // { dg-error "negative" } -+ -+// Some random byte -+constexpr char c = "foo"[-1000]; // { dg-error "negative" } -Index: gcc/testsuite/g++.dg/cpp0x/decltype49.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/decltype49.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/decltype49.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,10 @@ -+// PR c++/45282 -+// { dg-require-effective-target c++11 } -+ -+struct A { int i; }; -+int A::*ipm = &A::i; -+ -+template class assert_same_type; -+template class assert_same_type { }; -+ -+assert_same_type x2; -Index: gcc/testsuite/g++.dg/cpp0x/ref-qual8.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/ref-qual8.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/ref-qual8.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,13 @@ -+// { dg-require-effective-target c++11 } -+ -+struct A -+{ -+ virtual void f() & = 0; -+}; -+ -+struct B: A -+{ -+ void f(); // doesn't override -+}; -+ -+B b; // { dg-error "abstract" } -Index: gcc/testsuite/g++.dg/cpp0x/ref-qual-mangle1.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/ref-qual-mangle1.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/ref-qual-mangle1.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,37 @@ -+// PR c++/56821 -+// { dg-require-effective-target c++11 } -+ -+struct A { -+ // { dg-final { scan-assembler "_ZNR1A1fEv" } } -+ void f() & {} -+ // { dg-final { scan-assembler "_ZNO1A1gEv" } } -+ void g() && {} -+ // { dg-final { scan-assembler "_ZNKR1A1hEv" } } -+ void h() const & {} -+}; -+ -+// { dg-final { scan-assembler "_Z1jM1AFvvRE" } } -+void j(void (A::*)() &) { } -+// { dg-final { scan-assembler "_Z1kM1AFvvOE" } } -+void k(void (A::*)() &&) { } -+// { dg-final { scan-assembler "_Z1lM1AKFvvRE" } } -+void l(void (A::*)() const &) { } -+ -+// { dg-final { scan-assembler "_Z1mIFvvOEEvM1AT_" } } -+// { dg-final { scan-assembler "_Z1mIFvvREEvM1AT_" } } -+// { dg-final { scan-assembler "_Z1mIKFvvREEvM1AT_" } } -+template -+void m(T A::*) {} -+ -+// { dg-final { scan-assembler "_Z1nIM1AFvvOEEvT_" } } -+// { dg-final { scan-assembler "_Z1nIM1AFvvREEvT_" } } -+// { dg-final { scan-assembler "_Z1nIM1AKFvvREEvT_" } } -+template -+void n(T) {} -+ -+int main() -+{ -+ j(&A::f); k(&A::g); l(&A::h); -+ m(&A::f); m(&A::g); m(&A::h); -+ n(&A::f); n(&A::g); n(&A::h); -+} -Index: gcc/testsuite/g++.dg/cpp0x/ref-qual1.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/ref-qual1.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/ref-qual1.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,30 @@ -+// { dg-require-effective-target c++11 } -+ -+template struct ST; -+template struct ST {}; -+ -+struct A -+{ -+ int f() &; -+ char f() &&; -+}; -+ -+template struct B -+{ -+ int f() &; -+ char f() &&; -+}; -+ -+int main() -+{ -+ A a; -+ a.f(); -+ A().f(); -+ ST(); -+ ST(); -+ B b; -+ b.f(); -+ B().f(); -+ ST(); -+ ST().f()), char>(); -+} -Index: gcc/testsuite/g++.dg/cpp0x/trailing8.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/trailing8.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/trailing8.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,25 @@ -+// PR c++/54359 -+// { dg-require-effective-target c++11 } -+ -+int& ref(int& x) { return x; } -+const int& ref(const int& x) { return x; } -+ -+class A { -+ int x; -+ int f() const; -+ auto test1() const -> decltype(this); -+ auto test2() const -> decltype(ref(x)); -+ auto test3() const -> decltype(f()); -+}; -+ -+auto A::test1() const -> decltype(this) { -+ return this; -+} -+ -+auto A::test2() const -> decltype(ref(x)) { -+ return ref(x); -+} -+ -+auto A::test3() const -> decltype(f()) { -+ return f(); -+} -Index: gcc/testsuite/g++.dg/cpp0x/enum24.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/enum24.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/enum24.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,57 @@ -+// PR c++/56749 -+// { dg-require-effective-target c++11 } -+ -+enum normal_enum -+{ -+ not_scoped1, -+ not_scoped2 -+}; -+ -+enum class scoped_enum -+{ -+ scoped1, -+ scoped2 -+}; -+ -+template -+class A -+{ -+public: -+ template -+ void fun () -+ { -+ } -+}; -+ -+template -+class B -+{ -+public: -+ template -+ void fun () -+ { -+ } -+}; -+ -+ -+template -+void tfun () -+{ -+ A<> a; -+ a.fun(); //<------------ THIS IS FINE -+ -+ B<> b_defaulted; -+ B b_explicited; -+ -+ b_defaulted.fun(); //<------------ UNEXPECTED: THIS FAILS -+ b_defaulted.template fun(); //<------------ THIS IS FINE -+ -+ b_explicited.fun(); //<------------ UNEXPECTED: THIS FAILS -+ b_explicited.template fun();//<------------ THIS IS FINE -+} -+ -+int main(int argc, char const *argv[]) -+{ -+ tfun(); -+ return 0; -+} -Index: gcc/testsuite/g++.dg/cpp0x/ref-qual3.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/ref-qual3.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/ref-qual3.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,29 @@ -+// An explicitly defaulted function can have a ref-qualifier. -+ -+// { dg-require-effective-target c++11 } -+ -+struct A { -+ A& operator=(const A&) & = default; -+}; -+ -+template -+struct B { -+ B& operator=(const B&) & = default; -+}; -+ -+template -+void f() -+{ -+ B b; -+ b = B(); -+ B() = b; // { dg-error "" } -+} -+ -+int main() -+{ -+ A a; -+ a = A(); -+ A() = a; // { dg-error "" } -+ -+ f(); -+} -Index: gcc/testsuite/g++.dg/cpp0x/variadic-explicit2.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/variadic-explicit2.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic-explicit2.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,14 @@ -+// PR c++/56774 -+// { dg-require-effective-target c++11 } -+ -+template -+struct mytype {}; -+ -+template -+void something( mytype ) -+{ } -+ -+int main() -+{ -+ something( mytype() ); -+} -Index: gcc/testsuite/g++.dg/cpp0x/noexcept03.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/noexcept03.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/noexcept03.C (.../branches/gcc-4_8-branch) -@@ -1,6 +1,6 @@ - // Runtime test for noexcept-specification. - // { dg-options "-std=c++0x -Wnoexcept" } --// { dg-do run } -+// { dg-do run { target nonpic } } - - #include - #include -Index: gcc/testsuite/g++.dg/cpp0x/range-for24.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/range-for24.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/range-for24.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,15 @@ -+// PR c++/56794 -+// { dg-require-effective-target c++11 } -+ -+template -+static void Colors() -+{ -+ static const int colors[] = { values... }; -+ -+ for(auto c: colors) { } -+} -+ -+int main() -+{ -+ Colors<0,1,2> (); -+} -Index: gcc/testsuite/g++.dg/cpp0x/ref-qual5.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/ref-qual5.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/ref-qual5.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,13 @@ -+// 13.1: ...cannot be overloaded if any of them, but not all, have a -+// ref-qualifier. -+ -+// { dg-require-effective-target c++11 } -+ -+class Y { -+ void h() &; -+ void h() const &; // OK -+ void h() &&; // OK, all declarations have a ref-qualifier -+ void i() &; // { dg-message "" } -+ void i() const; // { dg-error "" } prior declaration of i -+ // has a ref-qualifier -+}; -Index: gcc/testsuite/g++.dg/cpp0x/defaulted42.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/defaulted42.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/defaulted42.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,10 @@ -+// DR 941 -+// { dg-require-effective-target c++11 } -+ -+template T f(T) = delete; -+template<> int f(int) { return 42; } -+ -+int main() -+{ -+ f(42); -+} -Index: gcc/testsuite/g++.dg/cpp0x/initlist68.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/initlist68.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/initlist68.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,20 @@ -+// PR c++/56772 -+// { dg-require-effective-target c++11 } -+ -+typedef __SIZE_TYPE__ size_t; -+void* operator new[](size_t, void *p) { return p; } -+template -+void f () -+{ -+ size_t coord [2][2]; -+ new (&coord) size_t [2][2] -+ { -+ {0,0}, -+ {0,0}, -+ }; -+} -+ -+int main () -+{ -+ f<>(); -+} -Index: gcc/testsuite/g++.dg/cpp0x/ref-qual7.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/ref-qual7.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/ref-qual7.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,19 @@ -+// typedef test -+// { dg-require-effective-target c++11 } -+ -+typedef void F() &; -+ -+F f; // { dg-error "" } -+F* p; // { dg-error "" } -+extern F& r; // { dg-error "" } -+ -+struct A { -+ F f; -+}; -+ -+int main() -+{ -+ A a; -+ a.f(); -+ A().f(); // { dg-error "" } -+} -Index: gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/cpp0x/gen-attrs-4.C (.../branches/gcc-4_8-branch) -@@ -3,17 +3,17 @@ - // Test for syntax support of various attribute permutations. - - int --[[gnu::noreturn]] // { dg-warning "ignored" } -+[[noreturn]] // { dg-warning "ignored" } - one - [[gnu::unused]] - (void); - --int one_third [[gnu::noreturn]] [[gnu::unused]] (void); -+int one_third [[noreturn]] [[gnu::unused]] (void); - - int [[gnu::unused]] one_half(); // { dg-warning "ignored" } - - static --[[gnu::noreturn]] // { dg-warning "ignored" } -+[[noreturn]] // { dg-warning "ignored" } - void two [[gnu::unused]] (void) {} - - -@@ -21,10 +21,10 @@ - [[gnu::unused]] - int - five(void) --[[gnu::noreturn]] // { dg-warning "ignored" } -+[[noreturn]] // { dg-warning "ignored" } - {} - --[[gnu::noreturn]] -+[[noreturn]] - void - six (void) - ; -Index: gcc/testsuite/g++.dg/torture/pr56768.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/torture/pr56768.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/torture/pr56768.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,41 @@ -+// { dg-do compile } -+// { dg-options "-std=c++0x" } -+ -+struct Iter -+{ -+ int& operator* (); -+ void operator++ (); -+}; -+ -+bool operator!= (Iter &, Iter &) { } -+ -+struct Container -+{ -+ Iter begin () const; -+ Iter end () const; -+}; -+ -+struct J -+{ -+ virtual J *mutable_child (); -+}; -+ -+struct M -+{ -+ M (const Container &); -+ J ns_; -+}; -+namespace -+{ -+ J MakeNamespace (const Container &src) -+ { -+ J a; -+ J *b = 0; -+ for (const int &c: src) -+ b = b ? b->mutable_child () : &a; -+ return a; -+ } -+} -+M::M (const Container &ns):ns_ (MakeNamespace (ns)) -+{ -+} -Index: gcc/testsuite/g++.dg/torture/pr56837.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/torture/pr56837.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/torture/pr56837.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,20 @@ -+// { dg-do run } -+// { dg-options "-ftree-loop-distribute-patterns" } -+ -+extern "C" void abort (void); -+extern "C" int memcmp (const void *, const void *, __SIZE_TYPE__); -+ -+bool b1[8]; -+bool b2[8] = { true, true, true, true, true, true, true, true }; -+ -+int main() -+{ -+ unsigned int i; -+ for(i=0 ; i < 8; i++) -+ b1[i] = true; -+ -+ if (memcmp (b1, b2, 8) != 0) -+ abort (); -+ -+ return 0; -+} -Index: gcc/testsuite/g++.dg/torture/pr56817.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/torture/pr56817.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/torture/pr56817.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,38 @@ -+// { dg-do compile } -+// { dg-options "--param max-unroll-times=32" } -+ -+struct A {}; -+A **q; -+struct B -+{ -+ A **j; -+ B () { j = q; } -+ A *& operator[] (unsigned long x) { return j[x]; } -+}; -+struct C -+{ -+ C (int r) : v (), s (r) {} -+ A *& operator () (int i, int j) { return v[i * s + j]; } -+ B v; -+ int s; -+}; -+struct D -+{ -+ D () -+ { -+ unsigned h = 2; -+ for (int i = 0; i < 1; ++i, h *= 2) -+ { -+ C w (h); -+ for (unsigned j = 0; j < h; ++j) -+ for (unsigned k = 0; k < h; ++k) -+ w (j, k) = new A; -+ } -+ } -+}; -+void -+foo () -+{ -+ for (int i = 0; i < 3; i++) -+ A (), A (), D (); -+} -Index: gcc/testsuite/g++.dg/torture/pr56694.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/torture/pr56694.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/torture/pr56694.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,31 @@ -+// { dg-do compile } -+// { dg-options "-fopenmp" } -+// { dg-require-effective-target fopenmp } -+ -+class GException { -+public: -+ class vector_mismatch { -+ public: -+ vector_mismatch(int size1, int size2); -+ }; -+}; -+class GVector{ -+public: -+ GVector& operator+=(const GVector& v); -+ int m_num; -+ double* m_data; -+}; -+inline GVector& GVector::operator+= (const GVector& v) -+{ -+ if (m_num != v.m_num) -+ throw GException::vector_mismatch(m_num, v.m_num); -+ for (int i = 0; i < m_num; ++i) m_data[i] += v.m_data[i]; -+}; -+void eval(GVector* m_gradient, GVector* vect_cpy_grad, int n) -+{ -+#pragma omp sections -+ { -+ for (int i = 0; i < n; ++i) -+ *m_gradient += vect_cpy_grad[i]; -+ } -+} -Index: gcc/testsuite/g++.dg/ipa/ivinline-1.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/ipa/ivinline-1.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-1.C (.../branches/gcc-4_8-branch) -@@ -1,6 +1,6 @@ - /* Verify that simple virtual calls are inlined even without early - inlining. */ --/* { dg-do run } */ -+/* { dg-do run { target nonpic } } */ - /* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */ - - extern "C" void abort (void); -Index: gcc/testsuite/g++.dg/ipa/ivinline-2.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/ipa/ivinline-2.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-2.C (.../branches/gcc-4_8-branch) -@@ -1,6 +1,6 @@ - /* Verify that simple virtual calls using this pointer are inlined - even without early inlining.. */ --/* { dg-do run } */ -+/* { dg-do run { target nonpic } } */ - /* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */ - - extern "C" void abort (void); -Index: gcc/testsuite/g++.dg/ipa/ivinline-3.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/ipa/ivinline-3.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-3.C (.../branches/gcc-4_8-branch) -@@ -1,6 +1,6 @@ - /* Verify that simple virtual calls on an object refrence are inlined - even without early inlining. */ --/* { dg-do run } */ -+/* { dg-do run { target nonpic } } */ - /* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */ - - extern "C" void abort (void); -Index: gcc/testsuite/g++.dg/ipa/ivinline-4.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/ipa/ivinline-4.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-4.C (.../branches/gcc-4_8-branch) -@@ -1,7 +1,7 @@ - /* Verify that simple virtual calls are inlined even without early - inlining, even when a typecast to an ancestor is involved along the - way. */ --/* { dg-do run } */ -+/* { dg-do run { target nonpic } } */ - /* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */ - - extern "C" void abort (void); -Index: gcc/testsuite/g++.dg/ipa/ivinline-5.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/ipa/ivinline-5.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-5.C (.../branches/gcc-4_8-branch) -@@ -1,6 +1,6 @@ - /* Verify that virtual call inlining does not pick a wrong method when - there is a user defined ancestor in an object. */ --/* { dg-do run } */ -+/* { dg-do run { target nonpic } } */ - /* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */ - - extern "C" void abort (void); -Index: gcc/testsuite/g++.dg/ipa/ivinline-7.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/ipa/ivinline-7.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-7.C (.../branches/gcc-4_8-branch) -@@ -1,7 +1,7 @@ - /* Verify that simple virtual calls are inlined even without early - inlining, even when a typecast to an ancestor is involved along the - way and that ancestor is not the first one with virtual functions. */ --/* { dg-do run } */ -+/* { dg-do run { target nonpic } } */ - /* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */ - - extern "C" void abort (void); -Index: gcc/testsuite/g++.dg/ipa/ivinline-8.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/ipa/ivinline-8.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-8.C (.../branches/gcc-4_8-branch) -@@ -1,6 +1,6 @@ - /* Verify that virtual calls are inlined (ithout early inlining) even - when their caller is itself indirectly inlined. */ --/* { dg-do run } */ -+/* { dg-do run { target nonpic } } */ - /* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */ - - extern "C" void abort (void); -Index: gcc/testsuite/g++.dg/ipa/ivinline-9.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/ipa/ivinline-9.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-9.C (.../branches/gcc-4_8-branch) -@@ -2,7 +2,7 @@ - inlining, even when a typecast to an ancestor is involved along the - way and that ancestor itself has an ancestor wich is not the - primary base class. */ --/* { dg-do run } */ -+/* { dg-do run { target nonpic } } */ - /* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fno-ipa-cp" } */ - - extern "C" void abort (void); -Index: gcc/testsuite/g++.dg/ipa/devirt-c-7.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/ipa/devirt-c-7.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/ipa/devirt-c-7.C (.../branches/gcc-4_8-branch) -@@ -1,6 +1,7 @@ - /* Verify that ipa-cp will not get confused by placement new constructing an - object within another one when looking for dynamic type change . */ - /* { dg-do run } */ -+/* { dg-require-effective-target nonpic } */ - /* { dg-options "-O3 -Wno-attributes" } */ - - extern "C" void abort (void); -Index: gcc/testsuite/g++.dg/template/sfinae-dr657.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/template/sfinae-dr657.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/template/sfinae-dr657.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,22 @@ -+// DR 657 -+// Test that a return or parameter type with abstract class type causes a -+// deduction failure. -+ -+struct A -+{ -+ A(); -+ A(int); -+ virtual void f() = 0; -+}; -+ -+template T declval(); -+template int declval(...); -+ -+template void arg(T); -+template int arg(...); -+ -+int main() -+{ -+ int i = declval(); -+ i = arg(1); -+} -Index: gcc/testsuite/g++.dg/template/arrow2.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/template/arrow2.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/template/arrow2.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,12 @@ -+// PR c++/56639 -+ -+struct A { -+ int i; -+ static A* f(); -+}; -+ -+struct B { -+ void g() { -+ int (A::f()->i); -+ } -+}; -Index: gcc/testsuite/g++.dg/template/arrow4.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/template/arrow4.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/template/arrow4.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,19 @@ -+// PR c++/56895 -+// { dg-do compile } -+ -+void fn (int *); -+void fn (int); -+extern struct A { bool foo (); A bar (); } *a; -+ -+template -+void -+baz () -+{ -+ fn (a->bar().foo() ? 1 : 0); -+} -+ -+void -+test () -+{ -+ baz<0> (); -+} -Index: gcc/testsuite/g++.dg/template/arrow3.C -=================================================================== ---- a/src/gcc/testsuite/g++.dg/template/arrow3.C (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/g++.dg/template/arrow3.C (.../branches/gcc-4_8-branch) -@@ -0,0 +1,38 @@ -+// PR c++/56895 -+// { dg-do compile } -+ -+extern struct A { bool foo (); A bar (); } *a; -+ -+template -+int -+baz1 () -+{ -+ return 2 << (a->bar().foo() ? 1 : 0); -+} -+ -+template -+int -+baz2 () -+{ -+ return 2 >> (a->bar().foo() ? 1 : 0); -+} -+ -+template -+int -+baz3 () -+{ -+ return 10 / (a->bar().foo() ? 1 : 2); -+} -+ -+template -+int -+baz4 () -+{ -+ return 10 % (a->bar().foo() ? 1 : 0); -+} -+ -+int -+test () -+{ -+ return baz1<0> () + baz2<0> () + baz3<0> () + baz4<0> (); -+} -Index: gcc/testsuite/ChangeLog-2012 -=================================================================== ---- a/src/gcc/testsuite/ChangeLog-2012 (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/ChangeLog-2012 (.../branches/gcc-4_8-branch) -@@ -1396,12 +1396,12 @@ - * gcc.target/powerpc/ppc-pow.c: Allow dot symbols in branch. - * gcc.target/powerpc/tfmode_off.c: Skip on AIX. - --2012-11-07 Manuel LÁpez-IbÁÁez -+2012-11-07 Manuel López-Ibáñez - - PR c/53063 - * gcc.dg/warn-nsstring.c: Use -Wformat explicitly. - --2012-11-07 Manuel LÁpez-IbÁÁez -+2012-11-07 Manuel López-Ibáñez - - PR c/51294 - * c-c++-common/pr51294.c: New. -@@ -1782,7 +1782,7 @@ - PR middle-end/55116 - * gcc.target/i386/pr55116.c: New file. - --2012-10-29 Manuel LÁpez-IbÁÁez -+2012-10-29 Manuel López-Ibáñez - - PR c/53066 - * gcc.dg/Wshadow-4.c: New. -@@ -2211,7 +2211,7 @@ - - * gcc.dg/webizer.c (main): Add missing exit call. - --2012-10-21 Thomas KÁnig -+2012-10-21 Thomas König - - PR fortran/54465 - * gfortran.dg/wextra_1.f: New test. -@@ -2294,7 +2294,7 @@ - * gcc.dg/tree-ssa/ldist-17.c: Block cunroll to make testcase still - valid. - --2012-10-16 Manuel LÁpez-IbÁÁez -+2012-10-16 Manuel López-Ibáñez - - PR c/53063 - PR c/40989 -@@ -3100,7 +3100,7 @@ - - * go.test/go-test.exp: Update for latest version of Go testsuite. - --2012-09-29 Thomas KÁnig -+2012-09-29 Thomas König - - PR fortran/52724 - * gfortran.dg/internal_readwrite_3.f90: New test. -@@ -3605,7 +3605,7 @@ - * g++.dg/torture/builtin-location.C: New testcase. - - 2012-09-13 Paolo Carlini -- Manuel LÁpez-IbÁÁez -+ Manuel López-Ibáñez - - PR c++/53210 - * g++.dg/warn/Wuninitialized-self.C: New. -@@ -4466,7 +4466,7 @@ - PR fortran/54301 - * gfortran.dg/warn_target_lifetime_1.f90: New. - --2012-08-19 Thomas KÁnig -+2012-08-19 Thomas König - - PR fortran/54298 - * gfortran.dg/real_compare_1.f90: New test case. -@@ -4921,7 +4921,7 @@ - * gcc.dg/tree-ssa/pta-ptrarith-1.c: Likewise. - * gcc.dg/tree-ssa/pta-ptrarith-2.c: Likewise. - --2012-08-01 Thomas KÁnig -+2012-08-01 Thomas König - - PR fortran/54033 - * gfortran.dg/include_6.f90: New test case. -@@ -5394,7 +5394,7 @@ - * g++.dg/parse/access8.C: Adjust. - * g++.dg/template/sfinae6_neg.C: Adjust. - --2012-07-16 Thomas KÁnig -+2012-07-16 Thomas König - - PR fortran/53824 - * gfortran.dg/coarray_allocate_1.f90: New test. -@@ -6425,12 +6425,12 @@ - PR middle-end/53535 - * gcc.dg/pr46647.c: xfail for cris-* and crisv32-*. - --2012-06-07 Thomas KÁnig -+2012-06-07 Thomas König - - PR fortran/52861 - * gfortran.dg/string_assign_2.f90: New test case. - --2012-06-07 Thomas KÁnig -+2012-06-07 Thomas König - - PR fortran/52861 - * gfortran.dg/string_assign_1.f90: New test case. -@@ -6446,7 +6446,7 @@ - * gfortran.dg/gomp/appendix-a/a.35.6.f90: Likewise. - * c-c++-common/gomp/pr53580.c: New test. - --2012-06-07 Fabien ChÁne -+2012-06-07 Fabien Chêne - - PR c++/51214 - * g++.dg/cpp0x/forw_enum11.C: New. -@@ -6474,7 +6474,7 @@ - * gfortran.dg/vect/pr32380.f: Adjust number of expected vectorized - loops. - --2012-06-06 Fabien ChÁne -+2012-06-06 Fabien Chêne - - PR c++/52841 - * g++.dg/cpp0x/pr52841.C: New testcase. -@@ -7262,7 +7262,7 @@ - * gnat.dg/discr36.ad[sb]: New test. - * gnat.dg/discr36_pkg.ad[sb]: New helper. - --2012-05-05 Manuel LÁpez-IbÁÁez -+2012-05-05 Manuel López-Ibáñez - - PR c/43772 - * c-c++-common/pr43772.c: New. -@@ -7324,7 +7324,7 @@ - * gcc.target/ia64/pr48496.c: New test. - * gcc.target/ia64/pr52657.c: Likewise. - --2012-05-04 Manuel LÁpez-IbÁÁez -+2012-05-04 Manuel López-Ibáñez - - PR c/51712 - * c-c++-common/pr51712.c: New. -@@ -7567,7 +7567,7 @@ - - * gnat.dg/warn6.ad[sb]: New test. - --2012-04-29 Manuel LÁpez-IbÁÁez -+2012-04-29 Manuel López-Ibáñez - - PR 53149 - * gcc.dg/20011021-1.c: Adjust testcase. -@@ -7675,7 +7675,7 @@ - PR c/52880 - * gcc.dg/pr52880.c: New test. - --2012-04-25 Manuel LÁpez-IbÁÁez -+2012-04-25 Manuel López-Ibáñez - - * gcc.dg/m-un-2.c: Update. - * gcc.dg/20011021-1.c: Update. -@@ -7758,7 +7758,7 @@ - PR fortran/53051 - * gfortran.dg/read_float_4.f90: New. - --2012-04-21 Manuel LÁpez-IbÁÁez -+2012-04-21 Manuel López-Ibáñez - - PR 35441 - * c-c++-common/pr35441.C: New. -@@ -7793,7 +7793,7 @@ - - * gcc.dg/pr52283.c: New test. - --2012-04-19 Manuel LÁpez-IbÁÁez -+2012-04-19 Manuel López-Ibáñez - - * gcc.dg/pr37985.c: New test. - -@@ -8041,12 +8041,12 @@ - * gcc/target/sh/pr50751-6.c: New. - * gcc/target/sh/pr50751-7.c: New. - --2012-04-11 Fabien ChÁne -+2012-04-11 Fabien Chêne - - PR c++/52465 - * g++.dg/lookup/using52.C: New. - --2012-04-11 Manuel LÁpez-IbÁÁez -+2012-04-11 Manuel López-Ibáñez - - * lib/prune.exp (TEST_ALWAYS_FLAGS): If undefined, set to empty. - -@@ -8142,7 +8142,7 @@ - * gcc.dg/builtin-bswap-5.c: Likewise. - * gcc.target/i386/builtin-bswap-4.c: New test. - --2012-04-11 Manuel LÁpez-IbÁÁez -+2012-04-11 Manuel López-Ibáñez - - PR 24985 - * lib/prune.exp: Add -fno-diagnostics-show-caret. -@@ -8251,7 +8251,7 @@ - PR fortran/52751 - * gfortran.dg/public_private_module_2.f90: New. - --2012-04-08 Manuel LÁpez-IbÁÁez -+2012-04-08 Manuel López-Ibáñez - - * g++.dg/warn/Wstrict-aliasing-float-ref-int-obj.C: Add labels to - directives. -@@ -9486,7 +9486,7 @@ - PR c++/52248 - * g++.dg/ext/timevar1.C: New. - --2012-02-16 Fabien ChÁne -+2012-02-16 Fabien Chêne - - PR c++/52126 - * g++.dg/template/using21.C: New. -@@ -9821,7 +9821,7 @@ - PR fortran/51514 - * gfortran.dg/class_to_type_2.f90: New. - --2012-02-06 Thomas KÁnig -+2012-02-06 Thomas König - - PR fortran/32373 - * gfortran.dg/vect/vect-8.f90: Use vect_double effective target. -@@ -9847,12 +9847,12 @@ - * gcc.dg/pr48374.c: Actually add the test I forgot - in the 2012-01-25 commit. - --2012-02-05 Thomas KÁnig -+2012-02-05 Thomas König - - PR fortran/32373 - * gfortran.dg/vect/vect-8.f90: New test case. - --2012-02-05 Thomas KÁnig -+2012-02-05 Thomas König - - PR fortran/48847 - * gfortran.dg/warn_unused_dummy_argument_3.f90: New test. -@@ -9944,7 +9944,7 @@ - PR tree-optimization/52073 - * gcc.c-torture/compile/pr52073.c: New test. - --2012-02-01 Thomas KÁnig -+2012-02-01 Thomas König - - PR fortran/51958 - * gfortran.dg/function_optimize_10.f90: New test. -@@ -11127,7 +11127,7 @@ - - * g++.dg/cpp0x/constexpr-delegating2.C: Add missing piece. - --2012-01-01 Fabien ChÁne -+2012-01-01 Fabien Chêne - - * g++.old-deja/g++.brendan/crash25.C: Adjust. - * g++.old-deja/g++.brendan/crash56.C: Likewise. -Index: gcc/testsuite/c-c++-common/gomp/pr56883.c -=================================================================== ---- a/src/gcc/testsuite/c-c++-common/gomp/pr56883.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/c-c++-common/gomp/pr56883.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,57 @@ -+/* PR middle-end/56883 */ -+/* { dg-do compile } -+/* { dg-options "-O2 -fopenmp" } */ -+ -+void -+f1 (int ***x) -+{ -+ int i, j, k; -+#pragma omp parallel for -+ for (i = 0; i < 10; ++i) -+ { -+ #pragma omp parallel shared(j) -+ #pragma omp for -+ for (j = 0; j < 10; ++j) -+ { -+ #pragma omp parallel for -+ for (k = 0; k < 10; ++k) -+ x[i][j][k] = k; -+ } -+ } -+} -+ -+void -+f2 (int ***x) -+{ -+ int i, j, k; -+#pragma omp parallel for schedule(static,1) -+ for (i = 0; i < 10; ++i) -+ { -+ #pragma omp parallel shared(j) -+ #pragma omp for schedule(static,1) -+ for (j = 0; j < 10; ++j) -+ { -+ #pragma omp parallel for schedule(static,1) -+ for (k = 0; k < 10; ++k) -+ x[i][j][k] = k; -+ } -+ } -+} -+ -+void -+f3 (int ***x) -+{ -+ int i, j, k; -+#pragma omp parallel for schedule(runtime) -+ for (i = 0; i < 10; ++i) -+ { -+ #pragma omp parallel shared(j) -+ #pragma omp for schedule(runtime) -+ for (j = 0; j < 10; ++j) -+ { -+ #pragma omp parallel for schedule(runtime) -+ for (k = 0; k < 10; ++k) -+ x[i][j][k] = k; -+ } -+ } -+} -Index: gcc/testsuite/c-c++-common/pr56607.c -=================================================================== ---- a/src/gcc/testsuite/c-c++-common/pr56607.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/testsuite/c-c++-common/pr56607.c (.../branches/gcc-4_8-branch) -@@ -0,0 +1,29 @@ -+/* PR c++/56607 */ -+/* { dg-do compile { target { { lp64 || ilp32 } || llp64 } } } */ -+/* { dg-options "-O2 -Wdiv-by-zero" } */ -+ -+int -+f1 (void) -+{ -+ return 1 / (sizeof (char) - 1); /* { dg-warning "division by zero" } */ -+} -+ -+int -+f2 (void) -+{ -+ const int x = sizeof (char) - 1; -+ return 1 / x; /* { dg-warning "division by zero" "" { target c++ } } */ -+} -+ -+int -+f3 (void) -+{ -+ return 1 / (sizeof (int) / 3 - 1); /* { dg-warning "division by zero" } */ -+} -+ -+int -+f4 (void) -+{ -+ const int x = sizeof (int) / 3 - 1; -+ return 1 / x; /* { dg-warning "division by zero" "" { target c++ } } */ -+} -Index: gcc/cp/typeck.c -=================================================================== ---- a/src/gcc/cp/typeck.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/typeck.c (.../branches/gcc-4_8-branch) -@@ -833,7 +833,10 @@ - - rval = build_function_type (valtype, parms); - gcc_assert (type_memfn_quals (t1) == type_memfn_quals (t2)); -- rval = apply_memfn_quals (rval, type_memfn_quals (t1)); -+ gcc_assert (type_memfn_rqual (t1) == type_memfn_rqual (t2)); -+ rval = apply_memfn_quals (rval, -+ type_memfn_quals (t1), -+ type_memfn_rqual (t1)); - raises = merge_exception_specifiers (TYPE_RAISES_EXCEPTIONS (t1), - TYPE_RAISES_EXCEPTIONS (t2), - NULL_TREE); -@@ -1186,6 +1189,12 @@ - if (TREE_CODE (t1) == FUNCTION_TYPE - && type_memfn_quals (t1) != type_memfn_quals (t2)) - return false; -+ /* Need to check this before TYPE_MAIN_VARIANT. -+ FIXME function qualifiers should really change the main variant. */ -+ if ((TREE_CODE (t1) == FUNCTION_TYPE -+ || TREE_CODE (t1) == METHOD_TYPE) -+ && type_memfn_rqual (t1) != type_memfn_rqual (t2)) -+ return false; - if (TYPE_FOR_JAVA (t1) != TYPE_FOR_JAVA (t2)) - return false; - -@@ -2670,6 +2679,23 @@ - return error_mark_node; - } - -+ if (TREE_CODE (scope) == ENUMERAL_TYPE) -+ { -+ /* Looking up a member enumerator (c++/56793). */ -+ if (!TYPE_CLASS_SCOPE_P (scope) -+ || !DERIVED_FROM_P (TYPE_CONTEXT (scope), object_type)) -+ { -+ if (complain & tf_error) -+ error ("%<%D::%D%> is not a member of %qT", -+ scope, name, object_type); -+ return error_mark_node; -+ } -+ tree val = lookup_enumerator (scope, name); -+ if (TREE_SIDE_EFFECTS (object)) -+ val = build2 (COMPOUND_EXPR, TREE_TYPE (val), object, val); -+ return val; -+ } -+ - gcc_assert (CLASS_TYPE_P (scope)); - gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE - || TREE_CODE (name) == BIT_NOT_EXPR); -@@ -4014,8 +4040,9 @@ - || code1 == COMPLEX_TYPE || code1 == VECTOR_TYPE)) - { - enum tree_code tcode0 = code0, tcode1 = code1; -+ tree cop1 = fold_non_dependent_expr_sfinae (op1, tf_none); - -- warn_for_div_by_zero (location, op1); -+ warn_for_div_by_zero (location, maybe_constant_value (cop1)); - - if (tcode0 == COMPLEX_TYPE || tcode0 == VECTOR_TYPE) - tcode0 = TREE_CODE (TREE_TYPE (TREE_TYPE (op0))); -@@ -4051,8 +4078,12 @@ - - case TRUNC_MOD_EXPR: - case FLOOR_MOD_EXPR: -- warn_for_div_by_zero (location, op1); -+ { -+ tree cop1 = fold_non_dependent_expr_sfinae (op1, tf_none); - -+ warn_for_div_by_zero (location, maybe_constant_value (cop1)); -+ } -+ - if (code0 == VECTOR_TYPE && code1 == VECTOR_TYPE - && TREE_CODE (TREE_TYPE (type0)) == INTEGER_TYPE - && TREE_CODE (TREE_TYPE (type1)) == INTEGER_TYPE) -@@ -4099,7 +4130,8 @@ - } - else if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE) - { -- tree const_op1 = maybe_constant_value (op1); -+ tree const_op1 = fold_non_dependent_expr_sfinae (op1, tf_none); -+ const_op1 = maybe_constant_value (const_op1); - if (TREE_CODE (const_op1) != INTEGER_CST) - const_op1 = op1; - result_type = type0; -@@ -4145,7 +4177,8 @@ - } - else if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE) - { -- tree const_op1 = maybe_constant_value (op1); -+ tree const_op1 = fold_non_dependent_expr_sfinae (op1, tf_none); -+ const_op1 = maybe_constant_value (const_op1); - if (TREE_CODE (const_op1) != INTEGER_CST) - const_op1 = op1; - result_type = type0; -@@ -8553,6 +8586,22 @@ - return quals; - } - -+/* Returns the function-ref-qualifier for TYPE */ -+ -+cp_ref_qualifier -+type_memfn_rqual (const_tree type) -+{ -+ gcc_assert (TREE_CODE (type) == FUNCTION_TYPE -+ || TREE_CODE (type) == METHOD_TYPE); -+ -+ if (!FUNCTION_REF_QUALIFIED (type)) -+ return REF_QUAL_NONE; -+ else if (FUNCTION_RVALUE_QUALIFIED (type)) -+ return REF_QUAL_RVALUE; -+ else -+ return REF_QUAL_LVALUE; -+} -+ - /* Returns the function-cv-quals for TYPE, which must be a FUNCTION_TYPE or - METHOD_TYPE. */ - -@@ -8568,18 +8617,22 @@ - } - - /* Returns the FUNCTION_TYPE TYPE with its function-cv-quals changed to -- MEMFN_QUALS. */ -+ MEMFN_QUALS and its ref-qualifier to RQUAL. */ - - tree --apply_memfn_quals (tree type, cp_cv_quals memfn_quals) -+apply_memfn_quals (tree type, cp_cv_quals memfn_quals, cp_ref_qualifier rqual) - { - /* Could handle METHOD_TYPE here if necessary. */ - gcc_assert (TREE_CODE (type) == FUNCTION_TYPE); -- if (TYPE_QUALS (type) == memfn_quals) -+ if (TYPE_QUALS (type) == memfn_quals -+ && type_memfn_rqual (type) == rqual) - return type; -+ - /* This should really have a different TYPE_MAIN_VARIANT, but that gets - complex. */ -- return build_qualified_type (type, memfn_quals); -+ tree result = build_qualified_type (type, memfn_quals); -+ result = build_exception_variant (result, TYPE_RAISES_EXCEPTIONS (type)); -+ return build_ref_qualified_type (result, rqual); - } - - /* Returns nonzero if TYPE is const or volatile. */ -Index: gcc/cp/init.c -=================================================================== ---- a/src/gcc/cp/init.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/init.c (.../branches/gcc-4_8-branch) -@@ -2920,6 +2920,7 @@ - if (dependent_type_p (type) - || any_type_dependent_arguments_p (*placement) - || (nelts && type_dependent_expression_p (nelts)) -+ || (nelts && *init) - || any_type_dependent_arguments_p (*init)) - return build_raw_new_expr (*placement, type, nelts, *init, - use_global_new); -Index: gcc/cp/class.c -=================================================================== ---- a/src/gcc/cp/class.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/class.c (.../branches/gcc-4_8-branch) -@@ -1045,6 +1045,12 @@ - overloaded if any of them is a static member - function declaration. - -+ [over.load] Member function declarations with the same name and -+ the same parameter-type-list as well as member function template -+ declarations with the same name, the same parameter-type-list, and -+ the same template parameter lists cannot be overloaded if any of -+ them, but not all, have a ref-qualifier. -+ - [namespace.udecl] When a using-declaration brings names - from a base class into a derived class scope, member - functions in the derived class override and/or hide member -@@ -1060,11 +1066,13 @@ - coming from the using class in overload resolution. */ - if (! DECL_STATIC_FUNCTION_P (fn) - && ! DECL_STATIC_FUNCTION_P (method) -- && TREE_TYPE (TREE_VALUE (parms1)) != error_mark_node -- && TREE_TYPE (TREE_VALUE (parms2)) != error_mark_node -- && (cp_type_quals (TREE_TYPE (TREE_VALUE (parms1))) -- != cp_type_quals (TREE_TYPE (TREE_VALUE (parms2))))) -- continue; -+ /* Either both or neither need to be ref-qualified for -+ differing quals to allow overloading. */ -+ && (FUNCTION_REF_QUALIFIED (fn_type) -+ == FUNCTION_REF_QUALIFIED (method_type)) -+ && (type_memfn_quals (fn_type) != type_memfn_quals (method_type) -+ || type_memfn_rqual (fn_type) != type_memfn_rqual (method_type))) -+ continue; - - /* For templates, the return type and template parameters - must be identical. */ -@@ -2063,6 +2071,8 @@ - base_types = TYPE_ARG_TYPES (TREE_TYPE (base_fndecl)); - if ((cp_type_quals (TREE_TYPE (TREE_VALUE (base_types))) - == cp_type_quals (TREE_TYPE (TREE_VALUE (types)))) -+ && (type_memfn_rqual (TREE_TYPE (fndecl)) -+ == type_memfn_rqual (TREE_TYPE (base_fndecl))) - && compparms (TREE_CHAIN (base_types), TREE_CHAIN (types))) - return 1; - } -Index: gcc/cp/decl.c -=================================================================== ---- a/src/gcc/cp/decl.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/decl.c (.../branches/gcc-4_8-branch) -@@ -1756,12 +1756,16 @@ - warning (OPT_Wredundant_decls, "previous declaration of %q+D", olddecl); - } - -- if (DECL_DELETED_FN (newdecl)) -+ if (!(DECL_TEMPLATE_INSTANTIATION (olddecl) -+ && DECL_TEMPLATE_SPECIALIZATION (newdecl))) - { -- error ("deleted definition of %qD", newdecl); -- error ("after previous declaration %q+D", olddecl); -+ if (DECL_DELETED_FN (newdecl)) -+ { -+ error ("deleted definition of %qD", newdecl); -+ error ("after previous declaration %q+D", olddecl); -+ } -+ DECL_DELETED_FN (newdecl) |= DECL_DELETED_FN (olddecl); - } -- DECL_DELETED_FN (newdecl) |= DECL_DELETED_FN (olddecl); - } - - /* Deal with C++: must preserve virtual function table size. */ -@@ -4760,7 +4764,7 @@ - is valid, i.e., does not have a designated initializer. */ - - static bool --check_array_designated_initializer (const constructor_elt *ce, -+check_array_designated_initializer (constructor_elt *ce, - unsigned HOST_WIDE_INT index) - { - /* Designated initializers for array elements are not supported. */ -@@ -4769,10 +4773,22 @@ - /* The parser only allows identifiers as designated - initializers. */ - if (ce->index == error_mark_node) -- error ("name used in a GNU-style designated " -- "initializer for an array"); -- else if (TREE_CODE (ce->index) == INTEGER_CST) - { -+ error ("name used in a GNU-style designated " -+ "initializer for an array"); -+ return false; -+ } -+ else if (TREE_CODE (ce->index) == IDENTIFIER_NODE) -+ { -+ error ("name %qD used in a GNU-style designated " -+ "initializer for an array", ce->index); -+ return false; -+ } -+ -+ ce->index = cxx_constant_value (ce->index); -+ -+ if (TREE_CODE (ce->index) == INTEGER_CST) -+ { - /* A C99 designator is OK if it matches the current index. */ - if (TREE_INT_CST_LOW (ce->index) == index) - return true; -@@ -4780,11 +4796,8 @@ - sorry ("non-trivial designated initializers not supported"); - } - else -- { -- gcc_assert (TREE_CODE (ce->index) == IDENTIFIER_NODE); -- error ("name %qD used in a GNU-style designated " -- "initializer for an array", ce->index); -- } -+ gcc_unreachable (); -+ - return false; - } - -@@ -6111,7 +6124,8 @@ - tree d_init; - if (init == NULL_TREE) - { -- if (DECL_TEMPLATE_INSTANTIATION (decl) -+ if (DECL_LANG_SPECIFIC (decl) -+ && DECL_TEMPLATE_INSTANTIATION (decl) - && !DECL_TEMPLATE_INSTANTIATED (decl)) - { - /* init is null because we're deferring instantiating the -@@ -7317,6 +7331,7 @@ - int virtualp, - enum overload_flags flags, - cp_cv_quals quals, -+ cp_ref_qualifier rqual, - tree raises, - int check, - int friendp, -@@ -7333,6 +7348,8 @@ - int staticp = ctype && TREE_CODE (type) == FUNCTION_TYPE; - tree t; - -+ if (rqual) -+ type = build_ref_qualified_type (type, rqual); - if (raises) - type = build_exception_variant (type, raises); - -@@ -7536,13 +7553,25 @@ - DECL_DECLARED_CONSTEXPR_P (decl) = true; - - DECL_EXTERNAL (decl) = 1; -- if (quals && TREE_CODE (type) == FUNCTION_TYPE) -+ if (TREE_CODE (type) == FUNCTION_TYPE) - { -- error (ctype -- ? G_("static member function %qD cannot have cv-qualifier") -- : G_("non-member function %qD cannot have cv-qualifier"), -- decl); -- quals = TYPE_UNQUALIFIED; -+ if (quals) -+ { -+ error (ctype -+ ? G_("static member function %qD cannot have cv-qualifier") -+ : G_("non-member function %qD cannot have cv-qualifier"), -+ decl); -+ quals = TYPE_UNQUALIFIED; -+ } -+ -+ if (rqual) -+ { -+ error (ctype -+ ? G_("static member function %qD cannot have ref-qualifier") -+ : G_("non-member function %qD cannot have ref-qualifier"), -+ decl); -+ rqual = REF_QUAL_NONE; -+ } - } - - if (IDENTIFIER_OPNAME_P (DECL_NAME (decl)) -@@ -7980,7 +8009,8 @@ - if (TREE_CODE (member_type) == METHOD_TYPE) - { - cp_cv_quals quals = type_memfn_quals (member_type); -- member_type = build_memfn_type (member_type, class_type, quals); -+ cp_ref_qualifier rqual = type_memfn_rqual (member_type); -+ member_type = build_memfn_type (member_type, class_type, quals, rqual); - return build_ptrmemfunc_type (build_pointer_type (member_type)); - } - else -@@ -8629,6 +8659,9 @@ - /* virt-specifiers that apply to the declarator, for a declaration of - a member function. */ - cp_virt_specifiers virt_specifiers = VIRT_SPEC_UNSPECIFIED; -+ /* ref-qualifier that applies to the declarator, for a declaration of -+ a member function. */ -+ cp_ref_qualifier rqual = REF_QUAL_NONE; - /* cv-qualifiers that apply to the type specified by the DECLSPECS. */ - int type_quals; - tree raises = NULL_TREE; -@@ -9438,6 +9471,8 @@ - memfn_quals = declarator->u.function.qualifiers; - /* Pick up virt-specifiers. */ - virt_specifiers = declarator->u.function.virt_specifiers; -+ /* And ref-qualifier, too */ -+ rqual = declarator->u.function.ref_qualifier; - /* Pick up the exception specifications. */ - raises = declarator->u.function.exception_specification; - /* If the exception-specification is ill-formed, let's pretend -@@ -9505,12 +9540,13 @@ - therefore returns a void type. */ - - /* ISO C++ 12.4/2. A destructor may not be declared -- const or volatile. A destructor may not be -- static. -+ const or volatile. A destructor may not be static. -+ A destructor may not be declared with ref-qualifier. - - ISO C++ 12.1. A constructor may not be declared - const or volatile. A constructor may not be -- virtual. A constructor may not be static. */ -+ virtual. A constructor may not be static. -+ A constructor may not be declared with ref-qualifier. */ - if (staticp == 2) - error ((flags == DTOR_FLAG) - ? G_("destructor cannot be static member function") -@@ -9523,6 +9559,14 @@ - memfn_quals = TYPE_UNQUALIFIED; - } - -+ if (rqual) -+ { -+ error ((flags == DTOR_FLAG) -+ ? "destructors may not be ref-qualified" -+ : "constructors may not be ref-qualified"); -+ rqual = REF_QUAL_NONE; -+ } -+ - if (decl_context == FIELD - && !member_function_or_else (ctype, - current_class_type, -@@ -9642,14 +9686,18 @@ - memfn_quals |= type_memfn_quals (type); - type = build_memfn_type (type, - declarator->u.pointer.class_type, -- memfn_quals); -+ memfn_quals, -+ rqual); - if (type == error_mark_node) - return error_mark_node; -+ -+ rqual = REF_QUAL_NONE; - memfn_quals = TYPE_UNQUALIFIED; - } - - if (TREE_CODE (type) == FUNCTION_TYPE -- && type_memfn_quals (type) != TYPE_UNQUALIFIED) -+ && (type_memfn_quals (type) != TYPE_UNQUALIFIED -+ || type_memfn_rqual (type) != REF_QUAL_NONE)) - error (declarator->kind == cdk_reference - ? G_("cannot declare reference to qualified function type %qT") - : G_("cannot declare pointer to qualified function type %qT"), -@@ -9996,12 +10044,13 @@ - example "f S::*" declares a pointer to a const-qualified - member function of S. We record the cv-qualification in the - function type. */ -- if (memfn_quals && TREE_CODE (type) == FUNCTION_TYPE) -+ if ((rqual || memfn_quals) && TREE_CODE (type) == FUNCTION_TYPE) - { -- type = apply_memfn_quals (type, memfn_quals); -+ type = apply_memfn_quals (type, memfn_quals, rqual); - - /* We have now dealt with these qualifiers. */ - memfn_quals = TYPE_UNQUALIFIED; -+ rqual = REF_QUAL_NONE; - } - - if (type_uses_auto (type)) -@@ -10131,8 +10180,10 @@ - if (decl_context != TYPENAME) - { - /* A cv-qualifier-seq shall only be part of the function type -- for a non-static member function. [8.3.5/4 dcl.fct] */ -- if (type_memfn_quals (type) != TYPE_UNQUALIFIED -+ for a non-static member function. A ref-qualifier shall only -+ .... /same as above/ [dcl.fct] */ -+ if ((type_memfn_quals (type) != TYPE_UNQUALIFIED -+ || type_memfn_rqual (type) != REF_QUAL_NONE) - && (current_class_type == NULL_TREE || staticp) ) - { - error (staticp -@@ -10146,6 +10197,7 @@ - /* The qualifiers on the function type become the qualifiers on - the non-static member function. */ - memfn_quals |= type_memfn_quals (type); -+ rqual = type_memfn_rqual (type); - type_quals = TYPE_UNQUALIFIED; - } - } -@@ -10210,10 +10262,10 @@ - ctype = TYPE_METHOD_BASETYPE (type); - - if (ctype) -- type = build_memfn_type (type, ctype, memfn_quals); -+ type = build_memfn_type (type, ctype, memfn_quals, rqual); - /* Core issue #547: need to allow this in template type args. */ - else if (template_type_arg && TREE_CODE (type) == FUNCTION_TYPE) -- type = apply_memfn_quals (type, memfn_quals); -+ type = apply_memfn_quals (type, memfn_quals, rqual); - else - error ("invalid qualifiers on non-member function type"); - } -@@ -10282,7 +10334,7 @@ - cp_cv_quals real_quals = memfn_quals; - if (constexpr_p && sfk != sfk_constructor && sfk != sfk_destructor) - real_quals |= TYPE_QUAL_CONST; -- type = build_memfn_type (type, ctype, real_quals); -+ type = build_memfn_type (type, ctype, real_quals, rqual); - } - - { -@@ -10414,7 +10466,7 @@ - ? unqualified_id : dname, - parms, - unqualified_id, -- virtualp, flags, memfn_quals, raises, -+ virtualp, flags, memfn_quals, rqual, raises, - friendp ? -1 : 0, friendp, publicp, - inlinep | (2 * constexpr_p), - sfk, -@@ -10635,7 +10687,7 @@ - || storage_class != sc_static); - - decl = grokfndecl (ctype, type, original_name, parms, unqualified_id, -- virtualp, flags, memfn_quals, raises, -+ virtualp, flags, memfn_quals, rqual, raises, - 1, friendp, - publicp, inlinep | (2 * constexpr_p), sfk, - funcdef_flag, -@@ -11892,11 +11944,12 @@ - - static tree - xref_tag_1 (enum tag_types tag_code, tree name, -- tag_scope scope, bool template_header_p) -+ tag_scope orig_scope, bool template_header_p) - { - enum tree_code code; - tree t; - tree context = NULL_TREE; -+ tag_scope scope; - - gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE); - -@@ -11916,6 +11969,11 @@ - gcc_unreachable (); - } - -+ if (orig_scope == ts_lambda) -+ scope = ts_current; -+ else -+ scope = orig_scope; -+ - /* In case of anonymous name, xref_tag is only called to - make type node and push name. Name lookup is not required. */ - if (ANON_AGGRNAME_P (name)) -@@ -11989,6 +12047,10 @@ - { - t = make_class_type (code); - TYPE_CONTEXT (t) = context; -+ if (orig_scope == ts_lambda) -+ /* Remember that we're declaring a lambda to avoid bogus errors -+ in push_template_decl. */ -+ CLASSTYPE_LAMBDA_EXPR (t) = error_mark_node; - t = pushtag (name, t, scope); - } - } -@@ -14181,8 +14243,9 @@ - return memfntype; - gcc_assert (TREE_CODE (memfntype) == METHOD_TYPE); - args = TYPE_ARG_TYPES (memfntype); -+ cp_ref_qualifier rqual = type_memfn_rqual (memfntype); - fntype = build_function_type (TREE_TYPE (memfntype), TREE_CHAIN (args)); -- fntype = apply_memfn_quals (fntype, type_memfn_quals (memfntype)); -+ fntype = apply_memfn_quals (fntype, type_memfn_quals (memfntype), rqual); - fntype = (cp_build_type_attribute_variant - (fntype, TYPE_ATTRIBUTES (memfntype))); - fntype = (build_exception_variant -@@ -14198,9 +14261,10 @@ - { - tree stype = static_fn_type (decl); - cp_cv_quals quals = type_memfn_quals (stype); -+ cp_ref_qualifier rqual = type_memfn_rqual (stype); - -- if (quals != TYPE_UNQUALIFIED) -- stype = apply_memfn_quals (stype, TYPE_UNQUALIFIED); -+ if (quals != TYPE_UNQUALIFIED || rqual != REF_QUAL_NONE) -+ stype = apply_memfn_quals (stype, TYPE_UNQUALIFIED, REF_QUAL_NONE); - - TREE_TYPE (decl) = stype; - -Index: gcc/cp/error.c -=================================================================== ---- a/src/gcc/cp/error.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/error.c (.../branches/gcc-4_8-branch) -@@ -78,6 +78,7 @@ - static void dump_expr_list (tree, int); - static void dump_global_iord (tree); - static void dump_parameters (tree, int); -+static void dump_ref_qualifier (tree, int); - static void dump_exception_spec (tree, int); - static void dump_template_argument (tree, int); - static void dump_template_argument_list (tree, int); -@@ -832,6 +833,7 @@ - pp_cxx_cv_qualifier_seq (cxx_pp, class_of_this_parm (t)); - else - pp_cxx_cv_qualifier_seq (cxx_pp, t); -+ dump_ref_qualifier (t, flags); - dump_exception_spec (TYPE_RAISES_EXCEPTIONS (t), flags); - dump_type_suffix (TREE_TYPE (t), flags); - break; -@@ -1426,6 +1428,7 @@ - { - pp_base (cxx_pp)->padding = pp_before; - pp_cxx_cv_qualifier_seq (cxx_pp, class_of_this_parm (fntype)); -+ dump_ref_qualifier (fntype, flags); - } - - if (flags & TFF_EXCEPTION_SPECIFICATION) -@@ -1507,6 +1510,21 @@ - pp_cxx_right_paren (cxx_pp); - } - -+/* Print ref-qualifier of a FUNCTION_TYPE or METHOD_TYPE. FLAGS are ignored. */ -+ -+static void -+dump_ref_qualifier (tree t, int flags ATTRIBUTE_UNUSED) -+{ -+ if (FUNCTION_REF_QUALIFIED (t)) -+ { -+ pp_base (cxx_pp)->padding = pp_before; -+ if (FUNCTION_RVALUE_QUALIFIED (t)) -+ pp_cxx_ws_string (cxx_pp, "&&"); -+ else -+ pp_cxx_ws_string (cxx_pp, "&"); -+ } -+} -+ - /* Print an exception specification. T is the exception specification. */ - - static void -@@ -3394,6 +3412,11 @@ - "c++11 attributes " - "only available with -std=c++11 or -std=gnu++11"); - break; -+ case CPP0X_REF_QUALIFIER: -+ pedwarn (input_location, 0, -+ "ref-qualifiers " -+ "only available with -std=c++0x or -std=gnu++0x"); -+ break; - default: - gcc_unreachable (); - } -Index: gcc/cp/tree.c -=================================================================== ---- a/src/gcc/cp/tree.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/tree.c (.../branches/gcc-4_8-branch) -@@ -469,6 +469,9 @@ - tree rval = build_aggr_init_expr (type, init); - tree slot; - -+ if (!complete_type_or_maybe_complain (type, init, complain)) -+ return error_mark_node; -+ - /* Make sure that we're not trying to create an instance of an - abstract class. */ - if (abstract_virtuals_error_sfinae (NULL_TREE, type, complain)) -@@ -1078,6 +1081,15 @@ - /* Retrieve (or create) the appropriately qualified variant. */ - result = build_qualified_type (type, type_quals); - -+ /* Preserve exception specs and ref-qualifier since build_qualified_type -+ doesn't know about them. */ -+ if (TREE_CODE (result) == FUNCTION_TYPE -+ || TREE_CODE (result) == METHOD_TYPE) -+ { -+ result = build_exception_variant (result, TYPE_RAISES_EXCEPTIONS (type)); -+ result = build_ref_qualified_type (result, type_memfn_rqual (type)); -+ } -+ - /* If this was a pointer-to-method type, and we just made a copy, - then we need to unshare the record that holds the cached - pointer-to-member-function type, because these will be distinct -@@ -1211,7 +1223,9 @@ - { - result = build_function_type (type, - arg_types); -- result = apply_memfn_quals (result, type_memfn_quals (t)); -+ result = apply_memfn_quals (result, -+ type_memfn_quals (t), -+ type_memfn_rqual (t)); - } - - if (TYPE_RAISES_EXCEPTIONS (t)) -@@ -1241,8 +1255,13 @@ - changed = true; - } - if (changed) -- fullname = lookup_template_function (TREE_OPERAND (fullname, 0), -- new_args); -+ { -+ NON_DEFAULT_TEMPLATE_ARGS_COUNT (new_args) -+ = NON_DEFAULT_TEMPLATE_ARGS_COUNT (args); -+ fullname -+ = lookup_template_function (TREE_OPERAND (fullname, 0), -+ new_args); -+ } - else - ggc_free (new_args); - } -@@ -1375,8 +1394,8 @@ - r = copy_node (t); - for (i = 0; i < n; ++i) - TREE_VEC_ELT (r, i) = (*vec)[i]; -- SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT -- (r, GET_NON_DEFAULT_TEMPLATE_ARGS_COUNT (t)); -+ NON_DEFAULT_TEMPLATE_ARGS_COUNT (r) -+ = NON_DEFAULT_TEMPLATE_ARGS_COUNT (t); - } - else - r = t; -@@ -1418,7 +1437,8 @@ - } - - case LAMBDA_EXPR: -- gcc_unreachable (); -+ error ("lambda-expression in a constant expression"); -+ return error_mark_node; - - default: - break; -@@ -1698,6 +1718,64 @@ - return t; - } - -+/* Like check_qualified_type, but also check ref-qualifier and exception -+ specification. */ -+ -+static bool -+cp_check_qualified_type (const_tree cand, const_tree base, int type_quals, -+ cp_ref_qualifier rqual, tree raises) -+{ -+ return (check_qualified_type (cand, base, type_quals) -+ && comp_except_specs (raises, TYPE_RAISES_EXCEPTIONS (cand), -+ ce_exact) -+ && type_memfn_rqual (cand) == rqual); -+} -+ -+/* Build the FUNCTION_TYPE or METHOD_TYPE with the ref-qualifier RQUAL. */ -+ -+tree -+build_ref_qualified_type (tree type, cp_ref_qualifier rqual) -+{ -+ tree t; -+ -+ if (rqual == type_memfn_rqual (type)) -+ return type; -+ -+ int type_quals = TYPE_QUALS (type); -+ tree raises = TYPE_RAISES_EXCEPTIONS (type); -+ for (t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t)) -+ if (cp_check_qualified_type (t, type, type_quals, rqual, raises)) -+ return t; -+ -+ t = build_variant_type_copy (type); -+ switch (rqual) -+ { -+ case REF_QUAL_RVALUE: -+ FUNCTION_RVALUE_QUALIFIED (t) = 1; -+ /* Intentional fall through */ -+ case REF_QUAL_LVALUE: -+ FUNCTION_REF_QUALIFIED (t) = 1; -+ break; -+ default: -+ FUNCTION_REF_QUALIFIED (t) = 0; -+ break; -+ } -+ -+ if (TYPE_STRUCTURAL_EQUALITY_P (type)) -+ /* Propagate structural equality. */ -+ SET_TYPE_STRUCTURAL_EQUALITY (t); -+ else if (TYPE_CANONICAL (type) != type) -+ /* Build the underlying canonical type, since it is different -+ from TYPE. */ -+ TYPE_CANONICAL (t) = build_ref_qualified_type (TYPE_CANONICAL (type), -+ rqual); -+ else -+ /* T is its own canonical type. */ -+ TYPE_CANONICAL (t) = t; -+ -+ return t; -+} -+ - /* Returns nonzero if X is an expression for a (possibly overloaded) - function. If "f" is a function or function template, "f", "c->f", - "c.f", "C::f", and "f" will all be considered possibly -@@ -1903,9 +1981,9 @@ - return type; - - type_quals = TYPE_QUALS (type); -+ cp_ref_qualifier rqual = type_memfn_rqual (type); - for (v = TYPE_MAIN_VARIANT (type); v; v = TYPE_NEXT_VARIANT (v)) -- if (check_qualified_type (v, type, type_quals) -- && comp_except_specs (raises, TYPE_RAISES_EXCEPTIONS (v), ce_exact)) -+ if (cp_check_qualified_type (v, type, type_quals, rqual, raises)) - return v; - - /* Need to build a new variant. */ -@@ -2024,11 +2102,12 @@ - if (TYPE_PTRMEMFUNC_P (t)) - goto ptrmem; - /* Lambda types that don't have mangling scope have no linkage. We -- check CLASSTYPE_LAMBDA_EXPR here rather than LAMBDA_TYPE_P because -+ check CLASSTYPE_LAMBDA_EXPR for error_mark_node because - when we get here from pushtag none of the lambda information is - set up yet, so we want to assume that the lambda has linkage and - fix it up later if not. */ - if (CLASSTYPE_LAMBDA_EXPR (t) -+ && CLASSTYPE_LAMBDA_EXPR (t) != error_mark_node - && LAMBDA_TYPE_EXTRA_SCOPE (t) == NULL_TREE) - return t; - /* Fall through. */ -@@ -2486,7 +2565,7 @@ - t1 = TREE_OPERAND (t1, 0); - for (code2 = TREE_CODE (t2); - CONVERT_EXPR_CODE_P (code2) -- || code1 == NON_LVALUE_EXPR; -+ || code2 == NON_LVALUE_EXPR; - code2 = TREE_CODE (t2)) - t2 = TREE_OPERAND (t2, 0); - -@@ -3303,8 +3382,12 @@ - new_type = build_type_attribute_variant (type, attributes); - if (TREE_CODE (new_type) == FUNCTION_TYPE - || TREE_CODE (new_type) == METHOD_TYPE) -- new_type = build_exception_variant (new_type, -- TYPE_RAISES_EXCEPTIONS (type)); -+ { -+ new_type = build_exception_variant (new_type, -+ TYPE_RAISES_EXCEPTIONS (type)); -+ new_type = build_ref_qualified_type (new_type, -+ type_memfn_rqual (type)); -+ } - - /* Making a new main variant of a class type is broken. */ - gcc_assert (!CLASS_TYPE_P (type) || new_type == type); -Index: gcc/cp/ChangeLog -=================================================================== ---- a/src/gcc/cp/ChangeLog (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,269 @@ -+2013-04-17 Jason Merrill -+ -+ DR 941 -+ * decl.c (duplicate_decls): Don't propagate DECL_DELETED_FN to -+ template specializations. -+ -+2013-04-15 Jason Merrill -+ -+ PR c++/52748 -+ * pt.c (tsubst) [DECLTYPE_TYPE]: If ~id is an expression -+ rather than a destructor name, it isn't an unqualified-name. -+ (tsubst_copy_and_build): Pass down decltype_flag to operator -+ handling code, too. -+ -+ PR c++/56388 -+ * semantics.c (insert_capture_proxy): Just use index 1 in the -+ stmt_list_stack. -+ -+2013-04-11 Jason Merrill -+ -+ PR c++/52748 -+ * parser.c (complain_flags): New. -+ (cp_parser_postfix_expression): Use it. -+ (cp_parser_unary_expression): Likewise. -+ (cp_parser_binary_expression): Likewise. -+ (cp_parser_assignment_expression): Likewise. -+ (cp_parser_expression): Likewise. -+ (cp_parser_postfix_open_square_expression): Take decltype_p. -+ (cp_parser_builtin_offsetof): Adjust. -+ (cp_convert_range_for): Pass complain to finish_unary_op_expr. -+ * decl2.c (grok_array_decl): Add decltype_p parm. -+ * cp-tree.h: Adjust prototype. -+ * semantics.c (finish_unary_op_expr): Add complain parm. -+ -+2013-04-11 Jakub Jelinek -+ -+ PR c++/56895 -+ * call.c (null_ptr_cst_p): Call fold_non_dependent_expr_sfinae before -+ calling maybe_constant_value for C++98. -+ -+2013-04-11 Paolo Carlini -+ -+ PR c++/56913 -+ * typeck2.c (build_m_component_ref): Protect error calls with -+ (complain & tf_error). -+ -+2013-04-10 Jakub Jelinek -+ -+ PR c++/56895 -+ * typeck.c (cp_build_binary_op): Call fold_non_dependent_expr_sfinae -+ first before calling maybe_constant_value for warn_for_div_by_zero -+ or invalid shift count warning purposes. -+ -+2013-04-06 Jason Merrill -+ -+ * parser.c (cp_parser_std_attribute): Treat [[noreturn]] like GNU -+ noreturn attribute. -+ -+2013-04-03 Jason Merrill -+ -+ * cp-tree.h (FUNCTION_OR_METHOD_TYPE_CHECK): Remove. -+ (FUNCTION_REF_QUALIFIED): Use FUNC_OR_METHOD_CHECK instead. -+ (FUNCTION_RVALUE_QUALIFIED): Likewise. -+ -+2013-04-03 Jakub Jelinek -+ -+ PR debug/56819 -+ * tree.c (strip_typedefs): Copy NON_DEFAULT_TEMPLATE_ARGS_COUNT -+ from args to new_args. -+ (strip_typedefs_expr): Copy NON_DEFAULT_TEMPLATE_ARGS_COUNT from t to -+ r instead of doing {S,G}ET_NON_DEFAULT_TEMPLATE_ARGS_COUNT. -+ -+2013-04-02 Jason Merrill -+ -+ PR c++/56821 -+ * mangle.c (write_function_type): Mangle ref-qualifier. -+ (write_nested_name): Likewise. -+ (canonicalize_for_substitution): Preserve ref-qualifier. -+ (write_type): Likewise. -+ -+2013-04-01 Paolo Carlini -+ -+ PR c++/55951 -+ * decl.c (check_array_designated_initializer): Handle CONST_DECL -+ as ce->index. -+ -+2013-04-01 Jason Merrill -+ -+ PR c++/56772 -+ * init.c (build_new): Don't try to process an array initializer -+ at template definition time. -+ -+2013-04-01 Jason Merrill -+ -+ PR c++/56793 -+ * typeck.c (finish_class_member_access_expr): Handle enum scope. -+ -+2013-04-01 Jason Merrill -+ -+ PR c++/56794 -+ * parser.c (cp_parser_range_for): Don't try to do auto deduction -+ in a template if the type of the range is incomplete. -+ -+2013-04-01 Bronek Kozicki -+ Jason Merrill -+ -+ Implement N2439 (ref-qualifiers for 'this') -+ * cp-tree.h (FUNCTION_REF_QUALIFIED): New. -+ (FUNCTION_RVALUE_QUALIFIED): New. -+ (FUNCTION_OR_METHOD_TYPE_CHECK): New. -+ (cpp0x_warn_str): Add CPP0X_REF_QUALIFIER. -+ (cp_ref_qualifier): New enum. -+ (cp_declarator): Add ref_qualifier. -+ * parser.c (cp_parser_ref_qualifier_seq_opt): New. -+ (cp_parser_direct_declarator): Use it. -+ (make_call_declarator): Adjust. -+ (cp_parser_lambda_declarator_opt): Adjust. -+ * call.c (add_function_candidate): Handle ref-qualifier overload -+ resolution semantics. -+ (standard_conversion): Adjust. -+ * class.c (add_method, same_signature_p): Compare ref-qualifiers. -+ * decl.c (grokdeclarator): Handle ref-qualifiers. -+ (grokfndecl): Check for invalid ref-qualifiers. -+ (static_fn_type, revert_static_member_fn): Adjust. -+ * decl2.c (build_memfn_type): Handle ref-qualifiers. -+ (check_classfn): Check them. -+ (cp_reconstruct_complex_type): Retain them. -+ * error.c (dump_ref_qualifier): New. -+ (dump_type_suffix, dump_function_decl): Use it. -+ (maybe_warn_cpp0x): Handle CPP0X_REF_QUALIFIER. -+ * pt.c (tsubst, tsubst_function_type): Instantiate ref-quals. -+ (unify): Retain them. -+ * tree.c (cp_check_qualified_type): New. -+ (cp_build_qualified_type_real): Keep exception spec and ref-qual. -+ (build_ref_qualified_type): New. -+ (strip_typedefs, build_exception_variant): Keep ref-qualifier. -+ (cp_build_type_attribute_variant): Keep ref-qualifier. -+ * typeck.c (merge_types): Keep ref-qualifier. -+ (structural_comptypes): Compare ref-qualifier. -+ (type_memfn_rqual): New. -+ (apply_memfn_quals): Take ref-qual argument. -+ * typeck2.c (build_m_component_ref): Check ref-qualifier. -+ -+2013-03-29 Jason Merrill -+ -+ PR c++/56774 -+ PR c++/35722 -+ * pt.c (unify_pack_expansion): Fix indexing. -+ -+2013-03-28 Jason Merrill -+ -+ PR c++/56728 -+ * semantics.c (cxx_eval_indirect_ref): Use the folded operand if -+ we still think this might be constant. -+ -+2013-03-27 Jason Merrill -+ -+ PR c++/56749 -+ * semantics.c (finish_qualified_id_expr): Return early -+ for enum scope. -+ -+2013-03-26 Jason Merrill -+ -+ PR c++/45282 -+ * typeck2.c (build_m_component_ref): Handle prvalue object. -+ -+2013-03-25 Jason Merrill -+ -+ PR c++/56699 -+ * semantics.c (maybe_resolve_dummy): Make sure that the enclosing -+ class is derived from the type of the object. -+ -+ PR c++/56692 -+ * search.c (lookup_base): Handle NULL_TREE. -+ -+2013-03-25 Paolo Carlini -+ -+ PR c++/56722 -+ * decl.c (cp_finish_decl): Check DECL_LANG_SPECIFIC before -+ DECL_TEMPLATE_INSTANTIATION. -+ -+2013-03-25 Jason Merrill -+ -+ PR c++/52014 -+ * semantics.c (lambda_expr_this_capture): Don't capture 'this' in -+ unevaluated context. -+ -+2013-03-23 Jason Merrill -+ -+ PR c++/54359 -+ * parser.c (cp_parser_direct_declarator): Fix late return -+ for out-of-class defn of member function. -+ -+2013-03-22 Paolo Carlini -+ -+ PR c++/56582 -+ * semantics.c (cxx_eval_array_reference): Check for negative index. -+ -+2013-03-22 Jason Merrill -+ -+ PR c++/56646 -+ * parser.c (cp_parser_late_return_type_opt): Save and restore -+ current_class_ptr/ref. -+ -+ N3276 -+ PR c++/52748 -+ * cp-tree.h (tsubst_flags): Add tf_decltype. -+ * call.c (build_cxx_call): Don't build a temporary if it's set. -+ (build_over_call): Make sure it's only passed to build_cxx_call. -+ * parser.c (cp_parser_primary_expression): Add decltype_p parm. -+ (cp_parser_unary_expression): Likewise. -+ (cp_parser_cast_expression): Likewise. -+ (cp_parser_binary_expression): Likewise. -+ (cp_parser_assignment_expression): Likewise. -+ (cp_parser_postfix_expression): Likewise. Pass tf_decltype. -+ (cp_parser_explicit_instantiation): Add decltype_p. Force a -+ temporary for a call on the LHS of a comma. -+ (cp_parser_decltype): Pass true to decltype_p parms. -+ * pt.c (tsubst) [DECLTYPE_TYPE]: Pass tf_decltype. -+ (tsubst_copy_and_build): Pass tf_decltype down only for -+ CALL_EXPR and the RHS of COMPOUND_EXPR. -+ * tree.c (build_cplus_new): Call complete_type_or_maybe_complain. -+ -+ DR 657 -+ * pt.c (tsubst_function_type): Call abstract_virtuals_error_sfinae. -+ (tsubst_arg_types): Likewise. -+ -+ PR c++/54277 -+ * semantics.c (lambda_capture_field_type): Don't build a -+ magic decltype for pointer types. -+ (lambda_proxy_type): Likewise. -+ (finish_non_static_data_member): Get the quals from -+ the object. -+ -+ PR c++/52374 -+ * pt.c (tsubst_qualified_id): Use current_nonlambda_class_type. -+ -+ PR c++/54764 -+ PR c++/55972 -+ * name-lookup.h (tag_scope): Add ts_lambda. -+ * semantics.c (begin_lambda_type): Use it. -+ * decl.c (xref_tag_1): Set CLASSTYPE_LAMBDA_EXPR. -+ * pt.c (check_default_tmpl_args): Ignore lambdas. -+ (push_template_decl_real): Handle lambdas. -+ * tree.c (no_linkage_check): Adjust lambda check. -+ -+ PR c++/56039 -+ * tree.c (strip_typedefs_expr): Complain about lambda, don't abort. -+ -+ PR c++/56447 -+ PR c++/55532 -+ * pt.c (instantiate_class_template_1): Instantiate lambda capture -+ list here. -+ (tsubst_copy_and_build): Not here. -+ -+2013-03-22 Jakub Jelinek -+ -+ Backported from mainline -+ 2013-03-16 Jakub Jelinek -+ -+ PR c++/56607 -+ * typeck.c (cp_build_binary_op): When calling warn_for_div_by_zero, -+ pass op1 through maybe_constant_value first. -+ -+ * tree.c (cp_tree_equal): Fix a pasto. -+ - 2013-03-22 Release Manager - - * GCC 4.8.0 released. -Index: gcc/cp/typeck2.c -=================================================================== ---- a/src/gcc/cp/typeck2.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/typeck2.c (.../branches/gcc-4_8-branch) -@@ -1612,7 +1612,7 @@ - - if (TYPE_PTRDATAMEM_P (ptrmem_type)) - { -- bool is_lval = real_lvalue_p (datum); -+ cp_lvalue_kind kind = lvalue_kind (datum); - tree ptype; - - /* Compute the type of the field, as described in [expr.ref]. -@@ -1642,12 +1642,39 @@ - return error_mark_node; - - /* If the object expression was an rvalue, return an rvalue. */ -- if (!is_lval) -+ if (kind & clk_class) -+ datum = rvalue (datum); -+ else if (kind & clk_rvalueref) - datum = move (datum); - return datum; - } - else -- return build2 (OFFSET_REF, type, datum, component); -+ { -+ /* 5.5/6: In a .* expression whose object expression is an rvalue, the -+ program is ill-formed if the second operand is a pointer to member -+ function with ref-qualifier &. In a .* expression whose object -+ expression is an lvalue, the program is ill-formed if the second -+ operand is a pointer to member function with ref-qualifier &&. */ -+ if (FUNCTION_REF_QUALIFIED (type)) -+ { -+ bool lval = real_lvalue_p (datum); -+ if (lval && FUNCTION_RVALUE_QUALIFIED (type)) -+ { -+ if (complain & tf_error) -+ error ("pointer-to-member-function type %qT requires an rvalue", -+ ptrmem_type); -+ return error_mark_node; -+ } -+ else if (!lval && !FUNCTION_RVALUE_QUALIFIED (type)) -+ { -+ if (complain & tf_error) -+ error ("pointer-to-member-function type %qT requires an lvalue", -+ ptrmem_type); -+ return error_mark_node; -+ } -+ } -+ return build2 (OFFSET_REF, type, datum, component); -+ } - } - - /* Return a tree node for the expression TYPENAME '(' PARMS ')'. */ -Index: gcc/cp/pt.c -=================================================================== ---- a/src/gcc/cp/pt.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/pt.c (.../branches/gcc-4_8-branch) -@@ -4306,6 +4306,13 @@ - local scope. */ - return true; - -+ if (TREE_CODE (decl) == TYPE_DECL -+ && TREE_TYPE (decl) -+ && LAMBDA_TYPE_P (TREE_TYPE (decl))) -+ /* A lambda doesn't have an explicit declaration; don't complain -+ about the parms of the enclosing class. */ -+ return true; -+ - if (current_class_type - && !TYPE_BEING_DEFINED (current_class_type) - && DECL_LANG_SPECIFIC (decl) -@@ -4674,6 +4681,8 @@ - if (!ctx - || TREE_CODE (ctx) == FUNCTION_DECL - || (CLASS_TYPE_P (ctx) && TYPE_BEING_DEFINED (ctx)) -+ || (TREE_CODE (decl) == TYPE_DECL -+ && LAMBDA_TYPE_P (TREE_TYPE (decl))) - || (is_friend && !DECL_TEMPLATE_INFO (decl))) - { - if (DECL_LANG_SPECIFIC (decl) -@@ -8992,12 +9001,26 @@ - } - } - -- if (CLASSTYPE_LAMBDA_EXPR (type)) -+ if (tree expr = CLASSTYPE_LAMBDA_EXPR (type)) - { - tree decl = lambda_function (type); - if (decl) - { - instantiate_decl (decl, false, false); -+ -+ /* We need to instantiate the capture list from the template -+ after we've instantiated the closure members, but before we -+ consider adding the conversion op. Also keep any captures -+ that may have been added during instantiation of the op(). */ -+ tree tmpl_expr = CLASSTYPE_LAMBDA_EXPR (pattern); -+ tree tmpl_cap -+ = tsubst_copy_and_build (LAMBDA_EXPR_CAPTURE_LIST (tmpl_expr), -+ args, tf_warning_or_error, NULL_TREE, -+ false, false); -+ -+ LAMBDA_EXPR_CAPTURE_LIST (expr) -+ = chainon (tmpl_cap, nreverse (LAMBDA_EXPR_CAPTURE_LIST (expr))); -+ - maybe_add_lambda_conv_op (type); - } - else -@@ -10826,6 +10849,9 @@ - } - return error_mark_node; - } -+ /* DR 657. */ -+ if (abstract_virtuals_error_sfinae (NULL_TREE, type, complain)) -+ return error_mark_node; - - /* Do array-to-pointer, function-to-pointer conversion, and ignore - top-level qualifiers as required. */ -@@ -10888,10 +10914,8 @@ - return_type = tsubst (TREE_TYPE (t), args, complain, in_decl); - if (return_type == error_mark_node) - return error_mark_node; -- /* The standard does not presently indicate that creation of a -- function type with an invalid return type is a deduction failure. -- However, that is clearly analogous to creating an array of "void" -- or a reference to a reference. This is core issue #486. */ -+ /* DR 486 clarifies that creation of a function type with an -+ invalid return type is a deduction failure. */ - if (TREE_CODE (return_type) == ARRAY_TYPE - || TREE_CODE (return_type) == FUNCTION_TYPE) - { -@@ -10904,6 +10928,9 @@ - } - return error_mark_node; - } -+ /* And DR 657. */ -+ if (abstract_virtuals_error_sfinae (NULL_TREE, return_type, complain)) -+ return error_mark_node; - - /* Substitute the argument types. */ - arg_types = tsubst_arg_types (TYPE_ARG_TYPES (t), args, NULL_TREE, -@@ -10915,7 +10942,9 @@ - if (TREE_CODE (t) == FUNCTION_TYPE) - { - fntype = build_function_type (return_type, arg_types); -- fntype = apply_memfn_quals (fntype, type_memfn_quals (t)); -+ fntype = apply_memfn_quals (fntype, -+ type_memfn_quals (t), -+ type_memfn_rqual (t)); - } - else - { -@@ -10937,6 +10966,7 @@ - - fntype = build_method_type_directly (r, return_type, - TREE_CHAIN (arg_types)); -+ fntype = build_ref_qualified_type (fntype, type_memfn_rqual (t)); - } - fntype = cp_build_type_attribute_variant (fntype, TYPE_ATTRIBUTES (t)); - -@@ -11569,7 +11599,9 @@ - /* The type of the implicit object parameter gets its - cv-qualifiers from the FUNCTION_TYPE. */ - tree memptr; -- tree method_type = build_memfn_type (type, r, type_memfn_quals (type)); -+ tree method_type -+ = build_memfn_type (type, r, type_memfn_quals (type), -+ type_memfn_rqual (type)); - memptr = build_ptrmemfunc_type (build_pointer_type (method_type)); - return cp_build_qualified_type_real (memptr, cp_type_quals (t), - complain); -@@ -11757,7 +11789,7 @@ - ++c_inhibit_evaluation_warnings; - - type = tsubst_expr (DECLTYPE_TYPE_EXPR (t), args, -- complain, in_decl, -+ complain|tf_decltype, in_decl, - /*integral_constant_expression_p=*/false); - - --cp_unevaluated_operand; -@@ -11768,8 +11800,17 @@ - else if (DECLTYPE_FOR_LAMBDA_PROXY (t)) - type = lambda_proxy_type (type); - else -- type = finish_decltype_type -- (type, DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P (t), complain); -+ { -+ bool id = DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P (t); -+ if (id && TREE_CODE (DECLTYPE_TYPE_EXPR (t)) == BIT_NOT_EXPR -+ && EXPR_P (type)) -+ /* In a template ~id could be either a complement expression -+ or an unqualified-id naming a destructor; if instantiating -+ it produces an expression, it's not an id-expression or -+ member access. */ -+ id = false; -+ type = finish_decltype_type (type, id, complain); -+ } - return cp_build_qualified_type_real (type, - cp_type_quals (t) - | cp_type_quals (type), -@@ -12010,7 +12051,7 @@ - else if (TYPE_P (scope)) - { - expr = (adjust_result_of_qualified_name_lookup -- (expr, scope, current_class_type)); -+ (expr, scope, current_nonlambda_class_type ())); - expr = (finish_qualified_id_expr - (scope, expr, done, address_p && PTRMEM_OK_P (qualified_id), - QUALIFIED_NAME_IS_TEMPLATE (qualified_id), -@@ -13393,6 +13434,11 @@ - if (EXPR_HAS_LOCATION (t)) - input_location = EXPR_LOCATION (t); - -+ /* N3276 decltype magic only applies to calls at the top level or on the -+ right side of a comma. */ -+ tsubst_flags_t decltype_flag = (complain & tf_decltype); -+ complain &= ~tf_decltype; -+ - switch (TREE_CODE (t)) - { - case USING_DECL: -@@ -13479,7 +13525,8 @@ - r = convert_from_reference (r); - } - else -- r = build_x_indirect_ref (input_location, r, RO_UNARY_STAR, complain); -+ r = build_x_indirect_ref (input_location, r, RO_UNARY_STAR, -+ complain|decltype_flag); - RETURN (r); - } - -@@ -13556,7 +13603,8 @@ - case POSTINCREMENT_EXPR: - op1 = tsubst_non_call_postfix_expression (TREE_OPERAND (t, 0), - args, complain, in_decl); -- RETURN (build_x_unary_op (input_location, TREE_CODE (t), op1, complain)); -+ RETURN (build_x_unary_op (input_location, TREE_CODE (t), op1, -+ complain|decltype_flag)); - - case PREDECREMENT_EXPR: - case PREINCREMENT_EXPR: -@@ -13568,7 +13616,8 @@ - case REALPART_EXPR: - case IMAGPART_EXPR: - RETURN (build_x_unary_op (input_location, TREE_CODE (t), -- RECUR (TREE_OPERAND (t, 0)), complain)); -+ RECUR (TREE_OPERAND (t, 0)), -+ complain|decltype_flag)); - - case FIX_TRUNC_EXPR: - RETURN (cp_build_unary_op (FIX_TRUNC_EXPR, RECUR (TREE_OPERAND (t, 0)), -@@ -13585,7 +13634,8 @@ - else - op1 = tsubst_non_call_postfix_expression (op1, args, complain, - in_decl); -- RETURN (build_x_unary_op (input_location, ADDR_EXPR, op1, complain)); -+ RETURN (build_x_unary_op (input_location, ADDR_EXPR, op1, -+ complain|decltype_flag)); - - case PLUS_EXPR: - case MINUS_EXPR: -@@ -13634,7 +13684,7 @@ - ? ERROR_MARK - : TREE_CODE (TREE_OPERAND (t, 1))), - /*overload=*/NULL, -- complain); -+ complain|decltype_flag); - if (EXPR_P (r) && TREE_NO_WARNING (t)) - TREE_NO_WARNING (r) = TREE_NO_WARNING (t); - -@@ -13650,7 +13700,8 @@ - op1 = tsubst_non_call_postfix_expression (TREE_OPERAND (t, 0), - args, complain, in_decl); - RETURN (build_x_array_ref (EXPR_LOCATION (t), op1, -- RECUR (TREE_OPERAND (t, 1)), complain)); -+ RECUR (TREE_OPERAND (t, 1)), -+ complain|decltype_flag)); - - case SIZEOF_EXPR: - if (PACK_EXPANSION_P (TREE_OPERAND (t, 0))) -@@ -13743,7 +13794,7 @@ - RECUR (TREE_OPERAND (t, 0)), - TREE_CODE (TREE_OPERAND (t, 1)), - RECUR (TREE_OPERAND (t, 2)), -- complain); -+ complain|decltype_flag); - /* TREE_NO_WARNING must be set if either the expression was - parenthesized or it uses an operator such as >>= rather - than plain assignment. In the former case, it was already -@@ -13824,10 +13875,16 @@ - complain)); - - case COMPOUND_EXPR: -- RETURN (build_x_compound_expr (EXPR_LOCATION (t), -- RECUR (TREE_OPERAND (t, 0)), -- RECUR (TREE_OPERAND (t, 1)), -- complain)); -+ { -+ tree op0 = tsubst_copy_and_build (TREE_OPERAND (t, 0), args, -+ complain & ~tf_decltype, in_decl, -+ /*function_p=*/false, -+ integral_constant_expression_p); -+ RETURN (build_x_compound_expr (EXPR_LOCATION (t), -+ op0, -+ RECUR (TREE_OPERAND (t, 1)), -+ complain|decltype_flag)); -+ } - - case CALL_EXPR: - { -@@ -14004,6 +14061,9 @@ - if (DECL_P (function)) - mark_used (function); - -+ /* Put back tf_decltype for the actual call. */ -+ complain |= decltype_flag; -+ - if (TREE_CODE (function) == OFFSET_REF) - ret = build_offset_ref_call_from_tree (function, &call_args, - complain); -@@ -14471,12 +14531,6 @@ - declaration of the op() for later calls to lambda_function. */ - complete_type (type); - -- /* The capture list refers to closure members, so this needs to -- wait until after we finish instantiating the type. Also keep -- any captures that may have been added during instantiation. */ -- LAMBDA_EXPR_CAPTURE_LIST (r) -- = chainon (RECUR (LAMBDA_EXPR_CAPTURE_LIST (t)), -- LAMBDA_EXPR_CAPTURE_LIST (r)); - LAMBDA_EXPR_THIS_CAPTURE (r) = NULL_TREE; - - RETURN (build_lambda_object (r)); -@@ -16155,10 +16209,10 @@ - arg = NULL_TREE; - if (TREE_VALUE (pack) - && (pargs = ARGUMENT_PACK_EXPLICIT_ARGS (TREE_VALUE (pack))) -- && (i < TREE_VEC_LENGTH (pargs))) -+ && (i - start < TREE_VEC_LENGTH (pargs))) - { - any_explicit = true; -- arg = TREE_VEC_ELT (pargs, i); -+ arg = TREE_VEC_ELT (pargs, i - start); - } - TMPL_ARG (targs, level, idx) = arg; - } -@@ -17039,10 +17093,12 @@ - build_function_type (TREE_TYPE (method_type), - TREE_CHAIN (TYPE_ARG_TYPES (method_type))); - -- /* Extract the cv-qualifiers of the member function from the -- implicit object parameter and place them on the function -- type to be restored later. */ -- fntype = apply_memfn_quals (fntype, type_memfn_quals (method_type)); -+ /* Extract the cv-qualifiers and ref-qualifier of the member -+ function from the implicit object parameter and place them -+ on the function type to be restored later. */ -+ fntype = apply_memfn_quals (fntype, -+ type_memfn_quals (method_type), -+ type_memfn_rqual (method_type)); - return unify (tparms, targs, TREE_TYPE (parm), fntype, strict, explain_p); - } - -Index: gcc/cp/semantics.c -=================================================================== ---- a/src/gcc/cp/semantics.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/semantics.c (.../branches/gcc-4_8-branch) -@@ -1574,9 +1574,7 @@ - else - { - /* Set the cv qualifiers. */ -- int quals = (current_class_ref -- ? cp_type_quals (TREE_TYPE (current_class_ref)) -- : TYPE_UNQUALIFIED); -+ int quals = cp_type_quals (TREE_TYPE (object)); - - if (DECL_MUTABLE_P (decl)) - quals &= ~TYPE_QUAL_CONST; -@@ -1764,6 +1762,10 @@ - return expr; - } - -+ /* No need to check access within an enum. */ -+ if (TREE_CODE (qualifying_class) == ENUMERAL_TYPE) -+ return expr; -+ - /* Within the scope of a class, turn references to non-static - members into expression of the form "this->...". */ - if (template_arg_p) -@@ -2370,10 +2372,12 @@ - /* Finish an expression of the form CODE EXPR. */ - - tree --finish_unary_op_expr (location_t loc, enum tree_code code, tree expr) -+finish_unary_op_expr (location_t loc, enum tree_code code, tree expr, -+ tsubst_flags_t complain) - { -- tree result = build_x_unary_op (loc, code, expr, tf_warning_or_error); -- if (TREE_OVERFLOW_P (result) && !TREE_OVERFLOW_P (expr)) -+ tree result = build_x_unary_op (loc, code, expr, complain); -+ if ((complain & tf_warning) -+ && TREE_OVERFLOW_P (result) && !TREE_OVERFLOW_P (expr)) - overflow_warning (input_location, result); - - return result; -@@ -7007,6 +7011,13 @@ - *non_constant_p = true; - return t; - } -+ else if (tree_int_cst_lt (index, integer_zero_node)) -+ { -+ if (!allow_non_constant) -+ error ("negative array subscript"); -+ *non_constant_p = true; -+ return t; -+ } - i = tree_low_cst (index, 0); - if (TREE_CODE (ary) == CONSTRUCTOR) - return (*CONSTRUCTOR_ELTS (ary))[i].value; -@@ -7649,6 +7660,8 @@ - - if (r == NULL_TREE) - { -+ if (addr && op0 != orig_op0) -+ return build1 (INDIRECT_REF, TREE_TYPE (t), op0); - if (!addr) - VERIFY_CONSTANT (t); - return t; -@@ -8967,7 +8980,7 @@ - /* Create the new RECORD_TYPE for this lambda. */ - type = xref_tag (/*tag_code=*/record_type, - name, -- /*scope=*/ts_within_enclosing_non_class, -+ /*scope=*/ts_lambda, - /*template_header_p=*/false); - } - -@@ -9039,7 +9052,8 @@ - lambda_capture_field_type (tree expr) - { - tree type; -- if (type_dependent_expression_p (expr)) -+ if (type_dependent_expression_p (expr) -+ && !(TREE_TYPE (expr) && TREE_CODE (TREE_TYPE (expr)) == POINTER_TYPE)) - { - type = cxx_make_type (DECLTYPE_TYPE); - DECLTYPE_TYPE_EXPR (type) = expr; -@@ -9189,13 +9203,12 @@ - insert_capture_proxy (tree var) - { - cp_binding_level *b; -- int skip; - tree stmt_list; - - /* Put the capture proxy in the extra body block so that it won't clash - with a later local variable. */ - b = current_binding_level; -- for (skip = 0; ; ++skip) -+ for (;;) - { - cp_binding_level *n = b->level_chain; - if (n->kind == sk_function_parms) -@@ -9206,7 +9219,7 @@ - - /* And put a DECL_EXPR in the STATEMENT_LIST for the same block. */ - var = build_stmt (DECL_SOURCE_LOCATION (var), DECL_EXPR, var); -- stmt_list = (*stmt_list_stack)[stmt_list_stack->length () - 1 - skip]; -+ stmt_list = (*stmt_list_stack)[1]; - gcc_assert (stmt_list); - append_to_statement_list_force (var, &stmt_list); - } -@@ -9248,7 +9261,8 @@ - if (REFERENCE_REF_P (ref)) - ref = TREE_OPERAND (ref, 0); - type = TREE_TYPE (ref); -- if (!dependent_type_p (type)) -+ if (!dependent_type_p (type) -+ || (type && TREE_CODE (type) == POINTER_TYPE)) - return type; - type = cxx_make_type (DECLTYPE_TYPE); - DECLTYPE_TYPE_EXPR (type) = ref; -@@ -9438,6 +9452,11 @@ - - tree this_capture = LAMBDA_EXPR_THIS_CAPTURE (lambda); - -+ /* In unevaluated context this isn't an odr-use, so just return the -+ nearest 'this'. */ -+ if (cp_unevaluated_operand) -+ return lookup_name (this_identifier); -+ - /* Try to default capture 'this' if we can. */ - if (!this_capture - && LAMBDA_EXPR_DEFAULT_CAPTURE_MODE (lambda) != CPLD_NONE) -@@ -9507,11 +9526,6 @@ - - if (!this_capture) - { -- /* In unevaluated context this isn't an odr-use, so just return the -- nearest 'this'. */ -- if (cp_unevaluated_operand) -- return lookup_name (this_identifier); -- - error ("% was not captured for this lambda function"); - result = error_mark_node; - } -@@ -9549,7 +9563,8 @@ - - if (type != current_class_type - && current_class_type -- && LAMBDA_TYPE_P (current_class_type)) -+ && LAMBDA_TYPE_P (current_class_type) -+ && DERIVED_FROM_P (type, current_nonlambda_class_type ())) - { - /* In a lambda, need to go through 'this' capture. */ - tree lam = CLASSTYPE_LAMBDA_EXPR (current_class_type); -Index: gcc/cp/decl2.c -=================================================================== ---- a/src/gcc/cp/decl2.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/decl2.c (.../branches/gcc-4_8-branch) -@@ -109,7 +109,8 @@ - that apply to the function). */ - - tree --build_memfn_type (tree fntype, tree ctype, cp_cv_quals quals) -+build_memfn_type (tree fntype, tree ctype, cp_cv_quals quals, -+ cp_ref_qualifier rqual) - { - tree raises; - tree attrs; -@@ -129,10 +130,12 @@ - (TREE_CODE (fntype) == METHOD_TYPE - ? TREE_CHAIN (TYPE_ARG_TYPES (fntype)) - : TYPE_ARG_TYPES (fntype))); -+ if (attrs) -+ fntype = cp_build_type_attribute_variant (fntype, attrs); -+ if (rqual) -+ fntype = build_ref_qualified_type (fntype, rqual); - if (raises) - fntype = build_exception_variant (fntype, raises); -- if (attrs) -- fntype = cp_build_type_attribute_variant (fntype, attrs); - - return fntype; - } -@@ -157,7 +160,9 @@ - if (TREE_CODE (fntype) == FUNCTION_TYPE) - { - newtype = build_function_type (new_ret, args); -- newtype = apply_memfn_quals (newtype, type_memfn_quals (fntype)); -+ newtype = apply_memfn_quals (newtype, -+ type_memfn_quals (fntype), -+ type_memfn_rqual (fntype)); - } - else - newtype = build_method_type_directly -@@ -330,10 +335,11 @@ - } - - /* Create an ARRAY_REF, checking for the user doing things backwards -- along the way. */ -+ along the way. DECLTYPE_P is for N3276, as in the parser. */ - - tree --grok_array_decl (location_t loc, tree array_expr, tree index_exp) -+grok_array_decl (location_t loc, tree array_expr, tree index_exp, -+ bool decltype_p) - { - tree type; - tree expr; -@@ -359,8 +365,13 @@ - - /* If they have an `operator[]', use that. */ - if (MAYBE_CLASS_TYPE_P (type) || MAYBE_CLASS_TYPE_P (TREE_TYPE (index_exp))) -- expr = build_new_op (loc, ARRAY_REF, LOOKUP_NORMAL, array_expr, index_exp, -- NULL_TREE, /*overload=*/NULL, tf_warning_or_error); -+ { -+ tsubst_flags_t complain = tf_warning_or_error; -+ if (decltype_p) -+ complain |= tf_decltype; -+ expr = build_new_op (loc, ARRAY_REF, LOOKUP_NORMAL, array_expr, -+ index_exp, NULL_TREE, /*overload=*/NULL, complain); -+ } - else - { - tree p1, p2, i1, i2; -@@ -672,6 +683,11 @@ - if (is_template != (TREE_CODE (fndecl) == TEMPLATE_DECL)) - continue; - -+ /* ref-qualifier or absence of same must match. */ -+ if (type_memfn_rqual (TREE_TYPE (function)) -+ != type_memfn_rqual (TREE_TYPE (fndecl))) -+ continue; -+ - /* While finding a match, same types and params are not enough - if the function is versioned. Also check version ("target") - attributes. */ -@@ -1261,7 +1277,9 @@ - { - inner = cp_reconstruct_complex_type (TREE_TYPE (type), bottom); - outer = build_function_type (inner, TYPE_ARG_TYPES (type)); -- outer = apply_memfn_quals (outer, type_memfn_quals (type)); -+ outer = apply_memfn_quals (outer, -+ type_memfn_quals (type), -+ type_memfn_rqual (type)); - } - else if (TREE_CODE (type) == METHOD_TYPE) - { -Index: gcc/cp/parser.c -=================================================================== ---- a/src/gcc/cp/parser.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/parser.c (.../branches/gcc-4_8-branch) -@@ -1188,7 +1188,7 @@ - VAR_DECLs or FUNCTION_DECLs) should do that directly. */ - - static cp_declarator *make_call_declarator -- (cp_declarator *, tree, cp_cv_quals, cp_virt_specifiers, tree, tree); -+ (cp_declarator *, tree, cp_cv_quals, cp_virt_specifiers, cp_ref_qualifier, tree, tree); - static cp_declarator *make_array_declarator - (cp_declarator *, tree); - static cp_declarator *make_pointer_declarator -@@ -1367,6 +1367,7 @@ - tree parms, - cp_cv_quals cv_qualifiers, - cp_virt_specifiers virt_specifiers, -+ cp_ref_qualifier ref_qualifier, - tree exception_specification, - tree late_return_type) - { -@@ -1377,6 +1378,7 @@ - declarator->u.function.parameters = parms; - declarator->u.function.qualifiers = cv_qualifiers; - declarator->u.function.virt_specifiers = virt_specifiers; -+ declarator->u.function.ref_qualifier = ref_qualifier; - declarator->u.function.exception_specification = exception_specification; - declarator->u.function.late_return_type = late_return_type; - if (target) -@@ -1802,9 +1804,9 @@ - static tree cp_parser_qualifying_entity - (cp_parser *, bool, bool, bool, bool, bool); - static tree cp_parser_postfix_expression -- (cp_parser *, bool, bool, bool, cp_id_kind *); -+ (cp_parser *, bool, bool, bool, bool, cp_id_kind *); - static tree cp_parser_postfix_open_square_expression -- (cp_parser *, tree, bool); -+ (cp_parser *, tree, bool, bool); - static tree cp_parser_postfix_dot_deref_expression - (cp_parser *, enum cpp_ttype, tree, bool, cp_id_kind *, location_t); - static vec *cp_parser_parenthesized_expression_list -@@ -1832,7 +1834,7 @@ - static tree cp_parser_delete_expression - (cp_parser *); - static tree cp_parser_cast_expression -- (cp_parser *, bool, bool, cp_id_kind *); -+ (cp_parser *, bool, bool, bool, cp_id_kind *); - static tree cp_parser_binary_expression - (cp_parser *, bool, bool, enum cp_parser_prec, cp_id_kind *); - static tree cp_parser_question_colon_clause -@@ -1843,6 +1845,8 @@ - (cp_parser *); - static tree cp_parser_expression - (cp_parser *, bool, cp_id_kind *); -+static tree cp_parser_expression -+ (cp_parser *, bool, bool, cp_id_kind *); - static tree cp_parser_constant_expression - (cp_parser *, bool, bool *); - static tree cp_parser_builtin_offsetof -@@ -1970,6 +1974,8 @@ - (cp_parser *); - static cp_virt_specifiers cp_parser_virt_specifier_seq_opt - (cp_parser *); -+static cp_ref_qualifier cp_parser_ref_qualifier_seq_opt -+ (cp_parser *); - static tree cp_parser_late_return_type_opt - (cp_parser *, cp_cv_quals); - static tree cp_parser_declarator_id -@@ -3840,6 +3846,18 @@ - return success; - } - -+/* Return the appropriate tsubst flags for parsing, possibly in N3276 -+ decltype context. */ -+ -+static inline tsubst_flags_t -+complain_flags (bool decltype_p) -+{ -+ tsubst_flags_t complain = tf_warning_or_error; -+ if (decltype_p) -+ complain |= tf_decltype; -+ return complain; -+} -+ - /* Expressions [gram.expr] */ - - /* Parse a primary-expression. -@@ -3901,6 +3919,7 @@ - bool address_p, - bool cast_p, - bool template_arg_p, -+ bool decltype_p, - cp_id_kind *idk) - { - cp_token *token = NULL; -@@ -4052,7 +4071,7 @@ - else - { - /* Parse the parenthesized expression. */ -- expr = cp_parser_expression (parser, cast_p, idk); -+ expr = cp_parser_expression (parser, cast_p, decltype_p, idk); - /* Let the front end know that this expression was - enclosed in parentheses. This matters in case, for - example, the expression is of the form `A::B', since -@@ -4404,6 +4423,17 @@ - } - } - -+static inline tree -+cp_parser_primary_expression (cp_parser *parser, -+ bool address_p, -+ bool cast_p, -+ bool template_arg_p, -+ cp_id_kind *idk) -+{ -+ return cp_parser_primary_expression (parser, address_p, cast_p, template_arg_p, -+ /*decltype*/false, idk); -+} -+ - /* Parse an id-expression. - - id-expression: -@@ -5365,7 +5395,7 @@ - - static tree - cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p, -- bool member_access_only_p, -+ bool member_access_only_p, bool decltype_p, - cp_id_kind * pidk_return) - { - cp_token *token; -@@ -5626,11 +5656,17 @@ - postfix_expression - = cp_parser_primary_expression (parser, address_p, cast_p, - /*template_arg_p=*/false, -+ decltype_p, - &idk); - } - break; - } - -+ /* Note that we don't need to worry about calling build_cplus_new on a -+ class-valued CALL_EXPR in decltype when it isn't the end of the -+ postfix-expression; unary_complex_lvalue will take care of that for -+ all these cases. */ -+ - /* Keep looping until the postfix-expression is complete. */ - while (true) - { -@@ -5657,7 +5693,8 @@ - postfix_expression - = cp_parser_postfix_open_square_expression (parser, - postfix_expression, -- false); -+ false, -+ decltype_p); - idk = CP_ID_KIND_NONE; - is_member_access = false; - break; -@@ -5669,6 +5706,7 @@ - bool is_builtin_constant_p; - bool saved_integral_constant_expression_p = false; - bool saved_non_integral_constant_expression_p = false; -+ tsubst_flags_t complain = complain_flags (decltype_p); - vec *args; - - is_member_access = false; -@@ -5727,7 +5765,7 @@ - postfix_expression - = perform_koenig_lookup (postfix_expression, args, - /*include_std=*/false, -- tf_warning_or_error); -+ complain); - } - else - postfix_expression -@@ -5753,7 +5791,7 @@ - postfix_expression - = perform_koenig_lookup (postfix_expression, args, - /*include_std=*/false, -- tf_warning_or_error); -+ complain); - } - } - } -@@ -5785,21 +5823,21 @@ - ? LOOKUP_NORMAL|LOOKUP_NONVIRTUAL - : LOOKUP_NORMAL), - /*fn_p=*/NULL, -- tf_warning_or_error)); -+ complain)); - } - else - postfix_expression - = finish_call_expr (postfix_expression, &args, - /*disallow_virtual=*/false, - /*koenig_p=*/false, -- tf_warning_or_error); -+ complain); - } - else if (TREE_CODE (postfix_expression) == OFFSET_REF - || TREE_CODE (postfix_expression) == MEMBER_REF - || TREE_CODE (postfix_expression) == DOTSTAR_EXPR) - postfix_expression = (build_offset_ref_call_from_tree - (postfix_expression, &args, -- tf_warning_or_error)); -+ complain)); - else if (idk == CP_ID_KIND_QUALIFIED) - /* A call to a static class member, or a namespace-scope - function. */ -@@ -5807,14 +5845,14 @@ - = finish_call_expr (postfix_expression, &args, - /*disallow_virtual=*/true, - koenig_p, -- tf_warning_or_error); -+ complain); - else - /* All other function calls. */ - postfix_expression - = finish_call_expr (postfix_expression, &args, - /*disallow_virtual=*/false, - koenig_p, -- tf_warning_or_error); -+ complain); - - /* The POSTFIX_EXPRESSION is certainly no longer an id. */ - idk = CP_ID_KIND_NONE; -@@ -5899,7 +5937,8 @@ - static tree - cp_parser_postfix_open_square_expression (cp_parser *parser, - tree postfix_expression, -- bool for_offsetof) -+ bool for_offsetof, -+ bool decltype_p) - { - tree index; - location_t loc = cp_lexer_peek_token (parser->lexer)->location; -@@ -5933,7 +5972,8 @@ - cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE); - - /* Build the ARRAY_REF. */ -- postfix_expression = grok_array_decl (loc, postfix_expression, index); -+ postfix_expression = grok_array_decl (loc, postfix_expression, -+ index, decltype_p); - - /* When not doing offsetof, array references are not permitted in - constant-expressions. */ -@@ -6415,7 +6455,7 @@ - - static tree - cp_parser_unary_expression (cp_parser *parser, bool address_p, bool cast_p, -- cp_id_kind * pidk) -+ bool decltype_p, cp_id_kind * pidk) - { - cp_token *token; - enum tree_code unary_operator; -@@ -6629,6 +6669,7 @@ - tree expression = error_mark_node; - non_integral_constant non_constant_p = NIC_NONE; - location_t loc = token->location; -+ tsubst_flags_t complain = complain_flags (decltype_p); - - /* Consume the operator token. */ - token = cp_lexer_consume_token (parser->lexer); -@@ -6636,7 +6677,9 @@ - cast_expression - = cp_parser_cast_expression (parser, - unary_operator == ADDR_EXPR, -- /*cast_p=*/false, pidk); -+ /*cast_p=*/false, -+ /*decltype*/false, -+ pidk); - /* Now, build an appropriate representation. */ - switch (unary_operator) - { -@@ -6644,7 +6687,7 @@ - non_constant_p = NIC_STAR; - expression = build_x_indirect_ref (loc, cast_expression, - RO_UNARY_STAR, -- tf_warning_or_error); -+ complain); - break; - - case ADDR_EXPR: -@@ -6653,7 +6696,7 @@ - case BIT_NOT_EXPR: - expression = build_x_unary_op (loc, unary_operator, - cast_expression, -- tf_warning_or_error); -+ complain); - break; - - case PREINCREMENT_EXPR: -@@ -6665,7 +6708,7 @@ - case NEGATE_EXPR: - case TRUTH_NOT_EXPR: - expression = finish_unary_op_expr (loc, unary_operator, -- cast_expression); -+ cast_expression, complain); - break; - - default: -@@ -6682,9 +6725,18 @@ - - return cp_parser_postfix_expression (parser, address_p, cast_p, - /*member_access_only_p=*/false, -+ decltype_p, - pidk); - } - -+static inline tree -+cp_parser_unary_expression (cp_parser *parser, bool address_p, bool cast_p, -+ cp_id_kind * pidk) -+{ -+ return cp_parser_unary_expression (parser, address_p, cast_p, -+ /*decltype*/false, pidk); -+} -+ - /* Returns ERROR_MARK if TOKEN is not a unary-operator. If TOKEN is a - unary-operator, the corresponding tree code is returned. */ - -@@ -7163,7 +7215,7 @@ - - static tree - cp_parser_cast_expression (cp_parser *parser, bool address_p, bool cast_p, -- cp_id_kind * pidk) -+ bool decltype_p, cp_id_kind * pidk) - { - /* If it's a `(', then we might be looking at a cast. */ - if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN)) -@@ -7237,7 +7289,9 @@ - cp_parser_parse_definitely (parser); - expr = cp_parser_cast_expression (parser, - /*address_p=*/false, -- /*cast_p=*/true, pidk); -+ /*cast_p=*/true, -+ /*decltype_p=*/false, -+ pidk); - - /* Warn about old-style casts, if so requested. */ - if (warn_old_style_cast -@@ -7263,7 +7317,8 @@ - - /* If we get here, then it's not a cast, so it must be a - unary-expression. */ -- return cp_parser_unary_expression (parser, address_p, cast_p, pidk); -+ return cp_parser_unary_expression (parser, address_p, cast_p, -+ decltype_p, pidk); - } - - /* Parse a binary expression of the general form: -@@ -7348,6 +7403,7 @@ - static tree - cp_parser_binary_expression (cp_parser* parser, bool cast_p, - bool no_toplevel_fold_p, -+ bool decltype_p, - enum cp_parser_prec prec, - cp_id_kind * pidk) - { -@@ -7362,7 +7418,7 @@ - - /* Parse the first expression. */ - current.lhs = cp_parser_cast_expression (parser, /*address_p=*/false, -- cast_p, pidk); -+ cast_p, decltype_p, pidk); - current.lhs_type = ERROR_MARK; - current.prec = prec; - -@@ -7479,7 +7535,7 @@ - current.lhs = build_x_binary_op (current.loc, current.tree_type, - current.lhs, current.lhs_type, - rhs, rhs_type, &overload, -- tf_warning_or_error); -+ complain_flags (decltype_p)); - current.lhs_type = current.tree_type; - if (EXPR_P (current.lhs)) - SET_EXPR_LOCATION (current.lhs, current.loc); -@@ -7499,6 +7555,15 @@ - return current.lhs; - } - -+static tree -+cp_parser_binary_expression (cp_parser* parser, bool cast_p, -+ bool no_toplevel_fold_p, -+ enum cp_parser_prec prec, -+ cp_id_kind * pidk) -+{ -+ return cp_parser_binary_expression (parser, cast_p, no_toplevel_fold_p, -+ /*decltype*/false, prec, pidk); -+} - - /* Parse the `? expression : assignment-expression' part of a - conditional-expression. The LOGICAL_OR_EXPR is the -@@ -7568,12 +7633,13 @@ - throw-expression - - CAST_P is true if this expression is the target of a cast. -+ DECLTYPE_P is true if this expression is the operand of decltype. - - Returns a representation for the expression. */ - - static tree - cp_parser_assignment_expression (cp_parser* parser, bool cast_p, -- cp_id_kind * pidk) -+ bool decltype_p, cp_id_kind * pidk) - { - tree expr; - -@@ -7587,6 +7653,7 @@ - { - /* Parse the binary expressions (logical-or-expression). */ - expr = cp_parser_binary_expression (parser, cast_p, false, -+ decltype_p, - PREC_NOT_OPERATOR, pidk); - /* If the next token is a `?' then we're actually looking at a - conditional-expression. */ -@@ -7623,7 +7690,7 @@ - expr = build_x_modify_expr (loc, expr, - assignment_operator, - rhs, -- tf_warning_or_error); -+ complain_flags (decltype_p)); - input_location = saved_input_location; - } - } -@@ -7632,6 +7699,14 @@ - return expr; - } - -+static tree -+cp_parser_assignment_expression (cp_parser* parser, bool cast_p, -+ cp_id_kind * pidk) -+{ -+ return cp_parser_assignment_expression (parser, cast_p, -+ /*decltype*/false, pidk); -+} -+ - /* Parse an (optional) assignment-operator. - - assignment-operator: one of -@@ -7723,11 +7798,14 @@ - expression , assignment-expression - - CAST_P is true if this expression is the target of a cast. -+ DECLTYPE_P is true if this expression is the immediate operand of decltype, -+ except possibly parenthesized or on the RHS of a comma (N3276). - - Returns a representation of the expression. */ - - static tree --cp_parser_expression (cp_parser* parser, bool cast_p, cp_id_kind * pidk) -+cp_parser_expression (cp_parser* parser, bool cast_p, bool decltype_p, -+ cp_id_kind * pidk) - { - tree expression = NULL_TREE; - location_t loc = UNKNOWN_LOCATION; -@@ -7738,7 +7816,19 @@ - - /* Parse the next assignment-expression. */ - assignment_expression -- = cp_parser_assignment_expression (parser, cast_p, pidk); -+ = cp_parser_assignment_expression (parser, cast_p, decltype_p, pidk); -+ -+ /* We don't create a temporary for a call that is the immediate operand -+ of decltype or on the RHS of a comma. But when we see a comma, we -+ need to create a temporary for a call on the LHS. */ -+ if (decltype_p && !processing_template_decl -+ && TREE_CODE (assignment_expression) == CALL_EXPR -+ && CLASS_TYPE_P (TREE_TYPE (assignment_expression)) -+ && cp_lexer_next_token_is (parser->lexer, CPP_COMMA)) -+ assignment_expression -+ = build_cplus_new (TREE_TYPE (assignment_expression), -+ assignment_expression, tf_warning_or_error); -+ - /* If this is the first assignment-expression, we can just - save it away. */ - if (!expression) -@@ -7746,7 +7836,7 @@ - else - expression = build_x_compound_expr (loc, expression, - assignment_expression, -- tf_warning_or_error); -+ complain_flags (decltype_p)); - /* If the next token is not a comma, then we are done with the - expression. */ - if (cp_lexer_next_token_is_not (parser->lexer, CPP_COMMA)) -@@ -7762,6 +7852,12 @@ - return expression; - } - -+static inline tree -+cp_parser_expression (cp_parser* parser, bool cast_p, cp_id_kind * pidk) -+{ -+ return cp_parser_expression (parser, cast_p, /*decltype*/false, pidk); -+} -+ - /* Parse a constant-expression. - - constant-expression: -@@ -7891,12 +7987,14 @@ - { - case CPP_OPEN_SQUARE: - /* offsetof-member-designator "[" expression "]" */ -- expr = cp_parser_postfix_open_square_expression (parser, expr, true); -+ expr = cp_parser_postfix_open_square_expression (parser, expr, -+ true, false); - break; - - case CPP_DEREF: - /* offsetof-member-designator "->" identifier */ -- expr = grok_array_decl (token->location, expr, integer_zero_node); -+ expr = grok_array_decl (token->location, expr, -+ integer_zero_node, false); - /* FALLTHRU */ - - case CPP_DOT: -@@ -8526,6 +8624,7 @@ - ? TYPE_UNQUALIFIED : TYPE_QUAL_CONST); - declarator = make_call_declarator (declarator, param_list, quals, - VIRT_SPEC_UNSPECIFIED, -+ REF_QUAL_NONE, - exception_spec, - /*late_return_type=*/NULL_TREE); - declarator->id_loc = LAMBDA_EXPR_LOCATION (lambda_expr); -@@ -9496,7 +9595,10 @@ - range_expr = error_mark_node; - stmt = begin_range_for_stmt (scope, init); - finish_range_for_decl (stmt, range_decl, range_expr); -- if (!type_dependent_expression_p (range_expr) -+ if (range_expr != error_mark_node -+ && !type_dependent_expression_p (range_expr) -+ /* The length of an array might be dependent. */ -+ && COMPLETE_TYPE_P (TREE_TYPE (range_expr)) - /* do_auto_deduction doesn't mess with template init-lists. */ - && !BRACE_ENCLOSED_INITIALIZER_P (range_expr)) - do_range_for_auto_deduction (range_decl, range_expr); -@@ -9644,7 +9746,8 @@ - - /* The new increment expression. */ - expression = finish_unary_op_expr (input_location, -- PREINCREMENT_EXPR, begin); -+ PREINCREMENT_EXPR, begin, -+ tf_warning_or_error); - finish_for_expr (expression, statement); - - /* The declaration is initialized with *__begin inside the loop body. */ -@@ -11299,7 +11402,7 @@ - - /* Parse a class member access. */ - expr = cp_parser_postfix_expression (parser, /*address_p=*/false, -- /*cast_p=*/false, -+ /*cast_p=*/false, /*decltype*/true, - /*member_access_only_p=*/true, NULL); - - if (expr -@@ -11327,7 +11430,8 @@ - parser->greater_than_is_operator_p = true; - - /* Parse a full expression. */ -- expr = cp_parser_expression (parser, /*cast_p=*/false, NULL); -+ expr = cp_parser_expression (parser, /*cast_p=*/false, -+ /*decltype*/true, NULL); - - /* The `>' token might be the end of a template-id or - template-parameter-list now. */ -@@ -16168,6 +16272,7 @@ - declarator-id - direct-declarator ( parameter-declaration-clause ) - cv-qualifier-seq [opt] -+ ref-qualifier [opt] - exception-specification [opt] - direct-declarator [ constant-expression [opt] ] - ( declarator ) -@@ -16176,6 +16281,7 @@ - direct-abstract-declarator [opt] - ( parameter-declaration-clause ) - cv-qualifier-seq [opt] -+ ref-qualifier [opt] - exception-specification [opt] - direct-abstract-declarator [opt] [ constant-expression [opt] ] - ( abstract-declarator ) -@@ -16290,15 +16396,18 @@ - /* Consume the `)'. */ - cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN); - -- /* If all went well, parse the cv-qualifier-seq and the -- exception-specification. */ -+ /* If all went well, parse the cv-qualifier-seq, -+ ref-qualifier and the exception-specification. */ - if (member_p || cp_parser_parse_definitely (parser)) - { - cp_cv_quals cv_quals; - cp_virt_specifiers virt_specifiers; -+ cp_ref_qualifier ref_qual; - tree exception_specification; - tree late_return; - tree attrs; -+ bool memfn = (member_p || (pushed_scope -+ && CLASS_TYPE_P (pushed_scope))); - - is_declarator = true; - -@@ -16308,6 +16417,8 @@ - - /* Parse the cv-qualifier-seq. */ - cv_quals = cp_parser_cv_qualifier_seq_opt (parser); -+ /* Parse the ref-qualifier. */ -+ ref_qual = cp_parser_ref_qualifier_seq_opt (parser); - /* And the exception-specification. */ - exception_specification - = cp_parser_exception_specification_opt (parser); -@@ -16315,7 +16426,7 @@ - attrs = cp_parser_std_attribute_spec_seq (parser); - - late_return = (cp_parser_late_return_type_opt -- (parser, member_p ? cv_quals : -1)); -+ (parser, memfn ? cv_quals : -1)); - - /* Parse the virt-specifier-seq. */ - virt_specifiers = cp_parser_virt_specifier_seq_opt (parser); -@@ -16325,6 +16436,7 @@ - params, - cv_quals, - virt_specifiers, -+ ref_qual, - exception_specification, - late_return); - declarator->std_attributes = attrs; -@@ -16857,6 +16969,38 @@ - return cv_quals; - } - -+/* Parse an (optional) ref-qualifier -+ -+ ref-qualifier: -+ & -+ && -+ -+ Returns cp_ref_qualifier representing ref-qualifier. */ -+ -+static cp_ref_qualifier -+cp_parser_ref_qualifier_seq_opt (cp_parser* parser) -+{ -+ cp_ref_qualifier ref_qual = REF_QUAL_NONE; -+ cp_token *token = cp_lexer_peek_token (parser->lexer); -+ switch (token->type) -+ { -+ case CPP_AND: -+ ref_qual = REF_QUAL_LVALUE; -+ break; -+ case CPP_AND_AND: -+ ref_qual = REF_QUAL_RVALUE; -+ break; -+ } -+ -+ if (ref_qual) -+ { -+ maybe_warn_cpp0x (CPP0X_REF_QUALIFIER); -+ cp_lexer_consume_token (parser->lexer); -+ } -+ -+ return ref_qual; -+} -+ - /* Parse an (optional) virt-specifier-seq. - - virt-specifier-seq: -@@ -16964,17 +17108,21 @@ - /* Consume the ->. */ - cp_lexer_consume_token (parser->lexer); - -+ tree save_ccp = current_class_ptr; -+ tree save_ccr = current_class_ref; - if (quals >= 0) - { - /* DR 1207: 'this' is in scope in the trailing return type. */ -- gcc_assert (current_class_ptr == NULL_TREE); - inject_this_parameter (current_class_type, quals); - } - - type = cp_parser_trailing_type_id (parser); - - if (quals >= 0) -- current_class_ptr = current_class_ref = NULL_TREE; -+ { -+ current_class_ptr = save_ccp; -+ current_class_ref = save_ccr; -+ } - - return type; - } -@@ -20674,8 +20822,13 @@ - token = cp_lexer_peek_token (parser->lexer); - } - else -- attribute = build_tree_list (build_tree_list (NULL_TREE, attr_id), -- NULL_TREE); -+ { -+ attribute = build_tree_list (build_tree_list (NULL_TREE, attr_id), -+ NULL_TREE); -+ /* C++11 noreturn attribute is equivalent to GNU's. */ -+ if (is_attribute_p ("noreturn", attr_id)) -+ TREE_PURPOSE (TREE_PURPOSE (attribute)) = get_identifier ("gnu"); -+ } - - /* Now parse the optional argument clause of the attribute. */ - -@@ -22033,7 +22186,7 @@ - cp_parser_simple_cast_expression (cp_parser *parser) - { - return cp_parser_cast_expression (parser, /*address_p=*/false, -- /*cast_p=*/false, NULL); -+ /*cast_p=*/false, /*decltype*/false, NULL); - } - - /* Parse a functional cast to TYPE. Returns an expression -@@ -26830,7 +26983,7 @@ - op = (token->type == CPP_PLUS_PLUS - ? PREINCREMENT_EXPR : PREDECREMENT_EXPR); - cp_lexer_consume_token (parser->lexer); -- lhs = cp_parser_cast_expression (parser, false, false, NULL); -+ lhs = cp_parser_simple_cast_expression (parser); - if (lhs != decl) - return error_mark_node; - return build2 (op, TREE_TYPE (decl), decl, NULL_TREE); -Index: gcc/cp/call.c -=================================================================== ---- a/src/gcc/cp/call.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/call.c (.../branches/gcc-4_8-branch) -@@ -555,7 +555,7 @@ - { - /* Core issue 903 says only literal 0 is a null pointer constant. */ - if (cxx_dialect < cxx0x) -- t = maybe_constant_value (t); -+ t = maybe_constant_value (fold_non_dependent_expr_sfinae (t, tf_none)); - STRIP_NOPS (t); - if (integer_zerop (t) && !TREE_OVERFLOW (t)) - return true; -@@ -1276,7 +1276,10 @@ - static_fn_type (tofn))) - return NULL; - -- from = build_memfn_type (fromfn, tbase, cp_type_quals (tbase)); -+ from = build_memfn_type (fromfn, -+ tbase, -+ cp_type_quals (tbase), -+ type_memfn_rqual (tofn)); - from = build_ptrmemfunc_type (build_pointer_type (from)); - conv = build_conv (ck_pmem, from, conv); - conv->base_p = true; -@@ -1950,7 +1953,17 @@ - { - parmtype = cp_build_qualified_type - (ctype, cp_type_quals (TREE_TYPE (parmtype))); -- parmtype = build_pointer_type (parmtype); -+ if (FUNCTION_REF_QUALIFIED (TREE_TYPE (fn))) -+ { -+ /* If the function has a ref-qualifier, the implicit -+ object parameter has reference type. */ -+ bool rv = FUNCTION_RVALUE_QUALIFIED (TREE_TYPE (fn)); -+ parmtype = cp_build_reference_type (parmtype, rv); -+ arg = build_fold_indirect_ref (arg); -+ argtype = lvalue_type (arg); -+ } -+ else -+ parmtype = build_pointer_type (parmtype); - } - - /* Core issue 899: When [copy-]initializing a temporary to be bound -@@ -6696,6 +6709,10 @@ - /* else continue to get conversion error. */ - } - -+ /* N3276 magic doesn't apply to nested calls. */ -+ int decltype_flag = (complain & tf_decltype); -+ complain &= ~tf_decltype; -+ - /* Find maximum size of vector to hold converted arguments. */ - parmlen = list_length (parm); - nargs = vec_safe_length (args) + (first_arg != NULL_TREE ? 1 : 0); -@@ -7067,7 +7084,7 @@ - return error_mark_node; - } - -- return build_cxx_call (fn, nargs, argarray, complain); -+ return build_cxx_call (fn, nargs, argarray, complain|decltype_flag); - } - - /* Build and return a call to FN, using NARGS arguments in ARGARRAY. -@@ -7109,12 +7126,20 @@ - if (VOID_TYPE_P (TREE_TYPE (fn))) - return fn; - -- fn = require_complete_type_sfinae (fn, complain); -- if (fn == error_mark_node) -- return error_mark_node; -+ /* 5.2.2/11: If a function call is a prvalue of object type: if the -+ function call is either the operand of a decltype-specifier or the -+ right operand of a comma operator that is the operand of a -+ decltype-specifier, a temporary object is not introduced for the -+ prvalue. The type of the prvalue may be incomplete. */ -+ if (!(complain & tf_decltype)) -+ { -+ fn = require_complete_type_sfinae (fn, complain); -+ if (fn == error_mark_node) -+ return error_mark_node; - -- if (MAYBE_CLASS_TYPE_P (TREE_TYPE (fn))) -- fn = build_cplus_new (TREE_TYPE (fn), fn, complain); -+ if (MAYBE_CLASS_TYPE_P (TREE_TYPE (fn))) -+ fn = build_cplus_new (TREE_TYPE (fn), fn, complain); -+ } - return convert_from_reference (fn); - } - -Index: gcc/cp/mangle.c -=================================================================== ---- a/src/gcc/cp/mangle.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/mangle.c (.../branches/gcc-4_8-branch) -@@ -350,6 +350,7 @@ - && TYPE_CANONICAL (node) != node - && TYPE_MAIN_VARIANT (node) != node) - { -+ tree orig = node; - /* Here we want to strip the topmost typedef only. - We need to do that so is_std_substitution can do proper - name matching. */ -@@ -361,6 +362,9 @@ - else - node = cp_build_qualified_type (TYPE_MAIN_VARIANT (node), - cp_type_quals (node)); -+ if (TREE_CODE (node) == FUNCTION_TYPE -+ || TREE_CODE (node) == METHOD_TYPE) -+ node = build_ref_qualified_type (node, type_memfn_rqual (orig)); - } - return node; - } -@@ -904,9 +908,11 @@ - - /* Write the nested name, including CV-qualifiers, of DECL. - -- ::= N [] E -- ::= N [] E -+ ::= N [] [] E -+ ::= N [] [] E - -+ ::= R # & ref-qualifier -+ ::= O # && ref-qualifier - ::= [r] [V] [K] */ - - static void -@@ -926,6 +932,13 @@ - write_char ('V'); - if (DECL_CONST_MEMFUNC_P (decl)) - write_char ('K'); -+ if (FUNCTION_REF_QUALIFIED (TREE_TYPE (decl))) -+ { -+ if (FUNCTION_RVALUE_QUALIFIED (TREE_TYPE (decl))) -+ write_char ('O'); -+ else -+ write_char ('R'); -+ } - } - - /* Is this a template instance? */ -@@ -1880,7 +1893,13 @@ - mangle the unqualified type. The recursive call is needed here - since both the qualified and unqualified types are substitution - candidates. */ -- write_type (TYPE_MAIN_VARIANT (type)); -+ { -+ tree t = TYPE_MAIN_VARIANT (type); -+ if (TREE_CODE (t) == FUNCTION_TYPE -+ || TREE_CODE (t) == METHOD_TYPE) -+ t = build_ref_qualified_type (t, type_memfn_rqual (type)); -+ write_type (t); -+ } - else if (TREE_CODE (type) == ARRAY_TYPE) - /* It is important not to use the TYPE_MAIN_VARIANT of TYPE here - so that the cv-qualification of the element type is available -@@ -1892,6 +1911,9 @@ - - /* See through any typedefs. */ - type = TYPE_MAIN_VARIANT (type); -+ if (TREE_CODE (type) == FUNCTION_TYPE -+ || TREE_CODE (type) == METHOD_TYPE) -+ type = build_ref_qualified_type (type, type_memfn_rqual (type_orig)); - - /* According to the C++ ABI, some library classes are passed the - same as the scalar type of their single member and use the same -@@ -2327,7 +2349,7 @@ - METHOD_TYPE. The return type is mangled before the parameter - types. - -- ::= F [Y] E */ -+ ::= F [Y] [] E */ - - static void - write_function_type (const tree type) -@@ -2360,6 +2382,13 @@ - See [dcl.link]. */ - write_bare_function_type (type, /*include_return_type_p=*/1, - /*decl=*/NULL); -+ if (FUNCTION_REF_QUALIFIED (type)) -+ { -+ if (FUNCTION_RVALUE_QUALIFIED (type)) -+ write_char ('O'); -+ else -+ write_char ('R'); -+ } - write_char ('E'); - } - -Index: gcc/cp/cp-tree.h -=================================================================== ---- a/src/gcc/cp/cp-tree.h (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/cp-tree.h (.../branches/gcc-4_8-branch) -@@ -107,8 +107,10 @@ - or FIELD_DECL). - IDENTIFIER_TYPENAME_P (in IDENTIFIER_NODE) - DECL_TINFO_P (in VAR_DECL) -+ FUNCTION_REF_QUALIFIED (in FUNCTION_TYPE, METHOD_TYPE) - 5: C_IS_RESERVED_WORD (in IDENTIFIER_NODE) - DECL_VTABLE_OR_VTT_P (in VAR_DECL) -+ FUNCTION_RVALUE_QUALIFIED (in FUNCTION_TYPE, METHOD_TYPE) - 6: IDENTIFIER_REPO_CHOSEN (in IDENTIFIER_NODE) - DECL_CONSTRUCTION_VTABLE_P (in VAR_DECL) - TYPE_MARKED_P (in _TYPE) -@@ -420,9 +422,11 @@ - /* inheriting constructors */ - CPP0X_INHERITING_CTORS, - /* C++11 attributes */ -- CPP0X_ATTRIBUTES -+ CPP0X_ATTRIBUTES, -+ /* ref-qualified member functions */ -+ CPP0X_REF_QUALIFIER - } cpp0x_warn_str; -- -+ - /* The various kinds of operation used by composite_pointer_type. */ - - typedef enum composite_pointer_operation -@@ -2502,6 +2506,14 @@ - /* 1 iff VAR_DECL node NODE is virtual table or VTT. */ - #define DECL_VTABLE_OR_VTT_P(NODE) TREE_LANG_FLAG_5 (VAR_DECL_CHECK (NODE)) - -+/* 1 iff FUNCTION_TYPE or METHOD_TYPE has a ref-qualifier (either & or &&). */ -+#define FUNCTION_REF_QUALIFIED(NODE) \ -+ TREE_LANG_FLAG_4 (FUNC_OR_METHOD_CHECK (NODE)) -+ -+/* 1 iff FUNCTION_TYPE or METHOD_TYPE has &&-ref-qualifier. */ -+#define FUNCTION_RVALUE_QUALIFIED(NODE) \ -+ TREE_LANG_FLAG_5 (FUNC_OR_METHOD_CHECK (NODE)) -+ - /* Returns 1 iff VAR_DECL is a construction virtual table. - DECL_VTABLE_OR_VTT_P will be true in this case and must be checked - before using this macro. */ -@@ -4190,6 +4202,9 @@ - conversion might be permissible, - not actually performing the - conversion. */ -+ tf_decltype = 1 << 7, /* We are the operand of decltype. -+ Used to implement the special rules -+ for calls in decltype (5.2.2/11). */ - tf_partial = 1 << 8, /* Doing initial explicit argument - substitution in fn_type_unification. */ - /* Convenient substitution flags combinations. */ -@@ -4662,6 +4677,23 @@ - - typedef int cp_virt_specifiers; - -+/* Wherever there is a function-cv-qual, there could also be a ref-qualifier: -+ -+ [dcl.fct] -+ The return type, the parameter-type-list, the ref-qualifier, and -+ the cv-qualifier-seq, but not the default arguments or the exception -+ specification, are part of the function type. -+ -+ REF_QUAL_NONE Ordinary member function with no ref-qualifier -+ REF_QUAL_LVALUE Member function with the &-ref-qualifier -+ REF_QUAL_RVALUE Member function with the &&-ref-qualifier */ -+ -+enum cp_ref_qualifier { -+ REF_QUAL_NONE = 0, -+ REF_QUAL_LVALUE = 1, -+ REF_QUAL_RVALUE = 2 -+}; -+ - /* A storage class. */ - - typedef enum cp_storage_class { -@@ -4823,6 +4855,8 @@ - cp_cv_quals qualifiers; - /* The virt-specifiers for the function. */ - cp_virt_specifiers virt_specifiers; -+ /* The ref-qualifier for the function. */ -+ cp_ref_qualifier ref_qualifier; - /* The exception-specification for the function. */ - tree exception_specification; - /* The late-specified return type, if any. */ -@@ -5171,14 +5205,15 @@ - - /* in decl2.c */ - extern bool check_java_method (tree); --extern tree build_memfn_type (tree, tree, cp_cv_quals); -+extern tree build_memfn_type (tree, tree, cp_cv_quals, cp_ref_qualifier); -+extern tree build_pointer_ptrmemfn_type (tree); - extern tree change_return_type (tree, tree); - extern void maybe_retrofit_in_chrg (tree); - extern void maybe_make_one_only (tree); - extern bool vague_linkage_p (tree); - extern void grokclassfn (tree, tree, - enum overload_flags); --extern tree grok_array_decl (location_t, tree, tree); -+extern tree grok_array_decl (location_t, tree, tree, bool); - extern tree delete_sanity (tree, tree, bool, int, tsubst_flags_t); - extern tree check_classfn (tree, tree, tree); - extern void check_member_template (tree); -@@ -5642,7 +5677,8 @@ - extern tree finish_increment_expr (tree, enum tree_code); - extern tree finish_this_expr (void); - extern tree finish_pseudo_destructor_expr (tree, tree, tree); --extern tree finish_unary_op_expr (location_t, enum tree_code, tree); -+extern tree finish_unary_op_expr (location_t, enum tree_code, tree, -+ tsubst_flags_t); - extern tree finish_compound_literal (tree, tree, tsubst_flags_t); - extern tree finish_fname (tree); - extern void finish_translation_unit (void); -@@ -5777,6 +5813,7 @@ - extern tree hash_tree_cons (tree, tree, tree); - extern tree hash_tree_chain (tree, tree); - extern tree build_qualified_name (tree, tree, tree, bool); -+extern tree build_ref_qualified_type (tree, cp_ref_qualifier); - extern int is_overloaded_fn (tree); - extern tree dependent_name (tree); - extern tree get_fns (tree); -@@ -5934,7 +5971,8 @@ - tsubst_flags_t); - extern int cp_type_quals (const_tree); - extern int type_memfn_quals (const_tree); --extern tree apply_memfn_quals (tree, cp_cv_quals); -+extern cp_ref_qualifier type_memfn_rqual (const_tree); -+extern tree apply_memfn_quals (tree, cp_cv_quals, cp_ref_qualifier); - extern bool cp_has_mutable_p (const_tree); - extern bool at_least_as_qualified_p (const_tree, const_tree); - extern void cp_apply_type_quals_to_decl (int, tree); -Index: gcc/cp/search.c -=================================================================== ---- a/src/gcc/cp/search.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/search.c (.../branches/gcc-4_8-branch) -@@ -188,6 +188,14 @@ - tree t_binfo; - base_kind bk; - -+ /* "Nothing" is definitely not derived from Base. */ -+ if (t == NULL_TREE) -+ { -+ if (kind_ptr) -+ *kind_ptr = bk_not_base; -+ return NULL_TREE; -+ } -+ - if (t == error_mark_node || base == error_mark_node) - { - if (kind_ptr) -Index: gcc/cp/name-lookup.h -=================================================================== ---- a/src/gcc/cp/name-lookup.h (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/cp/name-lookup.h (.../branches/gcc-4_8-branch) -@@ -132,10 +132,11 @@ - ts_global = 1, /* All scopes. This is the 3.4.1 - [basic.lookup.unqual] lookup mentioned - in [basic.lookup.elab]/2. */ -- ts_within_enclosing_non_class = 2 /* Search within enclosing non-class -+ ts_within_enclosing_non_class = 2, /* Search within enclosing non-class - only, for friend class lookup - according to [namespace.memdef]/3 - and [class.friend]/9. */ -+ ts_lambda = 3 /* Declaring a lambda closure. */ - } tag_scope; - - typedef struct GTY(()) cp_class_binding { -Index: gcc/ifcvt.c -=================================================================== ---- a/src/gcc/ifcvt.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/ifcvt.c (.../branches/gcc-4_8-branch) -@@ -964,6 +964,8 @@ - - set_used_flags (if_info->x); - set_used_flags (if_info->cond); -+ set_used_flags (if_info->a); -+ set_used_flags (if_info->b); - unshare_all_rtl_in_chain (seq); - end_sequence (); - -@@ -3473,7 +3475,7 @@ - code processing. ??? we should fix this in the future. */ - if (EDGE_COUNT (then_bb->succs) == 0) - { -- if (single_pred_p (else_bb)) -+ if (single_pred_p (else_bb) && else_bb != EXIT_BLOCK_PTR) - { - rtx last_insn = BB_END (then_bb); - -Index: gcc/tree-ssa-loop-ivcanon.c -=================================================================== ---- a/src/gcc/tree-ssa-loop-ivcanon.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/tree-ssa-loop-ivcanon.c (.../branches/gcc-4_8-branch) -@@ -1097,6 +1097,63 @@ - } - } - -+/* Process loops from innermost to outer, stopping at the innermost -+ loop we unrolled. */ -+ -+static bool -+tree_unroll_loops_completely_1 (bool may_increase_size, bool unroll_outer, -+ vec& father_stack, -+ struct loop *loop) -+{ -+ struct loop *loop_father; -+ bool changed = false; -+ struct loop *inner; -+ enum unroll_level ul; -+ -+ /* Process inner loops first. */ -+ for (inner = loop->inner; inner != NULL; inner = inner->next) -+ changed |= tree_unroll_loops_completely_1 (may_increase_size, -+ unroll_outer, father_stack, -+ inner); -+ -+ /* If we changed an inner loop we cannot process outer loops in this -+ iteration because SSA form is not up-to-date. Continue with -+ siblings of outer loops instead. */ -+ if (changed) -+ return true; -+ -+ /* Try to unroll this loop. */ -+ loop_father = loop_outer (loop); -+ if (!loop_father) -+ return false; -+ -+ if (may_increase_size && optimize_loop_nest_for_speed_p (loop) -+ /* Unroll outermost loops only if asked to do so or they do -+ not cause code growth. */ -+ && (unroll_outer || loop_outer (loop_father))) -+ ul = UL_ALL; -+ else -+ ul = UL_NO_GROWTH; -+ -+ if (canonicalize_loop_induction_variables -+ (loop, false, ul, !flag_tree_loop_ivcanon)) -+ { -+ /* If we'll continue unrolling, we need to propagate constants -+ within the new basic blocks to fold away induction variable -+ computations; otherwise, the size might blow up before the -+ iteration is complete and the IR eventually cleaned up. */ -+ if (loop_outer (loop_father) && !loop_father->aux) -+ { -+ father_stack.safe_push (loop_father); -+ loop_father->aux = loop_father; -+ } -+ -+ return true; -+ } -+ -+ return false; -+} -+ - /* Unroll LOOPS completely if they iterate just few times. Unless - MAY_INCREASE_SIZE is true, perform the unrolling only if the - size of the code does not increase. */ -@@ -1105,10 +1162,7 @@ - tree_unroll_loops_completely (bool may_increase_size, bool unroll_outer) - { - vec father_stack; -- loop_iterator li; -- struct loop *loop; - bool changed; -- enum unroll_level ul; - int iteration = 0; - bool irred_invalidated = false; - -@@ -1124,34 +1178,9 @@ - free_numbers_of_iterations_estimates (); - estimate_numbers_of_iterations (); - -- FOR_EACH_LOOP (li, loop, LI_FROM_INNERMOST) -- { -- struct loop *loop_father = loop_outer (loop); -- -- if (may_increase_size && optimize_loop_nest_for_speed_p (loop) -- /* Unroll outermost loops only if asked to do so or they do -- not cause code growth. */ -- && (unroll_outer || loop_outer (loop_father))) -- ul = UL_ALL; -- else -- ul = UL_NO_GROWTH; -- -- if (canonicalize_loop_induction_variables -- (loop, false, ul, !flag_tree_loop_ivcanon)) -- { -- changed = true; -- /* If we'll continue unrolling, we need to propagate constants -- within the new basic blocks to fold away induction variable -- computations; otherwise, the size might blow up before the -- iteration is complete and the IR eventually cleaned up. */ -- if (loop_outer (loop_father) && !loop_father->aux) -- { -- father_stack.safe_push (loop_father); -- loop_father->aux = loop_father; -- } -- } -- } -- -+ changed = tree_unroll_loops_completely_1 (may_increase_size, -+ unroll_outer, father_stack, -+ current_loops->tree_root); - if (changed) - { - struct loop **iter; -Index: gcc/predict.c -=================================================================== ---- a/src/gcc/predict.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/predict.c (.../branches/gcc-4_8-branch) -@@ -122,6 +122,8 @@ - if (node->frequency == NODE_FREQUENCY_EXECUTED_ONCE - && freq < (ENTRY_BLOCK_PTR_FOR_FUNCTION (fun)->frequency * 2 / 3)) - return false; -+ if (PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION) == 0) -+ return false; - if (freq < (ENTRY_BLOCK_PTR_FOR_FUNCTION (fun)->frequency - / PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION))) - return false; -@@ -185,10 +187,13 @@ - if (edge->caller->frequency == NODE_FREQUENCY_EXECUTED_ONCE - && edge->frequency < CGRAPH_FREQ_BASE * 3 / 2) - return false; -- if (flag_guess_branch_prob -- && edge->frequency <= (CGRAPH_FREQ_BASE -- / PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION))) -- return false; -+ if (flag_guess_branch_prob) -+ { -+ if (PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION) == 0 -+ || edge->frequency <= (CGRAPH_FREQ_BASE -+ / PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION))) -+ return false; -+ } - return true; - } - -Index: gcc/tsan.c -=================================================================== ---- a/src/gcc/tsan.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/tsan.c (.../branches/gcc-4_8-branch) -@@ -681,7 +681,8 @@ - { - gsi = gsi_last_bb (e->src); - stmt = gsi_stmt (gsi); -- gcc_assert (gimple_code (stmt) == GIMPLE_RETURN); -+ gcc_assert (gimple_code (stmt) == GIMPLE_RETURN -+ || gimple_call_builtin_p (stmt, BUILT_IN_RETURN)); - loc = gimple_location (stmt); - builtin_decl = builtin_decl_implicit (BUILT_IN_TSAN_FUNC_EXIT); - g = gimple_build_call (builtin_decl, 0); -Index: gcc/gimple-ssa-strength-reduction.c -=================================================================== ---- a/src/gcc/gimple-ssa-strength-reduction.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/gimple-ssa-strength-reduction.c (.../branches/gcc-4_8-branch) -@@ -1829,16 +1829,20 @@ - if (c->kind == CAND_ADD - && c->index == increment - && (increment.sgt (double_int_one) -- || increment.slt (double_int_minus_one))) -+ || increment.slt (double_int_minus_one)) -+ && (gimple_assign_rhs_code (c->cand_stmt) == PLUS_EXPR -+ || gimple_assign_rhs_code (c->cand_stmt) == POINTER_PLUS_EXPR)) - { -- tree t0; -+ tree t0 = NULL_TREE; - tree rhs1 = gimple_assign_rhs1 (c->cand_stmt); - tree rhs2 = gimple_assign_rhs2 (c->cand_stmt); - if (operand_equal_p (rhs1, c->base_expr, 0)) - t0 = rhs2; -- else -+ else if (operand_equal_p (rhs2, c->base_expr, 0)) - t0 = rhs1; -- if (SSA_NAME_DEF_STMT (t0) && gimple_bb (SSA_NAME_DEF_STMT (t0))) -+ if (t0 -+ && SSA_NAME_DEF_STMT (t0) -+ && gimple_bb (SSA_NAME_DEF_STMT (t0))) - { - incr_vec[incr_vec_len].initializer = t0; - incr_vec[incr_vec_len++].init_bb -Index: gcc/tree-eh.c -=================================================================== ---- a/src/gcc/tree-eh.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/tree-eh.c (.../branches/gcc-4_8-branch) -@@ -1855,7 +1855,8 @@ - this_region = gen_eh_region_must_not_throw (state->cur_region); - this_region->u.must_not_throw.failure_decl - = gimple_eh_must_not_throw_fndecl (inner); -- this_region->u.must_not_throw.failure_loc = gimple_location (tp); -+ this_region->u.must_not_throw.failure_loc -+ = LOCATION_LOCUS (gimple_location (tp)); - - /* In order to get mangling applied to this decl, we must mark it - used now. Otherwise, pass_ipa_free_lang_data won't think it -Index: gcc/fortran/ChangeLog -=================================================================== ---- a/src/gcc/fortran/ChangeLog (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,23 @@ -+2013-04-18 Mikael Morin -+ -+ PR fortran/56816 -+ * match.c (gfc_match_select_type): Add syntax error. Move namespace -+ allocation and cleanup... -+ * parse.c (decode_statement): ... here. -+ -+2013-04-18 Tobias Burnus -+ -+ PR fortran/56994 -+ * invoke.texi (NEAREST): S argument is not optional. -+ -+2013-04-08 Thomas Koenig -+ -+ PR fortran/56782 -+ Backport fron trunk. -+ * frontend-passes.c (callback_reduction): Dont't do -+ any simplification if there is only a single element -+ which has an iterator. -+ - 2013-03-22 Release Manager - - * GCC 4.8.0 released. -Index: gcc/fortran/frontend-passes.c -=================================================================== ---- a/src/gcc/fortran/frontend-passes.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/fortran/frontend-passes.c (.../branches/gcc-4_8-branch) -@@ -296,7 +296,12 @@ - - c = gfc_constructor_first (arg->value.constructor); - -- if (c == NULL) -+ /* Don't do any simplififcation if we have -+ - no element in the constructor or -+ - only have a single element in the array which contains an -+ iterator. */ -+ -+ if (c == NULL || (c->iterator != NULL && gfc_constructor_next (c) == NULL)) - return 0; - - res = copy_walk_reduction_arg (c->expr, fn); -Index: gcc/fortran/match.c -=================================================================== ---- a/src/gcc/fortran/match.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/fortran/match.c (.../branches/gcc-4_8-branch) -@@ -5364,7 +5364,6 @@ - char name[GFC_MAX_SYMBOL_LEN]; - bool class_array; - gfc_symbol *sym; -- gfc_namespace *parent_ns; - - m = gfc_match_label (); - if (m == MATCH_ERROR) -@@ -5374,8 +5373,6 @@ - if (m != MATCH_YES) - return m; - -- gfc_current_ns = gfc_build_block_ns (gfc_current_ns); -- - m = gfc_match (" %n => %e", name, &expr2); - if (m == MATCH_YES) - { -@@ -5406,7 +5403,10 @@ - - m = gfc_match (" )%t"); - if (m != MATCH_YES) -- goto cleanup; -+ { -+ gfc_error ("parse error in SELECT TYPE statement at %C"); -+ goto cleanup; -+ } - - /* This ghastly expression seems to be needed to distinguish a CLASS - array, which can have a reference, from other expressions that -@@ -5444,9 +5444,6 @@ - return MATCH_YES; - - cleanup: -- parent_ns = gfc_current_ns->parent; -- gfc_free_namespace (gfc_current_ns); -- gfc_current_ns = parent_ns; - return m; - } - -Index: gcc/fortran/parse.c -=================================================================== ---- a/src/gcc/fortran/parse.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/fortran/parse.c (.../branches/gcc-4_8-branch) -@@ -262,6 +262,7 @@ - static gfc_statement - decode_statement (void) - { -+ gfc_namespace *ns; - gfc_statement st; - locus old_locus; - match m; -@@ -363,7 +364,12 @@ - match (NULL, gfc_match_associate, ST_ASSOCIATE); - match (NULL, gfc_match_critical, ST_CRITICAL); - match (NULL, gfc_match_select, ST_SELECT_CASE); -+ -+ gfc_current_ns = gfc_build_block_ns (gfc_current_ns); - match (NULL, gfc_match_select_type, ST_SELECT_TYPE); -+ ns = gfc_current_ns; -+ gfc_current_ns = gfc_current_ns->parent; -+ gfc_free_namespace (ns); - - /* General statement matching: Instead of testing every possible - statement, we eliminate most possibilities by peeking at the -Index: gcc/ChangeLog-2012 -=================================================================== ---- a/src/gcc/ChangeLog-2012 (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/ChangeLog-2012 (.../branches/gcc-4_8-branch) -@@ -4535,17 +4535,17 @@ - * config/i386/i386.c (ix86_function_ok_for_sibcall): Put back exception - to make a sibcall if one of the functions has void return type. - --2012-11-07 Manuel López-Ibáñez -+2012-11-07 Manuel López-Ibáñez - - PR c/53063 - * doc/invoke.texi (Wformat): Update. - --2012-11-07 Manuel López-Ibáñez -+2012-11-07 Manuel López-Ibáñez - - * optc-gen.awk: Factor code out to... - * opt-functions.awk (lang_enabled_by): ... this new function. - --2012-11-07 Manuel López-Ibáñez -+2012-11-07 Manuel López-Ibáñez - - PR c/53063 - * common.opt (Wswitch,Wswitch-default,Wswitch-enum): Move to c.opt. -@@ -5673,7 +5673,7 @@ - - * expmed.c (store_bit_field_1): Remove test for BLKmode values. - --2012-10-31 Ralf Corsépius , -+2012-10-31 Ralf Corsépius , - Joel Sherrill - - * config/sparc/t-rtems: New (Custom multilibs). -@@ -5886,7 +5886,7 @@ - * lra-spills.c: Likewise. - * lra.c: Likewise. - --2012-10-29 Manuel López-Ibáñez -+2012-10-29 Manuel López-Ibáñez - - PR c/53066 - * tree.h (FUNCTION_POINTER_TYPE_P): New. -@@ -6197,7 +6197,7 @@ - * config/i386/x86intrin.h: Include - xsaveintrin.h, fxsrintrin.h, xsaveoptintrin.h. - --2012-10-26 Ralf Corsépius -+2012-10-26 Ralf Corsépius - - * config/avr/t-rtems: Revert previous commit. - -@@ -6253,7 +6253,7 @@ - * lra-constraints.c (check_and_process_move): Remove #if - ENABLE_ASSERT_CHECKING. - --2012-10-26 Ralf Corsépius -+2012-10-26 Ralf Corsépius - - * config/avr/rtems.h (TARGET_OS_CPP_BUILTINS): Remove - __USE_INIT_FINI__. -@@ -6308,7 +6308,7 @@ - * lra-assigns.c (assign_by_spills): Add non-reload pseudos - assigned to hard register to changed_pseudo_bitmap. - --2012-10-25 Ralf Corsépius -+2012-10-25 Ralf Corsépius - - * config.gcc (microblaze*-*-rtems*): New target. - * config/microblaze/rtems.h: New. -@@ -6362,7 +6362,7 @@ - * config/rs6000/rs6000.c (rs6000_density_test): Use dump_enabled_p - instead of dump_kind_p. - --2012-10-24 Manuel López-Ibáñez -+2012-10-24 Manuel López-Ibáñez - - PR c++/54928 - * tree-diagnostic.c (maybe_unwind_expanded_macro_loc): -@@ -7023,7 +7023,7 @@ - * loop-iv.c (iv_number_of_iterations): Record the upper bound - only if there are no further conditions on it. - --2012-10-20 Manuel López-Ibáñez -+2012-10-20 Manuel López-Ibáñez - - PR c/53063 - PR c/40989 -@@ -7660,7 +7660,7 @@ - out of ... - (forwarder_block_p): ... here. - --2012-10-16 Manuel López-Ibáñez -+2012-10-16 Manuel López-Ibáñez - - PR c/53063 - PR c/40989 -@@ -7671,7 +7671,7 @@ - * opts.c (finish_options): Do not handle them explicitly. - * opt-functions.awk (search_var_name): New. - --2012-10-16 Manuel López-Ibáñez -+2012-10-16 Manuel López-Ibáñez - - PR c/53063 - PR c/40989 -@@ -11075,7 +11075,7 @@ - and -meb. - - 2012-09-13 Paolo Carlini -- Manuel López-Ibáñez -+ Manuel López-Ibáñez - - PR c++/53210 - * doc/invoke.texi ([Winit-self]): Document as enabled by -Wall in C++. -@@ -18313,7 +18313,7 @@ - (ASM_SPEC): Pass mcu options to the assembler. - * doc/invoke.texi (MIPS Options): Document -mmcu and -mno-mcu. - --2012-07-18 Ralf Corsépius -+2012-07-18 Ralf Corsépius - - * config.gcc (v850-*-rtems*): New target. - * config/v850/rtems.h: New. -@@ -22797,7 +22797,7 @@ - (generate_code_for_partition): Generate code according - to partition classification. - --2012-06-01 Manuel López-Ibáñez -+2012-06-01 Manuel López-Ibáñez - Jonathan Wakely - - PR c++/50134 -@@ -24303,7 +24303,7 @@ - (decide_is_variable_needed): Handle externals. - (varpool_remove_unreferenced_decls): Likewise. - --2012-05-17 Manuel López-Ibáñez -+2012-05-17 Manuel López-Ibáñez - - * opts.c (common_handle_option): -pedantic-errors enables -Wpedantic. - (enable_warning_as_error): Do not special case Wuninitialized. -@@ -24631,7 +24631,7 @@ - strided loads. - * tree-vect-stmts.c (vect_model_load_cost): Handle strided loads. - --2012-05-14 Manuel López-Ibáñez -+2012-05-14 Manuel López-Ibáñez - - PR 53063 - * doc/options.texi: (LangEnabledBy): Document it. -@@ -24705,7 +24705,7 @@ - - * config/pa/pa.md: Use define_c_enum for "unspec" and "unspecv". - --2012-05-13 Manuel López-Ibáñez -+2012-05-13 Manuel López-Ibáñez - - * common.opt (Wtype-limits): Use EnabledBy. - -@@ -24739,7 +24739,7 @@ - (*3): Ditto. - (tf3): Ditto. - --2012-05-13 Manuel López-Ibáñez -+2012-05-13 Manuel López-Ibáñez - - * optc-gen.awk: Error instead of warning for conflicting help. - -@@ -24786,7 +24786,7 @@ - (delete_tree_ssa): Do not call fini_phinodes. - * tree-flow.h (init_phinodes, fini_phinodes): Remove. - --2012-05-11 Manuel López-Ibáñez -+2012-05-11 Manuel López-Ibáñez - - PR 53063 - * doc/options.texi (EnabledBy): Document -@@ -24986,14 +24986,14 @@ - (xop_mulv2div2di3_low): Remove insn_and_split pattern. - (xop_mulv2div2di3_high): Ditto. - --2012-05-09 Manuel López-Ibáñez -+2012-05-09 Manuel López-Ibáñez - - PR c++/53289 - * diagnostic.h (diagnostic_context): Add last_location. - * diagnostic.c (diagnostic_initialize): Initialize it. - (diagnostic_show_locus): Use it. - --2012-05-09 Manuel López-Ibáñez -+2012-05-09 Manuel López-Ibáñez - - * doc/extend.texi (Function Attributes): Point xref to section - about Pragmas. -@@ -25807,13 +25807,13 @@ - Same stands for reloads with type RELOAD_FOR_OUTPUT_ADDRESS and - RELOAD_FOR_OUTADDR_ADDRESS. - --2012-05-04 Manuel López-Ibáñez -+2012-05-04 Manuel López-Ibáñez - - PR c++/24985 - * tree-diagnostic.c (maybe_unwind_expanded_macro_loc): Show caret - for macro expansion. - --2012-05-03 Manuel López-Ibáñez -+2012-05-03 Manuel López-Ibáñez - - * flags.h (flag_permissive): Do not declare. - * diagnostic.c (diagnostic_report_diagnostic): Handle fpermissive -@@ -26743,7 +26743,7 @@ - * config/i386/i386.c (ix86_handle_struct_attribute): Use the proper - predicate to discriminate types. - --2012-04-30 Manuel López-Ibáñez -+2012-04-30 Manuel López-Ibáñez - - * doc/invoke.texi (Wmissing-format-attribute): Document as an - alias of Wsuggest-attribute=format. -@@ -26751,7 +26751,7 @@ - Wmissing-format-attribute with Wsuggest-attribute=format. - (digest_init): Likewise. - --2012-04-29 Manuel López-Ibáñez -+2012-04-29 Manuel López-Ibáñez - - * opts.c (finish_options): Do not handle -Wmissing-noreturn here. - * common.opt (Wmissing-noreturn): Alias of -@@ -26839,7 +26839,7 @@ - PR middle-end/27139 - * tree-ssa-forwprop.c (combine_conversions): Handle INT->FP->INT. - --2012-04-25 Manuel López-Ibáñez -+2012-04-25 Manuel López-Ibáñez - - PR c/53130 - * c-typeck.c (pop_init_level): Use %qD instead of %qT. -@@ -27001,7 +27001,7 @@ - * reload.c (find_reloads): Change the loop nesting when trying an - alternative with swapped operands. - --2012-04-26 Manuel López-Ibáñez -+2012-04-26 Manuel López-Ibáñez - - * tree-diagnostic.c (maybe_unwind_expanded_macro_loc): Fix - comment. Delete unused parameter first_exp_point_map. -@@ -27135,7 +27135,7 @@ - set_nonincremental_init_from_string): Pass true instead of false - as IMPLICIT to add_pending_init. - --2012-04-25 Manuel López-Ibáñez -+2012-04-25 Manuel López-Ibáñez - - * c-typeck.c (pop_init_level): Improve diagnostics. - -@@ -27252,7 +27252,7 @@ - * config/vxworks.c (vxworks_override_options): Default to strict-dwarf - and dwarf_version 2. - --2012-04-24 Manuel López-Ibáñez -+2012-04-24 Manuel López-Ibáñez - - * tree-pretty-print.h (default_tree_printer): Do not declare. - * tree-diagnostic.c: Include tree-pretty-print.h, tree-pass.h and -@@ -27536,7 +27536,7 @@ - Likewise. - * tree-switch-conversion.c (build_one_array): Likewise. - --2012-04-22 Manuel López-Ibáñez -+2012-04-22 Manuel López-Ibáñez - - PR c/44774 - * doc/invoke.texi (pedantic): Rename to Wpedantic. -@@ -27624,7 +27624,7 @@ - - * fold-const.c (fold_checksum_tree): Fix VECTOR_CST case. - --2012-04-21 Manuel López-Ibáñez -+2012-04-21 Manuel López-Ibáñez - - PR 35441 - * c-typeck.c (inform_declaration): New. -@@ -27811,7 +27811,7 @@ - - * config/arm/sync.md (sync_optab): Change ior attribute to "or". - --2012-04-19 Manuel López-Ibáñez -+2012-04-19 Manuel López-Ibáñez - - PR c/52283/37985 - * stmt.c (warn_if_unused_value): Skip NOP_EXPR. -@@ -28041,7 +28041,7 @@ - * varpoo.c (varpool_node_name): Remove. - (dump_varpool_node): Use dump_symtab_base; reformat. - --2012-04-18 Manuel López-Ibáñez -+2012-04-18 Manuel López-Ibáñez - - * doc/invoke.texi (Language Independent Options): @item should be - before @opindex. -@@ -28908,7 +28908,7 @@ - - * doc/extend.texi (Type Attributes): Move paragraph. - --2012-04-11 Manuel López-Ibáñez -+2012-04-11 Manuel López-Ibáñez - - PR 24985 - * diagnostic.h (show_caret): Declare. -@@ -28943,7 +28943,7 @@ - manipulation code we are threading through a loop header - to an exit destination. - --2012-04-10 Manuel López-Ibáñez -+2012-04-10 Manuel López-Ibáñez - - * tree.h (warn_if_unused_value): Move declaration from here. - * stmt.c (warn_if_unused_value): Move definition from here. -@@ -29083,7 +29083,7 @@ - comment block. - (Sr0): Remove unused memory constraint. - --2012-04-08 Manuel López-Ibáñez -+2012-04-08 Manuel López-Ibáñez - - * tree-pretty-print.h: Update comment. - -@@ -30605,7 +30605,7 @@ - * tree-data-ref.c (subscript_dependence_tester_1): Check - all dimensions for non-conflicting access functions. - --2012-03-15 Manuel López-Ibáñez -+2012-03-15 Manuel López-Ibáñez - - PR c++/44783 - * doc/invoke.texi [C++ Language Options]: Document -@@ -31556,7 +31556,7 @@ - in new variable 'empty'. Increase issue_rate only for - non-empty insns. - --2012-03-07 Ralf Corsépius -+2012-03-07 Ralf Corsépius - - PR target/51417 - * Makefile.in: Let install-gcc-ar depend on installdirs, -Index: gcc/emit-rtl.c -=================================================================== ---- a/src/gcc/emit-rtl.c (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/emit-rtl.c (.../branches/gcc-4_8-branch) -@@ -2660,16 +2660,13 @@ - return; - } - --/* Go through all the RTL insn bodies and check that there is no unexpected -- sharing in between the subexpressions. */ -+/* Go through all the RTL insn bodies and clear all the USED bits. */ - --DEBUG_FUNCTION void --verify_rtl_sharing (void) -+static void -+reset_all_used_flags (void) - { - rtx p; - -- timevar_push (TV_VERIFY_RTL_SHARING); -- - for (p = get_insns (); p; p = NEXT_INSN (p)) - if (INSN_P (p)) - { -@@ -2693,7 +2690,20 @@ - } - } - } -+} - -+/* Go through all the RTL insn bodies and check that there is no unexpected -+ sharing in between the subexpressions. */ -+ -+DEBUG_FUNCTION void -+verify_rtl_sharing (void) -+{ -+ rtx p; -+ -+ timevar_push (TV_VERIFY_RTL_SHARING); -+ -+ reset_all_used_flags (); -+ - for (p = get_insns (); p; p = NEXT_INSN (p)) - if (INSN_P (p)) - { -@@ -2703,6 +2713,8 @@ - verify_rtx_sharing (CALL_INSN_FUNCTION_USAGE (p), p); - } - -+ reset_all_used_flags (); -+ - timevar_pop (TV_VERIFY_RTL_SHARING); - } - -Index: gcc/po/ChangeLog -=================================================================== ---- a/src/gcc/po/ChangeLog (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/po/ChangeLog (.../branches/gcc-4_8-branch) -@@ -1,3 +1,15 @@ -+2013-04-02 Joseph Myers -+ -+ * de.po: Update. -+ -+2013-03-31 Joseph Myers -+ -+ * de.po: Update. -+ -+2013-03-26 Joseph Myers -+ -+ * de.po, sv.po: Update. -+ - 2013-03-22 Release Manager - - * GCC 4.8.0 released. -Index: gcc/po/sv.po -=================================================================== ---- a/src/gcc/po/sv.po (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/po/sv.po (.../branches/gcc-4_8-branch) -@@ -16,7 +16,7 @@ - "Project-Id-Version: gcc 4.8-b20130224\n" - "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" - "POT-Creation-Date: 2013-02-24 01:09+0000\n" --"PO-Revision-Date: 2013-03-17 10:56+0100\n" -+"PO-Revision-Date: 2013-03-24 23:03+0100\n" - "Last-Translator: Göran Uddeborg \n" - "Language-Team: Swedish \n" - "Language: sv\n" -@@ -23048,9 +23048,9 @@ - msgstr "VSX- och SPE-instruktioner kan inte samexistera" - - #: config/rs6000/e500.h:41 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "64-bit SPE not supported" --msgstr "64-bitars E500 stödjs inte" -+msgstr "64-bitars SPE stödjs inte" - - #: config/rs6000/e500.h:43 - #, gcc-internal-format -@@ -23142,9 +23142,9 @@ - msgstr "okänt styrregisternummer: %d - använder ”psw”" - - #: config/rx/rx.c:1350 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "multiple fast interrupt routines seen: %qE and %qE" --msgstr "flera avbrottsattribut är inte tillåtet" -+msgstr "flera snabba avbrottsrutiner sedda: %qE och %qE" - - #: config/rx/rx.c:2452 - #, gcc-internal-format, gfc-internal-format -@@ -23608,14 +23608,14 @@ - msgstr "felformaterat ”#pragma __extern_prefix”, ignorerar" - - #: config/vms/vms-c.c:312 config/vms/vms-c.c:332 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "malformed %<#pragma %s%>, ignoring" --msgstr "felformaterat %<#pragma %s%>, ignoreras" -+msgstr "felformaterat %<#pragma %s%>, ignorerar" - - #: config/vms/vms-c.c:328 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "invalid constant in %<#pragma %s%>" --msgstr "ogiltig konstant i %<#pragma pack%> - ignoreras" -+msgstr "ogiltig konstant i %<#pragma %s%>" - - #: config/xtensa/xtensa.c:2178 - #, gcc-internal-format -@@ -26063,19 +26063,19 @@ - msgstr "deklarerad här" - - #: c/c-typeck.c:2746 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "called object %qE is not a function or function pointer" --msgstr "anropat objekt %qE är inte en funktion" -+msgstr "anropat objekt %qE är inte en funktion eller funktionspekare" - - #: c/c-typeck.c:2751 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "called object %qD is not a function or function pointer" --msgstr "anropat objekt %qE är inte en funktion" -+msgstr "anropat objekt %qD är inte en funktion eller funktionspekare" - - #: c/c-typeck.c:2757 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "called object is not a function or function pointer" --msgstr "anropat objekt %qE är inte en funktion" -+msgstr "anropat objekt är inte en funktion eller funktionspekare" - - #. This situation leads to run-time undefined behavior. We can't, - #. therefore, simply error unless we can prove that all possible -@@ -26716,9 +26716,9 @@ - msgstr "initiering av medlem som är en flexibel vektor i nästat sammanhang" - - #: c/c-typeck.c:6975 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "missing initializer for field %qD of %qT" --msgstr "initierare saknas för medlem %qD" -+msgstr "initierare saknas för fält %qD i %qT" - - #: c/c-typeck.c:7000 - #, gcc-internal-format -@@ -27163,24 +27163,24 @@ - msgstr "anrop av %<(%T) (%A)%> är tvetydigt" - - #: cp/call.c:4177 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "ambiguous overload for " --msgstr "tvetydig överlagring för %qs i %<%s %E%>" -+msgstr "tvetydig överlagring för " - - #: cp/call.c:4178 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "no match for " --msgstr "ingen matchning för %qs i %<%s %E%>" -+msgstr "ingen matchning för " - - #: cp/call.c:4181 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid " (operand types are %qT, %qT, and %qT)" --msgstr "ogiltiga operander till binär %s (har %qT och %qT)" -+msgstr " (operandtyper är %qT, %qT och %qT)" - - #: cp/call.c:4183 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid " (operand types are %qT and %qT)" --msgstr "ogiltiga operander till binär %s (har %qT och %qT)" -+msgstr " (operandtyper är %qT och %qT)" - - #: cp/call.c:4185 - #, gcc-internal-format -@@ -27188,54 +27188,54 @@ - msgstr " (operandtyp är %qT)" - - #: cp/call.c:4205 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "ternary %" --msgstr "% förväntades" -+msgstr "treställig %" - - #: cp/call.c:4209 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "ternary % in %<%E ? %E : %E%>" --msgstr "ingen matchning för treställig % i %<%E ? %E : %E%>" -+msgstr "treställig % i %<%E ? %E : %E%>" - - #: cp/call.c:4218 cp/call.c:4249 cp/call.c:4258 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%" --msgstr "% förväntades" -+msgstr "%" - - #: cp/call.c:4221 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "% in %<%E%s%>" --msgstr "ingen matchning för % i %<%E%s%>" -+msgstr "% i %<%E%s%>" - - #: cp/call.c:4228 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%" --msgstr "% förväntades" -+msgstr "%" - - #: cp/call.c:4231 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "% in %<%E[%E]%>" --msgstr "ingen matchning för % i %<%E[%E]%>" -+msgstr "% i %<%E[%E]%>" - - #: cp/call.c:4239 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qs" --msgstr "%s" -+msgstr "%qs" - - #: cp/call.c:4242 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qs in %<%s %E%>" --msgstr "ingen matchning för %qs i %<%s %E%>" -+msgstr "%qs i %<%s %E%>" - - #: cp/call.c:4252 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "% in %<%E %s %E%>" --msgstr "ingen matchning för % i %<%E %s %E%>" -+msgstr "% i %<%E %s %E%>" - - #: cp/call.c:4261 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "% in %<%s%E%>" --msgstr "ingen matchning för % i %<%s%E%>" -+msgstr "% i %<%s%E%>" - - #: cp/call.c:4359 - #, gcc-internal-format -@@ -27248,9 +27248,9 @@ - msgstr "åtminstone en operand i en vektorsvillkorsoperator måste vara en vektor" - - #: cp/call.c:4433 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "incompatible vector types in conditional expression: %qT, %qT and %qT" --msgstr "uppräkningsmissmatch i villkorsuttryck: %qT kontra %qT" -+msgstr "inkompatibla vektortyper i villkorsuttryck: %qT, %qT och %qT" - - #: cp/call.c:4520 - #, gcc-internal-format -@@ -27434,9 +27434,9 @@ - msgstr "argument till funktionsanrop kan vara en kandidat för ett formatattribut" - - #: cp/call.c:6526 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "use of multiversioned function without a default" --msgstr "standarddefinierad funktion %q+D med standardargument" -+msgstr "användning av multiversionsfunktion utan ett standardfall" - - #: cp/call.c:6745 - #, gcc-internal-format -@@ -27584,14 +27584,14 @@ - msgstr "Javaklass %qT kan inte ha en implicit icketrivial destruerare" - - #: cp/class.c:1120 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%q#D inherited from %qT" --msgstr " %qT är inte härledd från %qT" -+msgstr "%q#D ärvd från %qT" - - #: cp/class.c:1123 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "conflicts with version inherited from %qT" --msgstr "står i konflikt med tidigare deklaration här" -+msgstr "står i konflikt med tidigare ärvd från %qT" - - #: cp/class.c:1137 - #, gcc-internal-format -@@ -27634,9 +27634,9 @@ - msgstr "%qT har inte abi-etiketten %E som basen %qT har" - - #: cp/class.c:1331 cp/class.c:1341 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qT declared here" --msgstr "%qD är deklarerad här" -+msgstr "%qT är deklarerad här" - - #: cp/class.c:1336 - #, gcc-internal-format -@@ -28102,9 +28102,9 @@ - msgstr "%q#T använt där %qT förväntades" - - #: cp/cvt.c:765 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "could not convert %qE from % to %" --msgstr "kunde inte konvertera %qE från %qT till %qT" -+msgstr "kunde inte konvertera %qE från % till %" - - #: cp/cvt.c:816 - #, gcc-internal-format -@@ -28508,9 +28508,9 @@ - msgstr "tidigare deklaration av %q+#D här" - - #: cp/decl.c:1533 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "ambiguates old declaration with deduced return type" --msgstr "gör gammal deklaration %q+#D tvetydig" -+msgstr "gör gammal deklaration med härledd returtyp tvetydig" - - #: cp/decl.c:1544 - #, gcc-internal-format -@@ -28874,14 +28874,14 @@ - msgstr "% kan inte användas för typdeklarationer" - - #: cp/decl.c:4321 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "attribute ignored in explicit instantiation %q#T" --msgstr "attribut ignoreras vid mallinstansiering" -+msgstr "attribut ignoreras i explicit instantiering av %q#T" - - #: cp/decl.c:4324 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "no attribute can be applied to an explicit instantiation" --msgstr "attributet %qE kan bara användas på klassdefinitioner" -+msgstr "inget attribut kan användas på en explicit instantiering" - - #: cp/decl.c:4396 - #, gcc-internal-format -@@ -29053,9 +29053,9 @@ - msgstr "%qT har ingen icke-statisk medlem med namnet %qD" - - #: cp/decl.c:5226 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "invalid initializer for %q#D" --msgstr "ogiltigt initierare för vektormedlem %q#D" -+msgstr "ogiltigt initierare för %q#D" - - #: cp/decl.c:5256 - #, gcc-internal-format -@@ -29164,9 +29164,9 @@ - msgstr "ickelokal variabel %qD deklarerad %<__thread%> behöver dynamisk initiering" - - #: cp/decl.c:6886 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "non-local variable %qD declared %<__thread%> has a non-trivial destructor" --msgstr " %q+T har en icke-trivial destruerare" -+msgstr "den icke-lokala variabeln %qD deklarerad %<__thread%> har en icke-trivial destruerare" - - #: cp/decl.c:6892 - #, gcc-internal-format -@@ -29804,9 +29804,9 @@ - msgstr "%qs är deklarerad som en funktion som returnerar en vektor" - - #: cp/decl.c:9438 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qs declared as function returning an abstract class type" --msgstr "%qs är deklarerad som en funktion som returnerar en vektor" -+msgstr "%qs är deklarerad som en funktion som returnerar en abstrakt klasstyp" - - #: cp/decl.c:9467 - #, gcc-internal-format -@@ -30170,9 +30170,9 @@ - msgstr "lagringsklassen %<__thread%> är ogiltig för funktionen %qs" - - #: cp/decl.c:10596 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "storage class % invalid for function %qs" --msgstr "lagringsklassen %<__thread%> är ogiltig för funktionen %qs" -+msgstr "lagringsklassen % är ogiltig för funktionen %qs" - - #: cp/decl.c:10601 - #, gcc-internal-format -@@ -30609,14 +30609,14 @@ - msgstr "parameter %qD deklarerad void" - - #: cp/decl.c:13781 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "no return statements in function returning %qT" --msgstr "ingen retursats i funktion som returnerar icke-void" -+msgstr "inga retursatser i funktion som returnerar %qT" - - #: cp/decl.c:13783 cp/typeck.c:8135 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "only plain % return type can be deduced to %" --msgstr "funktionsreturtyper är inte kompatibla på grund av %" -+msgstr "endast enkel returtyp % kan härledas till %" - - #: cp/decl.c:13879 - #, gcc-internal-format -@@ -30649,9 +30649,9 @@ - msgstr "ogiltiga typer %<%T[%T]%> för vektorindex" - - #: cp/decl2.c:439 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "deleting array %q#E" --msgstr "raderar vektor %q#D" -+msgstr "raderar vektor %q#E" - - #: cp/decl2.c:445 - #, gcc-internal-format -@@ -30860,9 +30860,9 @@ - msgstr "användning av borttagen funktion %qD" - - #: cp/decl2.c:4537 cp/decl2.c:4594 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "use of %qD before deduction of %" --msgstr "typen på %qD sätts skönsmässigt till %" -+msgstr "använding av %qD före härledning av %" - - #: cp/error.c:3327 - #, gcc-internal-format -@@ -30925,14 +30925,14 @@ - msgstr "delegerande konstruerare är endast tillgängliga med -std=c++11 eller -std=gnu++11" - - #: cp/error.c:3385 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "inheriting constructors only available with -std=c++11 or -std=gnu++11" --msgstr "delegerande konstruerare är endast tillgängliga med -std=c++11 eller -std=gnu++11" -+msgstr "ärvande konstruerare är endast tillgängliga med -std=c++11 eller -std=gnu++11" - - #: cp/error.c:3390 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "c++11 attributes only available with -std=c++11 or -std=gnu++11" --msgstr "C++0x auto är endast tillgängligt med -std=c++11 eller -std=gnu++11" -+msgstr "c++11-attribut är endast tillgängligt med -std=c++11 eller -std=gnu++11" - - #: cp/error.c:3439 - #, gcc-internal-format -@@ -31007,14 +31007,14 @@ - msgstr "uttrycket %qE med abstrakt klasstyp %qT kan inte användas i throw-uttryck" - - #: cp/except.c:981 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "cannot declare catch parameter to be of abstract class type %qT" --msgstr "det går inte att deklarera parametern %q+D att vara av abstrakt typ %qT" -+msgstr "det går inte att deklarera en fångstparametern att vara av abstrakt klasstyp %qT" - - #: cp/except.c:989 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "cannot declare catch parameter to be of rvalue reference type %qT" --msgstr "det går inte att deklarera parametern %q+D att vara av abstrakt typ %qT" -+msgstr "det går inte att deklarera en fångstparameter att vara av rvalue-referenstyp %qT" - - #: cp/except.c:1075 - #, gcc-internal-format -@@ -31311,24 +31311,24 @@ - msgstr "oinitierad const-medlem i %q#T" - - #: cp/init.c:2254 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "integer overflow in array size" --msgstr "heltalsspill i uttryck" -+msgstr "heltalsspill i vektorstorlek" - - #: cp/init.c:2264 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "array size in operator new must be constant" --msgstr "Variabeln ”%s” vid %L i detta sammanhang måste vara en konstant" -+msgstr "vektorstorlek i operatorn new måste vara en konstant" - - #: cp/init.c:2278 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "variably modified type not allowed in operator new" --msgstr "variabelt ändrat fält i filräckvidd" -+msgstr "variabelt ändrad typ inte tillåten i operatorn new" - - #: cp/init.c:2292 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "ISO C++ does not support variable-length array types" --msgstr "ISO C stödjer inte mättning av typer" -+msgstr "ISO C++ stödjer inte vektortyper med variabel längd" - - #: cp/init.c:2300 - #, gcc-internal-format -@@ -32033,9 +32033,9 @@ - msgstr "%qT är inte en mall" - - #: cp/parser.c:2591 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qE is not a class template" --msgstr "%qE är inte en mall" -+msgstr "%qE är inte en klassmall" - - #: cp/parser.c:2593 - #, gcc-internal-format -@@ -32201,17 +32201,17 @@ - msgstr "kan inte hitta en teckenliteraloperator %qD med argumentet %qT" - - #: cp/parser.c:3682 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "integer literal exceeds range of %qT type" --msgstr "flyttalskonstant överskrider intervallet för %qT" -+msgstr "heltalskonstant överskrider intervallet för typen %qT" - - #: cp/parser.c:3688 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "floating literal exceeds range of %qT type" --msgstr "flyttalskonstant överskrider intervallet för %qT" -+msgstr "flyttalskonstant överskrider intervallet för typen %qT" - - #: cp/parser.c:3692 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "floating literal truncated to zero" - msgstr "flyttalskonstant avkortas till noll" - -Index: gcc/po/de.po -=================================================================== ---- a/src/gcc/po/de.po (.../tags/gcc_4_8_0_release) -+++ b/src/gcc/po/de.po (.../branches/gcc-4_8-branch) -@@ -6,10 +6,10 @@ - # Roland Stigge , 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012, 2013. - msgid "" - msgstr "" --"Project-Id-Version: gcc 4.8-b20130224\n" -+"Project-Id-Version: gcc 4.8.0\n" - "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" --"POT-Creation-Date: 2013-02-24 01:09+0000\n" --"PO-Revision-Date: 2013-03-09 18:08+0200\n" -+"POT-Creation-Date: 2013-03-15 17:42+0000\n" -+"PO-Revision-Date: 2013-04-01 12:08+0200\n" - "Last-Translator: Roland Stigge \n" - "Language-Team: German \n" - "Language: de\n" -@@ -18,19 +18,19 @@ - "Content-Transfer-Encoding: 8bit\n" - "Plural-Forms: nplurals=2; plural=n != 1;\n" - --#: cfgrtl.c:2320 -+#: cfgrtl.c:2318 - msgid "flow control insn inside a basic block" - msgstr "Flusskontrollbefehl innerhalb eines Basis-Blockes" - --#: cfgrtl.c:2448 -+#: cfgrtl.c:2446 - msgid "wrong insn in the fallthru edge" - msgstr "falscher Befehl in »fallthru«-Kante" - --#: cfgrtl.c:2502 -+#: cfgrtl.c:2500 - msgid "insn outside basic block" - msgstr "Befehl außerhalb eines Basis-Blockes" - --#: cfgrtl.c:2509 -+#: cfgrtl.c:2507 - msgid "return not followed by barrier" - msgstr "»return« nicht gefolgt von Sperre" - -@@ -137,7 +137,7 @@ - msgid "%s:%d: confused by earlier errors, bailing out\n" - msgstr "%s:%d: durch frühere Fehler verwirrt, Abbruch\n" - --#: diagnostic.c:1126 -+#: diagnostic.c:1129 - #, c-format - msgid "Internal compiler error: Error reporting routines re-entered.\n" - msgstr "Interner Compilerfehler: Fehlerbehandlungsroutinen doppelt betreten.\n" -@@ -200,12 +200,12 @@ - msgid "invalid expression as operand" - msgstr "ungültiger Ausdruck als Operand" - --#: gcc.c:1402 -+#: gcc.c:1403 - #, c-format - msgid "Using built-in specs.\n" - msgstr "Es werden eingebaute Spezifikationen verwendet.\n" - --#: gcc.c:1599 -+#: gcc.c:1600 - #, c-format - msgid "" - "Setting spec %s to '%s'\n" -@@ -214,22 +214,22 @@ - "Spezifikation %s wird auf '%s' gesetzt\n" - "\n" - --#: gcc.c:1708 -+#: gcc.c:1709 - #, c-format - msgid "Reading specs from %s\n" - msgstr "Lesen der Spezifikationen von %s\n" - --#: gcc.c:1833 -+#: gcc.c:1834 - #, c-format - msgid "could not find specs file %s\n" - msgstr "Spezifikationsdatei %s konnte nicht gefunden werden\n" - --#: gcc.c:1902 -+#: gcc.c:1903 - #, c-format - msgid "rename spec %s to %s\n" - msgstr "Spezifikation wird von %s nach %s umbenannt\n" - --#: gcc.c:1904 -+#: gcc.c:1905 - #, c-format - msgid "" - "spec is '%s'\n" -@@ -238,14 +238,14 @@ - "Spezifikation ist '%s'\n" - "\n" - --#: gcc.c:2337 -+#: gcc.c:2338 - #, c-format - msgid "%s\n" - msgstr "%s\n" - - # can we use j/n here, too? - # 2002-04-23 18:57:43 CEST -ke- --#: gcc.c:2704 -+#: gcc.c:2705 - #, c-format - msgid "" - "\n" -@@ -254,77 +254,77 @@ - "\n" - "Fortfahren? (y oder n) " - --#: gcc.c:2844 -+#: gcc.c:2845 - #, c-format - msgid "# %s %.2f %.2f\n" - msgstr "# %s %.2f %.2f\n" - --#: gcc.c:3047 -+#: gcc.c:3048 - #, c-format - msgid "Usage: %s [options] file...\n" - msgstr "Aufruf: %s [Optionen] Datei...\n" - --#: gcc.c:3048 -+#: gcc.c:3049 - msgid "Options:\n" - msgstr "Optionen:\n" - --#: gcc.c:3050 -+#: gcc.c:3051 - msgid " -pass-exit-codes Exit with highest error code from a phase\n" - msgstr " -pass-exit-codes Ende mit höchstem Rückgabe-Code einer Phase\n" - --#: gcc.c:3051 -+#: gcc.c:3052 - msgid " --help Display this information\n" - msgstr " --help Diese Informationen anzeigen\n" - --#: gcc.c:3052 -+#: gcc.c:3053 - msgid " --target-help Display target specific command line options\n" - msgstr " --target-help Zielspezifische Kommandozeilenoptionen anzeigen\n" - --#: gcc.c:3053 -+#: gcc.c:3054 - msgid " --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]\n" - msgstr " --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]\n" - --#: gcc.c:3054 -+#: gcc.c:3055 - msgid " Display specific types of command line options\n" - msgstr " Spezifische Typen der Kommandozeilenoptionen anzeigen\n" - --#: gcc.c:3056 -+#: gcc.c:3057 - msgid " (Use '-v --help' to display command line options of sub-processes)\n" - msgstr " ('-v --help' zum Anzeigen der Kommandozeilenoptionen von Subprozessen verwenden)\n" - --#: gcc.c:3057 -+#: gcc.c:3058 - msgid " --version Display compiler version information\n" - msgstr " --version Compilerversionsinformation anzeigen\n" - --#: gcc.c:3058 -+#: gcc.c:3059 - msgid " -dumpspecs Display all of the built in spec strings\n" - msgstr " -dumpspecs Alle eingebauten Spezifikationszeichenketten anzeigen\n" - --#: gcc.c:3059 -+#: gcc.c:3060 - msgid " -dumpversion Display the version of the compiler\n" - msgstr " -dumpversion Compilerversion anzeigen\n" - --#: gcc.c:3060 -+#: gcc.c:3061 - msgid " -dumpmachine Display the compiler's target processor\n" - msgstr " -dumpmachine Zielprozessor des Compilers anzeigen\n" - --#: gcc.c:3061 -+#: gcc.c:3062 - msgid " -print-search-dirs Display the directories in the compiler's search path\n" - msgstr " -print-search-dirs Verzeichnisse im Suchpfad des Compilers anzeigen\n" - --#: gcc.c:3062 -+#: gcc.c:3063 - msgid " -print-libgcc-file-name Display the name of the compiler's companion library\n" - msgstr " -print-libgcc-file-name Name der Begleitbibliothek des Compilers anzeigen\n" - --#: gcc.c:3063 -+#: gcc.c:3064 - msgid " -print-file-name= Display the full path to library \n" - msgstr " -print-file-name= Vollen Pfad zur Bibliothek anzeigen\n" - --#: gcc.c:3064 -+#: gcc.c:3065 - msgid " -print-prog-name= Display the full path to compiler component \n" - msgstr " -print-prog-name= Vollen Pfad zur Compilerkomponente anzeigen\n" - --#: gcc.c:3065 -+#: gcc.c:3066 - msgid "" - " -print-multiarch Display the target's normalized GNU triplet, used as\n" - " a component in the library path\n" -@@ -332,11 +332,11 @@ - " -print-multiarch Normalisiertes GNU-Tripel für das Ziel anzeigen,\n" - " als Komponente im Bibliothekspfad verwendet\n" - --#: gcc.c:3068 -+#: gcc.c:3069 - msgid " -print-multi-directory Display the root directory for versions of libgcc\n" - msgstr " -print-multi-directory Wurzelverzeichnis für Versionen von libgcc anzeigen\n" - --#: gcc.c:3069 -+#: gcc.c:3070 - msgid "" - " -print-multi-lib Display the mapping between command line options and\n" - " multiple library search directories\n" -@@ -344,53 +344,53 @@ - " -print-multi-lib Abbildung zwischen Kommandozeilenoptionen und\n" - " mehreren Suchverzeichnissen für Bibliotheken anzeigen\n" - --#: gcc.c:3072 -+#: gcc.c:3073 - msgid " -print-multi-os-directory Display the relative path to OS libraries\n" - msgstr "" - " -print-multi-os-directory Relativen Pfad zu Betriebssystembibliotheken\n" - " anzeigen\n" - --#: gcc.c:3073 -+#: gcc.c:3074 - msgid " -print-sysroot Display the target libraries directory\n" - msgstr " -print-sysroot Verzeichnis der Ziel-Bibliotheken anzeigen\n" - --#: gcc.c:3074 -+#: gcc.c:3075 - msgid " -print-sysroot-headers-suffix Display the sysroot suffix used to find headers\n" - msgstr " -print-sysroot-headers-suffix Den für Headersuche verwendeten sysroot-Suffix anzeigen\n" - --#: gcc.c:3075 -+#: gcc.c:3076 - msgid " -Wa, Pass comma-separated on to the assembler\n" - msgstr " -Wa, Komma-getrennte an Assembler übergeben\n" - --#: gcc.c:3076 -+#: gcc.c:3077 - msgid " -Wp, Pass comma-separated on to the preprocessor\n" - msgstr " -Wp, Komma-getrennte an Präprozessor übergeben\n" - --#: gcc.c:3077 -+#: gcc.c:3078 - msgid " -Wl, Pass comma-separated on to the linker\n" - msgstr " -Wl, Komma-getrennte an Linker übergeben\n" - --#: gcc.c:3078 -+#: gcc.c:3079 - msgid " -Xassembler Pass on to the assembler\n" - msgstr " -Xassembler an den Assembler übergeben\n" - --#: gcc.c:3079 -+#: gcc.c:3080 - msgid " -Xpreprocessor Pass on to the preprocessor\n" - msgstr " -Xpreprocessor an den Präprozessor übergeben\n" - --#: gcc.c:3080 -+#: gcc.c:3081 - msgid " -Xlinker Pass on to the linker\n" - msgstr " -Xlinker an den Linker übergeben\n" - --#: gcc.c:3081 -+#: gcc.c:3082 - msgid " -save-temps Do not delete intermediate files\n" - msgstr " -save-temps Temporäre Dateien nicht löschen\n" - --#: gcc.c:3082 -+#: gcc.c:3083 - msgid " -save-temps= Do not delete intermediate files\n" - msgstr " -save-temps= Temporäre Dateien nicht löschen\n" - --#: gcc.c:3083 -+#: gcc.c:3084 - msgid "" - " -no-canonical-prefixes Do not canonicalize paths when building relative\n" - " prefixes to other gcc components\n" -@@ -398,25 +398,25 @@ - " -no-canonical-prefixes Pfade beim Erzeugen relativer Präfixe zu anderen\n" - " GCC-Komponenten nicht kanonisieren\n" - --#: gcc.c:3086 -+#: gcc.c:3087 - msgid " -pipe Use pipes rather than intermediate files\n" - msgstr " -pipe Pipes statt temporärer Dateien verwenden\n" - --#: gcc.c:3087 -+#: gcc.c:3088 - msgid " -time Time the execution of each subprocess\n" - msgstr " -time Zeit für Ausführung jedes Subprozesses stoppen\n" - --#: gcc.c:3088 -+#: gcc.c:3089 - msgid " -specs= Override built-in specs with the contents of \n" - msgstr "" - " -specs= Eingebaute Spezifikationen mit Inhalt der \n" - " überschreiben\n" - --#: gcc.c:3089 -+#: gcc.c:3090 - msgid " -std= Assume that the input sources are for \n" - msgstr " -std= Annehmen, dass die Eingabequellen für sind\n" - --#: gcc.c:3090 -+#: gcc.c:3091 - msgid "" - " --sysroot= Use as the root directory for headers\n" - " and libraries\n" -@@ -424,47 +424,47 @@ - " --sysroot= als Root-Verzeichnis für Header und\n" - " Bibliotheken verwenden\n" - --#: gcc.c:3093 -+#: gcc.c:3094 - msgid " -B Add to the compiler's search paths\n" - msgstr " -B zum Suchpfad des Compilers hinzufügen\n" - --#: gcc.c:3094 -+#: gcc.c:3095 - msgid " -v Display the programs invoked by the compiler\n" - msgstr " -v Vom Compiler aufgerufene Programme anzeigen\n" - --#: gcc.c:3095 -+#: gcc.c:3096 - msgid " -### Like -v but options quoted and commands not executed\n" - msgstr "" - " -### Wie -v, aber mit zitierten Optionen und nicht\n" - " ausgeführten Befehlen\n" - --#: gcc.c:3096 -+#: gcc.c:3097 - msgid " -E Preprocess only; do not compile, assemble or link\n" - msgstr "" - " -E Nur Präprozessor, kein Compiler, Assembler oder\n" - " Binder\n" - --#: gcc.c:3097 -+#: gcc.c:3098 - msgid " -S Compile only; do not assemble or link\n" - msgstr " -S Nur kompilieren, nicht assemblieren oder binden\n" - --#: gcc.c:3098 -+#: gcc.c:3099 - msgid " -c Compile and assemble, but do not link\n" - msgstr " -c Nur kompilieren und assemblieren, aber nicht binden\n" - --#: gcc.c:3099 -+#: gcc.c:3100 - msgid " -o Place the output into \n" - msgstr " -o Ausgabe in schreiben\n" - --#: gcc.c:3100 -+#: gcc.c:3101 - msgid " -pie Create a position independent executable\n" - msgstr " -pie Eine lageunabhängige ausführbare Datei erzeugen\n" - --#: gcc.c:3101 -+#: gcc.c:3102 - msgid " -shared Create a shared library\n" - msgstr " -shared Eine Shared Library erzeugen\n" - --#: gcc.c:3102 -+#: gcc.c:3103 - msgid "" - " -x Specify the language of the following input files\n" - " Permissible languages include: c c++ assembler none\n" -@@ -477,7 +477,7 @@ - " verhalten, die Sprache aufgrund der Dateinamens-\n" - " erweiterung zu vermuten\n" - --#: gcc.c:3109 -+#: gcc.c:3110 - #, c-format - msgid "" - "\n" -@@ -491,27 +491,27 @@ - " Um andere Optionen an diese Prozesse zu übergeben, müssen die Optionen\n" - " -W verwendet werden.\n" - --#: gcc.c:5364 -+#: gcc.c:5365 - #, c-format - msgid "Processing spec (%s), which is '%s'\n" - msgstr "Spezifikation (%s) wird verarbeitet, welche »%s« ist\n" - --#: gcc.c:6649 -+#: gcc.c:6651 - #, c-format - msgid "install: %s%s\n" - msgstr "installiere: %s%s\n" - --#: gcc.c:6652 -+#: gcc.c:6654 - #, c-format - msgid "programs: %s\n" - msgstr "Programme: %s\n" - --#: gcc.c:6654 -+#: gcc.c:6656 - #, c-format - msgid "libraries: %s\n" - msgstr "Bibliotheken: %s\n" - --#: gcc.c:6738 -+#: gcc.c:6740 - #, c-format - msgid "" - "\n" -@@ -522,16 +522,16 @@ - "folgenden Hinweise; Fehler in der deutschen Übersetzung sind an\n" - "translation-team-de@lists.sourceforge.net zu melden:\n" - --#: gcc.c:6754 -+#: gcc.c:6756 - #, c-format - msgid "%s %s%s\n" - msgstr "%s %s%s\n" - --#: gcc.c:6757 gcov.c:491 fortran/gfortranspec.c:303 java/jcf-dump.c:1230 -+#: gcc.c:6759 gcov.c:491 fortran/gfortranspec.c:303 java/jcf-dump.c:1230 - msgid "(C)" - msgstr "(C)" - --#: gcc.c:6758 java/jcf-dump.c:1231 -+#: gcc.c:6760 java/jcf-dump.c:1231 - #, c-format - msgid "" - "This is free software; see the source for copying conditions. There is NO\n" -@@ -542,32 +542,32 @@ - "gibt KEINE Garantie; auch nicht für MARKTGÄNGIGKEIT oder FÜR SPEZIELLE ZWECKE.\n" - "\n" - --#: gcc.c:6775 -+#: gcc.c:6777 - #, c-format - msgid "Target: %s\n" - msgstr "Ziel: %s\n" - --#: gcc.c:6776 -+#: gcc.c:6778 - #, c-format - msgid "Configured with: %s\n" - msgstr "Konfiguriert mit: %s\n" - --#: gcc.c:6790 -+#: gcc.c:6792 - #, c-format - msgid "Thread model: %s\n" - msgstr "Thread-Modell: %s\n" - --#: gcc.c:6801 -+#: gcc.c:6803 - #, c-format - msgid "gcc version %s %s\n" - msgstr "gcc-Version %s %s\n" - --#: gcc.c:6804 -+#: gcc.c:6806 - #, c-format - msgid "gcc driver version %s %sexecuting gcc version %s\n" - msgstr "gcc-Treiberversion %s %s führt GCC-Version %s aus\n" - --#: gcc.c:7058 -+#: gcc.c:7061 - #, c-format - msgid "" - "\n" -@@ -580,7 +580,7 @@ - "==============\n" - "\n" - --#: gcc.c:7059 -+#: gcc.c:7062 - #, c-format - msgid "" - "Use \"-Wl,OPTION\" to pass \"OPTION\" to the linker.\n" -@@ -589,7 +589,7 @@ - "»-Wl,OPTION« verwenden, um »OPTION« an den Linker zu übergeben.\n" - "\n" - --#: gcc.c:8276 -+#: gcc.c:8279 - #, c-format - msgid "" - "Assembler options\n" -@@ -600,7 +600,7 @@ - "=================\n" - "\n" - --#: gcc.c:8277 -+#: gcc.c:8280 - #, c-format - msgid "" - "Use \"-Wa,OPTION\" to pass \"OPTION\" to the assembler.\n" -@@ -1030,17 +1030,17 @@ - msgid "ignoring nonexistent directory \"%s\"\n" - msgstr "nicht vorhandenes Verzeichnis »%s« wird ignoriert\n" - --#: incpath.c:363 -+#: incpath.c:374 - #, c-format - msgid "#include \"...\" search starts here:\n" - msgstr "#include \"...\" - Suche beginnt hier:\n" - --#: incpath.c:367 -+#: incpath.c:378 - #, c-format - msgid "#include <...> search starts here:\n" - msgstr "#include <...> - Suche beginnt hier:\n" - --#: incpath.c:372 -+#: incpath.c:383 - #, c-format - msgid "End of search list.\n" - msgstr "Ende der Suchliste.\n" -@@ -1071,44 +1071,44 @@ - msgid "At top level:" - msgstr "Auf höchster Ebene:" - --#: langhooks.c:400 cp/error.c:3038 -+#: langhooks.c:400 cp/error.c:3042 - #, c-format - msgid "In member function %qs" - msgstr "In Elementfunktion %qs" - --#: langhooks.c:404 cp/error.c:3041 -+#: langhooks.c:404 cp/error.c:3045 - #, c-format - msgid "In function %qs" - msgstr "In Funktion %qs" - --#: langhooks.c:455 cp/error.c:2991 -+#: langhooks.c:455 cp/error.c:2995 - #, c-format - msgid " inlined from %qs at %s:%d:%d" - msgstr " eingefügt von %qs bei %s:%d:%d" - --#: langhooks.c:460 cp/error.c:2996 -+#: langhooks.c:460 cp/error.c:3000 - #, c-format - msgid " inlined from %qs at %s:%d" - msgstr " eingefügt von %qs bei %s:%d" - --#: langhooks.c:466 cp/error.c:3002 -+#: langhooks.c:466 cp/error.c:3006 - #, c-format - msgid " inlined from %qs" - msgstr " eingefügt von %qs" - --#: loop-iv.c:3029 tree-ssa-loop-niter.c:1924 -+#: loop-iv.c:3029 tree-ssa-loop-niter.c:1925 - msgid "assuming that the loop is not infinite" - msgstr "es wird angenommen, dass es sich nicht um eine Endlosschleife handelt" - --#: loop-iv.c:3030 tree-ssa-loop-niter.c:1925 -+#: loop-iv.c:3030 tree-ssa-loop-niter.c:1926 - msgid "cannot optimize possibly infinite loops" - msgstr "mögliche Endlosscheife kann nicht optimiert werden" - --#: loop-iv.c:3038 tree-ssa-loop-niter.c:1929 -+#: loop-iv.c:3038 tree-ssa-loop-niter.c:1930 - msgid "assuming that the loop counter does not overflow" - msgstr "es wird angenommen, dass die Schleifen-Zählvariable nicht überläuft" - --#: loop-iv.c:3039 tree-ssa-loop-niter.c:1930 -+#: loop-iv.c:3039 tree-ssa-loop-niter.c:1931 - msgid "cannot optimize loop, the loop counter may overflow" - msgstr "Schleife kann nicht optimiert werden, Schleifen-Zählvariable könnte überlaufen" - -@@ -1186,78 +1186,78 @@ - msgid "This switch lacks documentation" - msgstr "Dieser Schalter ist undokumentiert" - --#: opts.c:1015 -+#: opts.c:1018 - msgid "[default]" - msgstr "[Standard]" - --#: opts.c:1026 -+#: opts.c:1029 - msgid "[enabled]" - msgstr "[eingeschaltet]" - --#: opts.c:1026 -+#: opts.c:1029 - msgid "[disabled]" - msgstr "[ausgeschaltet]" - --#: opts.c:1045 -+#: opts.c:1048 - #, c-format - msgid " No options with the desired characteristics were found\n" - msgstr " Keine Optionen mit den gewünschten Eigenschaften gefunden\n" - --#: opts.c:1054 -+#: opts.c:1057 - #, c-format - msgid " None found. Use --help=%s to show *all* the options supported by the %s front-end\n" - msgstr " Nichts gefunden. --help=%s verwenden, um *alle* vom Frontend %s unterstützten Optionen anzuzeigen\n" - --#: opts.c:1060 -+#: opts.c:1063 - #, c-format - msgid " All options with the desired characteristics have already been displayed\n" - msgstr " Alle Optionen mit den gewünschten Eigenschaften wurden bereits angezeigt\n" - --#: opts.c:1155 -+#: opts.c:1158 - msgid "The following options are target specific" - msgstr "Die folgenden Optionen sind zielspezifisch" - --#: opts.c:1158 -+#: opts.c:1161 - msgid "The following options control compiler warning messages" - msgstr "Die folgenden Optionen steuern Warnmeldungen des Compilers" - --#: opts.c:1161 -+#: opts.c:1164 - msgid "The following options control optimizations" - msgstr "Die folgenden Optionen steuern Optimierungen" - --#: opts.c:1164 opts.c:1203 -+#: opts.c:1167 opts.c:1206 - msgid "The following options are language-independent" - msgstr "Die folgenden Optionen sind sprach-unabhängig" - --#: opts.c:1167 -+#: opts.c:1170 - msgid "The --param option recognizes the following as parameters" - msgstr "Die Option »--param« erkennt die folgenden Parameter" - --#: opts.c:1173 -+#: opts.c:1176 - msgid "The following options are specific to just the language " - msgstr "Die folgenden Optionen sind nur spezifisch für die Sprache " - --#: opts.c:1175 -+#: opts.c:1178 - msgid "The following options are supported by the language " - msgstr "Die folgenden Optionen werden von der Sprache unterstützt " - --#: opts.c:1186 -+#: opts.c:1189 - msgid "The following options are not documented" - msgstr "Die folgenden Optionen sind nicht dokumentiert" - --#: opts.c:1188 -+#: opts.c:1191 - msgid "The following options take separate arguments" - msgstr "Die folgenden Optionen verwenden separate Argumente" - --#: opts.c:1190 -+#: opts.c:1193 - msgid "The following options take joined arguments" - msgstr "Die folgenden Optionen verwenden gemeinsame Argumente" - --#: opts.c:1201 -+#: opts.c:1204 - msgid "The following options are language-related" - msgstr "Die folgenden Optionen sind sprachbezogen" - --#: opts.c:2078 -+#: opts.c:2081 - msgid "enabled by default" - msgstr "standardmäßig aktiviert" - -@@ -2446,7 +2446,7 @@ - msgid "" - msgstr "" - --#: c-family/c-pretty-print.c:2147 cp/error.c:1818 cp/error.c:2764 -+#: c-family/c-pretty-print.c:2147 cp/error.c:1818 cp/error.c:2768 - msgid "" - msgstr "" - -@@ -2464,7 +2464,7 @@ - msgid "incompatible floating point / vector register operand for '%%%c'" - msgstr "unverträglicher Gleitkomma- / Vektorregisteroperand für »%%%c«" - --#: config/aarch64/aarch64.c:3399 config/arm/arm.c:18223 -+#: config/aarch64/aarch64.c:3399 config/arm/arm.c:18233 - #, c-format - msgid "missing operand" - msgstr "fehlender Operand" -@@ -2568,33 +2568,34 @@ - msgid "invalid %%xn code" - msgstr "ungültiger %%xn-Code" - --#: config/arm/arm.c:17560 config/arm/arm.c:17578 -+#: config/arm/arm.c:15438 config/arm/arm.c:15463 config/arm/arm.c:15473 -+#: config/arm/arm.c:15482 config/arm/arm.c:15490 - #, c-format -+msgid "invalid shift operand" -+msgstr "ungültiger Schiebeoperand" -+ -+#: config/arm/arm.c:17576 config/arm/arm.c:17594 -+#, c-format - msgid "predicated Thumb instruction" - msgstr "angegebene Thumb-Anweisung" - --#: config/arm/arm.c:17566 -+#: config/arm/arm.c:17582 - #, c-format - msgid "predicated instruction in conditional sequence" - msgstr "angegebene Anweisung in bedingter Sequenz" - --#: config/arm/arm.c:17697 config/arm/arm.c:17710 -+#: config/arm/arm.c:17713 config/arm/arm.c:17726 - #, c-format - msgid "Unsupported operand for code '%c'" - msgstr "Operand für Code »%c« nicht unterstützt" - --#: config/arm/arm.c:17748 --#, c-format --msgid "invalid shift operand" --msgstr "ungültiger Schiebeoperand" -- --#: config/arm/arm.c:17805 config/arm/arm.c:17827 config/arm/arm.c:17837 --#: config/arm/arm.c:17847 config/arm/arm.c:17857 config/arm/arm.c:17896 --#: config/arm/arm.c:17914 config/arm/arm.c:17939 config/arm/arm.c:17954 --#: config/arm/arm.c:17981 config/arm/arm.c:17988 config/arm/arm.c:18006 --#: config/arm/arm.c:18013 config/arm/arm.c:18021 config/arm/arm.c:18042 --#: config/arm/arm.c:18049 config/arm/arm.c:18174 config/arm/arm.c:18181 --#: config/arm/arm.c:18204 config/arm/arm.c:18211 config/bfin/bfin.c:1439 -+#: config/arm/arm.c:17815 config/arm/arm.c:17837 config/arm/arm.c:17847 -+#: config/arm/arm.c:17857 config/arm/arm.c:17867 config/arm/arm.c:17906 -+#: config/arm/arm.c:17924 config/arm/arm.c:17949 config/arm/arm.c:17964 -+#: config/arm/arm.c:17991 config/arm/arm.c:17998 config/arm/arm.c:18016 -+#: config/arm/arm.c:18023 config/arm/arm.c:18031 config/arm/arm.c:18052 -+#: config/arm/arm.c:18059 config/arm/arm.c:18184 config/arm/arm.c:18191 -+#: config/arm/arm.c:18214 config/arm/arm.c:18221 config/bfin/bfin.c:1439 - #: config/bfin/bfin.c:1446 config/bfin/bfin.c:1453 config/bfin/bfin.c:1460 - #: config/bfin/bfin.c:1469 config/bfin/bfin.c:1476 config/bfin/bfin.c:1483 - #: config/bfin/bfin.c:1490 -@@ -2602,22 +2603,22 @@ - msgid "invalid operand for code '%c'" - msgstr "ungültiger Operand für Code »%c«" - --#: config/arm/arm.c:17909 -+#: config/arm/arm.c:17919 - #, c-format - msgid "instruction never executed" - msgstr "Anweisung wird niemals ausgeführt" - - #. Former Maverick support, removed after GCC-4.7. --#: config/arm/arm.c:17930 -+#: config/arm/arm.c:17940 - #, c-format - msgid "obsolete Maverick format code '%c'" - msgstr "veralteter Maverick-Formatcode »%c«" - --#: config/arm/arm.c:20988 -+#: config/arm/arm.c:20998 - msgid "function parameters cannot have __fp16 type" - msgstr "Funktionsparameter können nicht Typ __fp16 haben" - --#: config/arm/arm.c:20998 -+#: config/arm/arm.c:21008 - msgid "functions cannot return __fp16 type" - msgstr "Funktionen können nicht Typ __fp16 zurückgeben" - -@@ -2652,7 +2653,7 @@ - - #: config/avr/avr.c:2234 - #, c-format --msgid "Unsupported code '%c'for fixed-point:" -+msgid "Unsupported code '%c' for fixed-point:" - msgstr "Code »%c« für Festkomma nicht unterstützt:" - - #: config/avr/avr.c:2243 -@@ -2699,8 +2700,8 @@ - msgstr "ungültiger const_double-Operand" - - #: config/cris/cris.c:580 config/moxie/moxie.c:111 final.c:3311 final.c:3313 --#: fold-const.c:270 gcc.c:4712 gcc.c:4726 loop-iv.c:3031 loop-iv.c:3040 --#: rtl-error.c:102 toplev.c:332 tree-ssa-loop-niter.c:1933 tree-vrp.c:6783 -+#: fold-const.c:270 gcc.c:4713 gcc.c:4727 loop-iv.c:3031 loop-iv.c:3040 -+#: rtl-error.c:102 toplev.c:332 tree-ssa-loop-niter.c:1934 tree-vrp.c:6783 - #: cp/typeck.c:5618 java/expr.c:389 lto/lto-object.c:189 lto/lto-object.c:287 - #: lto/lto-object.c:344 lto/lto-object.c:368 - #, gcc-internal-format, gfc-internal-format -@@ -3041,8 +3042,8 @@ - msgid "invalid operation on %<__fpreg%>" - msgstr "ungültige Operation auf %<__fpreg%>" - --#: config/iq2000/iq2000.c:3132 config/tilegx/tilegx.c:5205 --#: config/tilepro/tilepro.c:4695 -+#: config/iq2000/iq2000.c:3132 config/tilegx/tilegx.c:5203 -+#: config/tilepro/tilepro.c:4693 - #, c-format - msgid "invalid %%P operand" - msgstr "ungültiger %%P-Operand" -@@ -3057,20 +3058,20 @@ - msgid "invalid use of %%d, %%x, or %%X" - msgstr "ungültige Verwendung von %%d, %%x oder %%X" - --#: config/lm32/lm32.c:521 -+#: config/lm32/lm32.c:518 - #, c-format - msgid "only 0.0 can be loaded as an immediate" - msgstr "nur 0.0 kann als Immediate geladen werden" - --#: config/lm32/lm32.c:591 -+#: config/lm32/lm32.c:588 - msgid "bad operand" - msgstr "Ungültiger Operand" - --#: config/lm32/lm32.c:603 -+#: config/lm32/lm32.c:600 - msgid "can't use non gp relative absolute address" - msgstr "Nicht-GP-relative absolute Adresse kann nicht verwendet werden" - --#: config/lm32/lm32.c:607 -+#: config/lm32/lm32.c:604 - msgid "invalid addressing mode" - msgstr "ungültiger Adressierungsmodus" - -@@ -3139,36 +3140,36 @@ - msgid "invalid %%L code" - msgstr "ungültiger %%L-Code" - --#: config/microblaze/microblaze.c:1760 -+#: config/microblaze/microblaze.c:2156 - #, c-format - msgid "unknown punctuation '%c'" - msgstr "unbekanntes Zeichen »%c«" - --#: config/microblaze/microblaze.c:1769 -+#: config/microblaze/microblaze.c:2165 - #, c-format - msgid "null pointer" - msgstr "Null-Zeiger" - --#: config/microblaze/microblaze.c:1804 -+#: config/microblaze/microblaze.c:2200 - #, c-format - msgid "PRINT_OPERAND, invalid insn for %%C" - msgstr "PRINT_OPERAND, ungültiger Befehl für %%C" - --#: config/microblaze/microblaze.c:1833 -+#: config/microblaze/microblaze.c:2229 - #, c-format - msgid "PRINT_OPERAND, invalid insn for %%N" - msgstr "PRINT_OPERAND, ungültiger Befehl für %%N" - --#: config/microblaze/microblaze.c:1853 config/microblaze/microblaze.c:2014 -+#: config/microblaze/microblaze.c:2249 config/microblaze/microblaze.c:2420 - msgid "insn contains an invalid address !" - msgstr "Befehl enthält eine ungültige Adresse!" - --#: config/microblaze/microblaze.c:1867 config/microblaze/microblaze.c:2054 -+#: config/microblaze/microblaze.c:2264 config/microblaze/microblaze.c:2479 - #: config/xtensa/xtensa.c:2443 - msgid "invalid address" - msgstr "ungültige Adresse" - --#: config/microblaze/microblaze.c:1966 -+#: config/microblaze/microblaze.c:2363 - #, c-format - msgid "letter %c was found & insn was not CONST_INT" - msgstr "Buchstabe %c gefunden und Befehl war nicht CONST_INT" -@@ -3449,25 +3450,25 @@ - msgid "invalid operand for code: '%c'" - msgstr "ungültiger Operand für Code: »%c«" - --#: config/sh/sh.c:1204 -+#: config/sh/sh.c:1201 - #, c-format - msgid "invalid operand to %%R" - msgstr "ungültiger Operand für %%R" - --#: config/sh/sh.c:1231 -+#: config/sh/sh.c:1228 - #, c-format - msgid "invalid operand to %%S" - msgstr "ungültiger Operand für %%S" - --#: config/sh/sh.c:9775 -+#: config/sh/sh.c:9772 - msgid "created and used with different architectures / ABIs" - msgstr "erzeugt und mit anderen Architekturen / ABIs verwendet" - --#: config/sh/sh.c:9777 -+#: config/sh/sh.c:9774 - msgid "created and used with different ABIs" - msgstr "erzeugt und mit anderen ABIs verwendet" - --#: config/sh/sh.c:9779 -+#: config/sh/sh.c:9776 - msgid "created and used with different endianness" - msgstr "erzeugt und mit anderer Bytereihenfolge verwendet" - -@@ -3486,13 +3487,13 @@ - msgid "invalid %%B operand" - msgstr "ungültiger %%B-Operand" - --#: config/sparc/sparc.c:8508 config/tilegx/tilegx.c:4988 --#: config/tilepro/tilepro.c:4498 -+#: config/sparc/sparc.c:8508 config/tilegx/tilegx.c:4986 -+#: config/tilepro/tilepro.c:4496 - #, c-format - msgid "invalid %%C operand" - msgstr "ungültiger %%C-Operand" - --#: config/sparc/sparc.c:8525 config/tilegx/tilegx.c:5021 -+#: config/sparc/sparc.c:8525 config/tilegx/tilegx.c:5019 - #, c-format - msgid "invalid %%D operand" - msgstr "ungültiger %%D-Operand" -@@ -3537,87 +3538,87 @@ - msgid "xstormy16_print_operand: unknown code" - msgstr "xstormy16_print_operand: unbekannter Code" - --#: config/tilegx/tilegx.c:4973 config/tilepro/tilepro.c:4483 -+#: config/tilegx/tilegx.c:4971 config/tilepro/tilepro.c:4481 - #, c-format - msgid "invalid %%c operand" - msgstr "ungültiger %%c-Operand" - --#: config/tilegx/tilegx.c:5004 -+#: config/tilegx/tilegx.c:5002 - #, c-format - msgid "invalid %%d operand" - msgstr "ungültiger %%d-Operand" - --#: config/tilegx/tilegx.c:5101 -+#: config/tilegx/tilegx.c:5099 - #, c-format - msgid "invalid %%H specifier" - msgstr "ungültiger %%H-Spezifizierer" - --#: config/tilegx/tilegx.c:5143 config/tilepro/tilepro.c:4512 -+#: config/tilegx/tilegx.c:5141 config/tilepro/tilepro.c:4510 - #, c-format - msgid "invalid %%h operand" - msgstr "ungültiger %%h-Operand" - --#: config/tilegx/tilegx.c:5155 config/tilepro/tilepro.c:4576 -+#: config/tilegx/tilegx.c:5153 config/tilepro/tilepro.c:4574 - #, c-format - msgid "invalid %%I operand" - msgstr "ungültiger %%I-Operand" - --#: config/tilegx/tilegx.c:5169 config/tilepro/tilepro.c:4590 -+#: config/tilegx/tilegx.c:5167 config/tilepro/tilepro.c:4588 - #, c-format - msgid "invalid %%i operand" - msgstr "ungültiger %%i-Operand" - --#: config/tilegx/tilegx.c:5192 config/tilepro/tilepro.c:4613 -+#: config/tilegx/tilegx.c:5190 config/tilepro/tilepro.c:4611 - #, c-format - msgid "invalid %%j operand" - msgstr "ungültiger %%j-Operand" - --#: config/tilegx/tilegx.c:5223 -+#: config/tilegx/tilegx.c:5221 - #, c-format - msgid "invalid %%%c operand" - msgstr "ungültiger %%%c-Operand" - --#: config/tilegx/tilegx.c:5238 config/tilepro/tilepro.c:4727 -+#: config/tilegx/tilegx.c:5236 config/tilepro/tilepro.c:4725 - #, c-format - msgid "invalid %%N operand" - msgstr "ungültiger %%N-Operand" - --#: config/tilegx/tilegx.c:5282 -+#: config/tilegx/tilegx.c:5280 - #, c-format - msgid "invalid operand for 'r' specifier" - msgstr "ungültiger Operand für Spezifizierer »r«" - --#: config/tilegx/tilegx.c:5307 config/tilepro/tilepro.c:4809 -+#: config/tilegx/tilegx.c:5305 config/tilepro/tilepro.c:4807 - #, c-format - msgid "unable to print out operand yet; code == %d (%c)" - msgstr "Operand kann noch nicht ausgegeben werden; Code == %d (%c)" - --#: config/tilepro/tilepro.c:4548 -+#: config/tilepro/tilepro.c:4546 - #, c-format - msgid "invalid %%H operand" - msgstr "ungültiger %%H-Operand" - --#: config/tilepro/tilepro.c:4652 -+#: config/tilepro/tilepro.c:4650 - #, c-format - msgid "invalid %%L operand" - msgstr "ungültiger %%L-Operand" - --#: config/tilepro/tilepro.c:4712 -+#: config/tilepro/tilepro.c:4710 - #, c-format - msgid "invalid %%M operand" - msgstr "ungültiger %%M-Operand" - --#: config/tilepro/tilepro.c:4755 -+#: config/tilepro/tilepro.c:4753 - #, c-format - msgid "invalid %%t operand" - msgstr "ungültiger %%t-Operand" - --#: config/tilepro/tilepro.c:4762 -+#: config/tilepro/tilepro.c:4760 - #, c-format - msgid "invalid %%t operand '" - msgstr "ungültiger %%t-Operand '" - --#: config/tilepro/tilepro.c:4783 -+#: config/tilepro/tilepro.c:4781 - #, c-format - msgid "invalid %%r operand" - msgstr "ungültiger %%r-Operand" -@@ -3685,7 +3686,7 @@ - msgid "({anonymous})" - msgstr "({anonym})" - --#: c/c-parser.c:943 cp/parser.c:23010 -+#: c/c-parser.c:943 cp/parser.c:23014 - #, gcc-internal-format - msgid "expected end of line" - msgstr "Zeilenende erwartet" -@@ -3695,8 +3696,8 @@ - #: c/c-parser.c:7357 c/c-parser.c:7392 c/c-parser.c:7423 c/c-parser.c:7470 - #: c/c-parser.c:7651 c/c-parser.c:8419 c/c-parser.c:8489 c/c-parser.c:8532 - #: c/c-parser.c:9810 c/c-parser.c:9825 c/c-parser.c:9834 c/c-parser.c:9979 --#: c/c-parser.c:10018 c/c-parser.c:2500 c/c-parser.c:7644 cp/parser.c:22423 --#: cp/parser.c:22956 -+#: c/c-parser.c:10018 c/c-parser.c:2500 c/c-parser.c:7644 cp/parser.c:22427 -+#: cp/parser.c:22960 - #, gcc-internal-format - msgid "expected %<;%>" - msgstr "%<;%> erwartet" -@@ -3708,13 +3709,13 @@ - #: c/c-parser.c:6703 c/c-parser.c:6727 c/c-parser.c:7942 c/c-parser.c:8014 - #: c/c-parser.c:8841 c/c-parser.c:8862 c/c-parser.c:8912 c/c-parser.c:9065 - #: c/c-parser.c:9144 c/c-parser.c:9228 c/c-parser.c:9942 c/c-parser.c:10766 --#: c/c-parser.c:8985 c/c-parser.c:9010 cp/parser.c:20794 cp/parser.c:22959 -+#: c/c-parser.c:8985 c/c-parser.c:9010 cp/parser.c:20798 cp/parser.c:22963 - #, gcc-internal-format - msgid "expected %<(%>" - msgstr "%<(%> erwartet" - - #: c/c-parser.c:1843 c/c-parser.c:6389 c/c-parser.c:6427 c/c-parser.c:6555 --#: cp/parser.c:22421 cp/parser.c:22974 -+#: cp/parser.c:22425 cp/parser.c:22978 - #, gcc-internal-format - msgid "expected %<,%>" - msgstr "%<,%> erwartet" -@@ -3730,15 +3731,15 @@ - #: c/c-parser.c:7736 c/c-parser.c:7757 c/c-parser.c:7965 c/c-parser.c:8018 - #: c/c-parser.c:8391 c/c-parser.c:8844 c/c-parser.c:8865 c/c-parser.c:8943 - #: c/c-parser.c:9072 c/c-parser.c:9209 c/c-parser.c:9292 c/c-parser.c:9870 --#: c/c-parser.c:9987 c/c-parser.c:10029 c/c-parser.c:10775 cp/parser.c:20816 --#: cp/parser.c:23004 -+#: c/c-parser.c:9987 c/c-parser.c:10029 c/c-parser.c:10775 cp/parser.c:20820 -+#: cp/parser.c:23008 - #, gcc-internal-format - msgid "expected %<)%>" - msgstr "%<)%> erwartet" - - #: c/c-parser.c:3095 c/c-parser.c:3911 c/c-parser.c:3945 c/c-parser.c:5228 - #: c/c-parser.c:6491 c/c-parser.c:6760 c/c-parser.c:6878 c/c-parser.c:10678 --#: c/c-parser.c:10680 cp/parser.c:22968 -+#: c/c-parser.c:10680 cp/parser.c:22972 - #, gcc-internal-format - msgid "expected %<]%>" - msgstr "%<]%> erwartet" -@@ -3747,25 +3748,25 @@ - msgid "expected %<;%>, %<,%> or %<)%>" - msgstr "%<;%>, %<,%> oder %<)%> erwartet" - --#: c/c-parser.c:3774 c/c-parser.c:9826 cp/parser.c:22962 cp/parser.c:24780 -+#: c/c-parser.c:3774 c/c-parser.c:9826 cp/parser.c:22966 cp/parser.c:24784 - #, gcc-internal-format - msgid "expected %<}%>" - msgstr "%<}%> erwartet" - - #: c/c-parser.c:4064 c/c-parser.c:7985 c/c-parser.c:10272 c/c-parser.c:2318 --#: c/c-parser.c:2521 c/c-parser.c:7539 cp/parser.c:14644 cp/parser.c:22965 -+#: c/c-parser.c:2521 c/c-parser.c:7539 cp/parser.c:14646 cp/parser.c:22969 - #, gcc-internal-format - msgid "expected %<{%>" - msgstr "%<{%> erwartet" - - #: c/c-parser.c:4283 c/c-parser.c:4292 c/c-parser.c:5135 c/c-parser.c:5469 - #: c/c-parser.c:7750 c/c-parser.c:8125 c/c-parser.c:8182 c/c-parser.c:9198 --#: cp/parser.c:22998 cp/parser.c:24001 -+#: cp/parser.c:23002 cp/parser.c:24005 - #, gcc-internal-format - msgid "expected %<:%>" - msgstr "%<:%> erwartet" - --#: c/c-parser.c:4831 cp/parser.c:22892 -+#: c/c-parser.c:4831 cp/parser.c:22896 - #, gcc-internal-format - msgid "expected %" - msgstr "% erwartet" -@@ -3774,34 +3775,34 @@ - msgid "expected %<.%>" - msgstr "%<.%> erwartet" - --#: c/c-parser.c:7210 c/c-parser.c:7242 c/c-parser.c:7482 cp/parser.c:24564 --#: cp/parser.c:24638 -+#: c/c-parser.c:7210 c/c-parser.c:7242 c/c-parser.c:7482 cp/parser.c:24568 -+#: cp/parser.c:24642 - #, gcc-internal-format - msgid "expected %<@end%>" - msgstr "%<@end%> erwartet" - --#: c/c-parser.c:7899 cp/parser.c:22983 -+#: c/c-parser.c:7899 cp/parser.c:22987 - #, gcc-internal-format - msgid "expected %<>%>" - msgstr "%<>%> erwartet" - --#: c/c-parser.c:9296 cp/parser.c:23007 -+#: c/c-parser.c:9296 cp/parser.c:23011 - #, gcc-internal-format - msgid "expected %<,%> or %<)%>" - msgstr "%<,%> oder %<)%> erwartet" - - #: c/c-parser.c:9549 c/c-parser.c:9580 c/c-parser.c:9816 c/c-parser.c:9968 --#: c/c-parser.c:3968 cp/parser.c:22986 -+#: c/c-parser.c:3968 cp/parser.c:22990 - #, gcc-internal-format - msgid "expected %<=%>" - msgstr "%<=%> erwartet" - --#: c/c-parser.c:10329 c/c-parser.c:10319 cp/parser.c:27421 -+#: c/c-parser.c:10329 c/c-parser.c:10319 cp/parser.c:27425 - #, gcc-internal-format - msgid "expected %<#pragma omp section%> or %<}%>" - msgstr "%<#pragma omp section%> oder %<}%> erwartet" - --#: c/c-parser.c:10666 cp/parser.c:22971 -+#: c/c-parser.c:10666 cp/parser.c:22975 - #, gcc-internal-format - msgid "expected %<[%>" - msgstr "%<[%> erwartet" -@@ -3810,11 +3811,11 @@ - msgid "(anonymous)" - msgstr "(anonym)" - --#: cp/call.c:8680 -+#: cp/call.c:8698 - msgid "candidate 1:" - msgstr "Kandidat 1:" - --#: cp/call.c:8681 -+#: cp/call.c:8699 - msgid "candidate 2:" - msgstr "Kandidat 2:" - -@@ -3822,7 +3823,7 @@ - msgid "" - msgstr "" - --#: cp/cxx-pretty-print.c:2149 -+#: cp/cxx-pretty-print.c:2153 - msgid "template-parameter-" - msgstr "Template-Parameter-" - -@@ -3902,7 +3903,7 @@ - msgid "" - msgstr "" - --#: cp/error.c:1445 cp/error.c:2855 -+#: cp/error.c:1445 cp/error.c:2859 - msgid "with" - msgstr "mit" - -@@ -3924,107 +3925,111 @@ - msgid "" - msgstr "" - --#: cp/error.c:2504 -+#: cp/error.c:2498 -+msgid "" -+msgstr "" -+ -+#: cp/error.c:2508 - msgid "" - msgstr "" - --#: cp/error.c:2518 -+#: cp/error.c:2522 - msgid "" - msgstr "" - --#: cp/error.c:2807 -+#: cp/error.c:2811 - msgid "{unknown}" - msgstr "{unbekannt}" - --#: cp/error.c:2922 -+#: cp/error.c:2926 - msgid "At global scope:" - msgstr "Im globalen Gültigkeitsbereich:" - --#: cp/error.c:3028 -+#: cp/error.c:3032 - #, c-format - msgid "In static member function %qs" - msgstr "In statischer Elementfunktion %qs" - --#: cp/error.c:3030 -+#: cp/error.c:3034 - #, c-format - msgid "In copy constructor %qs" - msgstr "In Copy-Konstruktor %qs" - --#: cp/error.c:3032 -+#: cp/error.c:3036 - #, c-format - msgid "In constructor %qs" - msgstr "In Konstruktor %qs" - --#: cp/error.c:3034 -+#: cp/error.c:3038 - #, c-format - msgid "In destructor %qs" - msgstr "In Destruktor %qs" - --#: cp/error.c:3036 -+#: cp/error.c:3040 - msgid "In lambda function" - msgstr "In Lambda-Funktion" - --#: cp/error.c:3056 -+#: cp/error.c:3060 - #, c-format - msgid "%s: In substitution of %qS:\n" - msgstr "%s: In Ersetzung von %qS:\n" - --#: cp/error.c:3057 -+#: cp/error.c:3061 - msgid "%s: In instantiation of %q#D:\n" - msgstr "%s: In Instanziierung von %q#D:\n" - --#: cp/error.c:3080 -+#: cp/error.c:3084 - #, c-format - msgid "%s:%d:%d: " - msgstr "%s:%d:%d: " - --#: cp/error.c:3083 -+#: cp/error.c:3087 - #, c-format - msgid "%s:%d: " - msgstr "%s:%d: " - --#: cp/error.c:3091 -+#: cp/error.c:3095 - #, c-format - msgid "recursively required by substitution of %qS\n" - msgstr "rekursiv erforderlich durch Ersetzung von %qS\n" - --#: cp/error.c:3092 -+#: cp/error.c:3096 - #, c-format - msgid "required by substitution of %qS\n" - msgstr "erforderlich durch Ersetzung von %qS\n" - --#: cp/error.c:3097 -+#: cp/error.c:3101 - msgid "recursively required from %q#D\n" - msgstr "rekursiv erfordert von %q#D\n" - --#: cp/error.c:3098 -+#: cp/error.c:3102 - msgid "required from %q#D\n" - msgstr "erfordert durch %q#D\n" - --#: cp/error.c:3105 -+#: cp/error.c:3109 - msgid "recursively required from here" - msgstr "rekursiv erfordert von hier" - --#: cp/error.c:3106 -+#: cp/error.c:3110 - msgid "required from here" - msgstr "von hier erfordert" - --#: cp/error.c:3158 -+#: cp/error.c:3162 - #, c-format - msgid "%s:%d:%d: [ skipping %d instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]\n" - msgstr "%s:%d:%d: [ %d Instanziierungskontexte werden übersprungen, -ftemplate-backtrace-limit=0 zum Deaktivieren verwenden ]\n" - --#: cp/error.c:3163 -+#: cp/error.c:3167 - #, c-format - msgid "%s:%d: [ skipping %d instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]\n" - msgstr "%s:%d: [ %d Instanziierungskontexte werden übersprungen, -ftemplate-backtrace-limit=0 zum Deaktivieren verwenden ]\n" - --#: cp/error.c:3227 -+#: cp/error.c:3231 - #, c-format - msgid "%s:%d:%d: in constexpr expansion of %qs" - msgstr "%s:%d:%d: in constexpr-Ersetzung von %qs" - --#: cp/error.c:3231 -+#: cp/error.c:3235 - #, c-format - msgid "%s:%d: in constexpr expansion of %qs" - msgstr "%s:%d: in constexpr-Ersetzung von %qs" -@@ -4033,7 +4038,7 @@ - msgid "candidates are:" - msgstr "Kandidaten sind:" - --#: cp/pt.c:17926 cp/call.c:3290 -+#: cp/pt.c:17922 cp/call.c:3290 - #, gcc-internal-format - msgid "candidate is:" - msgid_plural "candidates are:" -@@ -4562,12 +4567,12 @@ - msgid "Integer overflow when calculating the amount of memory to allocate" - msgstr "Ganzzahlüberlauf bei der Berechnung des zu reservierenden Speichers" - --#: fortran/trans-decl.c:4842 -+#: fortran/trans-decl.c:4844 - #, c-format - msgid "Actual string length does not match the declared one for dummy argument '%s' (%ld/%ld)" - msgstr "Effektive Zeichenkettenlänge passt nicht zur deklarierten für Scheinargument »%s« (%ld/%ld)" - --#: fortran/trans-decl.c:4850 -+#: fortran/trans-decl.c:4852 - #, c-format - msgid "Actual string length is shorter than the declared one for dummy argument '%s' (%ld/%ld)" - msgstr "Effektive Zeichenkettenlänge ist kürzer als die deklarierte für Scheinargument »%s« (%ld/%ld)" -@@ -4582,12 +4587,12 @@ - msgid "Unequal character lengths (%ld/%ld) in %s" - msgstr "Ungleiche Zeichenlängen (%ld/%ld) in %s" - --#: fortran/trans-intrinsic.c:6157 -+#: fortran/trans-intrinsic.c:6156 - #, c-format - msgid "Argument NCOPIES of REPEAT intrinsic is negative (its value is %ld)" - msgstr "Argument NCOPIES des intrinsischen REPEAT ist negativ (sein Wert ist %ld)" - --#: fortran/trans-intrinsic.c:6189 -+#: fortran/trans-intrinsic.c:6188 - msgid "Argument NCOPIES of REPEAT intrinsic is too large" - msgstr "Argument NCOPIES des intrinsischen REPEAT ist zu groß" - -@@ -4819,7 +4824,7 @@ - msgid "objc-cpp-output is deprecated; please use objective-c-cpp-output instead" - msgstr "objc-cpp-output ist veraltet; bitte stattdessen objective-c-cpp-output verwenden" - --#: java/jvspec.c:79 ada/gcc-interface/lang-specs.h:33 gcc.c:844 -+#: java/jvspec.c:79 ada/gcc-interface/lang-specs.h:33 gcc.c:845 - msgid "-pg and -fomit-frame-pointer are incompatible" - msgstr "-pg und -fomit-frame-pointer sind unverträglich" - -@@ -4879,7 +4884,7 @@ - msgid "consider using '-pg' instead of '-p' with gprof(1)" - msgstr "evtl. »-pg« statt »-p« mit gprof(1) verwendet" - --#: config/sh/sh.h:360 config/sh/sh.h:363 -+#: config/sh/sh.h:363 config/sh/sh.h:366 - msgid "SH2a does not support little-endian" - msgstr "SH2a unterstützt nicht Little-Endian" - -@@ -4944,7 +4949,7 @@ - msgstr "Die Option -shared wird derzeit nicht für VAX ELF unterstützt" - - #: config/i386/mingw-w64.h:82 config/i386/mingw32.h:115 --#: config/i386/cygwin.h:113 -+#: config/i386/cygwin.h:109 - msgid "shared and mdll are not compatible" - msgstr "shared und mdll sind unverträglich" - -@@ -4984,23 +4989,23 @@ - msgid "profiling not supported with -mg" - msgstr "Profiling wird mit -mg nicht unterstützt" - --#: gcc.c:704 -+#: gcc.c:705 - msgid "-fuse-linker-plugin is not supported in this configuration" - msgstr "-fuse-linker-plugin wird in dieser Konfiguration nicht unterstützt" - --#: gcc.c:718 -+#: gcc.c:719 - msgid "cannot specify -static with -fsanitize=address" - msgstr "" - --#: gcc.c:720 -+#: gcc.c:721 - msgid "-fsanitize=thread linking must be done with -pie or -shared" - msgstr "" - --#: gcc.c:1012 -+#: gcc.c:1013 - msgid "GNU C no longer supports -traditional without -E" - msgstr "GNU C unterstützt nicht mehr -traditional ohne -E" - --#: gcc.c:1021 -+#: gcc.c:1022 - msgid "-E or -x required when input is from standard input" - msgstr "-E oder -x benötigt, wenn die Eingabe von der Standardeingabe kommt" - -@@ -5054,7 +5059,7 @@ - msgid "Warn about most implicit conversions" - msgstr "Bei den meisten impliziten Umwandlungen warnen" - --#: fortran/lang.opt:234 common.opt:542 -+#: fortran/lang.opt:234 common.opt:546 - msgid "Print extra (possibly unwanted) warnings" - msgstr "Zusätzliche (möglicherweise ungewollte) Warnungen ausgeben" - -@@ -5198,9 +5203,9 @@ - msgid "Allow dollar signs in entity names" - msgstr "Dollarzeichen in Entity-Namen erlauben" - --#: fortran/lang.opt:394 config/alpha/alpha.opt:31 common.opt:656 --#: common.opt:830 common.opt:834 common.opt:838 common.opt:842 common.opt:1227 --#: common.opt:1360 common.opt:1364 -+#: fortran/lang.opt:394 config/alpha/alpha.opt:31 common.opt:660 -+#: common.opt:834 common.opt:838 common.opt:842 common.opt:846 common.opt:1231 -+#: common.opt:1364 common.opt:1368 - msgid "Does nothing. Preserved for backward compatibility." - msgstr "Tut nichts. Für Rückwärtskompatibilität erhalten." - -@@ -5434,7 +5439,7 @@ - #: c-family/c.opt:70 c-family/c.opt:73 c-family/c.opt:76 c-family/c.opt:79 - #: c-family/c.opt:175 c-family/c.opt:178 c-family/c.opt:216 c-family/c.opt:220 - #: c-family/c.opt:232 c-family/c.opt:1253 c-family/c.opt:1261 --#: config/darwin.opt:53 common.opt:300 common.opt:303 common.opt:2399 -+#: config/darwin.opt:53 common.opt:300 common.opt:303 common.opt:2403 - #, c-format - msgid "missing filename after %qs" - msgstr "fehlender Dateiname hinter %qs" -@@ -6039,9 +6044,9 @@ - msgstr "Verschiedene Typen für die Argumente des »?«-Operators erlauben" - - #: c-family/c.opt:856 c-family/c.opt:876 c-family/c.opt:1074 --#: config/sh/sh.opt:209 common.opt:949 common.opt:1135 common.opt:1439 --#: common.opt:1713 common.opt:1749 common.opt:1834 common.opt:1838 --#: common.opt:1914 common.opt:1996 common.opt:2020 common.opt:2108 -+#: config/sh/sh.opt:213 common.opt:953 common.opt:1139 common.opt:1443 -+#: common.opt:1717 common.opt:1753 common.opt:1838 common.opt:1842 -+#: common.opt:1918 common.opt:2000 common.opt:2024 common.opt:2112 - msgid "Does nothing. Preserved for backward compatibility." - msgstr "Tut nichts. Für Rückwärtskompatibilität erhalten." - -@@ -7201,7 +7206,7 @@ - msgstr "Frühere Stop-Bit-Platzierung für bessere Planung einschalten" - - #: config/ia64/ia64.opt:114 config/spu/spu.opt:72 config/pa/pa.opt:58 --#: config/sh/sh.opt:261 -+#: config/sh/sh.opt:265 - msgid "Specify range of registers to make fixed" - msgstr "Bereich der zu fixierenden Register angeben" - -@@ -7669,7 +7674,7 @@ - msgid "Use 64-bit long double" - msgstr "64-bit long double verwenden" - --#: config/i386/i386.opt:98 config/sh/sh.opt:205 -+#: config/i386/i386.opt:98 config/sh/sh.opt:209 - msgid "Reserve space for outgoing arguments in the function prologue" - msgstr "Platz für Ausgabeargumente in Funktionsprolog reservieren" - -@@ -7723,9 +7728,8 @@ - msgstr "Angegebenen Adressierungsmodus verwenden" - - #: config/i386/i386.opt:175 --#, fuzzy - msgid "Known address mode (for use with the -maddress-mode= option):" --msgstr "Bekannte Codemodelle (für Verwendung mit Option -mcmodel=):" -+msgstr "Bekannter Adressmodus (für Verwendung mit Option -maddress-mode=):" - - #: config/i386/i386.opt:184 - msgid "%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead" -@@ -7873,9 +7877,8 @@ - msgstr "Befehl vzeroupper erzeugen vor Übergabe der Abarbeitung aus" - - #: config/i386/i386.opt:421 --#, fuzzy - msgid "Do dispatch scheduling if processor is bdver1 or bdver2 or bdver3 and Haifa scheduling" --msgstr "Bericht-Planung durchführen, wenn Prozessor bdver1 oder bdver2 und Haifa-Planung" -+msgstr "Bericht-Planung durchführen, wenn Prozessor bdver1, bdver2, oder bdver3 und Haifa-Planung" - - #: config/i386/i386.opt:426 - msgid "Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer." -@@ -7987,36 +7990,31 @@ - - #: config/i386/i386.opt:540 - msgid "Support Hardware Lock Elision prefixes" --msgstr "" -+msgstr "Präfixe für Hardware-Lock-Auslassung unterstützen" - - #: config/i386/i386.opt:544 --#, fuzzy - msgid "Support RDSEED instruction" --msgstr "keine Unterstützung für Induktion" -+msgstr "Anweisung RDSEED unterstützen" - - #: config/i386/i386.opt:548 --#, fuzzy - msgid "Support PREFETCHW instruction" --msgstr "keine Unterstützung für Induktion" -+msgstr "Anweisung PREFETCHW unterstützen" - - #: config/i386/i386.opt:552 --#, fuzzy - msgid "Support flag-preserving add-carry instructions" --msgstr "Codeerzeugung von crc32-Befehlen unterstützen." -+msgstr "Flag-erhaltende Add-Carry-Anweisungen unterstützen." - - #: config/i386/i386.opt:556 - msgid "Support FXSAVE and FXRSTOR instructions" --msgstr "" -+msgstr "Anweisungen FXSAVE und FXRSTOR unterstützen" - - #: config/i386/i386.opt:560 --#, fuzzy - msgid "Support XSAVE and XRSTOR instructions" --msgstr "Aufrufe zwischen Thumb- und ARM-Befehlssätzen unterstützen" -+msgstr "Anweisungen XSAVE und XRSTOR unterstützen" - - #: config/i386/i386.opt:564 --#, fuzzy - msgid "Support XSAVEOPT instruction" --msgstr "Eingebaute MMX-Funktionen unterstützen" -+msgstr "Anweisung XSAVEOPT unterstützen" - - #: config/i386/i386.opt:568 - msgid "Support TBM built-in functions and code generation" -@@ -8079,9 +8077,8 @@ - msgstr "Nicht ausgerichtetes 32-Byte AVX-Speichern auftrennen" - - #: config/i386/i386.opt:628 --#, fuzzy - msgid "Support RTM built-in functions and code generation" --msgstr "Eingebaute TBM-Funktionen und Codeerzeugung unterstützen" -+msgstr "Eingebaute RTM-Funktionen und Codeerzeugung unterstützen" - - #: config/pa/pa64-hpux.opt:23 - msgid "Assume code will be linked by GNU ld" -@@ -8185,9 +8182,8 @@ - msgstr "Backend-Fehlersuche einschalten" - - #: config/v850/v850.opt:41 --#, fuzzy - msgid "Do not use the callt instruction (default)" --msgstr "Den callt-Befehl nicht verwenden" -+msgstr "Die callt-Anweisung nicht verwenden (Standard)" - - #: config/v850/v850.opt:45 - msgid "Reuse r30 on a per function basis" -@@ -8250,52 +8246,44 @@ - msgstr "Für v850e2v3-Prozessor übersetzen" - - #: config/v850/v850.opt:117 --#, fuzzy - msgid "Compile for the v850e3v5 processor" --msgstr "Für v850e-Prozessor übersetzen" -+msgstr "Für v850e3v5-Prozessor übersetzen" - - #: config/v850/v850.opt:124 --#, fuzzy - msgid "Enable v850e3v5 loop instructions" --msgstr "Clip-Befehle einschalten" -+msgstr "Schleifenbefehle für v850e3v5 einschalten" - - #: config/v850/v850.opt:128 - msgid "Set the max size of data eligible for the ZDA area" - msgstr "Maximalgröße der für den ZDA-Bereich geeigneten Daten setzen" - - #: config/v850/v850.opt:135 --#, fuzzy - msgid "Enable relaxing in the assembler" --msgstr "Verträglichkeit mit ic960-Assembler einschalten" -+msgstr "Lockerung im Assembler einschalten" - - #: config/v850/v850.opt:139 --#, fuzzy - msgid "Prohibit PC relative jumps" --msgstr "PC-relative Funktionsaufrufe verbieten" -+msgstr "PC-relative Sprünge verbieten" - - #: config/v850/v850.opt:143 --#, fuzzy - msgid "Inhibit the use of hardware floating point instructions" --msgstr "Verwendung aller Hardware-Gleitkommabefehle verhindern" -+msgstr "Verwendung von Hardware-Gleitkommaanweisungen unterdrücken" - - #: config/v850/v850.opt:147 --#, fuzzy - msgid "Allow the use of hardware floating point instructions for V850E2V3 and up" --msgstr "Verwendung von Hardware-Gleitkomma-ABI und -befehlen erlauben" -+msgstr "Verwendung von Hardware-Gleitkommaanweisungen für V850E2V3 und aufwärts erlauben" - - #: config/v850/v850.opt:151 --#, fuzzy - msgid "Enable support for the RH850 ABI. This is the default" --msgstr "Verwendung des RX-FPU-Befehls einschalten. Dies ist Standard." -+msgstr "Unterstützung für RH850 ABI einschalten. Dies ist der Standard." - - #: config/v850/v850.opt:155 --#, fuzzy - msgid "Enable support for the old GCC ABI" --msgstr "Unterstützung für große Objekte einschalten" -+msgstr "Unterstützung für altes GCC ABI einschalten" - - #: config/v850/v850.opt:159 - msgid "Support alignments of up to 64-bits" --msgstr "" -+msgstr "Ausrichtungen von bis zu 64 Bits unterstützen" - - #: config/g.opt:27 - msgid "-G\tPut global and static data smaller than bytes into a special section (on some targets)" -@@ -8397,6 +8385,10 @@ - msgid "The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU." - msgstr "Das Gerät hat kein Spezialfunktionsregister SPH. Diese Option wird vom Compilertreiber mit dem korrekten Wert überschrieben, wenn An-/Abwesenheit von SPH von -mmcu=MCU abgeleitet werden kann." - -+#: config/avr/avr.opt:80 -+msgid "Warn if the address space of an address is change." -+msgstr "" -+ - #: config/m32r/m32r.opt:34 - msgid "Compile for the m32rx" - msgstr "Für m32rx übersetzen" -@@ -8747,9 +8739,8 @@ - msgstr "Visuelle Befehlssatzerweiterungen Version 3.0 für UltraSPARC verwenden" - - #: config/sparc/sparc.opt:78 --#, fuzzy - msgid "Use UltraSPARC Compare-and-Branch extensions" --msgstr "Multiplizier-Addier-Erweiterungen für UltraSPARC verwenden" -+msgstr "Vergleich-und-Sprung-Erweiterungen für UltraSPARC verwenden" - - #: config/sparc/sparc.opt:82 - msgid "Use UltraSPARC Fused Multiply-Add extensions" -@@ -9378,9 +9369,8 @@ - msgstr "Maximalgröße der globalen und statischen Variable, die in kleine Datenbereiche gelegt werden." - - #: config/rx/rx.opt:90 --#, fuzzy - msgid "Generate assembler output that is compatible with the Renesas AS100 assembler. This may restrict some of the compiler's capabilities. The default is to generate GAS compatible syntax." --msgstr "Assemblerausgabe erzeugen, die mit Renesas AS100-Assembler verträglich ist. Dies schränkt einige Kompilerfähigkeiten ein. Standard: GAS-verträgliche Syntax" -+msgstr "Assemblerausgabe erzeugen, die mit Renesas AS100-Assembler verträglich ist. Dies schränkt einige Kompilerfähigkeiten ein. Standard: GAS-verträgliche Syntax." - - #: config/rx/rx.opt:96 - msgid "Enable linker relaxation." -@@ -9447,64 +9437,68 @@ - msgstr "Verwendet die Software-Multiplikationsemulation (Vorgabe)" - - #: config/microblaze/microblaze.opt:72 -+msgid "Use reorder instructions (swap and byte reversed load/store) (default)" -+msgstr "" -+ -+#: config/microblaze/microblaze.opt:76 - msgid "Use the software emulation for divides (default)" - msgstr "Verwendet die Softwareemulation für Divisionen (Vorgabe)" - --#: config/microblaze/microblaze.opt:76 -+#: config/microblaze/microblaze.opt:80 - msgid "Use the hardware barrel shifter instead of emulation" - msgstr "Verwendet den Hardware-Berrelshifter statt der Emulation" - --#: config/microblaze/microblaze.opt:80 -+#: config/microblaze/microblaze.opt:84 - msgid "Use pattern compare instructions" - msgstr "Verwendet Mustervergleichsbefehle" - --#: config/microblaze/microblaze.opt:83 -+#: config/microblaze/microblaze.opt:87 - #, c-format - msgid "%qs is deprecated; use -fstack-check" - msgstr "%qs ist veraltet; stattdessen -fstack-check verwenden" - --#: config/microblaze/microblaze.opt:84 -+#: config/microblaze/microblaze.opt:88 - msgid "Check for stack overflow at runtime" - msgstr "Zur Laufzeit auf Stapelüberlauf prüfen" - --#: config/microblaze/microblaze.opt:88 config/iq2000/iq2000.opt:65 -+#: config/microblaze/microblaze.opt:92 config/iq2000/iq2000.opt:65 - msgid "Use GP relative sdata/sbss sections" - msgstr "Relative GP sdata/sbss-Abschnitte verwenden" - --#: config/microblaze/microblaze.opt:91 -+#: config/microblaze/microblaze.opt:95 - #, c-format - msgid "%qs is deprecated; use -fno-zero-initialized-in-bss" - msgstr "%qs ist veraltet; stattdessen -fno-zero-initialized-in-bss verwenden" - --#: config/microblaze/microblaze.opt:92 -+#: config/microblaze/microblaze.opt:96 - msgid "Clear the BSS to zero and place zero initialized in BSS" - msgstr "BSS komplett löschen und mit Null initialisierte Werte in BSS plazieren" - --#: config/microblaze/microblaze.opt:96 -+#: config/microblaze/microblaze.opt:100 - msgid "Use multiply high instructions for high part of 32x32 multiply" - msgstr "Verwendet »multiply high«-Befehle für den oberen Teil einer 32x32 Multiplikation" - --#: config/microblaze/microblaze.opt:100 -+#: config/microblaze/microblaze.opt:104 - msgid "Use hardware floating point conversion instructions" - msgstr "Hardware-Gleitkommakonvertierungbefehle verwenden" - --#: config/microblaze/microblaze.opt:104 -+#: config/microblaze/microblaze.opt:108 - msgid "Use hardware floating point square root instruction" - msgstr "Verwendet Hardware-Gleitkomma-Wurzel-Instruktion" - --#: config/microblaze/microblaze.opt:108 -+#: config/microblaze/microblaze.opt:112 - msgid "Description for mxl-mode-executable" - msgstr "Beschreibung für mxl-mode-executable" - --#: config/microblaze/microblaze.opt:112 -+#: config/microblaze/microblaze.opt:116 - msgid "Description for mxl-mode-xmdstub" - msgstr "Beschreibung für mxl-mode-xmdstub" - --#: config/microblaze/microblaze.opt:116 -+#: config/microblaze/microblaze.opt:120 - msgid "Description for mxl-mode-bootstrap" - msgstr "Beschreibung für mxl-mode-bootstrap" - --#: config/microblaze/microblaze.opt:120 -+#: config/microblaze/microblaze.opt:124 - msgid "Description for mxl-mode-novectors" - msgstr "Beschreibung für mxl-mode-novectors" - -@@ -9844,300 +9838,297 @@ - msgid "Runtime name." - msgstr "Laufzeitname." - --#: config/sh/sh.opt:44 -+#: config/sh/sh.opt:48 - msgid "Generate SH1 code" - msgstr "SH1-Code erzeugen" - --#: config/sh/sh.opt:48 -+#: config/sh/sh.opt:52 - msgid "Generate SH2 code" - msgstr "SH2-Code erzeugen" - --#: config/sh/sh.opt:52 -+#: config/sh/sh.opt:56 - msgid "Generate default double-precision SH2a-FPU code" - msgstr "Standard SH2a-FPU-Code mit doppelter Genauigkeit erzeugen" - --#: config/sh/sh.opt:56 -+#: config/sh/sh.opt:60 - msgid "Generate SH2a FPU-less code" - msgstr "FPU-freien SH2a-Code erzeugen" - --#: config/sh/sh.opt:60 -+#: config/sh/sh.opt:64 - msgid "Generate default single-precision SH2a-FPU code" - msgstr "Standard SH2a-FPU-Code mit einfacher Genauigkeit erzeugen" - --#: config/sh/sh.opt:64 -+#: config/sh/sh.opt:68 - msgid "Generate only single-precision SH2a-FPU code" - msgstr "SH2a-FPU-Code nur mit einfacher Genauigkeit erzeugen" - --#: config/sh/sh.opt:68 -+#: config/sh/sh.opt:72 - msgid "Generate SH2e code" - msgstr "SH2e-Code erzeugen" - --#: config/sh/sh.opt:72 -+#: config/sh/sh.opt:76 - msgid "Generate SH3 code" - msgstr "SH3-Code erzeugen" - --#: config/sh/sh.opt:76 -+#: config/sh/sh.opt:80 - msgid "Generate SH3e code" - msgstr "SH3e-Code erzeugen" - --#: config/sh/sh.opt:80 -+#: config/sh/sh.opt:84 - msgid "Generate SH4 code" - msgstr "SH4-Code erzeugen" - --#: config/sh/sh.opt:84 -+#: config/sh/sh.opt:88 - msgid "Generate SH4-100 code" - msgstr "SH4-100-Code erzeugen" - --#: config/sh/sh.opt:88 -+#: config/sh/sh.opt:92 - msgid "Generate SH4-200 code" - msgstr "SH4-200-Code erzeugen" - --#: config/sh/sh.opt:94 -+#: config/sh/sh.opt:98 - msgid "Generate SH4-300 code" - msgstr "SH4-300-Code erzeugen" - --#: config/sh/sh.opt:98 -+#: config/sh/sh.opt:102 - msgid "Generate SH4 FPU-less code" - msgstr "FPU-freien SH4-Code erzeugen" - --#: config/sh/sh.opt:102 -+#: config/sh/sh.opt:106 - msgid "Generate SH4-100 FPU-less code" - msgstr "FPU-freien SH4-100-Code erzeugen" - --#: config/sh/sh.opt:106 -+#: config/sh/sh.opt:110 - msgid "Generate SH4-200 FPU-less code" - msgstr "FPU-freien SH4-200-Code erzeugen" - --#: config/sh/sh.opt:110 -+#: config/sh/sh.opt:114 - msgid "Generate SH4-300 FPU-less code" - msgstr "FPU-freien SH4-300-Code erzeugen" - --#: config/sh/sh.opt:114 -+#: config/sh/sh.opt:118 - msgid "Generate code for SH4 340 series (MMU/FPU-less)" - msgstr "Code für Serie SH4 340 erzeugen (ohne MMU/FPU)" - --#: config/sh/sh.opt:119 -+#: config/sh/sh.opt:123 - msgid "Generate code for SH4 400 series (MMU/FPU-less)" - msgstr "Code für Serie SH4 400 erzeugen (ohne MMU/FPU)" - --#: config/sh/sh.opt:124 -+#: config/sh/sh.opt:128 - msgid "Generate code for SH4 500 series (FPU-less)." - msgstr "Code für Serie SH4 500 erzeugen (ohne FPU)" - --#: config/sh/sh.opt:129 -+#: config/sh/sh.opt:133 - msgid "Generate default single-precision SH4 code" - msgstr "Standard SH4-Code mit einfacher Genauigkeit erzeugen" - --#: config/sh/sh.opt:133 -+#: config/sh/sh.opt:137 - msgid "Generate default single-precision SH4-100 code" - msgstr "Standard SH4-100-Code mit einfacher Genauigkeit erzeugen" - --#: config/sh/sh.opt:137 -+#: config/sh/sh.opt:141 - msgid "Generate default single-precision SH4-200 code" - msgstr "Standard SH4-200-Code mit einfacher Genauigkeit erzeugen" - --#: config/sh/sh.opt:141 -+#: config/sh/sh.opt:145 - msgid "Generate default single-precision SH4-300 code" - msgstr "Standard SH4-300-Code mit einfacher Genauigkeit erzeugen" - --#: config/sh/sh.opt:145 -+#: config/sh/sh.opt:149 - msgid "Generate only single-precision SH4 code" - msgstr "SH4-Code nur mit einfacher Genauigkeit erzeugen" - --#: config/sh/sh.opt:149 -+#: config/sh/sh.opt:153 - msgid "Generate only single-precision SH4-100 code" - msgstr "SH4-100-Code nur mit einfacher Genauigkeit erzeugen" - --#: config/sh/sh.opt:153 -+#: config/sh/sh.opt:157 - msgid "Generate only single-precision SH4-200 code" - msgstr "SH4-200-Code nur mit einfacher Genauigkeit erzeugen" - --#: config/sh/sh.opt:157 -+#: config/sh/sh.opt:161 - msgid "Generate only single-precision SH4-300 code" - msgstr "SH4-300-Code nur mit einfacher Genauigkeit erzeugen" - --#: config/sh/sh.opt:161 -+#: config/sh/sh.opt:165 - msgid "Generate SH4a code" - msgstr "SH4a-Code erzeugen" - --#: config/sh/sh.opt:165 -+#: config/sh/sh.opt:169 - msgid "Generate SH4a FPU-less code" - msgstr "FPU-freien SH4a-Code erzeugen" - --#: config/sh/sh.opt:169 -+#: config/sh/sh.opt:173 - msgid "Generate default single-precision SH4a code" - msgstr "Standard SH4a-Code mit einfacher Genauigkeit erzeugen" - --#: config/sh/sh.opt:173 -+#: config/sh/sh.opt:177 - msgid "Generate only single-precision SH4a code" - msgstr "SH4a-Code nur mit einfacher Genauigkeit erzeugen" - --#: config/sh/sh.opt:177 -+#: config/sh/sh.opt:181 - msgid "Generate SH4al-dsp code" - msgstr "SH4al-dsp-Code erzeugen" - --#: config/sh/sh.opt:181 -+#: config/sh/sh.opt:185 - msgid "Generate 32-bit SHmedia code" - msgstr "32-Bit SHmedia-Code erzeugen" - --#: config/sh/sh.opt:185 -+#: config/sh/sh.opt:189 - msgid "Generate 32-bit FPU-less SHmedia code" - msgstr "FPU-freien 32-Bit SHmedia-Code erzeugen" - --#: config/sh/sh.opt:189 -+#: config/sh/sh.opt:193 - msgid "Generate 64-bit SHmedia code" - msgstr "64-Bit SHmedia-Code erzeugen" - --#: config/sh/sh.opt:193 -+#: config/sh/sh.opt:197 - msgid "Generate 64-bit FPU-less SHmedia code" - msgstr "FPU-freien 64-Bit SHmedia-Code erzeugen" - --#: config/sh/sh.opt:197 -+#: config/sh/sh.opt:201 - msgid "Generate SHcompact code" - msgstr "SHcompact-Code erzeugen" - --#: config/sh/sh.opt:201 -+#: config/sh/sh.opt:205 - msgid "Generate FPU-less SHcompact code" - msgstr "FPU-freien SHcompact-Code erzeugen" - --#: config/sh/sh.opt:213 -+#: config/sh/sh.opt:217 - msgid "Generate code in big endian mode" - msgstr "Code im »Big Endian«-Modus erzeugen" - --#: config/sh/sh.opt:217 -+#: config/sh/sh.opt:221 - msgid "Generate 32-bit offsets in switch tables" - msgstr "32-Bit-Versatz in switch-Tabellen erzeugen" - --#: config/sh/sh.opt:221 -+#: config/sh/sh.opt:225 - msgid "Generate bit instructions" - msgstr "Bit-Befehle erzeugen" - --#: config/sh/sh.opt:225 -+#: config/sh/sh.opt:229 - msgid "Cost to assume for a branch insn" - msgstr "Für Sprungbefehl anzunehmende Kosten" - --#: config/sh/sh.opt:229 -+#: config/sh/sh.opt:233 - msgid "Assume that zero displacement conditional branches are fast" - msgstr "" - --#: config/sh/sh.opt:233 -+#: config/sh/sh.opt:237 - msgid "Enable cbranchdi4 pattern" - msgstr "cbranchdi4-Muster einschalten" - --#: config/sh/sh.opt:237 -+#: config/sh/sh.opt:241 - msgid "Emit cmpeqdi_t pattern even when -mcbranchdi is in effect." - msgstr "cmpeqdi_t-Muster ausgeben, sogar wenn -mcbranchdi aktiv ist." - --#: config/sh/sh.opt:241 -+#: config/sh/sh.opt:245 - msgid "Enable SH5 cut2 workaround" - msgstr "SH5-cut2-Workaround einschalten" - --#: config/sh/sh.opt:245 -+#: config/sh/sh.opt:249 - msgid "Align doubles at 64-bit boundaries" - msgstr "Doubles auf 64-Bit-Grenzen ausrichten" - --#: config/sh/sh.opt:249 -+#: config/sh/sh.opt:253 - msgid "Division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table" - msgstr "Divisionsstrategie, eine von: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp call-div1 call-fp, call-table" - --#: config/sh/sh.opt:253 -+#: config/sh/sh.opt:257 - msgid "Specify name for 32 bit signed division function" - msgstr "Namen für vorzeichenbehaftete 32-Bit Divisionsfunktion angeben" - --#: config/sh/sh.opt:257 -+#: config/sh/sh.opt:261 - msgid "Enable the use of 64-bit floating point registers in fmov instructions. See -mdalign if 64-bit alignment is required." - msgstr "Verwendung von 64-Bit Gleitkommaregistern in FMOV-Befehlen aktivieren. Siehe auch -mdalign, wenn 64-Bit-Ausrichtung benötigt wird." - --#: config/sh/sh.opt:265 -+#: config/sh/sh.opt:269 - msgid "Cost to assume for gettr insn" - msgstr "Für gettr Befehl anzunehmende Kosten" - --#: config/sh/sh.opt:269 config/sh/sh.opt:319 -+#: config/sh/sh.opt:273 config/sh/sh.opt:323 - msgid "Follow Renesas (formerly Hitachi) / SuperH calling conventions" - msgstr "Renesas(vormals Hitachi)/SuperH-Aufrufkonventionen folgen" - --#: config/sh/sh.opt:273 -+#: config/sh/sh.opt:277 - msgid "Increase the IEEE compliance for floating-point comparisons" - msgstr "IEEE-Befolgung für Gleitkommavergleiche erhöhen" - --#: config/sh/sh.opt:277 -+#: config/sh/sh.opt:281 - msgid "Enable the use of the indexed addressing mode for SHmedia32/SHcompact" - msgstr "Verwendung des indizierten Addressierungsmodus für SHmedia32/SHcompact einschalten" - --#: config/sh/sh.opt:281 -+#: config/sh/sh.opt:285 - msgid "inline code to invalidate instruction cache entries after setting up nested function trampolines" - msgstr "Code inline einbetten, um Befehlscache nach dem Aufsetzen verschachtelter Funktionstrampolines zu verwerfen" - --#: config/sh/sh.opt:285 -+#: config/sh/sh.opt:289 - msgid "Assume symbols might be invalid" - msgstr "Annehmen, dass Symbole ungültig seien können" - --#: config/sh/sh.opt:289 -+#: config/sh/sh.opt:293 - msgid "Annotate assembler instructions with estimated addresses" - msgstr "Assemblerbefehle mit geschätzten Adressen kommentieren" - --#: config/sh/sh.opt:293 -+#: config/sh/sh.opt:297 - msgid "Generate code in little endian mode" - msgstr "Code im »Little Endian«-Modus erzeugen" - --#: config/sh/sh.opt:297 -+#: config/sh/sh.opt:301 - msgid "Mark MAC register as call-clobbered" - msgstr "MAC-Register als Aufruf-zerstört markieren" - --#: config/sh/sh.opt:303 -+#: config/sh/sh.opt:307 - msgid "Make structs a multiple of 4 bytes (warning: ABI altered)" - msgstr "Structs Vielfache von 4 Bytes machen (Warnung: ABI geändert)" - --#: config/sh/sh.opt:307 -+#: config/sh/sh.opt:311 - msgid "Emit function-calls using global offset table when generating PIC" - msgstr "Bei PIC-Erzeugung Funktionsaufrufe ausgeben, die die globale Offsettabelle verwenden" - --#: config/sh/sh.opt:311 -+#: config/sh/sh.opt:315 - msgid "Assume pt* instructions won't trap" - msgstr "Annehmen, dass pt*-Befehle nicht abgefangen werden (»trap«)" - --#: config/sh/sh.opt:315 -+#: config/sh/sh.opt:319 - msgid "Shorten address references during linking" - msgstr "Beim Binden Adressreferenzen verkürzen" - --#: config/sh/sh.opt:323 -+#: config/sh/sh.opt:327 - msgid "Deprecated. Use -matomic= instead to select the atomic model" --msgstr "" -+msgstr "Veraltet. Stattdessen -matomic= verwenden, um atomares Modell zu verwenden" - --#: config/sh/sh.opt:327 --#, fuzzy -+#: config/sh/sh.opt:331 - msgid "Specify the model for atomic operations" --msgstr "Code für eingebaute atomare Operationen erzeugen" -+msgstr "Das Modell für atomare Operationen angeben" - --#: config/sh/sh.opt:331 -+#: config/sh/sh.opt:335 - msgid "Use tas.b instruction for __atomic_test_and_set" --msgstr "" -+msgstr "Anweisung tas.b für __atomic_test_and_set verwenden" - --#: config/sh/sh.opt:335 -+#: config/sh/sh.opt:339 - msgid "Deprecated. Use -Os instead" - msgstr "Veraltet. Stattdessen -Os verwenden" - --#: config/sh/sh.opt:339 -+#: config/sh/sh.opt:343 - msgid "Cost to assume for a multiply insn" - msgstr "Für einen Multiplikationsbefehl anzunehmende Kosten" - --#: config/sh/sh.opt:343 -+#: config/sh/sh.opt:347 - msgid "Don't generate privileged-mode only code; implies -mno-inline-ic_invalidate if the inline code would not work in user mode." - msgstr "Keinen Code nur für privilegierten Modus erzeugen; impliziert -mno-inline-ic_invalidate, wenn der »inline«-Code nicht im Usermodus funktionieren würde" - --#: config/sh/sh.opt:349 -+#: config/sh/sh.opt:353 - msgid "Pretend a branch-around-a-move is a conditional move." - msgstr "Vorgeben, dass Sprung-um-Sprung ein bedingter Sprung ist" - --#: config/sh/sh.opt:353 --#, fuzzy -+#: config/sh/sh.opt:357 - msgid "Enable the use of the fsca instruction" --msgstr "Verwendung der kurzen Ladebefehle einschalten" -+msgstr "Verwendung der Anweisung fsca einschalten" - --#: config/sh/sh.opt:357 --#, fuzzy -+#: config/sh/sh.opt:361 - msgid "Enable the use of the fsrra instruction" --msgstr "Verwendung der kurzen Ladebefehle einschalten" -+msgstr "Verwendung der Anweisung fsrra einschalten" - - #: config/fr30/fr30.opt:23 - msgid "Assume small address space" -@@ -10456,9 +10447,8 @@ - msgstr "Verwendung aller Gleitkommaoperationen verhindern" - - #: config/mips/mips.opt:274 --#, fuzzy - msgid "Use MCU instructions" --msgstr "MIPS-3D-Befehle verwenden" -+msgstr "MCU-Anweisungen verwenden" - - #: config/mips/mips.opt:278 - msgid "Do not use a cache-flushing function before calling stack trampolines" -@@ -10553,9 +10543,8 @@ - msgstr "Mit 64-Bit Longs und Zeigern kompilieren" - - #: config/tilegx/tilegx.opt:45 --#, fuzzy - msgid "Use given TILE-Gx code model" --msgstr "Gegebenes x86-64-Codemodell verwenden" -+msgstr "Gegebenes Codemodell TILE-Gx verwenden" - - #: java/lang.opt:122 - msgid "Warn if deprecated empty statements are found" -@@ -10710,9 +10699,8 @@ - msgstr "Optimiert auf Geschwindigkeit unter Missachtung genauer Standardkonformität" - - #: common.opt:453 --#, fuzzy - msgid "Optimize for debugging experience rather than speed or size" --msgstr "Auf Größe statt Geschwindigkeit optimieren" -+msgstr "Auf Fehlersuchmöglichkeiten statt Geschwindigkeit oder Größe optimieren" - - #: common.opt:493 - msgid "This switch is deprecated; use -Wextra instead" -@@ -10723,1555 +10711,1545 @@ - msgstr "Bei zurückgegebenen Strukturen, Unions oder Feldern warnen" - - #: common.opt:510 -+msgid "Warn if a loop with constant number of iterations triggers undefined behavior" -+msgstr "" -+ -+#: common.opt:514 - msgid "Warn if an array is accessed out of bounds" - msgstr "Warnen, wenn auf ein Feld außerhalb der Grenzen zugegriffen wird" - --#: common.opt:514 -+#: common.opt:518 - msgid "Warn about inappropriate attribute usage" - msgstr "Bei unpassender Attributverwendung warnen" - --#: common.opt:518 -+#: common.opt:522 - msgid "Warn about pointer casts which increase alignment" - msgstr "Warnen, wenn Zeigerumwandlungen die Ausrichtung vergrößern" - --#: common.opt:522 -+#: common.opt:526 - msgid "Warn when a #warning directive is encountered" - msgstr "Warnen, wenn eine #warning-Anweisung verwendet wird" - --#: common.opt:526 -+#: common.opt:530 - msgid "Warn about uses of __attribute__((deprecated)) declarations" - msgstr "Bei Verwendungen von Deklarationen mit __attribute__((deprecated)) warnen" - --#: common.opt:530 -+#: common.opt:534 - msgid "Warn when an optimization pass is disabled" - msgstr "Warnen, wenn ein Optimierungsdurchgang ausgeschaltet ist" - --#: common.opt:534 -+#: common.opt:538 - msgid "Treat all warnings as errors" - msgstr "Alle Warnungen als Fehler behandeln" - --#: common.opt:538 -+#: common.opt:542 - msgid "Treat specified warning as error" - msgstr "Angegebene Warnung als Fehler behandeln" - --#: common.opt:546 -+#: common.opt:550 - msgid "Exit on the first error occurred" - msgstr "Beim ersten auftretenden Fehler beenden" - --#: common.opt:550 -+#: common.opt:554 - msgid "-Wframe-larger-than=\tWarn if a function's stack frame requires more than bytes" - msgstr "-Wframe-larger-than=\tWarnen, wenn der Stapelrahmen einer Funktion mehr als Bytes benötigt" - --#: common.opt:554 -+#: common.opt:558 - msgid "Warn when attempting to free a non-heap object" - msgstr "Beim Versuch der Freigabe eines Nicht-Heap-Objektes warnen" - --#: common.opt:558 -+#: common.opt:562 - msgid "Warn when an inlined function cannot be inlined" - msgstr "Warnen, wenn eine inline-Funktion nicht als solche erzeugt werden kann" - --#: common.opt:562 -+#: common.opt:566 - msgid "Warn when an atomic memory model parameter is known to be outside the valid range." - msgstr "Warnen, wenn ein Parameter des atomaren Speichermodells erkennbar außerhalb des Wertebereiches ist" - --#: common.opt:569 -+#: common.opt:573 - msgid "-Wlarger-than=\tWarn if an object is larger than bytes" - msgstr "-Wlarger-than=\tWarnen, wenn ein Objekt größer als Bytes ist" - --#: common.opt:573 -+#: common.opt:577 - msgid "Warn if the loop cannot be optimized due to nontrivial assumptions." - msgstr "Warnen, wenn Schleife wegen nichttrivialer Annahmen nicht optimiert werden kann." - --#: common.opt:580 -+#: common.opt:584 - msgid "Warn about overflow in arithmetic expressions" - msgstr "Bei Überlauf in arithmetischen Ausdrücken warnen" - --#: common.opt:584 -+#: common.opt:588 - msgid "Warn when the packed attribute has no effect on struct layout" - msgstr "Warnen, wenn das »packed«-Attribut keine Auswirkung auf Strukturanordnung hat" - --#: common.opt:588 -+#: common.opt:592 - msgid "Warn when padding is required to align structure members" - msgstr "Warnen, wenn Auffüllen benötigt wird, um Strukturelemente auszurichten" - --#: common.opt:592 -+#: common.opt:596 - msgid "Issue warnings needed for strict compliance to the standard" - msgstr "Für strikte Standardbefolgung benötigte Warnungen ausgeben" - --#: common.opt:596 -+#: common.opt:600 - msgid "Warn when one local variable shadows another" - msgstr "Warnen, wenn eine lokale Variable eine andere überdeckt" - --#: common.opt:600 -+#: common.opt:604 - msgid "Warn when not issuing stack smashing protection for some reason" - msgstr "Warnen, wenn Stackzerstörungsschutz nicht ausgegeben wird" - --#: common.opt:604 -+#: common.opt:608 - msgid "Warn if stack usage might be larger than specified amount" - msgstr "Warnen, wenn Stapelverwendung den angegebenen Betrag überschreitet" - --#: common.opt:608 common.opt:612 -+#: common.opt:612 common.opt:616 - msgid "Warn about code which might break strict aliasing rules" - msgstr "Bei Code warnen, der strict-aliasing-Regeln verletzen könnte" - --#: common.opt:616 common.opt:620 -+#: common.opt:620 common.opt:624 - msgid "Warn about optimizations that assume that signed overflow is undefined" - msgstr "Bei Optimierungen, die annehmen, dass vorzeichenbehafteter Überlauf undefiniert ist, warnen" - --#: common.opt:624 -+#: common.opt:628 - msgid "Warn about functions which might be candidates for __attribute__((const))" - msgstr "Bei Funktionen, die Kandidaten für __attribute__((const)) sein könnten, warnen" - --#: common.opt:628 -+#: common.opt:632 - msgid "Warn about functions which might be candidates for __attribute__((pure))" - msgstr "Bei Funktionen, die Kandidaten für __attribute__((pure)) sein könnten, warnen" - --#: common.opt:632 -+#: common.opt:636 - msgid "Warn about functions which might be candidates for __attribute__((noreturn))" - msgstr "Bei Funktionen, die Kandidaten für __attribute__((noreturn)) sind, warnen" - --#: common.opt:636 -+#: common.opt:640 - msgid "Do not suppress warnings from system headers" - msgstr "Nicht Warnungen von System-Headern unterdrücken" - --#: common.opt:640 -+#: common.opt:644 - msgid "Warn whenever a trampoline is generated" - msgstr "Warnen, wenn ein Trampolin generiert wird" - --#: common.opt:644 -+#: common.opt:648 - msgid "Warn if a comparison is always true or always false due to the limited range of the data type" - msgstr "Warnen, wenn ein Vergleich durch beschränkten Wertebereich des Datentyps stets »wahr« oder »unwahr« ist" - --#: common.opt:648 -+#: common.opt:652 - msgid "Warn about uninitialized automatic variables" - msgstr "Bei nicht initialisierten automatischen Variablen warnen" - --#: common.opt:652 -+#: common.opt:656 - msgid "Warn about maybe uninitialized automatic variables" - msgstr "Bei möglicherweise nicht initialisierten automatischen Variablen warnen" - --#: common.opt:660 -+#: common.opt:664 - msgid "Enable all -Wunused- warnings" - msgstr "Alle -Wunused- Warnungen einschalten" - --#: common.opt:664 -+#: common.opt:668 - msgid "Warn when a function parameter is only set, otherwise unused" - msgstr "Warnen, wenn ein Funktionsparameter zwar gesetzt aber nicht verwendet wird" - --#: common.opt:668 -+#: common.opt:672 - msgid "Warn when a variable is only set, otherwise unused" - msgstr "Warnen, wenn eine Variable zwar gesetzt aber nicht verwendet wird" - --#: common.opt:672 -+#: common.opt:676 - msgid "Warn when a function is unused" - msgstr "Warnen, wenn eine Funktion ungenutzt bleibt" - --#: common.opt:676 -+#: common.opt:680 - msgid "Warn when a label is unused" - msgstr "Warnen, wenn eine Marke ungenutzt bleibt" - --#: common.opt:680 -+#: common.opt:684 - msgid "Warn when a function parameter is unused" - msgstr "Warnen, wenn ein Funktionsparameter nicht verwendet wird" - --#: common.opt:684 -+#: common.opt:688 - msgid "Warn when an expression value is unused" - msgstr "Warnen, wenn ein Ausdruckswert nicht verwendet wird" - --#: common.opt:688 -+#: common.opt:692 - msgid "Warn when a variable is unused" - msgstr "Warnen, wenn eine Variable nicht verwendet wird" - --#: common.opt:692 -+#: common.opt:696 - msgid "Warn in case profiles in -fprofile-use do not match" - msgstr "Warnen, wenn Profile in -fprofile-use nicht zueinander passen" - --#: common.opt:696 -+#: common.opt:700 - msgid "Warn when a vector operation is compiled outside the SIMD" - msgstr "Warnen, wenn Vektoroperation außerhalb von SIMD kompiliert wird" - --#: common.opt:712 -+#: common.opt:716 - msgid "-aux-info \tEmit declaration information into " - msgstr "-aux-info \tDeklarationsinformationen in ausgeben" - --#: common.opt:731 -+#: common.opt:735 - msgid "-d\tEnable dumps from specific passes of the compiler" - msgstr "-d\tAusgaben von bestimmten Durchläufen des Kompilers einschalten" - --#: common.opt:735 -+#: common.opt:739 - msgid "-dumpbase \tSet the file basename to be used for dumps" - msgstr "-dumpbase \tDen Basis-Dateinamen für Ausgaben setzen" - --#: common.opt:739 -+#: common.opt:743 - msgid "-dumpdir \tSet the directory name to be used for dumps" - msgstr "-dumpdir \tDen Basis-verzeichnisnamen für Ausgaben setzen" - --#: common.opt:798 -+#: common.opt:802 - msgid "Aggressively optimize loops using language constraints" - msgstr "" - --#: common.opt:802 -+#: common.opt:806 - msgid "Align the start of functions" - msgstr "Funktionsanfänge ausrichten" - --#: common.opt:809 -+#: common.opt:813 - msgid "Align labels which are only reached by jumping" - msgstr "Marken ausrichten, die nur mit Sprüngen erreicht werden können" - --#: common.opt:816 -+#: common.opt:820 - msgid "Align all labels" - msgstr "Alle Marken ausrichten" - --#: common.opt:823 -+#: common.opt:827 - msgid "Align the start of loops" - msgstr "Schleifenanfänge ausrichten" - --#: common.opt:846 -+#: common.opt:850 - msgid "Enable AddressSanitizer, a memory error detector" - msgstr "" - --#: common.opt:850 -+#: common.opt:854 - msgid "Enable ThreadSanitizer, a data race detector" - msgstr "" - --#: common.opt:854 -+#: common.opt:858 - msgid "Generate unwind tables that are exact at each instruction boundary" - msgstr "Abwicklungstabellen erzeugen, die genau an jeder Befehlsgrenze liegen" - --#: common.opt:858 -+#: common.opt:862 - msgid "Generate auto-inc/dec instructions" - msgstr "auto-inc/dec-Befehle erzeugen" - --#: common.opt:866 -+#: common.opt:870 - msgid "Generate code to check bounds before indexing arrays" - msgstr "Code zur Überprüfung der Grenzen vor Feldindizierung erzeugen" - --#: common.opt:870 -+#: common.opt:874 - msgid "Replace add, compare, branch with branch on count register" - msgstr "Addieren, Vergleichen, Verzweigen mit Verzweigung anhand des Zählregisters ersetzen" - --#: common.opt:874 -+#: common.opt:878 - msgid "Use profiling information for branch probabilities" - msgstr "Profilierungsinformationen für Verzweigungswahrscheinlichkeiten verwenden" - --#: common.opt:878 -+#: common.opt:882 - msgid "Perform branch target load optimization before prologue / epilogue threading" - msgstr "Ladeoptimierungen für Sprungziele vor Prolog/Epilog-Behandlung ausführen" - --#: common.opt:882 -+#: common.opt:886 - msgid "Perform branch target load optimization after prologue / epilogue threading" - msgstr "Ladeoptimierung für Sprungziele nach Prolog/Epilog-Behandlung ausführen" - --#: common.opt:886 -+#: common.opt:890 - msgid "Restrict target load migration not to re-use registers in any basic block" - msgstr "In Basis-Blöcken keine Register bei der Ziel-Lade-Bewegung wiederverwenden" - --#: common.opt:890 -+#: common.opt:894 - msgid "-fcall-saved-\tMark as being preserved across functions" - msgstr "-fcall-saved-\t als über Funktionsgrenzen hinweg reserviert markieren" - --#: common.opt:894 -+#: common.opt:898 - msgid "-fcall-used-\tMark as being corrupted by function calls" - msgstr "-fcall-used-\t als durch Funktionsaufrufe beschädigt markieren" - --#: common.opt:901 -+#: common.opt:905 - msgid "Save registers around function calls" - msgstr "Register bei Funktionsaufrufen sichern" - --#: common.opt:905 -+#: common.opt:909 - msgid "Compare the results of several data dependence analyzers." - msgstr "Die Ergebnisse mehrerer Datenabhängigkeitsanalysen vergleichen." - --#: common.opt:909 -+#: common.opt:913 - msgid "Looks for opportunities to reduce stack adjustments and stack references." - msgstr "Sucht Möglichkeiten, Stack-Anpassungen und Stack-Referenzen zu reduzieren." - --#: common.opt:913 -+#: common.opt:917 - msgid "Do not put uninitialized globals in the common section" - msgstr "Keine uninitialisierten globalen Symbole in gemeinsamen Abschnitt legen" - --#: common.opt:921 -+#: common.opt:925 - msgid "-fcompare-debug[=]\tCompile with and without e.g. -gtoggle, and compare the final-insns dump" - msgstr "-fcompare-debug[=]\tMit und ohne z.B. -gtoggle kompilieren, und den Dump der finalen Anweisungen vergleichen" - --#: common.opt:925 -+#: common.opt:929 - msgid "Run only the second compilation of -fcompare-debug" - msgstr "Nur die zweite Kompilierung von -fcompare-debug laufen lassen" - --#: common.opt:929 -+#: common.opt:933 - msgid "Perform comparison elimination after register allocation has finished" - msgstr "Beseitigung von Vergleichen nach Registerreservierung durchführen" - --#: common.opt:933 -+#: common.opt:937 - msgid "Do not perform optimizations increasing noticeably stack usage" - msgstr "Keine Optimierungen durchführen, die die Stackverwendung deutlich erhöhen" - --#: common.opt:937 -+#: common.opt:941 - msgid "Perform a register copy-propagation optimization pass" - msgstr "Optimierungsdurchlauf zur Kopierübertragung von Registern durchführen" - --#: common.opt:941 -+#: common.opt:945 - msgid "Perform cross-jumping optimization" - msgstr "Optimierung zum Kreuzsprung durchführen" - --#: common.opt:945 -+#: common.opt:949 - msgid "When running CSE, follow jumps to their targets" - msgstr "Beim Durchlaufen von CSE: Sprüngen zu ihren Zielen folgen" - --#: common.opt:953 -+#: common.opt:957 - msgid "Omit range reduction step when performing complex division" - msgstr "Schritt zur Bereichsverkleinerung auslassen, wenn komplexe Division durchgeführt wird" - --#: common.opt:957 -+#: common.opt:961 - msgid "Complex multiplication and division follow Fortran rules" - msgstr "Komplexe Multiplikation und Division folgen Fortran-Regeln" - --#: common.opt:961 -+#: common.opt:965 - msgid "Place data items into their own section" - msgstr "Datenstücke in ihren eigenen Abschnitt legen" - --#: common.opt:965 -+#: common.opt:969 - msgid "List all available debugging counters with their limits and counts." - msgstr "Alle verfügbaren Fehleranalysezähler mit ihren Grenzen und Werten auflisten." - --#: common.opt:969 -+#: common.opt:973 - msgid "-fdbg-cnt=:[,:,...]\tSet the debug counter limit. " - msgstr "-fdbg-cnt=:[,:,...]\tGrenze des Fehlersuchzählers setzen." - --#: common.opt:973 -+#: common.opt:977 - msgid "Map one directory name to another in debug information" - msgstr "In Fehlersuchinfo einen Verzeichnisnamen auf einen anderen abbilden" - --#: common.opt:977 -+#: common.opt:981 - msgid "Output .debug_types section when using DWARF v4 debuginfo." - msgstr ".debug_types-Abschnitt ausgeben, wenn DWARF v4-Debuginfo verwendet wird" - --#: common.opt:983 -+#: common.opt:987 - msgid "Defer popping functions args from stack until later" - msgstr "Zurückholen der Funktionsargumente vom Stapel bis auf weiteres hinauszögern" - --#: common.opt:987 -+#: common.opt:991 - msgid "Attempt to fill delay slots of branch instructions" - msgstr "Versuch, die Verzögerungsschlitze der Sprungbefehle auszufüllen" - --#: common.opt:991 -+#: common.opt:995 - msgid "Delete dead instructions that may throw exceptions" - msgstr "" - --#: common.opt:995 -+#: common.opt:999 - msgid "Delete useless null pointer checks" - msgstr "Unnötige Nullzeigerprügungen löschen" - --#: common.opt:999 -+#: common.opt:1003 - msgid "Try to convert virtual calls to direct ones." - msgstr "Versuchen, virtuelle Sprünge in direkte umzuwandeln." - --#: common.opt:1003 -+#: common.opt:1007 - msgid "-fdiagnostics-show-location=[once|every-line]\tHow often to emit source location at the beginning of line-wrapped diagnostics" - msgstr "-fdiagnostics-show-location=[once|every-line]\tWie oft soll Stelle im Quelltext beim Anfang von zeilenumgebrochener Diagnose ausgegeben werden" - --#: common.opt:1020 -+#: common.opt:1024 - msgid "Show the source line with a caret indicating the column" - msgstr "" - --#: common.opt:1024 -+#: common.opt:1028 - msgid "Amend appropriate diagnostic messages with the command line option that controls them" - msgstr "Die geeignete Diagnosemeldung mit der Kommandozeilenoption erweitern, die sie steuert" - --#: common.opt:1028 -+#: common.opt:1032 - msgid "-fdisable-[tree|rtl|ipa]-=range1+range2 disables an optimization pass" - msgstr "-fdisable-[tree|rtl|ipa]-=range1+range2 schaltet einen Optimierungsdurchgang aus" - --#: common.opt:1032 -+#: common.opt:1036 - msgid "-fenable-[tree|rtl|ipa]-=range1+range2 enables an optimization pass" - msgstr "-fenable-[tree|rtl|ipa]-=range1+range2 schaltet einen Optimierungsdurchgang ein" - --#: common.opt:1036 -+#: common.opt:1040 - msgid "-fdump-\tDump various compiler internals to a file" - msgstr "-fdump-\tVerschiedene compilerinterne Informationen in eine Datei abziehen" - --#: common.opt:1043 -+#: common.opt:1047 - msgid "-fdump-final-insns=filename\tDump to filename the insns at the end of translation" - msgstr "-fdump-final-insns=\tDie Befehle am Ende der Übersetzung in Datei abziehen" - --#: common.opt:1047 -+#: common.opt:1051 - msgid "-fdump-go-spec=filename\tWrite all declarations to file as Go code" - msgstr "-fdump-go-spec=\tAlle Deklarationen als Go-Code in schreiben" - --#: common.opt:1051 -+#: common.opt:1055 - msgid "Suppress output of addresses in debugging dumps" - msgstr "Ausgabe von Adressen in Fehlersuch-Auszügen unterdrücken" - --#: common.opt:1055 -+#: common.opt:1059 - msgid "Dump optimization passes" - msgstr "Optimierungsdurchläufe ausgeben" - --#: common.opt:1059 -+#: common.opt:1063 - msgid "Suppress output of instruction numbers, line number notes and addresses in debugging dumps" - msgstr "Ausgabe von Befehlszahlen, Zeilennummernangaben und Adressen in Fehlersuch-Auszügen unterdrücken" - --#: common.opt:1063 -+#: common.opt:1067 - msgid "Suppress output of previous and next insn numbers in debugging dumps" - msgstr "Ausgabe der vorigen und nächsten Befehlszahlen in Fehlersuch-Auszügen unterdrücken" - --#: common.opt:1067 -+#: common.opt:1071 - msgid "Enable CFI tables via GAS assembler directives." - msgstr "CFI-Tabellen über GAS-Assembler-Anweisungen einschalten" - --#: common.opt:1071 -+#: common.opt:1075 - msgid "Perform early inlining" - msgstr "Frühes Inlining durchführen" - --#: common.opt:1075 -+#: common.opt:1079 - msgid "Perform DWARF2 duplicate elimination" - msgstr "DWARF2-Wiederholungsbeseitigung durchführen" - --#: common.opt:1079 -+#: common.opt:1083 - msgid "Perform interprocedural reduction of aggregates" - msgstr "Zwischenprozedurale Reduktion von Aggregaten durchführen" - --#: common.opt:1083 common.opt:1087 -+#: common.opt:1087 common.opt:1091 - msgid "Perform unused type elimination in debug info" - msgstr "Beseitigung ungenutzter Typen in Info zur Fehlersuche durchführen" - --#: common.opt:1091 -+#: common.opt:1095 - msgid "Do not suppress C++ class debug information." - msgstr "Keine Fehlersuchinformationen für C++-Klassen unterdrücken" - --#: common.opt:1095 -+#: common.opt:1099 - msgid "Enable exception handling" - msgstr "Ausnahmebehandlung einschalten" - --#: common.opt:1099 -+#: common.opt:1103 - msgid "Perform a number of minor, expensive optimizations" - msgstr "Eine Reihe kleiner, aber teurer, Optimierungen durchführen" - --#: common.opt:1103 -+#: common.opt:1107 - msgid "-fexcess-precision=[fast|standard]\tSpecify handling of excess floating-point precision" - msgstr "-fexcess-precision=[fast|standard]\tBehandlung überschüssiger Gleitkommagenauigkeit bestimmen" - --#: common.opt:1106 -+#: common.opt:1110 - #, c-format - msgid "unknown excess precision style %qs" - msgstr "unbekannte Art überschüssiger Genauigkeit %qs" - --#: common.opt:1119 -+#: common.opt:1123 - msgid "Output lto objects containing both the intermediate language and binary output." - msgstr "LTO-Objekte ausgeben, die sowohl Zwischensprache als auch Binärausgabe enthalten" - --#: common.opt:1123 -+#: common.opt:1127 - msgid "Assume no NaNs or infinities are generated" - msgstr "Annahme, dass keine NaNs oder Unendlichkeiten erzeugt werden" - --#: common.opt:1127 -+#: common.opt:1131 - msgid "-ffixed-\tMark as being unavailable to the compiler" - msgstr "-ffixed-\t als für den Compiler nicht verfügbar markieren" - --#: common.opt:1131 -+#: common.opt:1135 - msgid "Don't allocate floats and doubles in extended-precision registers" - msgstr "Keine floats und doubles in Registern erweiterter Genauigkeit reservieren" - --#: common.opt:1139 -+#: common.opt:1143 - msgid "Perform a forward propagation pass on RTL" - msgstr "Schritt zur Vorwärts-Übertragung auf RTL durchführen" - --#: common.opt:1143 -+#: common.opt:1147 - msgid "-ffp-contract=[off|on|fast] Perform floating-point expression contraction." - msgstr "-ffp-contract=[off|on|fast] Schrumpfung von Gleitkommaausdrücken durchführen" - --#: common.opt:1146 -+#: common.opt:1150 - #, c-format - msgid "unknown floating point contraction style %qs" - msgstr "unbekannte Art der Gleitkomma-Kürzung %qs" - --#: common.opt:1163 -+#: common.opt:1167 - msgid "Allow function addresses to be held in registers" - msgstr "Vorhalten von Funktionsadressen in Registern erlauben" - --#: common.opt:1167 -+#: common.opt:1171 - msgid "Place each function into its own section" - msgstr "Jede Funktion in ihren eigenen Abschnitt platzieren" - --#: common.opt:1171 -+#: common.opt:1175 - msgid "Perform global common subexpression elimination" - msgstr "Beseitigung globaler gemeinsamer Teilausdrücke durchführen" - --#: common.opt:1175 -+#: common.opt:1179 - msgid "Perform enhanced load motion during global common subexpression elimination" - msgstr "Erweiterte Ladebewegung während Beseitigung globaler gemeinsamer Teilausdrücke durchführen" - --#: common.opt:1179 -+#: common.opt:1183 - msgid "Perform store motion after global common subexpression elimination" - msgstr "Speicherbewegung nach Beseitigung globaler gemeinsamer Teilausdrücke durchführen" - --#: common.opt:1183 -+#: common.opt:1187 - msgid "Perform redundant load after store elimination in global common subexpression" - msgstr "Beseitigung überflüssigen Ladens nach dem Abspeichern in globalem gemeinsamem Teilausdruck durchführen" - --#: common.opt:1188 -+#: common.opt:1192 - msgid "Perform global common subexpression elimination after register allocation" - msgstr "Beseitigung globaler gemeinsamer Teilausdrücke nach Registerreservierung durchführen" - --#: common.opt:1194 -+#: common.opt:1198 - msgid "Enable in and out of Graphite representation" - msgstr "Ein- und Ausgabe der Graphite-Repräsentierung einschalten" - --#: common.opt:1198 -+#: common.opt:1202 - msgid "Enable Graphite Identity transformation" - msgstr "Transformation der Graphite Identität einschalten" - --#: common.opt:1202 --#, fuzzy -+#: common.opt:1206 - msgid "Enable hoisting adjacent loads to encourage generating conditional move" --msgstr "Herausziehen von Ladeoperationen aus bedingten Zeigern einschalten" -+msgstr "Herausziehen aufeinanderfolgender Ladeoperationen einschalten, um Erzeugung bedingter Kopieroperationen zu fördern" - --#: common.opt:1207 -+#: common.opt:1211 - msgid "Mark all loops as parallel" - msgstr "Alle Schleifen als parallel markieren" - --#: common.opt:1211 -+#: common.opt:1215 - msgid "Enable Loop Strip Mining transformation" - msgstr "Transformation des Loop Strip Mining einschalten" - --#: common.opt:1215 -+#: common.opt:1219 - msgid "Enable Loop Interchange transformation" - msgstr "Transformation des Loop Interchange einschalten" - --#: common.opt:1219 -+#: common.opt:1223 - msgid "Enable Loop Blocking transformation" - msgstr "Transformation des Loop Blocking einschalten" - --#: common.opt:1223 -+#: common.opt:1227 - msgid "Enable support for GNU transactional memory" - msgstr "Unterstützung für GNU-Transaktionsspeicher einschalten" - --#: common.opt:1231 -+#: common.opt:1235 - msgid "Enable the ISL based loop nest optimizer" - msgstr "" - --#: common.opt:1235 -+#: common.opt:1239 - msgid "Force bitfield accesses to match their type width" - msgstr "Bitfeld-Zugriffe zwingen, zu ihrer Typbreite zu passen" - --#: common.opt:1239 -+#: common.opt:1243 - msgid "Enable guessing of branch probabilities" - msgstr "Erraten der Sprungwahrscheinlichkeiten einschalten" - --#: common.opt:1247 -+#: common.opt:1251 - msgid "Process #ident directives" - msgstr "#ident-Anweisungen verarbeiten" - --#: common.opt:1251 -+#: common.opt:1255 - msgid "Perform conversion of conditional jumps to branchless equivalents" - msgstr "Umwandlung bedingter Sprünge in zweiglose Äquivalente durchführen" - --#: common.opt:1255 -+#: common.opt:1259 - msgid "Perform conversion of conditional jumps to conditional execution" - msgstr "Umwandlung bedingter Sprünge in bedingte Ausführung durchführen" - --#: common.opt:1259 -+#: common.opt:1263 - msgid "-fstack-reuse=[all|named_vars|none] Set stack reuse level for local variables." --msgstr "" -+msgstr "-fstack-reuse=[all|named_vars|none] Stufe der Stack-Wiederverwendung für lokale Variablen setzen" - --#: common.opt:1262 --#, fuzzy, c-format -+#: common.opt:1266 -+#, c-format - msgid "unknown Stack Reuse Level %qs" --msgstr "Unbekannte Architektur »%s«" -+msgstr "Unbekannte Stufe %qs für Stack-Wiederverwendung" - --#: common.opt:1275 -+#: common.opt:1279 - msgid "Convert conditional jumps in innermost loops to branchless equivalents" - msgstr "Umwandlung bedingter Sprünge in innersten Schleifen in zweiglose Äquivalente durchführen" - --#: common.opt:1279 -+#: common.opt:1283 - msgid "Also if-convert conditional jumps containing memory writes" - msgstr "Ebenso if-umwandeln bedingter Sprünge, die Speicherschreiboperationen enthalten" - --#: common.opt:1287 -+#: common.opt:1291 - msgid "Do not generate .size directives" - msgstr "Keine .size-Anweisungen erzeugen" - --#: common.opt:1291 -+#: common.opt:1295 - msgid "Perform indirect inlining" - msgstr "Indirektes Inlining durchführen" - --#: common.opt:1297 -+#: common.opt:1301 - msgid "Enable inlining of function declared \"inline\", disabling disables all inlining" - msgstr "Aktivieren des Inlining von »inline«-Funktionen, ansonsten wird jegliches Inlining deaktiviert" - --#: common.opt:1301 -+#: common.opt:1305 - msgid "Integrate functions into their callers when code size is known not to grow" - msgstr "Funktionen in ihre Aufrufer einfügen, wenn Codegröße als nicht wachsend bekannt ist" - --#: common.opt:1305 -+#: common.opt:1309 - msgid "Integrate functions not declared \"inline\" into their callers when profitable" - msgstr "Nicht als »inline« deklarierte Funktionen in ihre Aufrufer einfügen, wenn gewinnbringend" - --#: common.opt:1309 -+#: common.opt:1313 - msgid "Integrate functions only required by their single caller" - msgstr "Nur an einer Stelle aufgerufene Funktionen in ihre Aufrufer einfügen" - --#: common.opt:1316 -+#: common.opt:1320 - msgid "-finline-limit=\tLimit the size of inlined functions to " - msgstr "-finline-limit=\tGröße von »inline«-Funktionen auf beschränken" - --#: common.opt:1320 -+#: common.opt:1324 - msgid "Inline __atomic operations when a lock free instruction sequence is available." - msgstr "__atomic-Operationen »inline« erzeugen, wenn Lock-freie Befehlssequenz verfügbar ist" - --#: common.opt:1324 -+#: common.opt:1328 - msgid "Instrument function entry and exit with profiling calls" - msgstr "Ein- und Austritte von Funktionen beim Profilieren von Aufrufen verwenden" - --#: common.opt:1328 -+#: common.opt:1332 - msgid "-finstrument-functions-exclude-function-list=name,... Do not instrument listed functions" - msgstr "-finstrument-functions-exclude-function-list=name,... Aufgezählte Funktionen nicht verwenden" - --#: common.opt:1332 -+#: common.opt:1336 - msgid "-finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files" - msgstr "-finstrument-functions-exclude-file-list=filename,... In Dateien aufgezählte Funktionen nicht verwenden" - --#: common.opt:1336 -+#: common.opt:1340 - msgid "Perform Interprocedural constant propagation" - msgstr "Zwischenprozedurale Konstantenweitergabe durchführen" - --#: common.opt:1340 -+#: common.opt:1344 - msgid "Perform cloning to make Interprocedural constant propagation stronger" - msgstr "Kopien erzeugen, um zwischenprozedurale Konstantenweitergabe zu verstärken" - --#: common.opt:1344 -+#: common.opt:1348 - msgid "Perform interprocedural profile propagation" - msgstr "Zwischenprozedurale Profilweitergabe durchführen" - --#: common.opt:1348 -+#: common.opt:1352 - msgid "Perform interprocedural points-to analysis" - msgstr "Zwischenprozedurale Zeigeranalyse durchführen" - --#: common.opt:1352 -+#: common.opt:1356 - msgid "Discover pure and const functions" - msgstr "Reine und konstante Funktionen entdecken" - --#: common.opt:1356 -+#: common.opt:1360 - msgid "Discover readonly and non addressable static variables" - msgstr "Nur-lese und nicht-adressierbare statische Variablen entdecken" - --#: common.opt:1368 -+#: common.opt:1372 - msgid "-fira-algorithm=[CB|priority] Set the used IRA algorithm" - msgstr "-fira-algorithm=[CB|priority] Verwendeten IRA-Algorithmus setzen" - --#: common.opt:1371 -+#: common.opt:1375 - #, c-format - msgid "unknown IRA algorithm %qs" - msgstr "unbekannter IRA-Algorithmus %qs" - --#: common.opt:1381 -+#: common.opt:1385 - msgid "-fira-region=[one|all|mixed] Set regions for IRA" - msgstr "-fira-region=[one|all|mixed] Regionen für IRA setzen" - --#: common.opt:1384 -+#: common.opt:1388 - #, c-format - msgid "unknown IRA region %qs" - msgstr "unbekannte IRA-Region %qs" - --#: common.opt:1397 common.opt:1402 -+#: common.opt:1401 common.opt:1406 - msgid "Use IRA based register pressure calculation" - msgstr "IRA-basierte Registerdruckkalkulation verwenden" - --#: common.opt:1407 -+#: common.opt:1411 - msgid "Share slots for saving different hard registers." - msgstr "Schlitze gemeinsam verwenden, um verschiedene harte Register zu sichern." - --#: common.opt:1411 -+#: common.opt:1415 - msgid "Share stack slots for spilled pseudo-registers." - msgstr "Stack-Schlitze für übergelaufene Pseudo-Register gemeinsam verwenden." - --#: common.opt:1415 -+#: common.opt:1419 - msgid "-fira-verbose=\tControl IRA's level of diagnostic messages." - msgstr "-fira-verbose=\tUse zlib compression level for IL" - msgstr "-flto-compression-level=\tZlib Kompressionsstufe für IL verwenden" - --#: common.opt:1472 -+#: common.opt:1476 - msgid "Report various link-time optimization statistics" - msgstr "Verschiedene Statistiken über Linkzeit-Optimierung ausgeben" - --#: common.opt:1476 -+#: common.opt:1480 - msgid "Set errno after built-in math functions" - msgstr "Nach eingebauten Mathematikfunktionen errno setzen" - --#: common.opt:1480 -+#: common.opt:1484 - msgid "-fmax-errors=\tMaximum number of errors to report" - msgstr "-fmax-errors=\tHöchstzahl der zu meldenden Fehler" - --#: common.opt:1484 -+#: common.opt:1488 - msgid "Report on permanent memory allocation" - msgstr "Über dauerhafte Speicherreservierung berichten" - --#: common.opt:1488 --#, fuzzy -+#: common.opt:1492 - msgid "Report on permanent memory allocation in WPA only" --msgstr "Über dauerhafte Speicherreservierung berichten" -+msgstr "Nur in WPA über dauerhafte Speicherreservierung berichten" - --#: common.opt:1495 -+#: common.opt:1499 - msgid "Attempt to merge identical constants and constant variables" - msgstr "Versuchen, identische Konstanten und konstante Variablen zu verschmelzen" - --#: common.opt:1499 -+#: common.opt:1503 - msgid "Attempt to merge identical constants across compilation units" - msgstr "Versuchen, identische Konstanten über Übersetzungseinheiten hinweg zu verschmelzen" - --#: common.opt:1503 -+#: common.opt:1507 - msgid "Attempt to merge identical debug strings across compilation units" - msgstr "Versuchen, identische Zeichenketten zur Fehlersuche über Übersetzungseinheiten hinweg zu verschmelzen" - --#: common.opt:1507 -+#: common.opt:1511 - msgid "-fmessage-length=\tLimit diagnostics to characters per line. 0 suppresses line-wrapping" - msgstr "-fmessage-length=\tDiagnosemeldungen auf Zeichen pro Zeile beschränken. 0 unterdrückt Zeilenumbruch" - --#: common.opt:1511 -+#: common.opt:1515 - msgid "Perform SMS based modulo scheduling before the first scheduling pass" - msgstr "SMS-basierte modulo-Planung vor erstem Planungsdurchlauf durchführen" - --#: common.opt:1515 -+#: common.opt:1519 - msgid "Perform SMS based modulo scheduling with register moves allowed" - msgstr "SMS-basierte modulo-Planung mit erlaubten Register-Bewegungen durchführen" - --#: common.opt:1519 -+#: common.opt:1523 - msgid "Move loop invariant computations out of loops" - msgstr "Berechnung der Schleifeninvarianten außerhalb der Schleifen legen" - --#: common.opt:1523 -+#: common.opt:1527 - msgid "Use the RTL dead code elimination pass" - msgstr "Den RTL-Schritt zur Entfernung toten Codes verwenden" - --#: common.opt:1527 -+#: common.opt:1531 - msgid "Use the RTL dead store elimination pass" - msgstr "Den RTL-Schritt zur Entfernung toter Speicherbereiche verwenden" - --#: common.opt:1531 -+#: common.opt:1535 - msgid "Enable/Disable the traditional scheduling in loops that already passed modulo scheduling" - msgstr "Traditionelle Planung in Schleifen, die bereits Modulo-Planung unterzogen wurden, einschalten/ausschalten" - --#: common.opt:1535 -+#: common.opt:1539 - msgid "Support synchronous non-call exceptions" - msgstr "Synchrone Nicht-Aufruf-Ausnahmen unterstützen" - --#: common.opt:1539 -+#: common.opt:1543 - msgid "When possible do not generate stack frames" - msgstr "Wenn möglich, keine Stapelrahmen erzeugen" - --#: common.opt:1543 --#, fuzzy -+#: common.opt:1547 - msgid "Enable all optimization info dumps on stderr" --msgstr "Schleifenoptimierungen auf Baumebene einschalten" -+msgstr "Alle Informationen über Optimierungen auf stderr einschalten" - --#: common.opt:1547 -+#: common.opt:1551 - msgid "-fopt-info[-=filename]\tDump compiler optimization details" --msgstr "" -+msgstr "-fopt-info[-=Dateiname]\tOptimierungsdetails des Compilers ausgeben" - --#: common.opt:1551 -+#: common.opt:1555 - msgid "Do the full register move optimization pass" - msgstr "Den vollständigen Optimierungsdurchlauf für Registerbewegungen durchführen" - --#: common.opt:1555 -+#: common.opt:1559 - msgid "Optimize sibling and tail recursive calls" - msgstr "Geschwister- und endrekursive Aufrufe optimieren" - --#: common.opt:1559 -+#: common.opt:1563 - msgid "Perform partial inlining" - msgstr "Teilweises Inlining durchführen" - --#: common.opt:1563 common.opt:1567 -+#: common.opt:1567 common.opt:1571 - msgid "Report on memory allocation before interprocedural optimization" - msgstr "Über Speicherbelegung vor zwischenprozeduraler Optimierung berichten" - --#: common.opt:1571 -+#: common.opt:1575 - msgid "Pack structure members together without holes" - msgstr "Strukturelemente ohne Lücken zusammenpacken" - --#: common.opt:1575 -+#: common.opt:1579 - msgid "-fpack-struct=\tSet initial maximum structure member alignment" - msgstr "-fpack-struct=\tAnfängliche größte Ausrichtung für Strukturelemente festlegen" - --#: common.opt:1579 -+#: common.opt:1583 - msgid "Return small aggregates in memory, not registers" - msgstr "Kleine Aggregate über Speicher, nicht Register, zurückgeben" - --#: common.opt:1583 -+#: common.opt:1587 - msgid "Perform loop peeling" - msgstr "Schleifen-Schälung durchführen" - --#: common.opt:1587 -+#: common.opt:1591 - msgid "Enable machine specific peephole optimizations" - msgstr "Maschinenspezifische Guckloch-Optimierungen einschalten" - --#: common.opt:1591 -+#: common.opt:1595 - msgid "Enable an RTL peephole pass before sched2" - msgstr "Einen RTL-Guckloch-Durchlauf vor sched2 einschalten" - --#: common.opt:1595 -+#: common.opt:1599 - msgid "Generate position-independent code if possible (large mode)" - msgstr "Wenn möglich, lageunabhängigen Code erzeugen (large mode)" - --#: common.opt:1599 -+#: common.opt:1603 - msgid "Generate position-independent code for executables if possible (large mode)" - msgstr "Wenn möglich, lageunabhängigen Code für ausführbare Dateien erzeugen (large mode)" - --#: common.opt:1603 -+#: common.opt:1607 - msgid "Generate position-independent code if possible (small mode)" - msgstr "Wenn möglich, positionsunabhängigen Code erzeugen (small mode)" - --#: common.opt:1607 -+#: common.opt:1611 - msgid "Generate position-independent code for executables if possible (small mode)" - msgstr "Wenn möglich, positionsunabhängigen Code für ausführbare Dateien erzeugen (small mode)" - --#: common.opt:1611 -+#: common.opt:1615 - msgid "Specify a plugin to load" - msgstr "Zu ladendes Plugin angeben" - --#: common.opt:1615 -+#: common.opt:1619 - msgid "-fplugin-arg--[=]\tSpecify argument = for plugin " - msgstr "-fplugin-arg--[=]\tArgument = für Plugin angeben" - --#: common.opt:1619 -+#: common.opt:1623 - msgid "Run predictive commoning optimization." - msgstr "Vorhersehende vereinheitlichende Optimierung durchlaufen." - --#: common.opt:1623 -+#: common.opt:1627 - msgid "Generate prefetch instructions, if available, for arrays in loops" - msgstr "Wenn verfügbar, Prefetch-Befehle für Felder in Schleifen erzeugen" - --#: common.opt:1627 -+#: common.opt:1631 - msgid "Enable basic program profiling code" - msgstr "Einfachen Programm-Profilierungscode einschalten" - --#: common.opt:1631 -+#: common.opt:1635 - msgid "Insert arc-based program profiling code" - msgstr "Arc-basierten Programm-Profilierungscode einfügen" - --#: common.opt:1635 -+#: common.opt:1639 - msgid "Set the top-level directory for storing the profile data." - msgstr "Übergeordnetes Verzeichnis zum Speichern der Profildaten setzen" - --#: common.opt:1640 -+#: common.opt:1644 - msgid "Enable correction of flow inconsistent profile data input" - msgstr "Korrektur fluss-unstimmiger Profildateneingabe einschalten" - --#: common.opt:1644 -+#: common.opt:1648 - msgid "Enable common options for generating profile info for profile feedback directed optimizations" - msgstr "Allgemeine Optionen zum Erzeugen von Profil-Info für Profil-Feedback-gerichtete Optimierungen einschalten" - --#: common.opt:1648 -+#: common.opt:1652 - msgid "Enable common options for generating profile info for profile feedback directed optimizations, and set -fprofile-dir=" - msgstr "Allgemeine Optionen zum Erzeugen von Profil-Info für Profil-Feedback-gerichtete Optimierungen einschalten, und -fprofile-dir= setzen" - --#: common.opt:1652 -+#: common.opt:1656 - msgid "Enable common options for performing profile feedback directed optimizations" - msgstr "Allgemeine Optionen zum Durchführen von Profil-Feedback-gerichteten Optimierungen einschalten" - --#: common.opt:1656 -+#: common.opt:1660 - msgid "Enable common options for performing profile feedback directed optimizations, and set -fprofile-dir=" - msgstr "Allgemeine Optionen zum Durchführen von Profil-Feedback-gerichteten Optimierungen einschalten, und -fprofile-dir= setzen" - --#: common.opt:1660 -+#: common.opt:1664 - msgid "Insert code to profile values of expressions" - msgstr "Code in Profilwerte von Ausdrücken einfügen" - --#: common.opt:1664 --#, fuzzy -+#: common.opt:1668 - msgid "Report on consistency of profile" --msgstr "internes Konsistenzproblem" -+msgstr "Über Konsistenz des Profils berichten" - --#: common.opt:1671 -+#: common.opt:1675 - msgid "-frandom-seed=\tMake compile reproducible using " - msgstr "-frandom-seed=\tÜbersetzung mit reproduzierbar machen" - --#: common.opt:1681 -+#: common.opt:1685 - msgid "Record gcc command line switches in the object file." - msgstr "GCC-Kommandozeilenschalter in Objektdateien aufzeichnen." - --#: common.opt:1685 -+#: common.opt:1689 - msgid "Return small aggregates in registers" - msgstr "Kleine Aggregate über Register zurückgeben" - --#: common.opt:1689 -+#: common.opt:1693 - msgid "Enables a register move optimization" - msgstr "Eine Registerbewegungsoptimierung einschalten" - --#: common.opt:1693 -+#: common.opt:1697 - msgid "Perform a register renaming optimization pass" - msgstr "Einen Optimierungsdurchgang zur Registerumbenennung durchführen" - --#: common.opt:1697 -+#: common.opt:1701 - msgid "Reorder basic blocks to improve code placement" - msgstr "Basisblöcke umsortieren, um Codeplatzierung zu verbessern" - --#: common.opt:1701 -+#: common.opt:1705 - msgid "Reorder basic blocks and partition into hot and cold sections" - msgstr "Basisblöcke und Partition in heiße und kalte Abschnitte umordnen" - --#: common.opt:1705 -+#: common.opt:1709 - msgid "Reorder functions to improve code placement" - msgstr "Funktionen umsortieren, um Codeplatzierung zu verbessern" - --#: common.opt:1709 -+#: common.opt:1713 - msgid "Add a common subexpression elimination pass after loop optimizations" - msgstr "Einen gemeinsamen Durchlauf zur Entfernung von Teilausdrücken nach Schleifenoptimierungen hinzufügen" - --#: common.opt:1717 -+#: common.opt:1721 - msgid "Disable optimizations that assume default FP rounding behavior" - msgstr "Optimierungen, die Standard-Rundungsverhalten für Gleitkomma annehmen, ausschalten" - --#: common.opt:1721 -+#: common.opt:1725 - msgid "Enable scheduling across basic blocks" - msgstr "Planung über Basisblöcke hinaus einschalten" - --#: common.opt:1725 -+#: common.opt:1729 - msgid "Enable register pressure sensitive insn scheduling" - msgstr "Registerdruckempfindliche Befehlsplanung einschalten" - --#: common.opt:1729 -+#: common.opt:1733 - msgid "Allow speculative motion of non-loads" - msgstr "Spekulative Bewegung beim Nicht-Laden erlauben" - --#: common.opt:1733 -+#: common.opt:1737 - msgid "Allow speculative motion of some loads" - msgstr "Spekulative Bewegung bei einigen Ladeoperationen erlauben" - --#: common.opt:1737 -+#: common.opt:1741 - msgid "Allow speculative motion of more loads" - msgstr "Spekulative Bewegung bei mehr Ladeoperationen erlauben" - --#: common.opt:1741 -+#: common.opt:1745 - msgid "-fsched-verbose=\tSet the verbosity level of the scheduler" - msgstr "-fsched-verbose=\tStufe der Wortfülle des Planers angeben" - --#: common.opt:1745 -+#: common.opt:1749 - msgid "If scheduling post reload, do superblock scheduling" - msgstr "Wenn Planung nach dem Neuladen, dann Superblock-Planung" - --#: common.opt:1753 -+#: common.opt:1757 - msgid "Reschedule instructions before register allocation" - msgstr "Befehle vor Registerbelegung neu planen" - --#: common.opt:1757 -+#: common.opt:1761 - msgid "Reschedule instructions after register allocation" - msgstr "Befehle nach Registerbelegung neu planen" - --#: common.opt:1764 -+#: common.opt:1768 - msgid "Schedule instructions using selective scheduling algorithm" - msgstr "Befehle mit selektivem Planungs-Algorithmus einplanen" - --#: common.opt:1768 -+#: common.opt:1772 - msgid "Run selective scheduling after reload" - msgstr "Ausgewählte Planung nach Neuladen laufen lassen" - --#: common.opt:1772 -+#: common.opt:1776 - msgid "Perform software pipelining of inner loops during selective scheduling" - msgstr "Während selektiver Planung Software-Pipelining innerer Schleifen durchführen" - --#: common.opt:1776 -+#: common.opt:1780 - msgid "Perform software pipelining of outer loops during selective scheduling" - msgstr "Während selektiver Planung Software-Pipelining äußerer Schleifen durchführen" - --#: common.opt:1780 -+#: common.opt:1784 - msgid "Reschedule pipelined regions without pipelining" - msgstr "Regionen mit Pipelining ohne Pipelining neu planen" - --#: common.opt:1786 -+#: common.opt:1790 - msgid "Allow premature scheduling of queued insns" - msgstr "Nicht ausgereifte Planung von eingereihten Befehlen erlauben" - --#: common.opt:1790 -+#: common.opt:1794 - msgid "-fsched-stalled-insns=\tSet number of queued insns that can be prematurely scheduled" - msgstr "-fsched-stalled-insns=\tAnzahl der eingereihten Befehle setzen, die unausgereift geplant werden können" - --#: common.opt:1798 -+#: common.opt:1802 - msgid "Set dependence distance checking in premature scheduling of queued insns" - msgstr "Prüfung der Abhängigkeitsentfernung in nicht ausgereifter Planung von eingereihten Befehlen setzen" - --#: common.opt:1802 -+#: common.opt:1806 - msgid "-fsched-stalled-insns-dep=\tSet dependence distance checking in premature scheduling of queued insns" - msgstr "-fsched-stalled-insns-dep=\tPrüfung der Abhängigkeitsentfernung in nicht ausgereifter Planung von eingereihten Befehlen setzen" - --#: common.opt:1806 -+#: common.opt:1810 - msgid "Enable the group heuristic in the scheduler" - msgstr "Gruppenheuristik im Planer einschalten" - --#: common.opt:1810 -+#: common.opt:1814 - msgid "Enable the critical path heuristic in the scheduler" - msgstr "Critical-Path-Heuristik im Planer einschalten" - --#: common.opt:1814 -+#: common.opt:1818 - msgid "Enable the speculative instruction heuristic in the scheduler" - msgstr "Heuristik für spekulative Befehle im Planer einschalten" - --#: common.opt:1818 -+#: common.opt:1822 - msgid "Enable the rank heuristic in the scheduler" - msgstr "Rang-Heuristik im Planer einschalten" - --#: common.opt:1822 -+#: common.opt:1826 - msgid "Enable the last instruction heuristic in the scheduler" - msgstr "Heuristik für letzte Befehle im Planer einschalten" - --#: common.opt:1826 -+#: common.opt:1830 - msgid "Enable the dependent count heuristic in the scheduler" - msgstr "Abhängige Zähl-Heuristik bei Planung einschalten" - --#: common.opt:1830 -+#: common.opt:1834 - msgid "Access data in the same section from shared anchor points" - msgstr "Auf Daten im gleichen Abschnitt von gemeinsam benutzten Ankerpunkten zugreifen" - --#: common.opt:1842 -+#: common.opt:1846 - msgid "Turn on Redundant Extensions Elimination pass." - msgstr "Redundante Erweiterungsentfernung einschalten" - --#: common.opt:1846 -+#: common.opt:1850 - msgid "Show column numbers in diagnostics, when available. Default on" - msgstr "Spaltenzahlen in Diagnose zeigen, wenn verfügbar. Standard: Ein" - --#: common.opt:1850 -+#: common.opt:1854 - msgid "Emit function prologues only before parts of the function that need it," - msgstr "Funktionsprologe nur vor Teilen der Funktion erzeugen, die diese benötigt" - --#: common.opt:1855 -+#: common.opt:1859 - msgid "Disable optimizations observable by IEEE signaling NaNs" - msgstr "Von IEEE-Signalisierungs-NaNs wahrnehmbare Optimierungen ausschalten" - --#: common.opt:1859 -+#: common.opt:1863 - msgid "Disable floating point optimizations that ignore the IEEE signedness of zero" - msgstr "Gleitkommaoptimierungen ausschalten, die die IEEE-Vorzeichenbehaftung von Null nicht beachten" - --#: common.opt:1863 -+#: common.opt:1867 - msgid "Convert floating point constants to single precision constants" - msgstr "Gleitkommakonstanten in Konstanten einfacher Genauigkeit umwandeln" - --#: common.opt:1867 -+#: common.opt:1871 - msgid "Split lifetimes of induction variables when loops are unrolled" - msgstr "Lebensdauer von Induktionsvariablen aufteilen, wenn Schleifen abgerollt werden" - --#: common.opt:1871 -+#: common.opt:1875 - msgid "Generate discontiguous stack frames" - msgstr "Nicht zusammenhängende Stack-Rahmen erzeugen" - --#: common.opt:1875 -+#: common.opt:1879 - msgid "Split wide types into independent registers" - msgstr "Breite Typen in unabhängige Register aufteilen" - --#: common.opt:1879 -+#: common.opt:1883 - msgid "Apply variable expansion when loops are unrolled" - msgstr "Variablenerweiterung anwenden, wenn Schleifen abgerollt werden" - --#: common.opt:1883 -+#: common.opt:1887 - msgid "-fstack-check=[no|generic|specific]\tInsert stack checking code into the program" - msgstr "-fstack-check=[no|generic|specific]\tStapelprüfung in das Programm einfügen" - --#: common.opt:1887 -+#: common.opt:1891 - msgid "Insert stack checking code into the program. Same as -fstack-check=specific" - msgstr "Stapelprüfung in das Programm einfügen. Dasselbe wie -fstack-check=specific" - --#: common.opt:1894 -+#: common.opt:1898 - msgid "-fstack-limit-register=\tTrap if the stack goes past " - msgstr "-fstack-limit-register=\tWenn der Stapel über hinausgeht, abfangen (»trap«)" - --#: common.opt:1898 -+#: common.opt:1902 - msgid "-fstack-limit-symbol=\tTrap if the stack goes past symbol " - msgstr "-fstack-limit-symbol=\tWenn der Stapel über das Symbol hinausgeht, abfangen (»trap«)" - --#: common.opt:1902 -+#: common.opt:1906 - msgid "Use propolice as a stack protection method" - msgstr "Propolice als Stapelschutzmethode verwenden" - --#: common.opt:1906 -+#: common.opt:1910 - msgid "Use a stack protection method for every function" - msgstr "Eine Stapelschutzmethode für jede Funktion verwenden" - --#: common.opt:1910 -+#: common.opt:1914 - msgid "Output stack usage information on a per-function basis" - msgstr "Information über Stapelbenutzung auf Funktionsbasis ausgeben" - --#: common.opt:1922 -+#: common.opt:1926 - msgid "Assume strict aliasing rules apply" - msgstr "Annehmen, dass strenge Alias-Regeln gelten" - --#: common.opt:1926 -+#: common.opt:1930 - msgid "Treat signed overflow as undefined" - msgstr "Vorzeichenbehafteten Überlauf als undefiniert behandeln" - --#: common.opt:1930 -+#: common.opt:1934 - msgid "Implement __atomic operations via libcalls to legacy __sync functions" - msgstr "" - --#: common.opt:1934 -+#: common.opt:1938 - msgid "Check for syntax errors, then stop" - msgstr "Auf Syntaxfehler prüfen und anhalten" - --#: common.opt:1938 -+#: common.opt:1942 - msgid "Create data files needed by \"gcov\"" - msgstr "Von »gcov« benötigte Dateien anlegen" - --#: common.opt:1942 -+#: common.opt:1946 - msgid "Perform jump threading optimizations" - msgstr "Sprung-Threading-Optimierungen durchführen" - --#: common.opt:1946 -+#: common.opt:1950 - msgid "Report the time taken by each compiler pass" - msgstr "Benötigte Zeit für jeden Compilerdurchlauf ausgeben" - --#: common.opt:1950 -+#: common.opt:1954 - msgid "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the default thread-local storage code generation model" - msgstr "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tDas standardmäßige Codeerzeugungsmodell für Thread-lokalen Speicher angeben" - --#: common.opt:1953 -+#: common.opt:1957 - #, c-format - msgid "unknown TLS model %qs" - msgstr "unbekanntes TLS-Modell %qs" - --#: common.opt:1969 -+#: common.opt:1973 - msgid "Reorder top level functions, variables, and asms" - msgstr "Funktionen, Variablen und asms höchster Ebene umordnen" - --#: common.opt:1973 -+#: common.opt:1977 - msgid "Perform superblock formation via tail duplication" - msgstr "Superblockerzeugung über Ende-Vervielfältigung durchführen" - --#: common.opt:1980 -+#: common.opt:1984 - msgid "Assume floating-point operations can trap" - msgstr "Annehmen, dass Gleitkommaoperationen abgefangen werden können (»trap«)" - --#: common.opt:1984 -+#: common.opt:1988 - msgid "Trap for signed overflow in addition, subtraction and multiplication" - msgstr "Vorzeichenbehafteten Überlauf in Addition, Subtraktion und Multiplikation abfangen (»trap«)" - --#: common.opt:1988 -+#: common.opt:1992 - msgid "Enable SSA-CCP optimization on trees" - msgstr "SSA-CCP-Optimierungen auf Bäumen einschalten" - --#: common.opt:1992 -+#: common.opt:1996 - msgid "Enable SSA-BIT-CCP optimization on trees" - msgstr "SSA-BIT-CCP-Optimierungen auf Bäumen einschalten" - --#: common.opt:2000 -+#: common.opt:2004 - msgid "Enable loop header copying on trees" - msgstr "Kopieren des Schleifenkopfes auf Bäumen einschalten" - --#: common.opt:2004 --#, fuzzy -+#: common.opt:2008 - msgid "Enable coalescing of copy-related user variables that are inlined" --msgstr "Variablenverfolgung durchführen und auch Variablen markieren, die uninitialisiert sind" -+msgstr "Verbinden kopierbezogener »inline«-Benutzervariablen einschalten" - --#: common.opt:2008 -+#: common.opt:2012 - msgid "Enable coalescing of all copy-related user variables" --msgstr "" -+msgstr "Verbinden kopierbezogener Benutzervariablen einschalten" - --#: common.opt:2012 -+#: common.opt:2016 - msgid "Replace SSA temporaries with better names in copies" - msgstr "Vorübergehende SSA-Speicherbereiche in Kopien mit besseren Namen ersetzen" - --#: common.opt:2016 -+#: common.opt:2020 - msgid "Enable copy propagation on trees" - msgstr "Kopieweitergabe auf Bäumen einschalten" - --#: common.opt:2024 -+#: common.opt:2028 - msgid "Transform condition stores into unconditional ones" - msgstr "Bedingte Speicherbefehle in unbedingte umwandeln" - --#: common.opt:2028 -+#: common.opt:2032 - msgid "Perform conversions of switch initializations." - msgstr "Umwandlungen von »switch«-Initialisierungen durchführen." - --#: common.opt:2032 -+#: common.opt:2036 - msgid "Enable SSA dead code elimination optimization on trees" - msgstr "Beseitigungsoptimierung für toten SSA-Code auf Bäumen einschalten" - --#: common.opt:2036 -+#: common.opt:2040 - msgid "Enable dominator optimizations" - msgstr "Beherrscher-Optimierungen einschalten" - --#: common.opt:2040 -+#: common.opt:2044 - msgid "Enable tail merging on trees" - msgstr "Enden-Zusammenfassung auf Bäumen einschalten" - --#: common.opt:2044 -+#: common.opt:2048 - msgid "Enable dead store elimination" - msgstr "Entfernung toter Speicherbereiche einschalten" - --#: common.opt:2048 -+#: common.opt:2052 - msgid "Enable forward propagation on trees" - msgstr "Vorwärts-Übertragung auf Bäumen einschalten" - --#: common.opt:2052 -+#: common.opt:2056 - msgid "Enable Full Redundancy Elimination (FRE) on trees" - msgstr "Vollständige Redundanzentfernung (FRE) auf Bäumen einschalten" - --#: common.opt:2056 -+#: common.opt:2060 - msgid "Enable string length optimizations on trees" - msgstr "Zeichenkettenlängen-Optimierungen auf Bäumen einschalten" - --#: common.opt:2060 -+#: common.opt:2064 - msgid "Enable loop distribution on trees" - msgstr "Schleifenverteilung auf Bäumen einschalten" - --#: common.opt:2064 -+#: common.opt:2068 - msgid "Enable loop distribution for patterns transformed into a library call" - msgstr "Schleifenverteilung für in Bibliotheksaufruf umgewandelte Muster einschalten" - --#: common.opt:2068 -+#: common.opt:2072 - msgid "Enable loop invariant motion on trees" - msgstr "Bewegung der Schleifeninvariante auf Bäumen einschalten" - --#: common.opt:2072 -+#: common.opt:2076 - msgid "Enable loop interchange transforms. Same as -floop-interchange" - msgstr "Umwandlungen mit Schleifenaustausch einschalten. Das Gleiche wie -floop-interchange" - --#: common.opt:2076 -+#: common.opt:2080 - msgid "Create canonical induction variables in loops" - msgstr "Kanonische Induktionsvariablen in Schleifen erzeugen" - --#: common.opt:2080 -+#: common.opt:2084 - msgid "Enable loop optimizations on tree level" - msgstr "Schleifenoptimierungen auf Baumebene einschalten" - --#: common.opt:2084 -+#: common.opt:2088 - msgid "Enable automatic parallelization of loops" - msgstr "Automatische Parallelisierung von Schleifen einschalten" - --#: common.opt:2088 -+#: common.opt:2092 - msgid "Enable hoisting loads from conditional pointers." - msgstr "Herausziehen von Ladeoperationen aus bedingten Zeigern einschalten" - --#: common.opt:2092 -+#: common.opt:2096 - msgid "Enable SSA-PRE optimization on trees" - msgstr "SSA-PRE-Optimierungen auf Bäumen einschalten" - --#: common.opt:2096 -+#: common.opt:2100 - msgid "In SSA-PRE optimization on trees, enable partial-partial redundancy elimination" - msgstr "" - --#: common.opt:2100 -+#: common.opt:2104 - msgid "Perform function-local points-to analysis on trees." - msgstr "Funktionslokale Analyse von Zeigerzielen auf Bäumen durchführen." - --#: common.opt:2104 -+#: common.opt:2108 - msgid "Enable reassociation on tree level" - msgstr "Neuverbindung auf Baumebene einschalten" - --#: common.opt:2112 -+#: common.opt:2116 - msgid "Enable SSA code sinking on trees" - msgstr "SSA-Codeversenkung auf Bäumen einschalten" - --#: common.opt:2116 -+#: common.opt:2120 - msgid "Perform straight-line strength reduction" - msgstr "" - --#: common.opt:2120 -+#: common.opt:2124 - msgid "Perform scalar replacement of aggregates" - msgstr "Skalarersetzung von Aggregaten durchführen" - --#: common.opt:2124 -+#: common.opt:2128 - msgid "Replace temporary expressions in the SSA->normal pass" - msgstr "Vorübergehende Ausdrücke im SSA-Normaldurchlauf ersetzen" - --#: common.opt:2128 -+#: common.opt:2132 - msgid "Perform live range splitting during the SSA->normal pass" - msgstr "Lebensdaueraufteilung während des SSA-Normaldurchlaufs durchführen" - --#: common.opt:2132 -+#: common.opt:2136 - msgid "Perform Value Range Propagation on trees" - msgstr "Wertebereichsweitergabe auf Bäumen durchführen" - --#: common.opt:2136 -+#: common.opt:2140 - msgid "Compile whole compilation unit at a time" - msgstr "Ganze Übersetzungseinheit auf einmal übersetzen" - --#: common.opt:2140 -+#: common.opt:2144 - msgid "Perform loop unrolling when iteration count is known" - msgstr "Schleifenabwicklung durchführen, wenn Anzahl der Wiederholungen bekannt ist" - --#: common.opt:2144 -+#: common.opt:2148 - msgid "Perform loop unrolling for all loops" - msgstr "Schleifenabwicklung für alle Schleifen durchführen" - --#: common.opt:2151 -+#: common.opt:2155 - msgid "Allow loop optimizations to assume that the loops behave in normal way" - msgstr "Bei Schleifenoptimierungen annehmen, dass sich die Schleifen normal verhalten" - --#: common.opt:2155 -+#: common.opt:2159 - msgid "Allow optimization for floating-point arithmetic which may change the" - msgstr "Optimierung für Gleitkommaarithmetik erlauben, bei möglicher Änderung von" - --#: common.opt:2160 -+#: common.opt:2164 - msgid "Same as -fassociative-math for expressions which include division." - msgstr "Das gleiche wie -fassociative-math für Ausdrücke, die Division enthalten." - --#: common.opt:2168 -+#: common.opt:2172 - msgid "Allow math optimizations that may violate IEEE or ISO standards" - msgstr "Mathematische Optimierungen erlauben, die IEEE- oder ISO-Standards verletzen könnten" - --#: common.opt:2172 -+#: common.opt:2176 - msgid "Perform loop unswitching" - msgstr "Schleifenausschaltung durchführen" - --#: common.opt:2176 -+#: common.opt:2180 - msgid "Just generate unwind tables for exception handling" - msgstr "Einfach Abwicklungstabellen für Ausnahmebehandlung erzeugen" - --#: common.opt:2180 --#, fuzzy -+#: common.opt:2184 - msgid "Use the bfd linker instead of the default linker" --msgstr "Verwendet den Hardware-Berrelshifter statt der Emulation" -+msgstr "BFD-Linker statt Standardlinker verwenden" - --#: common.opt:2184 --#, fuzzy -+#: common.opt:2188 - msgid "Use the gold linker instead of the default linker" --msgstr "Verwendet den Hardware-Berrelshifter statt der Emulation" -+msgstr "Gold-Linker statt Standardlinker verwenden" - --#: common.opt:2196 -+#: common.opt:2200 - msgid "Perform variable tracking" - msgstr "Variablenverfolgung durchführen" - --#: common.opt:2204 -+#: common.opt:2208 - msgid "Perform variable tracking by annotating assignments" - msgstr "Variablenverfolgung durch Zuweisungsanmerkungen durchführen" - --#: common.opt:2210 -+#: common.opt:2214 - msgid "Toggle -fvar-tracking-assignments" - msgstr "-fvar-tracking-assignments umschalten" - --#: common.opt:2218 -+#: common.opt:2222 - msgid "Perform variable tracking and also tag variables that are uninitialized" - msgstr "Variablenverfolgung durchführen und auch Variablen markieren, die uninitialisiert sind" - --#: common.opt:2222 -+#: common.opt:2226 - msgid "Enable loop vectorization on trees" - msgstr "Schleifenvektorisierung auf Bäumen einschalten" - --#: common.opt:2226 --#, fuzzy -+#: common.opt:2230 - msgid "-ftree-vectorizer-verbose=\tThis switch is deprecated. Use -fopt-info instead." --msgstr "-ftree-vectorizer-verbose=\tStufe der Wortfülle des Vektorisierers setzen" -+msgstr "-ftree-vectorizer-verbose=\tVeralteter Schalter. Stattdessen -fopt-info verwenden." - --#: common.opt:2230 -+#: common.opt:2234 - msgid "Enable basic block vectorization (SLP) on trees" - msgstr "Vektorisierung von Basisblöcken (SLP) auf Bäumen einschalten" - --#: common.opt:2234 -+#: common.opt:2238 - msgid "Enable use of cost model in vectorization" - msgstr "Verwendung des Kostenmodells in Vektorisierung einschalten" - --#: common.opt:2238 -+#: common.opt:2242 - msgid "Enable loop versioning when doing loop vectorization on trees" - msgstr "Schleifenversionierung bei Schleifenvektorisierung auf Bäumen einschalten" - --#: common.opt:2242 -+#: common.opt:2246 - msgid "Enable copy propagation of scalar-evolution information." - msgstr "Kopieweitergabe von Informationen über Skalar-Evolution einschalten." - --#: common.opt:2252 -+#: common.opt:2256 - msgid "Add extra commentary to assembler output" - msgstr "Zusätzlichen Kommentar an Assemblerausgabe anfügen" - --#: common.opt:2256 -+#: common.opt:2260 - msgid "-fvisibility=[default|internal|hidden|protected]\tSet the default symbol visibility" - msgstr "-fvisibility=[default|internal|hidden|protected]\tStandard-Symbolsichtbarkeit setzen" - --#: common.opt:2259 -+#: common.opt:2263 - #, c-format - msgid "unrecognized visibility value %qs" - msgstr "unbekannter Sichtbarkeitswert %qs" - --#: common.opt:2275 -+#: common.opt:2279 - msgid "Use expression value profiles in optimizations" - msgstr "Profile von Ausdruckswerten in Optimierungen verwenden" - --#: common.opt:2279 -+#: common.opt:2283 - msgid "Construct webs and split unrelated uses of single variable" - msgstr "Netze konstruieren und nicht zusammenhängende Verwendungen einzelner Variablen aufteilen" - --#: common.opt:2283 -+#: common.opt:2287 - msgid "Enable conditional dead code elimination for builtin calls" - msgstr "Beseitigung von bedingt totem Code für Aufrufe eingebauter Funktionen einschalten" - --#: common.opt:2287 -+#: common.opt:2291 - msgid "Perform whole program optimizations" - msgstr "Gesamtprogrammoptimierung durchführen" - --#: common.opt:2291 -+#: common.opt:2295 - msgid "Assume signed arithmetic overflow wraps around" - msgstr "Annehmen, dass vorzeichenbehaftete arithmetische Überläufe regulär überschlagen" - --#: common.opt:2295 -+#: common.opt:2299 - msgid "Put zero initialized data in the bss section" - msgstr "Null-initialisierte Daten in den bss-Abschnitt legen" - --#: common.opt:2299 -+#: common.opt:2303 - msgid "Generate debug information in default format" - msgstr "Fehlersuchinformationen im Standardformat erzeugen" - --#: common.opt:2303 -+#: common.opt:2307 - msgid "Generate debug information in COFF format" - msgstr "Fehlersuchinformationen im COFF-Format erzeugen" - --#: common.opt:2307 -+#: common.opt:2311 - msgid "Generate debug information in DWARF v2 (or later) format" - msgstr "Fehlersuchinformationen im DWARFv2-Format (oder neuer) erzeugen" - --#: common.opt:2311 -+#: common.opt:2315 - msgid "Generate debug information in default extended format" - msgstr "Fehlersuchinformationen im erweiterten Standardformat erzeugen" - --#: common.opt:2315 --#, fuzzy -+#: common.opt:2319 - msgid "Don't generate DWARF pubnames and pubtypes sections." --msgstr "Keine verschmolzenen Multiplizier-/Addier-Befehle erzeugen" -+msgstr "Keine DWARF-Abschnitte für Pubnames und Pubtypes erzeugen" - --#: common.opt:2319 -+#: common.opt:2323 - msgid "Generate DWARF pubnames and pubtypes sections." --msgstr "" -+msgstr "DWARF-Abschnitte für Pubnames und Pubtypes erzeugen" - --#: common.opt:2323 -+#: common.opt:2327 - msgid "Don't record gcc command line switches in DWARF DW_AT_producer." - msgstr "GCC-Kommandozeilenschalter nicht in DWARF DW_AT_producer aufzeichnen." - --#: common.opt:2327 -+#: common.opt:2331 - msgid "Record gcc command line switches in DWARF DW_AT_producer." - msgstr "GCC-Kommandozeilenschalter in DWARF DW_AT_producer aufzeichnen." - --#: common.opt:2331 --#, fuzzy -+#: common.opt:2335 - msgid "Don't generate debug information in separate .dwo files" --msgstr "Fehlersuchinformationen im Standardformat erzeugen" -+msgstr "Keine Fehlersuchinformationen in eigenen .dwo-Dateien erzeugen" - --#: common.opt:2335 --#, fuzzy -+#: common.opt:2339 - msgid "Generate debug information in separate .dwo files" --msgstr "Fehlersuchinformationen im Standardformat erzeugen" -+msgstr "Fehlersuchinformationen in eigenen .dwo-Dateien erzeugen" - --#: common.opt:2339 -+#: common.opt:2343 - msgid "Generate debug information in STABS format" - msgstr "Fehlersuchinformationen im STABS-Format erzeugen" - --#: common.opt:2343 -+#: common.opt:2347 - msgid "Generate debug information in extended STABS format" - msgstr "Fehlersuchinformationen im erweiterten STABS-Format erzeugen" - --#: common.opt:2347 -+#: common.opt:2351 - msgid "Emit DWARF additions beyond selected version" - msgstr "DWARF-Ergänzungen über gewählte Version hinaus ausgeben" - --#: common.opt:2351 -+#: common.opt:2355 - msgid "Don't emit DWARF additions beyond selected version" - msgstr "Keine DWARF-Ergänzungen über gewählte Version hinaus ausgeben" - --#: common.opt:2355 -+#: common.opt:2359 - msgid "Toggle debug information generation" - msgstr "Erzeugung von Fehlersuchinformationen umschalten" - --#: common.opt:2359 -+#: common.opt:2363 - msgid "Generate debug information in VMS format" - msgstr "Fehlersuchinformationen im VMS-Format erzeugen" - --#: common.opt:2363 -+#: common.opt:2367 - msgid "Generate debug information in XCOFF format" - msgstr "Fehlersuchinformationen im XCOFF-Format erzeugen" - --#: common.opt:2367 -+#: common.opt:2371 - msgid "Generate debug information in extended XCOFF format" - msgstr "Fehlersuchinformationen im erweiterten XCOFF-Format erzeugen" - --#: common.opt:2374 -+#: common.opt:2378 - msgid "-iplugindir=\tSet to be the default plugin directory" - msgstr "-iplugindir=\t als Standard-Plugin-Verzeichnis setzen" - --#: common.opt:2378 --#, fuzzy -+#: common.opt:2382 - msgid "-imultiarch \tSet to be the multiarch include subdirectory" --msgstr "-imultilib \t als Multilib-include-Verzeichnis setzen" -+msgstr "-imultiarch \t als Multiarch-include-Verzeichnis setzen" - --#: common.opt:2400 -+#: common.opt:2404 - msgid "-o \tPlace output into " - msgstr "-o \tAusgabe in schreiben" - --#: common.opt:2404 -+#: common.opt:2408 - msgid "Enable function profiling" - msgstr "Funktionsprofilierung einschalten" - --#: common.opt:2414 -+#: common.opt:2418 - msgid "Like -pedantic but issue them as errors" - msgstr "Wie -pedantic, aber als Fehler ausgeben" - --#: common.opt:2454 -+#: common.opt:2458 - msgid "Do not display functions compiled or elapsed time" - msgstr "Nicht übersetzte Funktionen oder gestoppte Zeit ausgeben" - --#: common.opt:2486 -+#: common.opt:2490 - msgid "Enable verbose output" - msgstr "Wortreiche Ausgabe einschalten" - --#: common.opt:2490 -+#: common.opt:2494 - msgid "Display the compiler's version" - msgstr "Compiler-Version anzeigen" - --#: common.opt:2494 -+#: common.opt:2498 - msgid "Suppress warnings" - msgstr "Warnungen unterdrücken" - --#: common.opt:2504 -+#: common.opt:2508 - msgid "Create a shared library" - msgstr "Shared Library erzeugen" - --#: common.opt:2543 -+#: common.opt:2547 - msgid "Create a position independent executable" - msgstr "Eine lageunabhängige ausführbare Datei erzeugen" - --#: go/gofrontend/expressions.cc:102 c-family/c-common.c:1777 cp/cvt.c:1149 -+#: go/gofrontend/expressions.cc:102 c-family/c-common.c:1782 cp/cvt.c:1149 - #: cp/cvt.c:1395 - #, gcc-internal-format - msgid "value computed is not used" -@@ -12307,9 +12285,8 @@ - msgstr "Zeiger erwartet" - - #: go/gofrontend/expressions.cc:5610 --#, fuzzy - msgid "invalid comparison of nil with nil" --msgstr "ungültiger Vergleichscode in GIMPLE-Bedingung" -+msgstr "ungültiger Vergleich von nil mit nil" - - #: go/gofrontend/expressions.cc:5616 go/gofrontend/expressions.cc:5634 - msgid "incompatible types in binary expression" -@@ -12501,7 +12478,6 @@ - msgstr "ungültiges Empfangen auf Nur-Sende-Kanal" - - #: go/gofrontend/parse.cc:2982 --#, fuzzy - msgid "parentheses required around this composite literal to avoid parsing ambiguity" - msgstr "Um dieses zusammengesetzte Literal sind Klammern erforderlich, um Mehrdeutigkeit zu vermeiden" - -@@ -12587,7 +12563,6 @@ - msgstr "ungültiger Vergleich eines nicht-vergleichbaren Feldes" - - #: go/gofrontend/types.cc:627 --#, fuzzy - msgid "multiple-value function call in single-value context" - msgstr "Funktionsaufruf mit mehreren Werten in Kontext mit einem Wert" - -@@ -12665,26 +12640,26 @@ - msgstr "fehlende Methode %s%s%s" - - #: go/gofrontend/types.cc:6966 --#, fuzzy, c-format -+#, c-format - msgid "method %s%s%s requires a pointer receiver" --msgstr "Methode %s%s%s erfordert einen Zeiger" -+msgstr "Methode %s%s%s erfordert einen Zeigerempfänger" - - #: go/gofrontend/types.cc:6984 --#, fuzzy, c-format -+#, c-format - msgid "method %s%s%s is marked go:nointerface" --msgstr "Methode %s%s%s erfordert einen Zeiger" -+msgstr "Methode %s%s%s ist als go:nointerface gekennzeichnet" - - #. Warn about and ignore all others for now, but store them. --#: attribs.c:426 c-family/c-common.c:8019 objc/objc-act.c:4952 -+#: attribs.c:426 c-family/c-common.c:8041 objc/objc-act.c:4952 - #: objc/objc-act.c:6922 objc/objc-act.c:8109 objc/objc-act.c:8160 - #, gcc-internal-format - msgid "%qE attribute directive ignored" - msgstr "Attribut-Anweisung %qE ignoriert" - - #: attribs.c:430 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%<%E::%E%> scoped attribute directive ignored" --msgstr "Attribut-Anweisung %qE ignoriert" -+msgstr "Attribut-Anweisung im Bereich %<%E::%E%> ignoriert" - - #: attribs.c:439 - #, gcc-internal-format -@@ -12695,14 +12670,14 @@ - #. type-specifier, outside of the definition of, a class - #. type. Ignore it. - #: attribs.c:452 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "attribute ignored" --msgstr "Attribut %qE wird ignoriert" -+msgstr "Attribut wird ignoriert" - - #: attribs.c:454 - #, gcc-internal-format - msgid "an attribute that appertains to a type-specifier is ignored" --msgstr "" -+msgstr "ein Attribut, das sich auf eine Typspezifizierung bezieht, wird ignoriert" - - #: attribs.c:471 - #, gcc-internal-format -@@ -12862,18 +12837,18 @@ - msgstr "nicht-ganzzahliges Argument 1 für __atomic_is_lock_free" - - #: builtins.c:5764 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "__builtin_thread_pointer is not supported on this target" --msgstr "__builtin_eh_return für dieses Ziel nicht unterstützt" -+msgstr "__builtin_thread_pointer wird für dieses Ziel nicht unterstützt" - - #: builtins.c:5784 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "__builtin_set_thread_pointer is not supported on this target" --msgstr "__builtin_eh_return für dieses Ziel nicht unterstützt" -+msgstr "__builtin_set_thread_pointer wird für dieses Ziel nicht unterstützt" - - #. All valid uses of __builtin_va_arg_pack () are removed during - #. inlining. --#: builtins.c:6025 expr.c:10184 -+#: builtins.c:6025 expr.c:10185 - #, gcc-internal-format - msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>" - msgstr "%Kungültige Verwendung von %<__builtin_va_arg_pack ()%>" -@@ -12960,17 +12935,17 @@ - msgid "function call has aggregate value" - msgstr "Funktionsaufruf hat zusammengesetzten Wert" - --#: cfgexpand.c:1238 function.c:971 varasm.c:1966 -+#: cfgexpand.c:1238 function.c:971 varasm.c:1964 - #, gcc-internal-format - msgid "size of variable %q+D is too large" - msgstr "Größe der Variablen %q+D ist zu hoch" - --#: cfgexpand.c:4487 -+#: cfgexpand.c:4542 - #, gcc-internal-format - msgid "stack protector not protecting local variables: variable length buffer" - msgstr "Stack-Schutz schützt nicht lokale Variablen: Puffer variabler Größe" - --#: cfgexpand.c:4491 -+#: cfgexpand.c:4546 - #, gcc-internal-format, gfc-internal-format - msgid "stack protector not protecting function: all local arrays are less than %d bytes long" - msgstr "Stack-Schutz schützt nicht Funktion: Alle lokalen Felder sind kleiner als %d Bytes" -@@ -13051,9 +13026,9 @@ - msgstr "verify_flow_info gescheitert" - - #: cfghooks.c:293 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#, gcc-internal-format, gfc-internal-format - msgid "%s does not support dump_bb_for_graph" --msgstr "%s unterstützt nicht duplicate_block" -+msgstr "%s unterstützt nicht dump_bb_for_graph" - - #: cfghooks.c:330 - #, gcc-internal-format, gfc-internal-format -@@ -13156,24 +13131,24 @@ - msgstr "Größe der Schleife %d sollte %d sein, nicht %d" - - #: cfgloop.c:1363 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#, gcc-internal-format, gfc-internal-format - msgid "loop with header %d not in loop tree" --msgstr "Kopieren des Schleifenkopfes auf Bäumen einschalten" -+msgstr "Schleife mit Kopf %d nicht in Schleifenbaum" - - #: cfgloop.c:1380 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#, gcc-internal-format, gfc-internal-format - msgid "bb %d does not belong to loop %d" - msgstr "BB %d gehört nicht zur Schleife %d" - - #: cfgloop.c:1392 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#, gcc-internal-format, gfc-internal-format - msgid "bb %d has father loop %d, should be loop %d" --msgstr "Größe der Schleife %d sollte %d sein, nicht %d" -+msgstr "BB %d hat Vaterschleife %d, sollte Schleife %d sein" - - #: cfgloop.c:1409 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "loop %d%'s header is not a loop header" --msgstr "Kopf der Schleife %d hat nicht genau 2 Einträge" -+msgstr "Kopf der Schleife %d ist kein Schleifenkopf" - - #: cfgloop.c:1415 - #, gcc-internal-format -@@ -13181,14 +13156,14 @@ - msgstr "Kopf der Schleife %d hat nicht genau 2 Einträge" - - #: cfgloop.c:1422 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "loop %d%'s latch does not have an edge to its header" --msgstr "Falle der Schleife %d hat nicht den Kopf als Nachfolger" -+msgstr "Falle der Schleife %d hat keine Kante zu ihrem Kopf" - - #: cfgloop.c:1427 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "loop %d%'s latch is not dominated by its header" --msgstr "Falle der Schleife %d hat nicht den Kopf als Nachfolger" -+msgstr "Falle der Schleife %d wird nicht durch ihren Kopf bestimmt" - - #: cfgloop.c:1435 - #, gcc-internal-format -@@ -13270,162 +13245,162 @@ - msgid "%d exits recorded for loop %d (having %d exits)" - msgstr "%d Ausgänge für Schleife %d (mit %d Ausgängen) aufgezeichnet" - --#: cfgrtl.c:2092 -+#: cfgrtl.c:2090 - #, gcc-internal-format, gfc-internal-format - msgid "BB_RTL flag not set for block %d" - msgstr "Kennzeichen BB_RTL ist für Block %d nicht gesetzt" - --#: cfgrtl.c:2099 -+#: cfgrtl.c:2097 - #, gcc-internal-format, gfc-internal-format - msgid "insn %d basic block pointer is %d, should be %d" - msgstr "Basisblockzeiger des Befehls %d ist %d, sollte %d sein" - --#: cfgrtl.c:2110 -+#: cfgrtl.c:2108 - #, gcc-internal-format, gfc-internal-format - msgid "insn %d in header of bb %d has non-NULL basic block" - msgstr "Befehl %d im Kopf des Basisblockes %d hat Nicht-NULL als Basisblock" - --#: cfgrtl.c:2118 -+#: cfgrtl.c:2116 - #, gcc-internal-format, gfc-internal-format - msgid "insn %d in footer of bb %d has non-NULL basic block" - msgstr "Befehl %d am Ende des Basisblocks %d hat Nicht-NULL als Basisblock" - --#: cfgrtl.c:2141 -+#: cfgrtl.c:2139 - #, gcc-internal-format - msgid "verify_flow_info: REG_BR_PROB does not match cfg %wi %i" - msgstr "verify_flow_info: REG_BR_PROB passt nicht zu cfg %wi %i" - --#: cfgrtl.c:2160 -+#: cfgrtl.c:2158 - #, gcc-internal-format - msgid "EDGE_CROSSING incorrectly set across same section" - msgstr "EDGE_CROSSING falsch gesetzt im selben Abschnitt" - --#: cfgrtl.c:2165 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#: cfgrtl.c:2163 -+#, gcc-internal-format, gfc-internal-format - msgid "fallthru edge crosses section boundary in bb %i" --msgstr "Fall-Through-Kante überschreitet Abschnittsgrenze (bb %i)" -+msgstr "Fall-Through-Kante überschreitet Abschnittsgrenze in BB %i" - --#: cfgrtl.c:2171 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#: cfgrtl.c:2169 -+#, gcc-internal-format, gfc-internal-format - msgid "EH edge crosses section boundary in bb %i" --msgstr "EH-Kante überschneidet Abschnittsgrenze (bb %i)" -+msgstr "EH-Kante überschneidet Abschnittsgrenze in BB %i" - --#: cfgrtl.c:2178 -+#: cfgrtl.c:2176 - #, gcc-internal-format - msgid "EDGE_CROSSING missing across section boundary" - msgstr "EDGE_CROSSING fehlt bei Übertretung von Abschnittsgrenze" - --#: cfgrtl.c:2205 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#: cfgrtl.c:2203 -+#, gcc-internal-format, gfc-internal-format - msgid "missing REG_EH_REGION note at the end of bb %i" - msgstr "fehlender Vermerk von REG_EH_REGION am Ende vom bb %i" - --#: cfgrtl.c:2210 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#: cfgrtl.c:2208 -+#, gcc-internal-format, gfc-internal-format - msgid "too many exception handling edges in bb %i" --msgstr "zu viele abgehende Zweig-Kanten vom bb %i" -+msgstr "zu viele Ausnahmebehandlungskanten in BB %i" - --#: cfgrtl.c:2218 -+#: cfgrtl.c:2216 - #, gcc-internal-format, gfc-internal-format - msgid "too many outgoing branch edges from bb %i" - msgstr "zu viele abgehende Zweig-Kanten vom bb %i" - --#: cfgrtl.c:2223 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#: cfgrtl.c:2221 -+#, gcc-internal-format, gfc-internal-format - msgid "fallthru edge after unconditional jump in bb %i" --msgstr "Fallthru-Kante nach unbedingtem Sprung %i" -+msgstr "Fallthru-Kante nach bedingungslosem Sprung in BB %i" - --#: cfgrtl.c:2228 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#: cfgrtl.c:2226 -+#, gcc-internal-format, gfc-internal-format - msgid "wrong number of branch edges after unconditional jump in bb %i" --msgstr "falsche Anzahl der Zweig-Kanten nach unbedingtem Sprung %i" -+msgstr "falsche Anzahl der Zweig-Kanten nach unbedingtem Sprung in BB %i" - --#: cfgrtl.c:2235 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#: cfgrtl.c:2233 -+#, gcc-internal-format, gfc-internal-format - msgid "wrong amount of branch edges after conditional jump in bb %i" --msgstr "falsche Summe der Zweig-Kanten nach bedingtem Sprung %i" -+msgstr "falsche Anzahl der Zweig-Kanten nach bedingtem Sprung in BB %i" - --#: cfgrtl.c:2241 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#: cfgrtl.c:2239 -+#, gcc-internal-format, gfc-internal-format - msgid "abnormal call edges for non-call insn in bb %i" --msgstr "Ruf-Kanten für Nicht-Aufruf-Befehl im bb %i" -+msgstr "unpassende Ruf-Kanten für Nicht-Aufruf-Anweisung in BB %i" - --#: cfgrtl.c:2246 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#: cfgrtl.c:2244 -+#, gcc-internal-format, gfc-internal-format - msgid "sibcall edges for non-call insn in bb %i" --msgstr "Ruf-Kanten für Nicht-Aufruf-Befehl im bb %i" -+msgstr "Sibcall-Kanten für Nicht-Aufruf-Befehl in BB %i" - --#: cfgrtl.c:2256 -+#: cfgrtl.c:2254 - #, gcc-internal-format, gfc-internal-format - msgid "abnormal edges for no purpose in bb %i" --msgstr "abnormale Kanten ohne Zweck in bb %i" -+msgstr "abnormale Kanten ohne Zweck in BB %i" - --#: cfgrtl.c:2268 -+#: cfgrtl.c:2266 - #, gcc-internal-format, gfc-internal-format - msgid "insn %d inside basic block %d but block_for_insn is NULL" - msgstr "Befehl %d innerhalb des Basis-Blockes %d, aber block_for_insn ist NULL" - --#: cfgrtl.c:2272 -+#: cfgrtl.c:2270 - #, gcc-internal-format, gfc-internal-format - msgid "insn %d inside basic block %d but block_for_insn is %i" - msgstr "Befehl %d innerhalb des Basis-Blockes %d, aber block_for_insn ist %i" - --#: cfgrtl.c:2286 cfgrtl.c:2296 -+#: cfgrtl.c:2284 cfgrtl.c:2294 - #, gcc-internal-format, gfc-internal-format - msgid "NOTE_INSN_BASIC_BLOCK is missing for block %d" - msgstr "NOTE_INSN_BASIC_BLOCK fehlt für Block %d" - --#: cfgrtl.c:2309 -+#: cfgrtl.c:2307 - #, gcc-internal-format, gfc-internal-format - msgid "NOTE_INSN_BASIC_BLOCK %d in middle of basic block %d" - msgstr "NOTE_INSN_BASIC_BLOCK %d in der Mitte des Basis-Blocks %d" - --#: cfgrtl.c:2319 -+#: cfgrtl.c:2317 - #, gcc-internal-format, gfc-internal-format - msgid "in basic block %d:" - msgstr "im Basis-Block %d:" - --#: cfgrtl.c:2371 cfgrtl.c:2461 -+#: cfgrtl.c:2369 cfgrtl.c:2459 - #, gcc-internal-format, gfc-internal-format - msgid "insn %d outside of basic blocks has non-NULL bb field" - msgstr "Befehl %d außerhalb eines Basis-Blockes hat Nicht-NULL als Basisblockfeld" - --#: cfgrtl.c:2379 -+#: cfgrtl.c:2377 - #, gcc-internal-format, gfc-internal-format - msgid "end insn %d for block %d not found in the insn stream" - msgstr "Ende-Befehl %d für Block %d nicht im Befehlsstrom gefunden" - --#: cfgrtl.c:2392 -+#: cfgrtl.c:2390 - #, gcc-internal-format, gfc-internal-format - msgid "insn %d is in multiple basic blocks (%d and %d)" - msgstr "Befehl %d ist in mehreren Basisblöcken (%d und %d)" - --#: cfgrtl.c:2404 -+#: cfgrtl.c:2402 - #, gcc-internal-format, gfc-internal-format - msgid "head insn %d for block %d not found in the insn stream" - msgstr "Kopf-Befehl %d für Block %d nicht im Befehlsstrom gefunden" - --#: cfgrtl.c:2421 -+#: cfgrtl.c:2419 - #, gcc-internal-format, gfc-internal-format - msgid "missing barrier after block %i" - msgstr "fehlende Sperre nach Block %i" - --#: cfgrtl.c:2437 -+#: cfgrtl.c:2435 - #, gcc-internal-format, gfc-internal-format - msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i" - msgstr "verify_flow_info: Falsche Blöcke für »fallthru« %i->%i" - --#: cfgrtl.c:2446 -+#: cfgrtl.c:2444 - #, gcc-internal-format, gfc-internal-format - msgid "verify_flow_info: Incorrect fallthru %i->%i" - msgstr "verify_flow_info: Falsches »fallthru« %i->%i" - --#: cfgrtl.c:2479 -+#: cfgrtl.c:2477 - #, gcc-internal-format - msgid "basic blocks not laid down consecutively" - msgstr "Basis-Blöcke sind nicht fortlaufend" - --#: cfgrtl.c:2516 -+#: cfgrtl.c:2514 - #, gcc-internal-format, gfc-internal-format - msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)" - msgstr "Anzahl der bb-Vermerke in Befehlskette (%d) != n_basic_blocks (%d)" -@@ -13461,9 +13436,9 @@ - msgstr "Ausführungszähler ist negativ" - - #: cgraph.c:2328 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "inline clone in same comdat group list" --msgstr "Knoten ist allein in einer Comdat-Gruppe" -+msgstr "»inline«-Clone in gleicher Comdat-Gruppenliste" - - #: cgraph.c:2333 - #, gcc-internal-format -@@ -13476,9 +13451,9 @@ - msgstr "Inline-Kopie mit Adresse genommen" - - #: cgraph.c:2343 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "inline clone is forced to output" --msgstr "Inline-Kopie erforderlich" -+msgstr "Ausgabe für Inline-Kopie erzwungen" - - #: cgraph.c:2350 - #, gcc-internal-format, gfc-internal-format -@@ -13656,9 +13631,9 @@ - msgstr "" - - #: cgraphunit.c:1127 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%q+D aliased declaration" --msgstr "%q+D vor Deklaration verwendet" -+msgstr "Alias-Deklaration %q+D" - - #: cgraphunit.c:1199 - #, gcc-internal-format -@@ -13695,7 +13670,7 @@ - msgid "no arguments" - msgstr "Keine Argumente" - --#: collect2.c:1284 opts.c:794 -+#: collect2.c:1284 opts.c:797 - #, gcc-internal-format - msgid "LTO support has not been enabled in this configuration" - msgstr "LTO-Unterstützung wurde in dieser Konfiguration nicht aktiviert" -@@ -13750,12 +13725,12 @@ - msgid "cannot find '%s'" - msgstr "»%s« kann nicht gefunden werden" - --#: collect2.c:1921 collect2.c:2448 collect2.c:2644 gcc.c:2749 -+#: collect2.c:1921 collect2.c:2448 collect2.c:2644 gcc.c:2750 - #, gcc-internal-format - msgid "pex_init failed: %m" - msgstr "pex_init gescheitert: %m" - --#: collect2.c:1930 collect2.c:2457 collect2.c:2652 gcc.c:7188 -+#: collect2.c:1930 collect2.c:2457 collect2.c:2652 gcc.c:7191 - #, gcc-internal-format - msgid "%s: %m" - msgstr "%s: %m" -@@ -13995,7 +13970,7 @@ - msgid "global constructors not supported on this target" - msgstr "globale Konstruktoren werden für dieses Ziel nicht unterstützt" - --#: diagnostic.c:1145 -+#: diagnostic.c:1148 - #, gcc-internal-format, gfc-internal-format - msgid "in %s, at %s:%d" - msgstr "in %s, bei %s:%d" -@@ -14021,14 +13996,14 @@ - msgstr "unbekannte Option %q.*s in %<-fdump-%s%> wird ignoriert" - - #: dumpfile.c:831 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "unknown option %q.*s in %<-fopt-info-%s%>" --msgstr "unbekannte Option %q.*s in %<-fdump-%s%> wird ignoriert" -+msgstr "unbekannte Option %q.*s in %<-fopt-info-%s%>" - - #: dumpfile.c:862 - #, gcc-internal-format - msgid "ignoring possibly conflicting option %<-fopt-info-%s%>" --msgstr "" -+msgstr "möglicherweise in Konflikt stehende Option %<-fopt-info-%s%> wird ignoriert" - - #: dwarf2out.c:1034 - #, gcc-internal-format -@@ -14040,22 +14015,22 @@ - msgid "non-delegitimized UNSPEC %s (%d) found in variable location" - msgstr "Nicht-Delegitimiertes UNSPEC %s (%d) am Variablenort gefunden" - --#: emit-rtl.c:2612 -+#: emit-rtl.c:2616 - #, gcc-internal-format - msgid "invalid rtl sharing found in the insn" - msgstr "ungültige gemeinsame rtl-Benutzung in Befehl gefunden" - --#: emit-rtl.c:2614 -+#: emit-rtl.c:2618 - #, gcc-internal-format - msgid "shared rtx" - msgstr "Gemeinsames rtx" - --#: emit-rtl.c:2616 -+#: emit-rtl.c:2620 - #, gcc-internal-format - msgid "internal consistency failure" - msgstr "internes Konsistenzproblem" - --#: emit-rtl.c:3741 -+#: emit-rtl.c:3749 - #, gcc-internal-format - msgid "ICE: emit_insn used where emit_jump_insn needed:\n" - msgstr "ICE: emit_insn verwendet, wo emit_jump_insn erforderlich:\n" -@@ -14065,57 +14040,57 @@ - msgid "abort in %s, at %s:%d" - msgstr "Abbruch in %s, bei %s:%d" - --#: except.c:2026 -+#: except.c:2075 - #, gcc-internal-format - msgid "argument of %<__builtin_eh_return_regno%> must be constant" - msgstr "Argument für »__builtin_eh_return_regno« muss konstant sein" - --#: except.c:2163 -+#: except.c:2212 - #, gcc-internal-format - msgid "__builtin_eh_return not supported on this target" - msgstr "__builtin_eh_return für dieses Ziel nicht unterstützt" - --#: except.c:3222 except.c:3247 -+#: except.c:3271 except.c:3296 - #, gcc-internal-format, gfc-internal-format - msgid "region_array is corrupted for region %i" - msgstr "region_array ist für Region %i beschädigt" - --#: except.c:3235 except.c:3266 -+#: except.c:3284 except.c:3315 - #, gcc-internal-format, gfc-internal-format - msgid "lp_array is corrupted for lp %i" - msgstr "lp_array ist für lp %i beschädigt" - --#: except.c:3252 -+#: except.c:3301 - #, gcc-internal-format, gfc-internal-format - msgid "outer block of region %i is wrong" - msgstr "äußerer Block der Region %i ist falsch" - --#: except.c:3257 -+#: except.c:3306 - #, gcc-internal-format, gfc-internal-format - msgid "negative nesting depth of region %i" - msgstr "negative Verschachtelungstiefe der Region %i" - --#: except.c:3271 -+#: except.c:3320 - #, gcc-internal-format, gfc-internal-format - msgid "region of lp %i is wrong" - msgstr "Region von lp %i ist falsch" - --#: except.c:3298 -+#: except.c:3347 - #, gcc-internal-format, gfc-internal-format - msgid "tree list ends on depth %i" - msgstr "Baumliste endet bei Tiefe %i" - --#: except.c:3303 -+#: except.c:3352 - #, gcc-internal-format - msgid "region_array does not match region_tree" - msgstr "region_array passt nicht zum region_tree" - --#: except.c:3308 -+#: except.c:3357 - #, gcc-internal-format - msgid "lp_array does not match region_tree" - msgstr "lp_array passt nicht zum region_tree" - --#: except.c:3315 -+#: except.c:3364 - #, gcc-internal-format - msgid "verify_eh_tree failed" - msgstr "verify_eh_tree gescheitert" -@@ -14155,12 +14130,12 @@ - msgid "local frame unavailable (naked function?)" - msgstr "lokaler Rahmen nicht verfügbar (nackte Funktion?)" - --#: expr.c:10191 -+#: expr.c:10192 - #, gcc-internal-format - msgid "%Kcall to %qs declared with attribute error: %s" - msgstr "%KAufruf von %qs mit Attributfehler deklariert: %s" - --#: expr.c:10198 -+#: expr.c:10199 - #, gcc-internal-format - msgid "%Kcall to %qs declared with attribute warning: %s" - msgstr "%KAufruf von %qs mit Attributwarnung deklariert: %s" -@@ -14195,47 +14170,47 @@ - msgid "assuming signed overflow does not occur when negating a division" - msgstr "Annahme, dass vorzeichenbehafteter Überlauf nicht auftritt, wenn Division negiert wird" - --#: fold-const.c:3437 fold-const.c:3449 -+#: fold-const.c:3450 fold-const.c:3462 - #, gcc-internal-format, gfc-internal-format - msgid "comparison is always %d due to width of bit-field" - msgstr "Vergleich ist immer %d wegen Breite des Bitfeldes" - --#: fold-const.c:4849 tree-ssa-reassoc.c:1943 -+#: fold-const.c:4862 tree-ssa-reassoc.c:1944 - #, gcc-internal-format - msgid "assuming signed overflow does not occur when simplifying range test" - msgstr "Annahme, dass vorzeichenbehafteter Überlauf nicht auftritt, wenn Bereichsprüfung vereinfacht wird" - --#: fold-const.c:5285 fold-const.c:5299 -+#: fold-const.c:5298 fold-const.c:5312 - #, gcc-internal-format, gfc-internal-format - msgid "comparison is always %d" - msgstr "Vergleich ist immer %d" - --#: fold-const.c:5432 -+#: fold-const.c:5445 - #, gcc-internal-format - msgid "% of unmatched not-equal tests is always 1" - msgstr "»oder« nicht passender Ungleichheits-Tests ist immer 1" - --#: fold-const.c:5437 -+#: fold-const.c:5450 - #, gcc-internal-format - msgid "% of mutually exclusive equal-tests is always 0" - msgstr "»und« sich gegenseitig ausschließender Gleichheits-Tests ist immer 0" - --#: fold-const.c:8729 -+#: fold-const.c:8742 - #, gcc-internal-format - msgid "assuming signed overflow does not occur when reducing constant in comparison" - msgstr "Annahme, dass vorzeichenbehafteter Überlauf nicht auftritt, wenn Konstante in Vergleich verringert wird" - --#: fold-const.c:8887 -+#: fold-const.c:8900 - #, gcc-internal-format - msgid "assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C1 +- C2" - msgstr "Annahme, dass vorzeichenbehafteter Überlauf nicht auftritt, wenn »X +- C1 cmp C2« in »X cmp C1 +- C2« geändert wird" - --#: fold-const.c:9150 -+#: fold-const.c:9163 - #, gcc-internal-format - msgid "assuming signed overflow does not occur when combining constants around a comparison" - msgstr "Annahme, dass vorzeichenbehafteter Überlauf nicht auftritt, wenn Konstanten um einen Vergleich kombiniert werden" - --#: fold-const.c:14564 -+#: fold-const.c:14577 - #, gcc-internal-format - msgid "fold check: original tree changed by fold" - msgstr "Faltungstest: ursprünglicher Baum durch Faltung geändert" -@@ -14260,142 +14235,142 @@ - msgid "argument %q+D might be clobbered by % or %" - msgstr "Argument %q+D könnte von »longjmp« oder »vfork« zerstört werden" - --#: function.c:4631 -+#: function.c:4620 - #, gcc-internal-format - msgid "function returns an aggregate" - msgstr "Funktion gibt Aggregat zurück" - --#: function.c:4993 -+#: function.c:4982 - #, gcc-internal-format - msgid "unused parameter %q+D" - msgstr "unbenutzter Parameter %q+D" - --#: gcc.c:1804 gcc.c:1824 -+#: gcc.c:1805 gcc.c:1825 - #, gcc-internal-format, gfc-internal-format - msgid "specs %%include syntax malformed after %ld characters" - msgstr "falsche %%include-Syntax für Spezifikationen nach %ld Zeichen" - --#: gcc.c:1850 gcc.c:1859 gcc.c:1869 gcc.c:1879 -+#: gcc.c:1851 gcc.c:1860 gcc.c:1870 gcc.c:1880 - #, gcc-internal-format, gfc-internal-format - msgid "specs %%rename syntax malformed after %ld characters" - msgstr "falsche %%rename-Syntax für Spezifikationen nach %ld Zeichen" - --#: gcc.c:1889 -+#: gcc.c:1890 - #, gcc-internal-format, gfc-internal-format - msgid "specs %s spec was not found to be renamed" - msgstr "keine %s-Spezifikation zum Umbenennen gefunden" - --#: gcc.c:1896 -+#: gcc.c:1897 - #, gcc-internal-format - msgid "%s: attempt to rename spec %qs to already defined spec %qs" - msgstr "%s: Versuch, Spezifikation %qs in bereits definierte Spezifikation %qs umzubenennen" - --#: gcc.c:1917 -+#: gcc.c:1918 - #, gcc-internal-format, gfc-internal-format - msgid "specs unknown %% command after %ld characters" - msgstr "Spezifikation: unbekannter %%-Befehl nach %ld Zeichen" - --#: gcc.c:1928 gcc.c:1941 -+#: gcc.c:1929 gcc.c:1942 - #, gcc-internal-format, gfc-internal-format - msgid "specs file malformed after %ld characters" - msgstr "Fehler in Spezifikationsdatei nach %ld Zeichen" - --#: gcc.c:1993 -+#: gcc.c:1994 - #, gcc-internal-format - msgid "spec file has no spec for linking" - msgstr "Spezifikationsdatei hat keine Spezifikation zum Binden" - --#: gcc.c:2538 -+#: gcc.c:2539 - #, gcc-internal-format - msgid "system path %qs is not absolute" - msgstr "System-Pfad %qs ist nicht absolut" - --#: gcc.c:2626 -+#: gcc.c:2627 - #, gcc-internal-format - msgid "-pipe not supported" - msgstr "-pipe wird nicht unterstützt" - --#: gcc.c:2788 -+#: gcc.c:2789 - #, gcc-internal-format - msgid "failed to get exit status: %m" - msgstr "Ende-Status konnte nicht ermittelt werden: %m" - --#: gcc.c:2794 -+#: gcc.c:2795 - #, gcc-internal-format - msgid "failed to get process times: %m" - msgstr "Verarbeitungszeiten konnten nicht ermittelt werden: %m" - --#: gcc.c:2820 -+#: gcc.c:2821 - #, gcc-internal-format, gfc-internal-format - msgid "%s (program %s)" - msgstr "%s (Programm %s)" - --#: gcc.c:3251 opts-common.c:986 opts-common.c:1058 -+#: gcc.c:3252 opts-common.c:1019 opts-common.c:1091 - #, gcc-internal-format - msgid "unrecognized command line option %qs" - msgstr "nicht erkannte Kommandozeilenoption %qs" - --#: gcc.c:3506 -+#: gcc.c:3507 - #, gcc-internal-format - msgid "%qs is an unknown -save-temps option" - msgstr "%qs ist eine unbekannte Option für -save-temps" - --#: gcc.c:3967 -+#: gcc.c:3968 - #, gcc-internal-format - msgid "-pipe ignored because -save-temps specified" - msgstr "-pipe ignoriert, da -save-temps angegeben" - --#: gcc.c:4055 -+#: gcc.c:4056 - #, gcc-internal-format - msgid "%<-x %s%> after last input file has no effect" - msgstr "%<-x %s%> hinter letzter Eingabedatei hat keine Wirkung" - --#: gcc.c:4217 -+#: gcc.c:4218 - #, gcc-internal-format - msgid "unable to locate default linker script %qs in the library search paths" - msgstr "Standard-Linkerscript %qs kann nicht in den Bibliotheks-Suchpfaden gefunden werden" - --#: gcc.c:4421 -+#: gcc.c:4422 - #, gcc-internal-format - msgid "switch %qs does not start with %<-%>" - msgstr "Schalter %qs beginnt nicht mit %<-%>" - --#: gcc.c:4424 -+#: gcc.c:4425 - #, gcc-internal-format - msgid "spec-generated switch is just %<-%>" - msgstr "aus Spezifikation erzeugtes switch ist nur %<-%>" - --#: gcc.c:4515 -+#: gcc.c:4516 - #, gcc-internal-format, gfc-internal-format - msgid "could not open temporary response file %s" - msgstr "temporäre Antwortdatei %s konnte nicht geöffnet werden" - --#: gcc.c:4521 -+#: gcc.c:4522 - #, gcc-internal-format, gfc-internal-format - msgid "could not write to temporary response file %s" - msgstr "in temporäre Antwortdatei %s konnte nicht geschrieben werden" - --#: gcc.c:4527 -+#: gcc.c:4528 - #, gcc-internal-format, gfc-internal-format - msgid "could not close temporary response file %s" - msgstr "temporäre Antwortdatei %s konnte nicht geschlossen werden" - --#: gcc.c:4650 -+#: gcc.c:4651 - #, gcc-internal-format - msgid "spec %qs invalid" - msgstr "Spezifikation %qs ist ungültig" - --#: gcc.c:4799 -+#: gcc.c:4800 - #, gcc-internal-format - msgid "spec %qs has invalid %<%%0%c%>" - msgstr "Spezifikation %qs hat ungültiges %<%%0%c%>" - --#: gcc.c:5118 -+#: gcc.c:5119 - #, gcc-internal-format - msgid "spec %qs has invalid %<%%W%c%>" - msgstr "Spezifikation %qs hat ungültiges %<%%W%c%>" - --#: gcc.c:5140 -+#: gcc.c:5141 - #, gcc-internal-format - msgid "spec %qs has invalid %<%%x%c%>" - msgstr "Spezifikation %qs hat ungültiges %<%%x%c%>" -@@ -14403,223 +14378,223 @@ - #. Catch the case where a spec string contains something like - #. '%{foo:%*}'. i.e. there is no * in the pattern on the left - #. hand side of the :. --#: gcc.c:5341 -+#: gcc.c:5342 - #, gcc-internal-format - msgid "spec failure: %<%%*%> has not been initialized by pattern match" - msgstr "Spezifikationsfehler: %<%%*%> wurde nicht durch Mustererkennung initialisiert" - --#: gcc.c:5384 -+#: gcc.c:5385 - #, gcc-internal-format - msgid "spec failure: unrecognized spec option %qc" - msgstr "Spezifikationsfehler: nicht erkannte Spezifikationsoption »%c«" - --#: gcc.c:5446 -+#: gcc.c:5447 - #, gcc-internal-format - msgid "unknown spec function %qs" - msgstr "unbekannte Spezifikationsfunktion %qs" - --#: gcc.c:5476 -+#: gcc.c:5477 - #, gcc-internal-format - msgid "error in args to spec function %qs" - msgstr "Fehler in Argumenten für Spezifikationsfunktion %qs" - --#: gcc.c:5527 -+#: gcc.c:5528 - #, gcc-internal-format - msgid "malformed spec function name" - msgstr "schlechter Name für Spezifikationsfunktion" - - #. ) --#: gcc.c:5530 -+#: gcc.c:5531 - #, gcc-internal-format - msgid "no arguments for spec function" - msgstr "keine Argumente für Spezifikationsfunktion" - --#: gcc.c:5549 -+#: gcc.c:5550 - #, gcc-internal-format - msgid "malformed spec function arguments" - msgstr "schlechte Argumente für Spezifikationsfunktion" - --#: gcc.c:5810 -+#: gcc.c:5811 - #, gcc-internal-format - msgid "braced spec %qs is invalid at %qc" - msgstr "geschweift geklammerte Spezifikation %qs ist bei %qc ungültig" - --#: gcc.c:5898 -+#: gcc.c:5899 - #, gcc-internal-format - msgid "braced spec body %qs is invalid" - msgstr "geschweift geklammerter Spezifikationskörper %qs ist ungültig" - --#: gcc.c:6151 -+#: gcc.c:6152 - #, gcc-internal-format, gfc-internal-format - msgid "%s: could not determine length of compare-debug file %s" - msgstr "%s: Größe der Vergleichs-Prüfdatei %s konnte nicht ermittelt werden" - --#: gcc.c:6162 -+#: gcc.c:6163 - #, gcc-internal-format, gfc-internal-format - msgid "%s: -fcompare-debug failure (length)" - msgstr "%s: Fehlschlag von -fcompare-debug (Länge)" - --#: gcc.c:6172 gcc.c:6213 -+#: gcc.c:6173 gcc.c:6214 - #, gcc-internal-format, gfc-internal-format - msgid "%s: could not open compare-debug file %s" - msgstr "%s: Vergleichs-Prüfdatei %s konnte nicht geöffnet werden" - --#: gcc.c:6192 gcc.c:6229 -+#: gcc.c:6193 gcc.c:6230 - #, gcc-internal-format, gfc-internal-format - msgid "%s: -fcompare-debug failure" - msgstr "%s: Fehlschlag von -fcompare-debug" - --#: gcc.c:6304 -+#: gcc.c:6305 - #, gcc-internal-format - msgid "atexit failed" - msgstr "atexit gescheitert" - --#: gcc.c:6453 -+#: gcc.c:6454 - #, gcc-internal-format - msgid "spec failure: more than one arg to SYSROOT_SUFFIX_SPEC" - msgstr "Spezifikationsfehler: mehr als ein Argument für SYSROOT_SUFFIX_SPEC" - --#: gcc.c:6477 -+#: gcc.c:6478 - #, gcc-internal-format - msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC" - msgstr "Spezifikationsfehler: mehr als ein Argument für SYSROOT_HEADERS_SUFFIX_SPEC" - --#: gcc.c:6643 --#, fuzzy, gcc-internal-format -+#: gcc.c:6645 -+#, gcc-internal-format - msgid "unrecognized command line option %<-%s%>" --msgstr "nicht erkannte Kommandozeilenoption %<-fdump-%s%>" -+msgstr "nicht erkannte Kommandozeilenoption %<-%s%>" - - #. The error status indicates that only one set of fixed - #. headers should be built. --#: gcc.c:6729 -+#: gcc.c:6731 - #, gcc-internal-format - msgid "not configured with sysroot headers suffix" - msgstr "nicht mit sysroot-Header-Suffix konfiguriert" - --#: gcc.c:6812 -+#: gcc.c:6814 - #, gcc-internal-format - msgid "no input files" - msgstr "keine Eingabedateien" - --#: gcc.c:6861 -+#: gcc.c:6863 - #, gcc-internal-format - msgid "cannot specify -o with -c, -S or -E with multiple files" - msgstr "-o kann nicht mit -c, -S oder -E mit mehreren Dateien angegeben werden" - --#: gcc.c:6891 -+#: gcc.c:6893 - #, gcc-internal-format, gfc-internal-format - msgid "%s: %s compiler not installed on this system" - msgstr "%s: %s-Compiler ist auf diesem System nicht installiert" - --#: gcc.c:6913 -+#: gcc.c:6915 - #, gcc-internal-format - msgid "recompiling with -fcompare-debug" - msgstr "Neuübersetzung mit -fcompare-debug" - --#: gcc.c:6929 -+#: gcc.c:6931 - #, gcc-internal-format - msgid "during -fcompare-debug recompilation" - msgstr "während Neuübersetzung mit -fcompare-debug" - --#: gcc.c:6938 -+#: gcc.c:6940 - #, gcc-internal-format - msgid "comparing final insns dumps" - msgstr "Vergleich der endgültigen Answeisungslisten" - --#: gcc.c:7044 -+#: gcc.c:7046 - #, gcc-internal-format, gfc-internal-format - msgid "-fuse-linker-plugin, but %s not found" - msgstr "-fuse-linker-plugin, aber %s nicht gefunden" - --#: gcc.c:7076 -+#: gcc.c:7079 - #, gcc-internal-format, gfc-internal-format - msgid "%s: linker input file unused because linking not done" - msgstr "%s: Eingabedateien des Binders unbenutzt, da keine Bindung geschieht" - --#: gcc.c:7117 -+#: gcc.c:7120 - #, gcc-internal-format, gfc-internal-format - msgid "language %s not recognized" - msgstr "Sprache %s nicht erkannt" - --#: gcc.c:7344 -+#: gcc.c:7347 - #, gcc-internal-format - msgid "multilib spec %qs is invalid" - msgstr "Multilib-Spezifikation %qs ist ungültig" - --#: gcc.c:7538 -+#: gcc.c:7541 - #, gcc-internal-format - msgid "multilib exclusions %qs is invalid" - msgstr "Multilib-Ausschlüsse %qs sind ungültig" - --#: gcc.c:7602 --#, fuzzy, gcc-internal-format -+#: gcc.c:7605 -+#, gcc-internal-format - msgid "multilib select %qs %qs is invalid" --msgstr "Multilib-select %qs ist ungültig" -+msgstr "Multilib-select %qs %qs ist ungültig" - --#: gcc.c:7758 -+#: gcc.c:7761 - #, gcc-internal-format - msgid "multilib select %qs is invalid" - msgstr "Multilib-select %qs ist ungültig" - --#: gcc.c:7797 -+#: gcc.c:7800 - #, gcc-internal-format - msgid "multilib exclusion %qs is invalid" - msgstr "Multilib-Ausschluss %qs ist ungültig" - --#: gcc.c:8003 -+#: gcc.c:8006 - #, gcc-internal-format - msgid "environment variable %qs not defined" - msgstr "Umgebungsvariable %qs nicht definiert" - --#: gcc.c:8115 gcc.c:8120 -+#: gcc.c:8118 gcc.c:8123 - #, gcc-internal-format - msgid "invalid version number %qs" - msgstr "ungültige Versionsnummer %qs" - --#: gcc.c:8163 -+#: gcc.c:8166 - #, gcc-internal-format, gfc-internal-format - msgid "too few arguments to %%:version-compare" - msgstr "zu wenige Argumente für %%:version-compare" - --#: gcc.c:8169 -+#: gcc.c:8172 - #, gcc-internal-format, gfc-internal-format - msgid "too many arguments to %%:version-compare" - msgstr "zu viele Argumente für %%:version-compare" - --#: gcc.c:8210 -+#: gcc.c:8213 - #, gcc-internal-format - msgid "unknown operator %qs in %%:version-compare" - msgstr "unbekannter Operator %qs in %%:version-compare" - --#: gcc.c:8333 -+#: gcc.c:8336 - #, gcc-internal-format, gfc-internal-format - msgid "too many arguments to %%:compare-debug-dump-opt" - msgstr "zu viele Argumente für %%:version-compare" - --#: gcc.c:8405 -+#: gcc.c:8408 - #, gcc-internal-format, gfc-internal-format - msgid "too many arguments to %%:compare-debug-self-opt" - msgstr "zu viele Argumente für %%:compare-debug-self-opt" - --#: gcc.c:8440 -+#: gcc.c:8443 - #, gcc-internal-format, gfc-internal-format - msgid "too few arguments to %%:compare-debug-auxbase-opt" - msgstr "zu wenige Argumente für %%:compare-debug-auxbase-opt" - --#: gcc.c:8443 -+#: gcc.c:8446 - #, gcc-internal-format, gfc-internal-format - msgid "too many arguments to %%:compare-debug-auxbase-opt" - msgstr "zu viele Argumente für %%:compare-debug-auxbase-opt" - --#: gcc.c:8450 -+#: gcc.c:8453 - #, gcc-internal-format, gfc-internal-format - msgid "argument to %%:compare-debug-auxbase-opt does not end in .gk" - msgstr "Argument für %%:compare-debug-auxbase-opt endet nicht mit .pk" - --#: gcc.c:8524 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#: gcc.c:8527 -+#, gcc-internal-format, gfc-internal-format - msgid "too few arguments to %%:replace-extension" --msgstr "zu wenige Argumente für Funktion" -+msgstr "zu wenige Argumente für %%:replace-extension" - - #: ggc-common.c:456 ggc-common.c:464 ggc-common.c:538 ggc-common.c:557 - #: ggc-page.c:2311 ggc-page.c:2342 ggc-page.c:2349 -@@ -14637,13 +14612,13 @@ - msgid "can%'t write padding to PCH file: %m" - msgstr "Auffüllung für PCH-Datei kann nicht geschrieben werden: %m" - --#: ggc-common.c:615 ggc-common.c:623 ggc-common.c:630 ggc-common.c:633 --#: ggc-common.c:643 ggc-common.c:646 ggc-page.c:2439 -+#: ggc-common.c:681 ggc-common.c:689 ggc-common.c:696 ggc-common.c:699 -+#: ggc-common.c:709 ggc-common.c:712 ggc-page.c:2439 - #, gcc-internal-format - msgid "can%'t read PCH file: %m" - msgstr "PCH-Datei kann nicht gelesen werden: %m" - --#: ggc-common.c:638 -+#: ggc-common.c:704 - #, gcc-internal-format - msgid "had to relocate PCH" - msgstr "PCH musste verschoben werden" -@@ -14795,7 +14770,7 @@ - #. Fatal error here. We do not want to support compiling ltrans units with - #. different version of compiler or different flags than the WPA unit, so - #. this should never happen. --#: ipa-reference.c:1148 -+#: ipa-reference.c:1146 - #, gcc-internal-format - msgid "ipa reference summary is missing in ltrans unit" - msgstr "IPA-Referenzzusammenfassung fehlt in ltrans-Einheit" -@@ -14816,14 +14791,14 @@ - msgstr "inkonsistente Operandenbedingungen in einem %" - - #: lra-constraints.c:3438 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#, gcc-internal-format, gfc-internal-format - msgid "Maximum number of LRA constraint passes is achieved (%d)\n" --msgstr "Höchstzahl von bedingten Speicherpaaren, die ausgegeben werden können" -+msgstr "Höchstzahl der Durchläufe für LRA-Bedingungen ist erreicht (%d)\n" - - #: lra-constraints.c:3537 - #, gcc-internal-format, gfc-internal-format - msgid "Max. number of generated reload insns per insn is achieved (%d)\n" --msgstr "" -+msgstr "Höchstzahl der erzeugten Neuladeanweisungen pro Anweisung ist erreicht (%d)\n" - - #: lto-cgraph.c:976 - #, gcc-internal-format, gfc-internal-format -@@ -14987,27 +14962,27 @@ - msgid "invalid branch to/from an OpenMP structured block" - msgstr "ungültiger Zweig zu/von strukturiertem OpenMP-Block" - --#: opts-common.c:997 -+#: opts-common.c:1030 - #, gcc-internal-format - msgid "command line option %qs is not supported by this configuration" - msgstr "Kommandozeilenoption %qs wird von dieser Konfiguration nicht unterstützt" - --#: opts-common.c:1007 -+#: opts-common.c:1040 - #, gcc-internal-format - msgid "missing argument to %qs" - msgstr "fehlendes Argument für %qs" - --#: opts-common.c:1013 -+#: opts-common.c:1046 - #, gcc-internal-format - msgid "argument to %qs should be a non-negative integer" - msgstr "Argument von %qs sollte eine nicht-negative Ganzzahl sein" - --#: opts-common.c:1028 -+#: opts-common.c:1061 - #, gcc-internal-format - msgid "unrecognized argument in option %qs" - msgstr "nicht erkanntes Kommandozeilenargument in Option %qs" - --#: opts-common.c:1044 -+#: opts-common.c:1077 - #, gcc-internal-format - msgid "valid arguments to %qs are: %s" - msgstr "gültige Argumente für %qs sind: %s" -@@ -15034,9 +15009,9 @@ - msgstr "nicht erkannte Kommandozeilenoption %<-fdump-%s%>" - - #: opts-global.c:394 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "unrecognized command line option %<-fopt-info-%s%>" --msgstr "nicht erkannte Kommandozeilenoption %<-fdump-%s%>" -+msgstr "nicht erkannte Kommandozeilenoption %<-fopt-info-%s%>" - - #: opts-global.c:415 opts-global.c:423 - #, gcc-internal-format -@@ -15063,137 +15038,137 @@ - msgid "%<-femit-struct-debug-detailed=dir:...%> must allow at least as much as %<-femit-struct-debug-detailed=ind:...%>" - msgstr "%<-femit-struct-debug-detailed=dir:...%> muss zumindest so viel wie %<-femit-struct-debug-detailed=ind:...%> erlauben" - --#: opts.c:542 --#, fuzzy, gcc-internal-format -+#: opts.c:544 -+#, gcc-internal-format - msgid "argument to %<-O%> should be a non-negative integer, %, % or %" --msgstr "Argument von %qs sollte eine nicht-negative Ganzzahl sein" -+msgstr "Argument von %<-O%> sollte eine nicht-negative Ganzzahl, %, % oder % sein" - --#: opts.c:669 -+#: opts.c:672 - #, gcc-internal-format - msgid "section anchors must be disabled when unit-at-a-time is disabled" - msgstr "Abschnittsanker müssen ausgeschaltet sein, wenn »unit-at-a-time« ausgeschaltet ist" - --#: opts.c:673 -+#: opts.c:676 - #, gcc-internal-format - msgid "toplevel reorder must be disabled when unit-at-a-time is disabled" - msgstr "Toplevel-Neuordnung muss ausgeschaltet sein, wenn »unit-at-a-time« ausgeschaltet ist" - --#: opts.c:679 -+#: opts.c:682 - #, gcc-internal-format - msgid "transactional memory is not supported with non-call exceptions" - msgstr "transaktionsbasierter Speicher wird von Nicht-Aufruf-Ausnahmen nicht unterstützt" - --#: opts.c:694 -+#: opts.c:697 - #, gcc-internal-format - msgid "section anchors must be disabled when toplevel reorder is disabled" - msgstr "Abschnittsanker müssen ausgeschaltet sein, wenn Toplevel-Neuordnung ausgeschaltet ist" - --#: opts.c:729 config/darwin.c:3061 config/sh/sh.c:936 -+#: opts.c:732 config/darwin.c:3061 config/sh/sh.c:933 - #, gcc-internal-format - msgid "-freorder-blocks-and-partition does not work with exceptions on this architecture" - msgstr "-freorder-blocks-and-partition funktioniert auf dieser Architektur nicht mit Ausnahmen" - --#: opts.c:744 config/sh/sh.c:944 -+#: opts.c:747 config/sh/sh.c:941 - #, gcc-internal-format - msgid "-freorder-blocks-and-partition does not support unwind info on this architecture" - msgstr "-freorder-blocks-and-partition unterstützt auf dieser Architektur nicht Unwind-Info" - --#: opts.c:761 config/pa/pa.c:526 -+#: opts.c:764 config/pa/pa.c:526 - #, gcc-internal-format - msgid "-freorder-blocks-and-partition does not work on this architecture" - msgstr "-freorder-blocks-and-partition funktioniert auf dieser Architektur nicht" - --#: opts.c:797 -+#: opts.c:800 - #, gcc-internal-format - msgid "-fno-fat-lto-objects are supported only with linker plugin." - msgstr "-fno-fat-lto-objects werden nur mit Linker-Plugin unterstützt" - --#: opts.c:805 -+#: opts.c:808 - #, gcc-internal-format - msgid "only one -flto-partition value can be specified" - msgstr "für -flto-partition kann nur ein Wert angegeben werden" - --#: opts.c:816 -+#: opts.c:819 - #, gcc-internal-format - msgid "%<-fsplit-stack%> is not supported by this compiler configuration" - msgstr "%<-fsplit-stack%> wird von dieser Compilerkonfiguration nicht unterstützt" - --#: opts.c:1193 -+#: opts.c:1196 - #, gcc-internal-format - msgid "unrecognized include_flags 0x%x passed to print_specific_help" - msgstr "nicht erkanntes include_flags 0x%x an print_specific_help weitergegeben" - --#: opts.c:1373 -+#: opts.c:1376 - #, gcc-internal-format - msgid "--help argument %q.*s is ambiguous, please be more specific" - msgstr "Argument %q.*s für --help ist mehrdeutig, bitte präzisieren" - --#: opts.c:1382 -+#: opts.c:1385 - #, gcc-internal-format - msgid "unrecognized argument to --help= option: %q.*s" - msgstr "Argument %q.*s für Option --help= nicht erkannt" - --#: opts.c:1547 -+#: opts.c:1550 - #, gcc-internal-format, gfc-internal-format - msgid "structure alignment must be a small power of two, not %d" - msgstr "Strukturausrichtung muss eine kleine Zweierpotenz sein, nicht %d" - --#: opts.c:1664 -+#: opts.c:1667 - #, gcc-internal-format, gfc-internal-format - msgid "unknown stack check parameter \"%s\"" - msgstr "unbekannter Stack-Überprüfungsparameter \"%s\"" - --#: opts.c:1701 -+#: opts.c:1704 - #, gcc-internal-format, gfc-internal-format - msgid "dwarf version %d is not supported" - msgstr "Dwarf-Version %d wird nicht unterstützt" - --#: opts.c:1791 -+#: opts.c:1794 - #, gcc-internal-format, gfc-internal-format - msgid "%s: --param arguments should be of the form NAME=VALUE" - msgstr "%s: »--param«-Argumente sollten von der Form NAME=VALUE sein" - --#: opts.c:1797 -+#: opts.c:1800 - #, gcc-internal-format - msgid "invalid --param value %qs" - msgstr "ungültiger Wert für --param: %qs" - --#: opts.c:1915 -+#: opts.c:1918 - #, gcc-internal-format - msgid "target system does not support debug output" - msgstr "Zielsystem unterstützt keine Testausgaben" - --#: opts.c:1924 -+#: opts.c:1927 - #, gcc-internal-format, gfc-internal-format - msgid "debug format \"%s\" conflicts with prior selection" - msgstr "Testformat »%s« steht in Konflikt mit vorheriger Auswahl" - --#: opts.c:1940 -+#: opts.c:1943 - #, gcc-internal-format, gfc-internal-format - msgid "unrecognised debug output level \"%s\"" - msgstr "Testausgabestufe »%s« nicht erkannt" - --#: opts.c:1942 -+#: opts.c:1945 - #, gcc-internal-format, gfc-internal-format - msgid "debug output level %s is too high" - msgstr "Testausgabestufe »%s« ist zu groß" - --#: opts.c:1962 -+#: opts.c:1965 - #, gcc-internal-format - msgid "getting core file size maximum limit: %m" - msgstr "Kern-Dateigrößenlimit wird geholt: %m" - --#: opts.c:1965 -+#: opts.c:1968 - #, gcc-internal-format - msgid "setting core file size limit to maximum: %m" - msgstr "Kern-Dateigrößenlimit wird gesetzt: %m" - --#: opts.c:2010 -+#: opts.c:2013 - #, gcc-internal-format, gfc-internal-format - msgid "unrecognized gcc debugging option: %c" - msgstr "GCC-Debuggingoption nicht erkannt: %c" - --#: opts.c:2036 -+#: opts.c:2039 - #, gcc-internal-format, gfc-internal-format - msgid "-Werror=%s: no option -%s" - msgstr "-Werror=%s: Keine Option -%s" -@@ -15463,8 +15438,8 @@ - msgstr "%qs kann nicht als ein festes Register verwendet werden" - - #: reginfo.c:750 config/ia64/ia64.c:5897 config/ia64/ia64.c:5904 --#: config/pa/pa.c:428 config/pa/pa.c:435 config/sh/sh.c:9362 --#: config/sh/sh.c:9369 config/spu/spu.c:4908 config/spu/spu.c:4915 -+#: config/pa/pa.c:428 config/pa/pa.c:435 config/sh/sh.c:9359 -+#: config/sh/sh.c:9366 config/spu/spu.c:4908 config/spu/spu.c:4915 - #, gcc-internal-format, gfc-internal-format - msgid "unknown register name: %s" - msgstr "unbekannter Registername: %s" -@@ -15544,42 +15519,42 @@ - msgid "output operand is constant in %" - msgstr "Ausgabeoperand ist in % konstant" - --#: rtl.c:738 -+#: rtl.c:742 - #, gcc-internal-format, gfc-internal-format - msgid "RTL check: access of elt %d of '%s' with last elt %d in %s, at %s:%d" - msgstr "RTL-Überprüfung: Zugriff von Elt %d von »%s« mit letztem Elt %d in %s, bei %s:%d" - --#: rtl.c:748 -+#: rtl.c:752 - #, gcc-internal-format, gfc-internal-format - msgid "RTL check: expected elt %d type '%c', have '%c' (rtx %s) in %s, at %s:%d" - msgstr "RTL-Überprüfung: Elt-%d-Typ %c erwartet, haben Typ %c (rtx %s) in %s, bei %s:%d" - --#: rtl.c:758 -+#: rtl.c:762 - #, gcc-internal-format, gfc-internal-format - msgid "RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s) in %s, at %s:%d" - msgstr "RTL-Überprüfung: Elt-%d-Typ %c oder %c erwartet, haben Typ %c (rtx %s) in %s, bei %s:%d" - --#: rtl.c:767 -+#: rtl.c:771 - #, gcc-internal-format, gfc-internal-format - msgid "RTL check: expected code '%s', have '%s' in %s, at %s:%d" - msgstr "RTL-Überprüfung: Code »%s« erwartet, haben »%s« in %s, bei %s:%d" - --#: rtl.c:777 -+#: rtl.c:781 - #, gcc-internal-format, gfc-internal-format - msgid "RTL check: expected code '%s' or '%s', have '%s' in %s, at %s:%d" - msgstr "RTL-Überprüfung: Code »%s« oder »%s« erwartet, haben »%s« in %s, bei %s:%d" - --#: rtl.c:804 -+#: rtl.c:808 - #, gcc-internal-format, gfc-internal-format - msgid "RTL check: attempt to treat non-block symbol as a block symbol in %s, at %s:%d" - msgstr "RTL-Überprüfung: Versuch, Nicht-Blocksymbol als Blocksymbol in %s bei %s:%d zu verwenden" - --#: rtl.c:814 -+#: rtl.c:818 - #, gcc-internal-format, gfc-internal-format - msgid "RTL check: access of elt %d of vector with last elt %d in %s, at %s:%d" - msgstr "RTL-Überprüfung: Zugriff von Elt %d von Vektor mit letztem Elt %d in %s, bei %s:%d" - --#: rtl.c:825 -+#: rtl.c:829 - #, gcc-internal-format, gfc-internal-format - msgid "RTL flag check: %s used with unexpected rtx code '%s' in %s, at %s:%d" - msgstr "RTL-Kennzeichenüberprüfung: %s mit unerwartetem RTX-Code »%s« in %s bei %s:%d verwendet" -@@ -15760,39 +15735,39 @@ - msgstr "%D nach Referenzierung in Assemblierung umbenannt" - - #: symtab.c:586 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "function symbol is not function" --msgstr "Funktion gibt eine Funktion" -+msgstr "Funktionssymbol ist keine Funktion" - - #: symtab.c:594 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "variable symbol is not variable" --msgstr "Feld ist nicht adressierbar" -+msgstr "Variablensymbol ist keine Variable" - - #: symtab.c:600 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "node has unknown type" --msgstr "Knoten hat falsche Clone-Liste" -+msgstr "Knoten hat unbekannten Typ" - - #: symtab.c:607 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "node not found in symtab decl hashtable" --msgstr "Knoten in cgraph_hash nicht gefunden" -+msgstr "Knoten in Hashtabelle der Symtab-Deklarationen nicht gefunden" - - #: symtab.c:615 - #, gcc-internal-format - msgid "assembler name hash list corrupted" --msgstr "" -+msgstr "Namen-Hashliste des Assemblers ist beschädigt" - - #: symtab.c:628 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "node not found in symtab assembler name hash" --msgstr "Knoten in cgraph_hash nicht gefunden" -+msgstr "Knoten in Namen-Hashliste des Assemblers nicht gefunden" - - #: symtab.c:635 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "double linked list of assembler names corrupted" --msgstr "doppelt verkettete Liste des Clones ist beschädigt" -+msgstr "doppelt verkettete Liste der Assembler-Namen ist beschädigt" - - #: symtab.c:643 - #, gcc-internal-format -@@ -15802,7 +15777,7 @@ - #: symtab.c:648 - #, gcc-internal-format - msgid "mixing different types of symbol in same comdat groups is not supported" --msgstr "" -+msgstr "Mischen unterschiedlicher Symboltypen in gleichen Comdat-Gruppen wird nicht unterstützt" - - #: symtab.c:653 - #, gcc-internal-format -@@ -15815,9 +15790,9 @@ - msgstr "same_comdat_group ist keine ringförmige Liste" - - #: symtab.c:686 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "verify_symtab_node failed" --msgstr "verify_cgraph gescheitert" -+msgstr "verify_symtab_node gescheitert" - - #: targhooks.c:165 - #, gcc-internal-format -@@ -15915,9 +15890,9 @@ - msgstr "dieses Ziel unterstützt nicht %qs" - - #: toplev.c:1255 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "Graphite loop optimizations cannot be used (-fgraphite, -fgraphite-identity, -floop-block, -floop-interchange, -floop-strip-mine, -floop-parallelize-all, and -ftree-loop-linear)" --msgstr "Graphite-Schleifenoptimierungen können nicht verwendet werden (-fgraphite, -fgraphite-identity, -floop-block, -floop-flatten, -floop-interchange, -floop-strip-mine, -floop-parallelize-all und -ftree-loop-linear)" -+msgstr "Graphite-Schleifenoptimierungen können nicht verwendet werden (-fgraphite, -fgraphite-identity, -floop-block, -floop-interchange, -floop-strip-mine, -floop-parallelize-all und -ftree-loop-linear)" - - #: toplev.c:1262 - #, gcc-internal-format -@@ -16010,9 +15985,9 @@ - msgstr "Abwicklungstabellen erfordern derzeit einen Rahmenzeiger für Korrektheit" - - #: toplev.c:1547 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "-fsanitize=address not supported for this target" --msgstr "-fdata-sections wird für dieses Ziel nicht unterstützt" -+msgstr "-fsanitize=Adresse wird für dieses Ziel nicht unterstützt" - - #: toplev.c:1808 - #, gcc-internal-format -@@ -16034,7 +16009,7 @@ - msgid "% function call not within outer transaction or %" - msgstr "Funktionsaufruf von % nicht innerhalb von äußerer Transaktion oder %" - --#: trans-mem.c:676 trans-mem.c:4569 -+#: trans-mem.c:676 trans-mem.c:4570 - #, gcc-internal-format - msgid "unsafe function call %qD within atomic transaction" - msgstr "unsicherer Funktionsaufruf %qD innerhalb von atomarer Transaktion" -@@ -16049,7 +16024,7 @@ - msgid "unsafe indirect function call within atomic transaction" - msgstr "unsicherer indirekter Funktionsaufruf innerhalb von atomarer Transaktion" - --#: trans-mem.c:694 trans-mem.c:4502 -+#: trans-mem.c:694 trans-mem.c:4503 - #, gcc-internal-format - msgid "unsafe function call %qD within % function" - msgstr "unsicherer Funktionsaufruf %qD innerhalb von %-Funktion" -@@ -16064,7 +16039,7 @@ - msgid "unsafe indirect function call within % function" - msgstr "unsicherer indirekter Funktionsaufruf innerhalb von %-Funktion" - --#: trans-mem.c:719 trans-mem.c:4541 -+#: trans-mem.c:719 trans-mem.c:4542 - #, gcc-internal-format - msgid "asm not allowed in atomic transaction" - msgstr "in atomarer Transaktion ist kein asm erlaubt" -@@ -16099,7 +16074,7 @@ - msgid "outer transaction in % function" - msgstr "äußere Transaktion in %-Funktion" - --#: trans-mem.c:4169 -+#: trans-mem.c:4170 - #, gcc-internal-format - msgid "%Kasm not allowed in % function" - msgstr "%Kasm in %-Funktion ist nicht erlaubt" -@@ -16149,7 +16124,7 @@ - msgid "MODIFY_EXPR not expected while having tuples" - msgstr "MODIFY_EXPR nicht erwartet während es Tupel gibt" - --#: tree-cfg.c:2613 tree-ssa.c:879 -+#: tree-cfg.c:2613 tree-ssa.c:876 - #, gcc-internal-format - msgid "address taken, but ADDRESSABLE bit not set" - msgstr "Adresse genommen, aber ADDRESSABLE-Bit nicht gesetzt" -@@ -16340,9 +16315,9 @@ - msgstr "Vergleichsoperandentypen passen nicht" - - #: tree-cfg.c:3172 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "vector comparison returning a boolean" --msgstr "ungültiger Ergebnistyp in Vektorvergleich" -+msgstr "Vektorvergleich gibt Boolean zurück" - - #: tree-cfg.c:3186 - #, gcc-internal-format -@@ -16560,39 +16535,39 @@ - msgstr "ungültiger Operand für switch-Anweisung" - - #: tree-cfg.c:4101 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "non-integral type switch statement" --msgstr "ungültiger Operand für switch-Anweisung" -+msgstr "switch-Anweisung ohne eingebauten Typ" - - #: tree-cfg.c:4109 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "invalid default case label in switch statement" --msgstr "%-Marke nicht innerhalb einer switch-Anweisung" -+msgstr "ungültige %-Marke in switch-Anweisung" - - #: tree-cfg.c:4121 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "invalid case label in switch statement" --msgstr "case-Marke nicht innerhalb einer switch-Anweisung" -+msgstr "ungültige »case«-Marke in switch-Anweisung" - - #: tree-cfg.c:4128 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "invalid case range in switch statement" --msgstr "ungültiger Operand für switch-Anweisung" -+msgstr "ungültiger »case«-Bereich in switch-Anweisung" - - #: tree-cfg.c:4138 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "type mismatch for case label in switch statement" --msgstr "case-Marke nicht innerhalb einer switch-Anweisung" -+msgstr "unpassender Typ für »case«-Marke in switch-Anweisung" - - #: tree-cfg.c:4148 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "type precision mismatch in switch statement" --msgstr "case-Marke nicht innerhalb einer switch-Anweisung" -+msgstr "unpassende Präzision für Typ in switch-Anweisung" - - #: tree-cfg.c:4157 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "case labels not sorted in switch statement" --msgstr "case-Marke nicht innerhalb einer switch-Anweisung" -+msgstr "unsortierte case-Marken in switch-Anweisung" - - #: tree-cfg.c:4202 - #, gcc-internal-format -@@ -16634,7 +16609,7 @@ - msgid "incompatible types in PHI argument %u" - msgstr "inkompatible Typen in PHI-Argument %u" - --#: tree-cfg.c:4433 tree-cfg.c:4727 -+#: tree-cfg.c:4433 tree-cfg.c:4738 - #, gcc-internal-format - msgid "verify_gimple failed" - msgstr "verify_gimple gescheitert" -@@ -16649,272 +16624,272 @@ - msgid "location references block not in block tree" - msgstr "" - --#: tree-cfg.c:4594 -+#: tree-cfg.c:4605 - #, gcc-internal-format - msgid "gimple_bb (phi) is set to a wrong basic block" - msgstr "gimple_bb (phi) wird auf falschen Basisblock gesetzt" - --#: tree-cfg.c:4603 --#, fuzzy, gcc-internal-format -+#: tree-cfg.c:4614 -+#, gcc-internal-format - msgid "PHI node with location" --msgstr "von dieser Stelle" -+msgstr "PHI-Knoten mit Ortsangabe" - --#: tree-cfg.c:4614 tree-cfg.c:4663 -+#: tree-cfg.c:4625 tree-cfg.c:4674 - #, gcc-internal-format - msgid "incorrect sharing of tree nodes" - msgstr "falscher gemeinsame Verwendung von Baumknoten" - --#: tree-cfg.c:4622 -+#: tree-cfg.c:4633 - #, gcc-internal-format - msgid "virtual PHI with argument locations" --msgstr "" -+msgstr "virtuelles PHI mit Stellenangaben für Argumente" - --#: tree-cfg.c:4651 -+#: tree-cfg.c:4662 - #, gcc-internal-format - msgid "gimple_bb (stmt) is set to a wrong basic block" - msgstr "gimple_bb (stmt) ist auf falschen Basisblock gesetzt" - --#: tree-cfg.c:4687 -+#: tree-cfg.c:4698 - #, gcc-internal-format - msgid "in statement" - msgstr "in Anweisung" - --#: tree-cfg.c:4702 -+#: tree-cfg.c:4713 - #, gcc-internal-format - msgid "statement marked for throw, but doesn%'t" - msgstr "Anweisung für throw markiert, tut es jedoch nicht" - --#: tree-cfg.c:4709 -+#: tree-cfg.c:4720 - #, gcc-internal-format - msgid "statement marked for throw in middle of block" - msgstr "Anweisung für throw inmitten eines Blockes markiert" - --#: tree-cfg.c:4751 -+#: tree-cfg.c:4762 - #, gcc-internal-format - msgid "ENTRY_BLOCK has IL associated with it" - msgstr "ENTRY_BLOCK hat zugehörige IL" - --#: tree-cfg.c:4757 -+#: tree-cfg.c:4768 - #, gcc-internal-format - msgid "EXIT_BLOCK has IL associated with it" - msgstr "EXIT_BLOCK hat zugehörige IL" - --#: tree-cfg.c:4764 -+#: tree-cfg.c:4775 - #, gcc-internal-format, gfc-internal-format - msgid "fallthru to exit from bb %d" - msgstr "Fallthru zum Austritt von bb %d" - --#: tree-cfg.c:4788 -+#: tree-cfg.c:4799 - #, gcc-internal-format - msgid "nonlocal label " - msgstr "nichtlokale Marke " - --#: tree-cfg.c:4797 -+#: tree-cfg.c:4808 - #, gcc-internal-format - msgid "EH landing pad label " - msgstr "EH Landefeld-Marke " - --#: tree-cfg.c:4806 tree-cfg.c:4815 tree-cfg.c:4840 -+#: tree-cfg.c:4817 tree-cfg.c:4826 tree-cfg.c:4851 - #, gcc-internal-format - msgid "label " - msgstr "Marke " - --#: tree-cfg.c:4830 -+#: tree-cfg.c:4841 - #, gcc-internal-format, gfc-internal-format - msgid "control flow in the middle of basic block %d" - msgstr "Kontrollfluss inmitten des Basis-Blockes %d" - --#: tree-cfg.c:4863 -+#: tree-cfg.c:4874 - #, gcc-internal-format, gfc-internal-format - msgid "fallthru edge after a control statement in bb %d" - msgstr "Fallthru-Kante hinter einer Kontrollanweisung in bb %d" - --#: tree-cfg.c:4876 -+#: tree-cfg.c:4887 - #, gcc-internal-format, gfc-internal-format - msgid "true/false edge after a non-GIMPLE_COND in bb %d" - msgstr "Wahr/Falsch-Kante hinter einer Nicht-GIMPLE_COND in bb %d" - --#: tree-cfg.c:4899 tree-cfg.c:4921 tree-cfg.c:4938 tree-cfg.c:5007 -+#: tree-cfg.c:4910 tree-cfg.c:4932 tree-cfg.c:4949 tree-cfg.c:5018 - #, gcc-internal-format, gfc-internal-format - msgid "wrong outgoing edge flags at end of bb %d" - msgstr "Falsche ausgehende Kantenmarken am Ende des bb %d" - --#: tree-cfg.c:4909 -+#: tree-cfg.c:4920 - #, gcc-internal-format, gfc-internal-format - msgid "explicit goto at end of bb %d" - msgstr "Explizites Goto am Ende von bb %d" - --#: tree-cfg.c:4943 -+#: tree-cfg.c:4954 - #, gcc-internal-format, gfc-internal-format - msgid "return edge does not point to exit in bb %d" - msgstr "Return-Kante zeigt nicht auf Ausgang in bb %d" - --#: tree-cfg.c:4973 -+#: tree-cfg.c:4984 - #, gcc-internal-format - msgid "found default case not at the start of case vector" - msgstr "Standard-Fall nicht am Anfang des case-Vektors gefunden" - --#: tree-cfg.c:4981 -+#: tree-cfg.c:4992 - #, gcc-internal-format - msgid "case labels not sorted: " - msgstr "Case-Marken nicht sortiert: " - --#: tree-cfg.c:4998 -+#: tree-cfg.c:5009 - #, gcc-internal-format, gfc-internal-format - msgid "extra outgoing edge %d->%d" - msgstr "Zusätzliche ausgehende Kante %d->%d" - --#: tree-cfg.c:5021 -+#: tree-cfg.c:5032 - #, gcc-internal-format, gfc-internal-format - msgid "missing edge %i->%i" - msgstr "Fehlende Kante %i->%i" - --#: tree-cfg.c:7803 -+#: tree-cfg.c:7814 - #, gcc-internal-format - msgid "% function does return" - msgstr "%-Funktion kehrt zurück" - --#: tree-cfg.c:7823 -+#: tree-cfg.c:7834 - #, gcc-internal-format - msgid "control reaches end of non-void function" - msgstr "Kontrollfluss erreicht Ende von Nicht-void-Funktion" - --#: tree-cfg.c:7963 -+#: tree-cfg.c:7974 - #, gcc-internal-format - msgid "ignoring return value of %qD, declared with attribute warn_unused_result" - msgstr "Der Rückgabewert von %qD, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert" - --#: tree-cfg.c:7968 -+#: tree-cfg.c:7979 - #, gcc-internal-format - msgid "ignoring return value of function declared with attribute warn_unused_result" - msgstr "Rückgabewert der mit dem Attribut warn_unused_result definierten Funktion wird ignoriert" - - #: tree-diagnostic.c:202 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "in definition of macro %qs" --msgstr "Redefinition von %q+D" -+msgstr "in Dedefinition des Makros %qs" - - #: tree-diagnostic.c:219 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "in expansion of macro %qs" --msgstr "schlechtes existierendes Makro »%s«" -+msgstr "bei Substitution des Makros %qs" - --#: tree-eh.c:4368 -+#: tree-eh.c:4396 - #, gcc-internal-format, gfc-internal-format - msgid "BB %i has multiple EH edges" - msgstr "BB %i hat mehrere EH-Kanten" - --#: tree-eh.c:4380 -+#: tree-eh.c:4408 - #, gcc-internal-format, gfc-internal-format - msgid "BB %i can not throw but has an EH edge" - msgstr "BB %i kann nicht werfen, hat aber eine EH-Kante" - --#: tree-eh.c:4388 -+#: tree-eh.c:4416 - #, gcc-internal-format, gfc-internal-format - msgid "BB %i last statement has incorrectly set lp" - msgstr "BB %i: letzte Anweisung hat falsch gesetztes LP" - --#: tree-eh.c:4394 -+#: tree-eh.c:4422 - #, gcc-internal-format, gfc-internal-format - msgid "BB %i is missing an EH edge" - msgstr "dem BB %i fehlt eine EH-Kante" - --#: tree-eh.c:4400 -+#: tree-eh.c:4428 - #, gcc-internal-format, gfc-internal-format - msgid "Incorrect EH edge %i->%i" - msgstr "falsche EH-Kante %i->%i" - --#: tree-eh.c:4434 tree-eh.c:4453 -+#: tree-eh.c:4462 tree-eh.c:4481 - #, gcc-internal-format, gfc-internal-format - msgid "BB %i is missing an edge" - msgstr "dem BB %i fehlt eine Kante" - --#: tree-eh.c:4470 -+#: tree-eh.c:4498 - #, gcc-internal-format, gfc-internal-format - msgid "BB %i too many fallthru edges" - msgstr "BB %i hat zu viele »fallthru«-Kanten" - --#: tree-eh.c:4479 -+#: tree-eh.c:4507 - #, gcc-internal-format, gfc-internal-format - msgid "BB %i has incorrect edge" - msgstr "BB %i hat falsche Kante" - --#: tree-eh.c:4485 -+#: tree-eh.c:4513 - #, gcc-internal-format, gfc-internal-format - msgid "BB %i has incorrect fallthru edge" - msgstr "BB %i hat falsche »fallthru«-Kante" - --#: tree-inline.c:3012 -+#: tree-inline.c:3022 - #, gcc-internal-format - msgid "function %q+F can never be copied because it receives a non-local goto" - msgstr "Funktion %q+F kann nie kopiert werden, da sie ein nichtlokales »goto« empfängt" - --#: tree-inline.c:3026 -+#: tree-inline.c:3036 - #, gcc-internal-format - msgid "function %q+F can never be copied because it saves address of local label in a static variable" - msgstr "Funktion %q+F kann nie kopiert werden, da sie die Adresse einer lokalen Marke in statischer Variablen speichert" - --#: tree-inline.c:3066 -+#: tree-inline.c:3076 - #, gcc-internal-format - msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)" - msgstr "die Funktion %q+F kann nie »inline« sein, da sie alloca verwendet (zum Aufheben: Attribut »always_inline« verwenden)" - --#: tree-inline.c:3080 -+#: tree-inline.c:3090 - #, gcc-internal-format - msgid "function %q+F can never be inlined because it uses setjmp" - msgstr "die Funktion %q+F kann nie »inline« sein, da sie setjmp verwendet" - --#: tree-inline.c:3094 -+#: tree-inline.c:3104 - #, gcc-internal-format - msgid "function %q+F can never be inlined because it uses variable argument lists" - msgstr "die Funktion %q+F kann nie »inline« sein, da sie eine variable Argumentliste verwendet" - --#: tree-inline.c:3106 -+#: tree-inline.c:3116 - #, gcc-internal-format - msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling" - msgstr "die Funktion %q+F kann nie »inline« sein, da sie »setjmp-longjmp«-Ausnahmebehandlung verwendet" - --#: tree-inline.c:3114 -+#: tree-inline.c:3124 - #, gcc-internal-format - msgid "function %q+F can never be inlined because it uses non-local goto" - msgstr "die Funktion %q+F kann nie »inline« sein, da sie ein nichtlokales »goto« enthält" - --#: tree-inline.c:3126 -+#: tree-inline.c:3136 - #, gcc-internal-format - msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args" - msgstr "die Funktion %q+F kann nie »inline« sein, da sie __builtin_return oder __builtin_apply_args verwendet" - --#: tree-inline.c:3146 -+#: tree-inline.c:3156 - #, gcc-internal-format - msgid "function %q+F can never be inlined because it contains a computed goto" - msgstr "die Funktion %q+F kann nie »inline« sein, da sie ein berechnetes »goto« enthält" - --#: tree-inline.c:3249 -+#: tree-inline.c:3259 - #, gcc-internal-format - msgid "function %q+F can never be inlined because it is suppressed using -fno-inline" - msgstr "Funktion %q+F kann nie inline sein, da dies mit -fno-inline unterdrückt wird" - --#: tree-inline.c:3257 -+#: tree-inline.c:3267 - #, gcc-internal-format - msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining" - msgstr "Funktion %q+F kann nie inline sein, da sie mit inline in Konflikt stehende Attribute hat" - --#: tree-inline.c:3842 -+#: tree-inline.c:3852 - #, gcc-internal-format - msgid "inlining failed in call to always_inline %q+F: %s" - msgstr "»inline« beim Aufruf von always_inline %q+F gescheitert: %s" - --#: tree-inline.c:3844 tree-inline.c:3859 -+#: tree-inline.c:3854 tree-inline.c:3869 - #, gcc-internal-format - msgid "called from here" - msgstr "von hier aufgerufen" - --#: tree-inline.c:3857 -+#: tree-inline.c:3867 - #, gcc-internal-format - msgid "inlining failed in call to %q+F: %s" - msgstr "»inline« beim Aufruf von %q+F gescheitert: %s" - --#: tree-into-ssa.c:3209 tree-outof-ssa.c:774 tree-outof-ssa.c:831 -+#: tree-into-ssa.c:3226 tree-outof-ssa.c:774 tree-outof-ssa.c:831 - #: tree-ssa-coalesce.c:934 tree-ssa-live.c:1282 - #, gcc-internal-format - msgid "SSA corruption" -@@ -16945,6 +16920,16 @@ - msgid "unimplemented functionality" - msgstr "nicht implementierte Funktionalität" - -+#: tree-ssa-loop-niter.c:2557 -+#, gcc-internal-format -+msgid "iteration %E invokes undefined behavior" -+msgstr "Durchlauf %E führt zu undefiniertem Verhalten" -+ -+#: tree-ssa-loop-niter.c:2559 -+#, gcc-internal-format -+msgid "containing loop" -+msgstr "enthaltene Schleife" -+ - #: tree-ssa-operands.c:975 - #, gcc-internal-format - msgid "virtual definition of statement not up-to-date" -@@ -16980,142 +16965,142 @@ - msgid "stmt volatile flag not up-to-date" - msgstr "volatile-Kennzeichen für Anweisung nicht aktuell" - --#: tree-ssa-uninit.c:1943 tree-ssa.c:1668 -+#: tree-ssa-uninit.c:1946 tree-ssa.c:1665 - #, gcc-internal-format - msgid "%qD may be used uninitialized in this function" - msgstr "%qD könnte in dieser Funktion uninitialisiert verwendet werden" - --#: tree-ssa.c:625 -+#: tree-ssa.c:622 - #, gcc-internal-format - msgid "expected an SSA_NAME object" - msgstr "SSA_NAME-Objekt erwartet" - --#: tree-ssa.c:631 -+#: tree-ssa.c:628 - #, gcc-internal-format - msgid "found an SSA_NAME that had been released into the free pool" - msgstr "SSA_NAME gefunden, das bereits in den Frei-Bereich geschoben wurde" - --#: tree-ssa.c:638 -+#: tree-ssa.c:635 - #, gcc-internal-format - msgid "type mismatch between an SSA_NAME and its symbol" - msgstr "Unpassende Typen für SSA_NAME und sein Symbol" - --#: tree-ssa.c:644 -+#: tree-ssa.c:641 - #, gcc-internal-format - msgid "found a virtual definition for a GIMPLE register" - msgstr "virtuelle Definition für ein GIMPLE-Register gefunden" - --#: tree-ssa.c:650 -+#: tree-ssa.c:647 - #, gcc-internal-format - msgid "virtual SSA name for non-VOP decl" - msgstr "virtueller SSA-Name für Nicht-VOP-Deklaration" - --#: tree-ssa.c:656 -+#: tree-ssa.c:653 - #, gcc-internal-format - msgid "found a real definition for a non-register" - msgstr "reale Definition für Nicht-Register gefunden" - --#: tree-ssa.c:663 -+#: tree-ssa.c:660 - #, gcc-internal-format - msgid "found a default name with a non-empty defining statement" - msgstr "Standardname mit nichtleerer Definitionsanweisung gefunden" - --#: tree-ssa.c:693 -+#: tree-ssa.c:690 - #, gcc-internal-format - msgid "RESULT_DECL should be read only when DECL_BY_REFERENCE is set" - msgstr "RESULT_DECL sollte nur gelesen werden, wenn DECL_BY_REFERENCE gesetzt ist" - --#: tree-ssa.c:699 -+#: tree-ssa.c:696 - #, gcc-internal-format, gfc-internal-format - msgid "SSA_NAME created in two different blocks %i and %i" - msgstr "SSA_NAME in zwei verschiedenen Blöcken (%i und %i) erzeugt" - --#: tree-ssa.c:708 tree-ssa.c:1020 -+#: tree-ssa.c:705 tree-ssa.c:1017 - #, gcc-internal-format - msgid "SSA_NAME_DEF_STMT is wrong" - msgstr "SSA_NAME_DEF_STMT ist falsch" - --#: tree-ssa.c:760 -+#: tree-ssa.c:757 - #, gcc-internal-format - msgid "missing definition" - msgstr "Fehlende Definition" - --#: tree-ssa.c:766 -+#: tree-ssa.c:763 - #, gcc-internal-format, gfc-internal-format - msgid "definition in block %i does not dominate use in block %i" - msgstr "Definition in Block %i herrscht nicht vor in Block %i" - --#: tree-ssa.c:774 -+#: tree-ssa.c:771 - #, gcc-internal-format, gfc-internal-format - msgid "definition in block %i follows the use" - msgstr "Definition in Block %i folgt der Verwendung" - --#: tree-ssa.c:781 -+#: tree-ssa.c:778 - #, gcc-internal-format - msgid "SSA_NAME_OCCURS_IN_ABNORMAL_PHI should be set" - msgstr "SSA_NAME_OCCURS_IN_ABNORMAL_PHI sollte gesetzt sein" - --#: tree-ssa.c:789 -+#: tree-ssa.c:786 - #, gcc-internal-format - msgid "no immediate_use list" - msgstr "Keine Liste zur sofortigen Verwendung" - --#: tree-ssa.c:801 -+#: tree-ssa.c:798 - #, gcc-internal-format - msgid "wrong immediate use list" - msgstr "Falsche Liste zur sofortigen Verwendung" - --#: tree-ssa.c:835 -+#: tree-ssa.c:832 - #, gcc-internal-format - msgid "incoming edge count does not match number of PHI arguments" - msgstr "Eingehende Kantenzahl passt nicht zur Anzahl der PHI-Argumente" - --#: tree-ssa.c:849 -+#: tree-ssa.c:846 - #, gcc-internal-format, gfc-internal-format - msgid "PHI argument is missing for edge %d->%d" - msgstr "PHI-Argument fehlt für Kante %d->%d" - --#: tree-ssa.c:858 -+#: tree-ssa.c:855 - #, gcc-internal-format - msgid "PHI argument is not SSA_NAME, or invariant" - msgstr "PHI-Argument ist kein SSA_NAME, oder invariant" - --#: tree-ssa.c:886 -+#: tree-ssa.c:883 - #, gcc-internal-format, gfc-internal-format - msgid "wrong edge %d->%d for PHI argument" - msgstr "Falsche Kante %d->%d für PHI-Argument" - --#: tree-ssa.c:967 -+#: tree-ssa.c:964 - #, gcc-internal-format, gfc-internal-format - msgid "AUX pointer initialized for edge %d->%d" - msgstr "AUX-Zeiger für Kante %d->%d initialisiert" - --#: tree-ssa.c:992 -+#: tree-ssa.c:989 - #, gcc-internal-format - msgid "stmt (%p) marked modified after optimization pass: " - msgstr "Anweisung (%p) nach Optimierungsdurchgang als geändert markiert: " - --#: tree-ssa.c:1049 -+#: tree-ssa.c:1046 - #, gcc-internal-format - msgid "verify_ssa failed" - msgstr "verify_ssa gescheitert" - --#: tree-ssa.c:1631 varasm.c:322 -+#: tree-ssa.c:1628 varasm.c:321 - #, gcc-internal-format - msgid "%qD was declared here" - msgstr "%qD wurde hier deklariert" - --#: tree-ssa.c:1663 -+#: tree-ssa.c:1660 - #, gcc-internal-format - msgid "%qD is used uninitialized in this function" - msgstr "%qD wird in dieser Funktion uninitialisiert verwendet" - --#: tree-ssa.c:1700 -+#: tree-ssa.c:1697 - #, gcc-internal-format - msgid "%qE is used uninitialized in this function" - msgstr "%qE wird in dieser Funktion uninitialisiert verwendet" - --#: tree-ssa.c:1705 -+#: tree-ssa.c:1702 - #, gcc-internal-format - msgid "%qE may be used uninitialized in this function" - msgstr "%qE könnte in dieser Funktion uninitialisiert verwendet werden" -@@ -17161,9 +17146,9 @@ - msgstr "Vektoroperation wird mit einzelner skalarer Operation ausgeweitet" - - #: tree-vect-generic.c:909 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "vector condition will be expanded piecewise" --msgstr "Vektoroperation wird stückweise ausgeweitet" -+msgstr "Vektorbedingung wird stückweise ausgeweitet" - - #: tree-vect-generic.c:1218 - #, gcc-internal-format -@@ -17235,24 +17220,24 @@ - msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored" - msgstr "%qD ohne Attribut »dllimport« redeklariert: vorheriges »dllimport« ignoriert" - --#: tree.c:5610 tree.c:5622 tree.c:5632 c-family/c-common.c:6380 --#: c-family/c-common.c:6399 c-family/c-common.c:6417 c-family/c-common.c:6445 --#: c-family/c-common.c:6473 c-family/c-common.c:6501 c-family/c-common.c:6517 --#: c-family/c-common.c:6536 c-family/c-common.c:6553 c-family/c-common.c:6577 --#: c-family/c-common.c:6600 c-family/c-common.c:6617 c-family/c-common.c:6645 --#: c-family/c-common.c:6666 c-family/c-common.c:6687 c-family/c-common.c:6714 --#: c-family/c-common.c:6745 c-family/c-common.c:6782 c-family/c-common.c:6809 --#: c-family/c-common.c:6869 c-family/c-common.c:6954 c-family/c-common.c:6984 --#: c-family/c-common.c:7038 c-family/c-common.c:7496 c-family/c-common.c:7514 --#: c-family/c-common.c:7576 c-family/c-common.c:7619 c-family/c-common.c:7690 --#: c-family/c-common.c:7818 c-family/c-common.c:7886 c-family/c-common.c:7944 --#: c-family/c-common.c:7992 c-family/c-common.c:8155 c-family/c-common.c:8176 --#: c-family/c-common.c:8288 c-family/c-common.c:8312 c-family/c-common.c:8619 --#: c-family/c-common.c:8642 c-family/c-common.c:8681 c-family/c-common.c:8759 --#: c-family/c-common.c:8906 config/darwin.c:1997 config/arm/arm.c:5119 --#: config/arm/arm.c:5147 config/arm/arm.c:5164 config/avr/avr.c:7789 --#: config/h8300/h8300.c:5463 config/h8300/h8300.c:5487 config/i386/i386.c:4965 --#: config/i386/i386.c:34737 config/ia64/ia64.c:737 -+#: tree.c:5610 tree.c:5622 tree.c:5632 c-family/c-common.c:6385 -+#: c-family/c-common.c:6404 c-family/c-common.c:6422 c-family/c-common.c:6450 -+#: c-family/c-common.c:6478 c-family/c-common.c:6506 c-family/c-common.c:6522 -+#: c-family/c-common.c:6537 c-family/c-common.c:6558 c-family/c-common.c:6575 -+#: c-family/c-common.c:6599 c-family/c-common.c:6622 c-family/c-common.c:6639 -+#: c-family/c-common.c:6667 c-family/c-common.c:6688 c-family/c-common.c:6709 -+#: c-family/c-common.c:6736 c-family/c-common.c:6767 c-family/c-common.c:6804 -+#: c-family/c-common.c:6831 c-family/c-common.c:6891 c-family/c-common.c:6976 -+#: c-family/c-common.c:7006 c-family/c-common.c:7060 c-family/c-common.c:7518 -+#: c-family/c-common.c:7536 c-family/c-common.c:7598 c-family/c-common.c:7641 -+#: c-family/c-common.c:7712 c-family/c-common.c:7840 c-family/c-common.c:7908 -+#: c-family/c-common.c:7966 c-family/c-common.c:8014 c-family/c-common.c:8177 -+#: c-family/c-common.c:8198 c-family/c-common.c:8310 c-family/c-common.c:8334 -+#: c-family/c-common.c:8641 c-family/c-common.c:8664 c-family/c-common.c:8703 -+#: c-family/c-common.c:8781 c-family/c-common.c:8928 config/darwin.c:1997 -+#: config/arm/arm.c:5119 config/arm/arm.c:5147 config/arm/arm.c:5164 -+#: config/avr/avr.c:7789 config/h8300/h8300.c:5463 config/h8300/h8300.c:5487 -+#: config/i386/i386.c:4965 config/i386/i386.c:34737 config/ia64/ia64.c:737 - #: config/rs6000/rs6000.c:24907 config/spu/spu.c:3743 - #: ada/gcc-interface/utils.c:6189 lto/lto-lang.c:222 - #, gcc-internal-format -@@ -17434,137 +17419,137 @@ - msgid "variable tracking size limit exceeded" - msgstr "Grenze zur Variablenverfolgung überschritten" - --#: varasm.c:315 -+#: varasm.c:314 - #, gcc-internal-format - msgid "%+D causes a section type conflict" - msgstr "%+D löst einen Abschnittstypkonflikt aus" - --#: varasm.c:318 -+#: varasm.c:317 - #, gcc-internal-format - msgid "%+D causes a section type conflict with %D" - msgstr "%+D löst einen Abschnittstypkonflikt mit %D aus" - --#: varasm.c:960 -+#: varasm.c:959 - #, gcc-internal-format - msgid "alignment of %q+D is greater than maximum object file alignment. Using %d" - msgstr "Ausrichtung von %q+D ist größer als maximale Objektdateiausrichtung. %d verwendet" - --#: varasm.c:1200 varasm.c:1209 -+#: varasm.c:1198 varasm.c:1207 - #, gcc-internal-format - msgid "register name not specified for %q+D" - msgstr "für %q+D wurde kein Registername angegeben" - --#: varasm.c:1211 -+#: varasm.c:1209 - #, gcc-internal-format - msgid "invalid register name for %q+D" - msgstr "ungültiger Registername für %q+D" - --#: varasm.c:1213 -+#: varasm.c:1211 - #, gcc-internal-format - msgid "data type of %q+D isn%'t suitable for a register" - msgstr "Datentyp von %q+D ist nicht für Register geeignet" - --#: varasm.c:1216 -+#: varasm.c:1214 - #, gcc-internal-format - msgid "the register specified for %q+D cannot be accessed by the current target" - msgstr "für %q+D angegebenes Register kann vom aktuellen Ziel nicht zugegriffen werden" - --#: varasm.c:1219 -+#: varasm.c:1217 - #, gcc-internal-format - msgid "the register specified for %q+D is not general enough to be used as a register variable" - msgstr "für %q+D angegebenes Register ist nicht allgemein genug, um als eine Registervariable verwendet zu werden" - --#: varasm.c:1222 -+#: varasm.c:1220 - #, gcc-internal-format - msgid "register specified for %q+D isn%'t suitable for data type" - msgstr "für %q+D angegebenes Register eignet sich nicht für Datentyp" - --#: varasm.c:1232 -+#: varasm.c:1230 - #, gcc-internal-format - msgid "global register variable has initial value" - msgstr "globale Registervariable hat Anfangswert" - --#: varasm.c:1236 -+#: varasm.c:1234 - #, gcc-internal-format - msgid "optimization may eliminate reads and/or writes to register variables" - msgstr "Optimierung kann Lese- und/oder Schreiboperationen auf Registervariablen entfernen" - --#: varasm.c:1274 -+#: varasm.c:1272 - #, gcc-internal-format - msgid "register name given for non-register variable %q+D" - msgstr "Registername für Nicht-Registervariable %q+D angegeben" - --#: varasm.c:1820 -+#: varasm.c:1818 - #, gcc-internal-format - msgid "thread-local COMMON data not implemented" - msgstr "Thread-lokale COMMON-Daten nicht implementiert" - --#: varasm.c:1852 -+#: varasm.c:1850 - #, gcc-internal-format - msgid "requested alignment for %q+D is greater than implemented alignment of %wu" - msgstr "angeforderte Ausrichtung für %q+D ist größer als die implementierte Ausrichtung von %wu" - --#: varasm.c:1940 c/c-decl.c:4353 -+#: varasm.c:1938 c/c-decl.c:4353 - #, gcc-internal-format - msgid "storage size of %q+D isn%'t known" - msgstr "Speichergröße von %q+D ist unbekannt" - --#: varasm.c:4605 -+#: varasm.c:4590 - #, gcc-internal-format - msgid "initializer for integer/fixed-point value is too complicated" - msgstr "Initialisierung für Ganzzahl-/Gleitkommazahlwert ist zu kompliziert" - --#: varasm.c:4610 -+#: varasm.c:4595 - #, gcc-internal-format - msgid "initializer for floating value is not a floating constant" - msgstr "Initialisierung für Gleitkommawert ist keine Gleitkommakonstante" - --#: varasm.c:4918 -+#: varasm.c:4903 - #, gcc-internal-format - msgid "invalid initial value for member %qE" - msgstr "ungültiger Anfangswert für Element %qE" - --#: varasm.c:5270 -+#: varasm.c:5255 - #, gcc-internal-format - msgid "weak declaration of %q+D must be public" - msgstr "schwache Deklaration von %q+D muss öffentlich sein" - --#: varasm.c:5272 -+#: varasm.c:5257 - #, gcc-internal-format - msgid "weak declaration of %q+D not supported" - msgstr "schwache Deklaration von %q+D wird nicht unterstützt" - --#: varasm.c:5301 varasm.c:5598 -+#: varasm.c:5286 varasm.c:5583 - #, gcc-internal-format - msgid "only weak aliases are supported in this configuration" - msgstr "in dieser Konfiguration werden nur schwache Aliase unterstützt" - --#: varasm.c:5490 -+#: varasm.c:5475 - #, gcc-internal-format - msgid "weakref is not supported in this configuration" - msgstr "weakref wird in dieser Konfiguration nicht unterstützt" - --#: varasm.c:5513 varasm.c:5595 -+#: varasm.c:5498 varasm.c:5580 - #, gcc-internal-format - msgid "ifunc is not supported in this configuration" - msgstr "ifunc wird in dieser Konfiguration nicht unterstützt" - --#: varasm.c:5572 -+#: varasm.c:5557 - #, gcc-internal-format - msgid "weakref %q+D ultimately targets itself" - msgstr "weakref %q+D zielt letztendlich auf sich selbst ab" - --#: varasm.c:5581 -+#: varasm.c:5566 - #, gcc-internal-format - msgid "weakref %q+D must have static linkage" - msgstr "schwache Referenz %q+D muss statische Bindung haben" - --#: varasm.c:5588 -+#: varasm.c:5573 - #, gcc-internal-format - msgid "alias definitions not supported in this configuration" - msgstr "Alias-Definitionen werden in dieser Konfiguration nicht unterstützt" - --#: varasm.c:5807 config/sol2.c:155 config/i386/winnt.c:254 -+#: varasm.c:5792 config/sol2.c:155 config/i386/winnt.c:254 - #, gcc-internal-format - msgid "visibility attribute not supported in this configuration; ignored" - msgstr "Sichtbarkeitsattribute werden in dieser Konfiguration nicht unterstützt; ignoriert" -@@ -17590,1316 +17575,1316 @@ - msgid "bytecode stream: tag %s is not in the expected range [%s, %s]" - msgstr "Bytecode-Strom: Marke %s ist nicht im erwarteten Wertebereich [%s, %s]" - --#: c-family/c-common.c:911 -+#: c-family/c-common.c:916 - #, gcc-internal-format - msgid "%qD is not defined outside of function scope" - msgstr "%qD ist außerhalb des Funktionsgültigkeitsbereiches nicht definiert" - --#: c-family/c-common.c:961 -+#: c-family/c-common.c:966 - #, gcc-internal-format - msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support" - msgstr "Zeichenkettenlänge %qd ist größer als die Länge %qd, die von ISO-C%d-Compilern unterstützt werden muss" - --#: c-family/c-common.c:1280 c/c-typeck.c:9864 cp/typeck.c:4158 -+#: c-family/c-common.c:1285 c/c-typeck.c:9864 cp/typeck.c:4158 - #, gcc-internal-format - msgid "left shift count is negative" - msgstr "Links-Schiebe-Weite ist negativ" - --#: c-family/c-common.c:1281 c/c-typeck.c:9812 cp/typeck.c:4112 -+#: c-family/c-common.c:1286 c/c-typeck.c:9812 cp/typeck.c:4112 - #, gcc-internal-format - msgid "right shift count is negative" - msgstr "Rechts-Schiebe-Weite ist negativ" - --#: c-family/c-common.c:1286 c/c-typeck.c:9871 cp/typeck.c:4165 -+#: c-family/c-common.c:1291 c/c-typeck.c:9871 cp/typeck.c:4165 - #, gcc-internal-format - msgid "left shift count >= width of type" - msgstr "Links-Schiebe-Weite >= Breite des Typs" - --#: c-family/c-common.c:1287 c/c-typeck.c:9823 cp/typeck.c:4119 -+#: c-family/c-common.c:1292 c/c-typeck.c:9823 cp/typeck.c:4119 - #, gcc-internal-format - msgid "right shift count >= width of type" - msgstr "Rechts-Schiebe-Weite >= Breite des Typs" - --#: c-family/c-common.c:1508 c-family/c-common.c:1520 cp/semantics.c:6865 -+#: c-family/c-common.c:1513 c-family/c-common.c:1525 cp/semantics.c:6867 - #, gcc-internal-format - msgid "overflow in constant expression" - msgstr "Überlauf in Konstanten-Ausdruck" - --#: c-family/c-common.c:1543 -+#: c-family/c-common.c:1548 - #, gcc-internal-format - msgid "integer overflow in expression" - msgstr "Ganzzahlüberlauf in Ausdruck" - --#: c-family/c-common.c:1548 -+#: c-family/c-common.c:1553 - #, gcc-internal-format - msgid "floating point overflow in expression" - msgstr "Gleitkommaüberlauf in Ausdruck" - --#: c-family/c-common.c:1552 -+#: c-family/c-common.c:1557 - #, gcc-internal-format - msgid "fixed-point overflow in expression" - msgstr "Festkommaüberlauf in Ausdruck" - --#: c-family/c-common.c:1556 -+#: c-family/c-common.c:1561 - #, gcc-internal-format - msgid "vector overflow in expression" - msgstr "Vektorüberlauf in Ausdruck" - --#: c-family/c-common.c:1562 -+#: c-family/c-common.c:1567 - #, gcc-internal-format - msgid "complex integer overflow in expression" - msgstr "komplexer Ganzzahlüberlauf in Ausdruck" - --#: c-family/c-common.c:1565 -+#: c-family/c-common.c:1570 - #, gcc-internal-format - msgid "complex floating point overflow in expression" - msgstr "komplexer Gleitkommaüberlauf in Ausdruck" - --#: c-family/c-common.c:1608 -+#: c-family/c-common.c:1613 - #, gcc-internal-format - msgid "logical % applied to non-boolean constant" - msgstr "Logisches % auf Nicht-Boolesche Konstante angewandt" - --#: c-family/c-common.c:1611 -+#: c-family/c-common.c:1616 - #, gcc-internal-format - msgid "logical % applied to non-boolean constant" - msgstr "logisches % auf nicht-boolsche Konstante angewendet" - --#: c-family/c-common.c:1675 -+#: c-family/c-common.c:1680 - #, gcc-internal-format - msgid "logical % of collectively exhaustive tests is always true" - msgstr "logisches % gemeinsam erschöpfender Tests ist immer »wahr«" - --#: c-family/c-common.c:1679 -+#: c-family/c-common.c:1684 - #, gcc-internal-format - msgid "logical % of mutually exclusive tests is always false" - msgstr "logisches % sich gegenseitig ausschließender Tests ist immer »falsch«" - --#: c-family/c-common.c:1811 -+#: c-family/c-common.c:1816 - #, gcc-internal-format - msgid "type-punning to incomplete type might break strict-aliasing rules" - msgstr "Type-Punning auf unvollständigen Typen kann strict-aliasing-Regeln verletzen" - --#: c-family/c-common.c:1826 -+#: c-family/c-common.c:1831 - #, gcc-internal-format - msgid "dereferencing type-punned pointer will break strict-aliasing rules" - msgstr "Dereferenzierung eines Type-Pun-Zeigers verletzt strict-aliasing-Regeln" - --#: c-family/c-common.c:1833 c-family/c-common.c:1851 -+#: c-family/c-common.c:1838 c-family/c-common.c:1856 - #, gcc-internal-format - msgid "dereferencing type-punned pointer might break strict-aliasing rules" - msgstr "Dereferenzierung eines Type-Pun-Zeigers könnte strict-aliasing-Regeln verletzen" - --#: c-family/c-common.c:1985 -+#: c-family/c-common.c:1990 - #, gcc-internal-format - msgid "argument to % in %qD call is the same expression as the destination; did you mean to remove the addressof?" - msgstr "" - --#: c-family/c-common.c:1992 -+#: c-family/c-common.c:1997 - #, gcc-internal-format - msgid "argument to % in %qD call is the same expression as the destination; did you mean to provide an explicit length?" - msgstr "" - --#: c-family/c-common.c:1997 -+#: c-family/c-common.c:2002 - #, gcc-internal-format - msgid "argument to % in %qD call is the same expression as the destination; did you mean to dereference it?" - msgstr "" - --#: c-family/c-common.c:2009 -+#: c-family/c-common.c:2014 - #, gcc-internal-format - msgid "argument to % in %qD call is the same pointer type %qT as the destination; expected %qT or an explicit length" - msgstr "" - --#: c-family/c-common.c:2025 -+#: c-family/c-common.c:2030 - #, gcc-internal-format - msgid "argument to % in %qD call is the same expression as the source; did you mean to remove the addressof?" - msgstr "" - --#: c-family/c-common.c:2032 -+#: c-family/c-common.c:2037 - #, gcc-internal-format - msgid "argument to % in %qD call is the same expression as the source; did you mean to provide an explicit length?" - msgstr "" - --#: c-family/c-common.c:2037 -+#: c-family/c-common.c:2042 - #, gcc-internal-format - msgid "argument to % in %qD call is the same expression as the source; did you mean to dereference it?" - msgstr "" - --#: c-family/c-common.c:2049 -+#: c-family/c-common.c:2054 - #, gcc-internal-format - msgid "argument to % in %qD call is the same pointer type %qT as the source; expected %qT or an explicit length" - msgstr "" - --#: c-family/c-common.c:2065 -+#: c-family/c-common.c:2070 - #, gcc-internal-format - msgid "argument to % in %qD call is the same expression as the first source; did you mean to remove the addressof?" - msgstr "" - --#: c-family/c-common.c:2072 -+#: c-family/c-common.c:2077 - #, gcc-internal-format - msgid "argument to % in %qD call is the same expression as the first source; did you mean to provide an explicit length?" - msgstr "" - --#: c-family/c-common.c:2077 -+#: c-family/c-common.c:2082 - #, gcc-internal-format - msgid "argument to % in %qD call is the same expression as the first source; did you mean to dereference it?" - msgstr "" - --#: c-family/c-common.c:2089 -+#: c-family/c-common.c:2094 - #, gcc-internal-format - msgid "argument to % in %qD call is the same pointer type %qT as the first source; expected %qT or an explicit length" - msgstr "" - --#: c-family/c-common.c:2105 -+#: c-family/c-common.c:2110 - #, gcc-internal-format - msgid "argument to % in %qD call is the same expression as the second source; did you mean to remove the addressof?" - msgstr "" - --#: c-family/c-common.c:2112 -+#: c-family/c-common.c:2117 - #, gcc-internal-format - msgid "argument to % in %qD call is the same expression as the second source; did you mean to provide an explicit length?" - msgstr "" - --#: c-family/c-common.c:2117 -+#: c-family/c-common.c:2122 - #, gcc-internal-format - msgid "argument to % in %qD call is the same expression as the second source; did you mean to dereference it?" - msgstr "" - --#: c-family/c-common.c:2129 -+#: c-family/c-common.c:2134 - #, gcc-internal-format - msgid "argument to % in %qD call is the same pointer type %qT as the second source; expected %qT or an explicit length" - msgstr "" - --#: c-family/c-common.c:2161 -+#: c-family/c-common.c:2166 - #, gcc-internal-format - msgid "first argument of %q+D should be %" - msgstr "erstes Argument von %q+D sollte % sein" - --#: c-family/c-common.c:2170 -+#: c-family/c-common.c:2175 - #, gcc-internal-format - msgid "second argument of %q+D should be %" - msgstr "zweites Argument von %q+D sollte % sein" - --#: c-family/c-common.c:2179 -+#: c-family/c-common.c:2184 - #, gcc-internal-format - msgid "third argument of %q+D should probably be %" - msgstr "drittes Argument von %q+D sollte wahrscheinlich % sein" - --#: c-family/c-common.c:2190 -+#: c-family/c-common.c:2195 - #, gcc-internal-format - msgid "%q+D takes only zero or two arguments" - msgstr "%q+D benötigt entweder null oder zwei Argumente" - --#: c-family/c-common.c:2239 -+#: c-family/c-common.c:2244 - #, gcc-internal-format - msgid "use -flax-vector-conversions to permit conversions between vectors with differing element types or numbers of subparts" - msgstr "-flax-vector-conversions verwenden, um Umwandlung zwischen Vektoren mit unterschiedlichen Elementtypen oder Anzahl der Teile zu erlauben" - --#: c-family/c-common.c:2278 -+#: c-family/c-common.c:2283 - #, gcc-internal-format - msgid "__builtin_shuffle last argument must be an integer vector" - msgstr "Das letzte Argument von __builtin_shuffle muss Ganzzahlvektor sein" - --#: c-family/c-common.c:2286 -+#: c-family/c-common.c:2291 - #, gcc-internal-format - msgid "__builtin_shuffle arguments must be vectors" - msgstr "Argumente für __builtin_shuffle müssen Vektoren sein" - --#: c-family/c-common.c:2292 -+#: c-family/c-common.c:2297 - #, gcc-internal-format - msgid "__builtin_shuffle argument vectors must be of the same type" - msgstr "Vektorargumente von __builtin_shuffle müssen gleichen Typ haben" - --#: c-family/c-common.c:2302 -+#: c-family/c-common.c:2307 - #, gcc-internal-format - msgid "__builtin_shuffle number of elements of the argument vector(s) and the mask vector should be the same" - msgstr "Anzahl der Elemente des/der Argumentvektors/en und des Maskenvektors für __builtin_shuffle sollten gleich sein" - --#: c-family/c-common.c:2311 -+#: c-family/c-common.c:2316 - #, gcc-internal-format - msgid "__builtin_shuffle argument vector(s) inner type must have the same size as inner type of the mask" - msgstr "Innere Typen des/der Argumentvektors/en und Maske von __builtin_shuffle müssen gleiche Größe haben" - --#: c-family/c-common.c:2505 -+#: c-family/c-common.c:2510 - #, gcc-internal-format - msgid "negative integer implicitly converted to unsigned type" - msgstr "Negative Ganzzahl implizit in vorzeichenlosen Typen konvertiert" - --#: c-family/c-common.c:2511 -+#: c-family/c-common.c:2516 - #, gcc-internal-format - msgid "conversion of unsigned constant value to negative integer" - msgstr "Umwandlung eines vorzeichenlosen konstanten Wertes in negative Ganzzahl" - --#: c-family/c-common.c:2605 -+#: c-family/c-common.c:2610 - #, gcc-internal-format - msgid "conversion to %qT from %qT may change the sign of the result" - msgstr "Umwandlung in %qT von %qT könnte das Vorzeichen des Ergebnisses ändern" - --#: c-family/c-common.c:2674 -+#: c-family/c-common.c:2679 - #, gcc-internal-format - msgid "conversion to %qT from boolean expression" - msgstr "Umwandlung in %qT aus boolschem Ausdruck" - --#: c-family/c-common.c:2681 -+#: c-family/c-common.c:2686 - #, gcc-internal-format - msgid "conversion to %qT alters %qT constant value" - msgstr "Umformung in %qT ändert konstanten Wert von %qT" - --#: c-family/c-common.c:2700 -+#: c-family/c-common.c:2705 - #, gcc-internal-format - msgid "conversion to %qT from %qT may alter its value" - msgstr "Umwandlung in %qT von %qT könnte den Wert ändern" - --#: c-family/c-common.c:2730 -+#: c-family/c-common.c:2735 - #, gcc-internal-format - msgid "large integer implicitly truncated to unsigned type" - msgstr "Große Ganzzahl implizit auf vorzeichenlosen Typen abgeschnitten" - --#: c-family/c-common.c:2736 c-family/c-common.c:2743 c-family/c-common.c:2751 -+#: c-family/c-common.c:2741 c-family/c-common.c:2748 c-family/c-common.c:2756 - #, gcc-internal-format - msgid "overflow in implicit constant conversion" - msgstr "Überlauf in impliziter Konstantenkonvertierung" - --#: c-family/c-common.c:2923 -+#: c-family/c-common.c:2928 - #, gcc-internal-format - msgid "operation on %qE may be undefined" - msgstr "Operation auf %qE könnte undefiniert sein" - --#: c-family/c-common.c:3234 -+#: c-family/c-common.c:3239 - #, gcc-internal-format - msgid "case label does not reduce to an integer constant" - msgstr "case-Marke reduziert nicht auf Ganzzahlkonstante" - --#: c-family/c-common.c:3274 -+#: c-family/c-common.c:3279 - #, gcc-internal-format - msgid "case label value is less than minimum value for type" - msgstr "case-Marke ist kleiner als Minimalwert des Typs" - --#: c-family/c-common.c:3282 -+#: c-family/c-common.c:3287 - #, gcc-internal-format - msgid "case label value exceeds maximum value for type" - msgstr "case-Marke überschreitet Maximalwert des Typs" - --#: c-family/c-common.c:3290 -+#: c-family/c-common.c:3295 - #, gcc-internal-format - msgid "lower value in case label range less than minimum value for type" - msgstr "Unterer Wert in case-Marken-Bereich ist kleiner als der Minimalwert des Typs" - --#: c-family/c-common.c:3299 -+#: c-family/c-common.c:3304 - #, gcc-internal-format - msgid "upper value in case label range exceeds maximum value for type" - msgstr "Oberer Wert in case-Marken-Bereich überschreitet den Maximalwert des Typs" - --#: c-family/c-common.c:3378 -+#: c-family/c-common.c:3383 - #, gcc-internal-format - msgid "GCC cannot support operators with integer types and fixed-point types that have too many integral and fractional bits together" - msgstr "GCC kann keine Operatoren mit Ganzzahl- und Festkommatypen unterstützen, die zusammen zu viele Ganzzahl- und Bruch-Bits haben" - --#: c-family/c-common.c:3881 -+#: c-family/c-common.c:3886 - #, gcc-internal-format - msgid "invalid operands to binary %s (have %qT and %qT)" - msgstr "Ungültige Operanden für binäres %s (haben %qT und %qT)" - --#: c-family/c-common.c:4142 -+#: c-family/c-common.c:4147 - #, gcc-internal-format - msgid "comparison is always false due to limited range of data type" - msgstr "Vergleich ist durch beschränkten Wertebereich des Datentyps stets »unwahr«" - --#: c-family/c-common.c:4145 -+#: c-family/c-common.c:4150 - #, gcc-internal-format - msgid "comparison is always true due to limited range of data type" - msgstr "Vergleich ist durch beschränkten Wertebereich des Datentyps stets »wahr«" - --#: c-family/c-common.c:4230 -+#: c-family/c-common.c:4235 - #, gcc-internal-format - msgid "comparison of unsigned expression >= 0 is always true" - msgstr "Vergleich eines vorzeichenlosen Ausdrucks >= 0 ist stets »wahr«" - --#: c-family/c-common.c:4237 -+#: c-family/c-common.c:4242 - #, gcc-internal-format - msgid "comparison of unsigned expression < 0 is always false" - msgstr "Vergleich eines vorzeichenlosen Ausdrucks < 0 ist stets »unwahr«" - --#: c-family/c-common.c:4279 -+#: c-family/c-common.c:4284 - #, gcc-internal-format - msgid "pointer of type % used in arithmetic" - msgstr "Zeiger auf Typen % in Arithmetik verwendet" - --#: c-family/c-common.c:4285 -+#: c-family/c-common.c:4290 - #, gcc-internal-format - msgid "pointer to a function used in arithmetic" - msgstr "Zeiger auf Funktion in Arithmetik verwendet" - --#: c-family/c-common.c:4291 -+#: c-family/c-common.c:4296 - #, gcc-internal-format - msgid "pointer to member function used in arithmetic" - msgstr "Zeiger auf Elementfunktion in Arithmetik verwendet" - --#: c-family/c-common.c:4503 -+#: c-family/c-common.c:4508 - #, gcc-internal-format - msgid "the address of %qD will always evaluate as %" - msgstr "Die Adresse von %qD wird immer zu % auswerten" - --#: c-family/c-common.c:4598 cp/semantics.c:592 cp/typeck.c:7906 -+#: c-family/c-common.c:4603 cp/semantics.c:592 cp/typeck.c:7906 - #, gcc-internal-format - msgid "suggest parentheses around assignment used as truth value" - msgstr "Um Zuweisung, die als Wahrheitswert verwendet wird, werden Klammern empfohlen" - --#: c-family/c-common.c:4677 c/c-decl.c:3686 c/c-typeck.c:10883 -+#: c-family/c-common.c:4682 c/c-decl.c:3686 c/c-typeck.c:10883 - #, gcc-internal-format - msgid "invalid use of %" - msgstr "Ungültige Verwendung von %" - --#: c-family/c-common.c:4870 -+#: c-family/c-common.c:4875 - #, gcc-internal-format - msgid "invalid application of % to a function type" - msgstr "Ungültige Anwendung von % auf einen Funktionstypen" - --#: c-family/c-common.c:4880 -+#: c-family/c-common.c:4885 - #, gcc-internal-format - msgid "ISO C++ does not permit % applied to a function type" - msgstr "ISO-C++ erlaubt kein auf Funktionstypen angewendetes %" - --#: c-family/c-common.c:4883 -+#: c-family/c-common.c:4888 - #, gcc-internal-format - msgid "ISO C does not permit %<_Alignof%> applied to a function type" - msgstr "ISO-C erlaubt kein auf Funktionstypen angewendetes %<_Alignof%>" - --#: c-family/c-common.c:4894 -+#: c-family/c-common.c:4899 - #, gcc-internal-format - msgid "invalid application of %qs to a void type" - msgstr "Ungültige Anwendung von %qs auf einen void-Typen" - --#: c-family/c-common.c:4903 -+#: c-family/c-common.c:4908 - #, gcc-internal-format - msgid "invalid application of %qs to incomplete type %qT" - msgstr "Ungültige Anwendung von %qs auf unvollständigen Typen %qT" - --#: c-family/c-common.c:4911 -+#: c-family/c-common.c:4916 - #, gcc-internal-format - msgid "invalid application of %qs to array type %qT of incomplete element type" - msgstr "Ungültige Anwendung von %qs auf Feldtyp %qT mit unvollständigem Elementtyp" - --#: c-family/c-common.c:4951 -+#: c-family/c-common.c:4956 - #, gcc-internal-format - msgid "%<__alignof%> applied to a bit-field" - msgstr "%<__alignof%> auf Bitfeld angewandt" - --#: c-family/c-common.c:5664 -+#: c-family/c-common.c:5669 - #, gcc-internal-format - msgid "cannot disable built-in function %qs" - msgstr "Eingebaute Funktion %qs kann nicht abgeschaltet werden" - --#: c-family/c-common.c:5855 -+#: c-family/c-common.c:5860 - #, gcc-internal-format - msgid "pointers are not permitted as case values" - msgstr "Zeiger sind nicht als case-Werte zugelassen" - --#: c-family/c-common.c:5862 -+#: c-family/c-common.c:5867 - #, gcc-internal-format - msgid "range expressions in switch statements are non-standard" - msgstr "Wertebereichsausdrücke in switch-Anweisungen sind nicht standardkonform" - --#: c-family/c-common.c:5888 -+#: c-family/c-common.c:5893 - #, gcc-internal-format - msgid "empty range specified" - msgstr "Leerer Wertebereich angegeben" - --#: c-family/c-common.c:5948 -+#: c-family/c-common.c:5953 - #, gcc-internal-format - msgid "duplicate (or overlapping) case value" - msgstr "Doppelte (oder sich überschneidende) case-Werte" - --#: c-family/c-common.c:5950 -+#: c-family/c-common.c:5955 - #, gcc-internal-format - msgid "this is the first entry overlapping that value" - msgstr "Dies ist der erste Eintrag, der diesen Wert überschneidet" - --#: c-family/c-common.c:5954 -+#: c-family/c-common.c:5959 - #, gcc-internal-format - msgid "duplicate case value" - msgstr "Doppelter case-Wert" - --#: c-family/c-common.c:5955 -+#: c-family/c-common.c:5960 - #, gcc-internal-format - msgid "previously used here" - msgstr "Bereits hier verwendet" - --#: c-family/c-common.c:5959 -+#: c-family/c-common.c:5964 - #, gcc-internal-format - msgid "multiple default labels in one switch" - msgstr "Mehrere Standardmarken in einem »switch«" - --#: c-family/c-common.c:5961 -+#: c-family/c-common.c:5966 - #, gcc-internal-format - msgid "this is the first default label" - msgstr "Dies ist die erste Standardmarke" - --#: c-family/c-common.c:6013 -+#: c-family/c-common.c:6018 - #, gcc-internal-format - msgid "case value %qs not in enumerated type" - msgstr "case-Wert %qs nicht in Aufzählungstyp" - --#: c-family/c-common.c:6018 -+#: c-family/c-common.c:6023 - #, gcc-internal-format - msgid "case value %qs not in enumerated type %qT" - msgstr "case-Wert %qs nicht in Aufzählungstyp %qT" - --#: c-family/c-common.c:6077 -+#: c-family/c-common.c:6082 - #, gcc-internal-format - msgid "switch missing default case" - msgstr "Die Standardfallbehandlung in switch fehlt" - --#: c-family/c-common.c:6149 -+#: c-family/c-common.c:6154 - #, gcc-internal-format - msgid "enumeration value %qE not handled in switch" - msgstr "Aufzählungswert %qE wird nicht von switch behandelt" - --#: c-family/c-common.c:6175 -+#: c-family/c-common.c:6180 - #, gcc-internal-format - msgid "taking the address of a label is non-standard" - msgstr "Das Ermitteln der Adresse einer Marke ist nicht standardkonform" - --#: c-family/c-common.c:6369 -+#: c-family/c-common.c:6374 - #, gcc-internal-format - msgid "%qE attribute ignored for field of type %qT" - msgstr "Attribut %qE ignoriert für Feld vom Typ %qT" - --#: c-family/c-common.c:6464 c-family/c-common.c:6492 -+#: c-family/c-common.c:6469 c-family/c-common.c:6497 - #, gcc-internal-format - msgid "%qE attribute conflicts with attribute %s" - msgstr "Attribut %qE steht mit Attribut %s in Konflikt" - --#: c-family/c-common.c:6622 lto/lto-lang.c:227 -+#: c-family/c-common.c:6644 lto/lto-lang.c:227 - #, gcc-internal-format - msgid "%qE attribute has no effect on unit local functions" - msgstr "Attribut %qE wirkt sich nicht auf einheits-lokale Funktionen aus" - --#: c-family/c-common.c:6776 -+#: c-family/c-common.c:6798 - #, gcc-internal-format - msgid "%qE attribute have effect only on public objects" - msgstr "Attribut %qE wirkt sich nur auf öffentliche Objekte aus" - --#: c-family/c-common.c:6890 -+#: c-family/c-common.c:6912 - #, gcc-internal-format - msgid "destructor priorities are not supported" - msgstr "Destruktorprioritäten werden nicht unterstützt" - --#: c-family/c-common.c:6892 -+#: c-family/c-common.c:6914 - #, gcc-internal-format - msgid "constructor priorities are not supported" - msgstr "Konstruktorprioritäten werden nicht unterstützt" - --#: c-family/c-common.c:6910 -+#: c-family/c-common.c:6932 - #, gcc-internal-format, gfc-internal-format - msgid "destructor priorities from 0 to %d are reserved for the implementation" - msgstr "Destruktorprioritäten von 0 bis %d sind für die Implementierung vorbehalten" - --#: c-family/c-common.c:6915 -+#: c-family/c-common.c:6937 - #, gcc-internal-format, gfc-internal-format - msgid "constructor priorities from 0 to %d are reserved for the implementation" - msgstr "Konstruktorprioritäten von 0 bis %d sind für die Implementierung vorbehalten" - --#: c-family/c-common.c:6923 -+#: c-family/c-common.c:6945 - #, gcc-internal-format, gfc-internal-format - msgid "destructor priorities must be integers from 0 to %d inclusive" - msgstr "Destruktorprioritäten müssen Ganzzahlen von 0 bis einschließlich %d sein" - --#: c-family/c-common.c:6926 -+#: c-family/c-common.c:6948 - #, gcc-internal-format, gfc-internal-format - msgid "constructor priorities must be integers from 0 to %d inclusive" - msgstr "Konstruktorprioritäten müssen Ganzzahlen von 0 bis einschließlich %d sein" - --#: c-family/c-common.c:7082 -+#: c-family/c-common.c:7104 - #, gcc-internal-format - msgid "unknown machine mode %qE" - msgstr "Unbekannter Maschinenzustand %qE" - --#: c-family/c-common.c:7111 -+#: c-family/c-common.c:7133 - #, gcc-internal-format - msgid "specifying vector types with __attribute__ ((mode)) is deprecated" - msgstr "Angabe von Vektortypen mit __attribute__ ((Modus)) ist veraltet" - --#: c-family/c-common.c:7114 -+#: c-family/c-common.c:7136 - #, gcc-internal-format - msgid "use __attribute__ ((vector_size)) instead" - msgstr "Stattdessen __attribute__ ((Vektorgröße)) verwenden" - --#: c-family/c-common.c:7123 -+#: c-family/c-common.c:7145 - #, gcc-internal-format - msgid "unable to emulate %qs" - msgstr "%qs kann nicht emuliert werden" - --#: c-family/c-common.c:7134 -+#: c-family/c-common.c:7156 - #, gcc-internal-format - msgid "invalid pointer mode %qs" - msgstr "Ungültiger Zeigermodus %qs" - --#: c-family/c-common.c:7151 -+#: c-family/c-common.c:7173 - #, gcc-internal-format - msgid "signedness of type and machine mode %qs don%'t match" - msgstr "Vorzeicheneigenschaft des Typen und Maschinenmodus %qs passen nicht zusammen" - --#: c-family/c-common.c:7162 -+#: c-family/c-common.c:7184 - #, gcc-internal-format - msgid "no data type for mode %qs" - msgstr "Kein Datentyp für Zustand %qs" - --#: c-family/c-common.c:7172 -+#: c-family/c-common.c:7194 - #, gcc-internal-format - msgid "cannot use mode %qs for enumeral types" - msgstr "Modus %qs kann nicht für Aufzählungstypen verwendet werden" - --#: c-family/c-common.c:7199 -+#: c-family/c-common.c:7221 - #, gcc-internal-format - msgid "mode %qs applied to inappropriate type" - msgstr "Modus %qs auf unpassenden Typen angewendet" - --#: c-family/c-common.c:7231 -+#: c-family/c-common.c:7253 - #, gcc-internal-format - msgid "section attribute cannot be specified for local variables" - msgstr "Abschnitts-Attribut kann nicht für lokale Variablen angegeben werden" - --#: c-family/c-common.c:7242 config/bfin/bfin.c:4737 config/bfin/bfin.c:4788 -+#: c-family/c-common.c:7264 config/bfin/bfin.c:4737 config/bfin/bfin.c:4788 - #: config/bfin/bfin.c:4815 config/bfin/bfin.c:4828 - #, gcc-internal-format - msgid "section of %q+D conflicts with previous declaration" - msgstr "Abschnitt von %q+D in Konflikt mit vorheriger Deklaration" - --#: c-family/c-common.c:7250 -+#: c-family/c-common.c:7272 - #, gcc-internal-format - msgid "section of %q+D cannot be overridden" - msgstr "Abschnitt von %q+D kann nicht aufgehoben werden" - --#: c-family/c-common.c:7258 -+#: c-family/c-common.c:7280 - #, gcc-internal-format - msgid "section attribute not allowed for %q+D" - msgstr "Abschnitts-Attribut nicht erlaubt für %q+D" - --#: c-family/c-common.c:7265 -+#: c-family/c-common.c:7287 - #, gcc-internal-format - msgid "section attributes are not supported for this target" - msgstr "Abschnitts-Attribute werden für dieses Ziel nicht unterstützt" - --#: c-family/c-common.c:7284 -+#: c-family/c-common.c:7306 - #, gcc-internal-format - msgid "requested alignment is not an integer constant" - msgstr "Verlangte Ausrichtung ist keine Ganzzahlkonstante" - --#: c-family/c-common.c:7291 -+#: c-family/c-common.c:7313 - #, gcc-internal-format - msgid "requested alignment is not a power of 2" - msgstr "Verlangte Ausrichtung ist keine Zweierpotenz" - --#: c-family/c-common.c:7296 -+#: c-family/c-common.c:7318 - #, gcc-internal-format - msgid "requested alignment is too large" - msgstr "Verlangte Ausrichtung ist zu groß" - --#: c-family/c-common.c:7379 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#: c-family/c-common.c:7401 -+#, gcc-internal-format, gfc-internal-format - msgid "requested alignment %d is larger than %d" --msgstr "Verlangte Ausrichtung ist zu groß" -+msgstr "verlangte Ausrichtung %d ist größer als %d" - --#: c-family/c-common.c:7436 -+#: c-family/c-common.c:7458 - #, gcc-internal-format - msgid "alignment may not be specified for %q+D" - msgstr "Für %q+D darf keine Ausrichtung angegeben werden" - --#: c-family/c-common.c:7454 -+#: c-family/c-common.c:7476 - #, gcc-internal-format - msgid "alignment for %q+D was previously specified as %d and may not be decreased" - msgstr "Ausrichtung für %q+D wurde zuvor als %d angegeben und kann nicht verringert werden" - --#: c-family/c-common.c:7458 -+#: c-family/c-common.c:7480 - #, gcc-internal-format - msgid "alignment for %q+D must be at least %d" - msgstr "Ausrichtung für %q+D muss mindestens %d sein" - --#: c-family/c-common.c:7483 -+#: c-family/c-common.c:7505 - #, gcc-internal-format - msgid "inline function %q+D declared weak" - msgstr "»inline«-Funktion %q+D als »schwach« deklariert" - --#: c-family/c-common.c:7488 -+#: c-family/c-common.c:7510 - #, gcc-internal-format - msgid "indirect function %q+D cannot be declared weak" - msgstr "indirekte Funktion %q+D kann nicht als »schwach« deklariert werden" - --#: c-family/c-common.c:7525 -+#: c-family/c-common.c:7547 - #, gcc-internal-format - msgid "%q+D defined both normally and as %qE attribute" - msgstr "%q+D sowohl normal als auch als Attribut %qE definiert" - --#: c-family/c-common.c:7533 -+#: c-family/c-common.c:7555 - #, gcc-internal-format - msgid "weak %q+D cannot be defined %qE" - msgstr "schwaches %q+D kann nicht als %qE definiert werden" - --#: c-family/c-common.c:7550 -+#: c-family/c-common.c:7572 - #, gcc-internal-format - msgid "attribute %qE argument not a string" - msgstr "Attributargument von %qE ist keine Zeichenkette" - --#: c-family/c-common.c:7626 -+#: c-family/c-common.c:7648 - #, gcc-internal-format - msgid "indirect function %q+D cannot be declared weakref" - msgstr "indirekte Funktion %q+D kann nicht als »weakref« deklariert werden" - --#: c-family/c-common.c:7648 -+#: c-family/c-common.c:7670 - #, gcc-internal-format - msgid "weakref attribute must appear before alias attribute" - msgstr "Attribut weakref muss vor Attribut alias auftreten" - --#: c-family/c-common.c:7677 -+#: c-family/c-common.c:7699 - #, gcc-internal-format - msgid "%qE attribute ignored on non-class types" - msgstr "Attribut %qE ignoriert für Nicht-Klassen-Typen" - --#: c-family/c-common.c:7683 -+#: c-family/c-common.c:7705 - #, gcc-internal-format - msgid "%qE attribute ignored because %qT is already defined" - msgstr "Attribut %qE ignoriert, da %qT bereits definiert ist" - --#: c-family/c-common.c:7696 -+#: c-family/c-common.c:7718 - #, gcc-internal-format - msgid "visibility argument not a string" - msgstr "Sichtbarkeitsargument ist keine Zeichenkette" - --#: c-family/c-common.c:7708 -+#: c-family/c-common.c:7730 - #, gcc-internal-format - msgid "%qE attribute ignored on types" - msgstr "Attribut %qE für Typen ignoriert" - --#: c-family/c-common.c:7724 -+#: c-family/c-common.c:7746 - #, gcc-internal-format - msgid "visibility argument must be one of \"default\", \"hidden\", \"protected\" or \"internal\"" - msgstr "Sichtbarkeitsargument muss »default«, »hidden«, »protected« oder »internal« sein" - --#: c-family/c-common.c:7735 -+#: c-family/c-common.c:7757 - #, gcc-internal-format - msgid "%qD redeclared with different visibility" - msgstr "%qD mit anderer Sichtbarkeit redeklariert" - --#: c-family/c-common.c:7738 c-family/c-common.c:7742 -+#: c-family/c-common.c:7760 c-family/c-common.c:7764 - #, gcc-internal-format - msgid "%qD was declared %qs which implies default visibility" - msgstr "%qD wurde als %qs deklariert, was Standardsichtbarkeit bedeutet" - --#: c-family/c-common.c:7826 -+#: c-family/c-common.c:7848 - #, gcc-internal-format - msgid "tls_model argument not a string" - msgstr "Argument für tls_model ist keine Zeichenkette" - --#: c-family/c-common.c:7839 -+#: c-family/c-common.c:7861 - #, gcc-internal-format - msgid "tls_model argument must be one of \"local-exec\", \"initial-exec\", \"local-dynamic\" or \"global-dynamic\"" - msgstr "Argument für tls_model muss »local-exec«, »initial-exec«, »local-dynamic« oder »global-dynamic« sein" - --#: c-family/c-common.c:7859 c-family/c-common.c:7965 c-family/c-common.c:8950 -+#: c-family/c-common.c:7881 c-family/c-common.c:7987 c-family/c-common.c:8970 - #: config/m32c/m32c.c:2926 - #, gcc-internal-format - msgid "%qE attribute applies only to functions" - msgstr "Attribut %qE kann nur auf Funktionen angewandt werden" - --#: c-family/c-common.c:7865 c-family/c-common.c:7971 c-family/c-common.c:8956 -+#: c-family/c-common.c:7887 c-family/c-common.c:7993 c-family/c-common.c:8976 - #, gcc-internal-format - msgid "can%'t set %qE attribute after definition" - msgstr "Attribut %qE kann nicht nach der Definition gesetzt werden" - --#: c-family/c-common.c:7911 -+#: c-family/c-common.c:7933 - #, gcc-internal-format - msgid "alloc_size parameter outside range" - msgstr "Parameter alloc_size außerhalb des Wertebereiches" - --#: c-family/c-common.c:8029 -+#: c-family/c-common.c:8051 - #, gcc-internal-format - msgid "%qE attribute duplicated" - msgstr "doppeltes Attribut %qE" - --#: c-family/c-common.c:8031 -+#: c-family/c-common.c:8053 - #, gcc-internal-format - msgid "%qE attribute follows %qE" - msgstr "Attribut %qE folgt auf %qE" - --#: c-family/c-common.c:8130 -+#: c-family/c-common.c:8152 - #, gcc-internal-format - msgid "type was previously declared %qE" - msgstr "Typ war vorher als %qE deklariert" - --#: c-family/c-common.c:8183 -+#: c-family/c-common.c:8205 - #, gcc-internal-format - msgid "%qE argument not an identifier" - msgstr "Argument %qE ist kein Bezeichner" - --#: c-family/c-common.c:8194 -+#: c-family/c-common.c:8216 - #, gcc-internal-format - msgid "%qD is not compatible with %qD" - msgstr "%qD ist mit %qD unverträglich" - --#: c-family/c-common.c:8197 -+#: c-family/c-common.c:8219 - #, gcc-internal-format - msgid "transaction_wrap argument is not a function" - msgstr "Argument für transaction_wrap ist keine Funktion" - --#: c-family/c-common.c:8245 -+#: c-family/c-common.c:8267 - #, gcc-internal-format - msgid "deprecated message is not a string" - msgstr "Veraltete Meldung ist keine Zeichenkette" - --#: c-family/c-common.c:8286 -+#: c-family/c-common.c:8308 - #, gcc-internal-format - msgid "%qE attribute ignored for %qE" - msgstr "Attribut %qE ignoriert für %qE" - --#: c-family/c-common.c:8346 -+#: c-family/c-common.c:8368 - #, gcc-internal-format - msgid "invalid vector type for attribute %qE" - msgstr "Ungültiger Vektortyp für Attribut %qE" - --#: c-family/c-common.c:8352 ada/gcc-interface/utils.c:6307 -+#: c-family/c-common.c:8374 ada/gcc-interface/utils.c:6307 - #: ada/gcc-interface/utils.c:6401 - #, gcc-internal-format - msgid "vector size not an integral multiple of component size" - msgstr "Vektorgröße kein ganzzahliges Vielfaches der Komponentengröße" - --#: c-family/c-common.c:8358 ada/gcc-interface/utils.c:6313 -+#: c-family/c-common.c:8380 ada/gcc-interface/utils.c:6313 - #: ada/gcc-interface/utils.c:6407 - #, gcc-internal-format - msgid "zero vector size" - msgstr "Vektorgröße Null" - --#: c-family/c-common.c:8366 ada/gcc-interface/utils.c:6321 -+#: c-family/c-common.c:8388 ada/gcc-interface/utils.c:6321 - #: ada/gcc-interface/utils.c:6414 - #, gcc-internal-format - msgid "number of components of the vector not a power of two" - msgstr "Komponentenanzahl des Vektors ist keine Zweierpotenz" - --#: c-family/c-common.c:8394 ada/gcc-interface/utils.c:6048 -+#: c-family/c-common.c:8416 ada/gcc-interface/utils.c:6048 - #, gcc-internal-format - msgid "nonnull attribute without arguments on a non-prototype" - msgstr "Nicht-Null-Attribut ohne Argumente für einen Nicht-Prototyp" - --#: c-family/c-common.c:8408 ada/gcc-interface/utils.c:6062 -+#: c-family/c-common.c:8430 ada/gcc-interface/utils.c:6062 - #, gcc-internal-format, gfc-internal-format - msgid "nonnull argument has invalid operand number (argument %lu)" - msgstr "Nicht-Null-Argument hat ungültige Operandenzahl (Argument %lu)" - --#: c-family/c-common.c:8430 ada/gcc-interface/utils.c:6084 -+#: c-family/c-common.c:8452 ada/gcc-interface/utils.c:6084 - #, gcc-internal-format, gfc-internal-format - msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)" - msgstr "Nicht-Null-Argument mit Operandenzahl außerhalb des Wertebereiches (Argument %lu, Operand %lu)" - --#: c-family/c-common.c:8438 ada/gcc-interface/utils.c:6093 -+#: c-family/c-common.c:8460 ada/gcc-interface/utils.c:6093 - #, gcc-internal-format, gfc-internal-format - msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)" - msgstr "Nicht-Null-Argument referenziert Nicht-Zeiger-Operanden (Argument %lu, Operand %lu)" - --#: c-family/c-common.c:8533 -+#: c-family/c-common.c:8555 - #, gcc-internal-format - msgid "not enough variable arguments to fit a sentinel" - msgstr "Zu wenige variable Argumente, um zu einem Wächter zu passen" - --#: c-family/c-common.c:8547 -+#: c-family/c-common.c:8569 - #, gcc-internal-format - msgid "missing sentinel in function call" - msgstr "Wächter in Funktionsaufruf fehlt" - --#: c-family/c-common.c:8588 -+#: c-family/c-common.c:8610 - #, gcc-internal-format, gfc-internal-format - msgid "null argument where non-null required (argument %lu)" - msgstr "Null-Argument, wo Nicht-Null erwartet (Argument %lu)" - --#: c-family/c-common.c:8653 -+#: c-family/c-common.c:8675 - #, gcc-internal-format - msgid "cleanup argument not an identifier" - msgstr "Argument für cleanup ist kein Bezeichner" - --#: c-family/c-common.c:8660 -+#: c-family/c-common.c:8682 - #, gcc-internal-format - msgid "cleanup argument not a function" - msgstr "Argument für cleanup ist keine Funktion" - --#: c-family/c-common.c:8697 -+#: c-family/c-common.c:8719 - #, gcc-internal-format - msgid "%qE attribute requires prototypes with named arguments" - msgstr "Attribut %qE benötigt Prototypen mit benannten Argumenten" - --#: c-family/c-common.c:8705 -+#: c-family/c-common.c:8727 - #, gcc-internal-format - msgid "%qE attribute only applies to variadic functions" - msgstr "Attribut %qE gilt nur für variadische Funktionen" - --#: c-family/c-common.c:8717 ada/gcc-interface/utils.c:6135 -+#: c-family/c-common.c:8739 ada/gcc-interface/utils.c:6135 - #, gcc-internal-format - msgid "requested position is not an integer constant" - msgstr "Angeforderte Position ist keine Ganzzahlkonstante" - --#: c-family/c-common.c:8725 ada/gcc-interface/utils.c:6142 -+#: c-family/c-common.c:8747 ada/gcc-interface/utils.c:6142 - #, gcc-internal-format - msgid "requested position is less than zero" - msgstr "Angeforderte Position ist kleiner als Null" - --#: c-family/c-common.c:8843 -+#: c-family/c-common.c:8865 - #, gcc-internal-format, gfc-internal-format - msgid "bad option %s to optimize attribute" - msgstr "schlechte Option %s für Attribut »optimize«" - --#: c-family/c-common.c:8846 -+#: c-family/c-common.c:8868 - #, gcc-internal-format, gfc-internal-format - msgid "bad option %s to pragma attribute" - msgstr "schlechte Option %s für Attribut »pragma«" - --#: c-family/c-common.c:9075 -+#: c-family/c-common.c:9095 - #, gcc-internal-format - msgid "not enough arguments to function %qE" - msgstr "Zu wenige Argumente für Funktion %qE" - --#: c-family/c-common.c:9081 c-family/c-common.c:10007 c/c-typeck.c:2954 -+#: c-family/c-common.c:9101 c-family/c-common.c:10027 c/c-typeck.c:2954 - #, gcc-internal-format - msgid "too many arguments to function %qE" - msgstr "zu viele Argumente für Funktion %qE" - --#: c-family/c-common.c:9111 c-family/c-common.c:9157 -+#: c-family/c-common.c:9131 c-family/c-common.c:9177 - #, gcc-internal-format - msgid "non-floating-point argument in call to function %qE" - msgstr "Nicht-Gleitkomma-Argument in Aufruf von Funktion %qE" - --#: c-family/c-common.c:9134 -+#: c-family/c-common.c:9154 - #, gcc-internal-format - msgid "non-floating-point arguments in call to function %qE" - msgstr "Nicht-Gleitkomma-Argumente in Aufruf von Funktion %qE" - --#: c-family/c-common.c:9150 -+#: c-family/c-common.c:9170 - #, gcc-internal-format - msgid "non-const integer argument %u in call to function %qE" - msgstr "Nicht-konstantes Ganzzahl-Argument %u in Aufruf von Funktion %qE" - --#: c-family/c-common.c:9170 -+#: c-family/c-common.c:9190 - #, gcc-internal-format - msgid "non-integer argument 3 in call to function %qE" - msgstr "Nicht-Ganzzahl-Argument 3 in Aufruf von Funktion %qE" - --#: c-family/c-common.c:9496 -+#: c-family/c-common.c:9516 - #, gcc-internal-format - msgid "cannot apply % to static data member %qD" - msgstr "% kann nicht auf statisches Datenelement %qD angewendet werden" - --#: c-family/c-common.c:9501 -+#: c-family/c-common.c:9521 - #, gcc-internal-format - msgid "cannot apply % when % is overloaded" - msgstr "% kann nicht angewandt werden, wenn % überladen ist" - --#: c-family/c-common.c:9508 -+#: c-family/c-common.c:9528 - #, gcc-internal-format - msgid "cannot apply % to a non constant address" - msgstr "% kann nicht auf nicht-konstante Adresse angewandt werden" - --#: c-family/c-common.c:9521 cp/typeck.c:5289 -+#: c-family/c-common.c:9541 cp/typeck.c:5289 - #, gcc-internal-format - msgid "attempt to take address of bit-field structure member %qD" - msgstr "Versuch, die Adresse des Bitfeldstrukturelements %qD zu ermitteln" - --#: c-family/c-common.c:9573 -+#: c-family/c-common.c:9593 - #, gcc-internal-format - msgid "index %E denotes an offset greater than size of %qT" - msgstr "Index %E markiert einen Offset größer als die Größe von %qT" - --#: c-family/c-common.c:9613 -+#: c-family/c-common.c:9633 - #, gcc-internal-format - msgid "the omitted middle operand in ?: will always be %, suggest explicit middle operand" - msgstr "Der ausgelassene mittlere Operand in ?: wird immer % sein; ausdrücklicher mittlerer Operand wird empfohlen" - --#: c-family/c-common.c:9634 -+#: c-family/c-common.c:9654 - #, gcc-internal-format - msgid "assignment of member %qD in read-only object" - msgstr "Zuweisung von Element %qD in schreibgeschütztem Objekt" - --#: c-family/c-common.c:9636 -+#: c-family/c-common.c:9656 - #, gcc-internal-format - msgid "increment of member %qD in read-only object" - msgstr "Erhöhung des Elements %qD in schreibgeschütztem Objekt" - --#: c-family/c-common.c:9638 -+#: c-family/c-common.c:9658 - #, gcc-internal-format - msgid "decrement of member %qD in read-only object" - msgstr "Verringerung des Elements %qD in schreibgeschütztem Objekt" - --#: c-family/c-common.c:9640 -+#: c-family/c-common.c:9660 - #, gcc-internal-format - msgid "member %qD in read-only object used as % output" - msgstr "Element %qD in schreibgeschütztem Objekt als %-Ausgabe verwendet" - --#: c-family/c-common.c:9644 -+#: c-family/c-common.c:9664 - #, gcc-internal-format - msgid "assignment of read-only member %qD" - msgstr "Zuweisung des schreibgeschützten Elementes %qD" - --#: c-family/c-common.c:9645 -+#: c-family/c-common.c:9665 - #, gcc-internal-format - msgid "increment of read-only member %qD" - msgstr "Erhöhung des schreibgeschützten Elementes %qD" - --#: c-family/c-common.c:9646 -+#: c-family/c-common.c:9666 - #, gcc-internal-format - msgid "decrement of read-only member %qD" - msgstr "Verringerung des schreibgeschützten Elementes %qD" - --#: c-family/c-common.c:9647 -+#: c-family/c-common.c:9667 - #, gcc-internal-format - msgid "read-only member %qD used as % output" - msgstr "schreibgeschütztes Element %qD als %-Ausgabe verwendet" - --#: c-family/c-common.c:9651 -+#: c-family/c-common.c:9671 - #, gcc-internal-format - msgid "assignment of read-only variable %qD" - msgstr "Zuweisung der schreibgeschützten Variable %qD" - --#: c-family/c-common.c:9652 -+#: c-family/c-common.c:9672 - #, gcc-internal-format - msgid "increment of read-only variable %qD" - msgstr "Erhöhung der schreibgeschützten Variable %qD" - --#: c-family/c-common.c:9653 -+#: c-family/c-common.c:9673 - #, gcc-internal-format - msgid "decrement of read-only variable %qD" - msgstr "Verringerung der schreibgeschützten Variable %qD" - --#: c-family/c-common.c:9654 -+#: c-family/c-common.c:9674 - #, gcc-internal-format - msgid "read-only variable %qD used as % output" - msgstr "schreibgeschützte Variable %qD als %-Ausgabe verwendet" - --#: c-family/c-common.c:9657 -+#: c-family/c-common.c:9677 - #, gcc-internal-format - msgid "assignment of read-only parameter %qD" - msgstr "Zuweisung des schreibgeschützten Parameters %qD" - --#: c-family/c-common.c:9658 -+#: c-family/c-common.c:9678 - #, gcc-internal-format - msgid "increment of read-only parameter %qD" - msgstr "Erhöhung des schreibgeschützten Parameters %qD" - --#: c-family/c-common.c:9659 -+#: c-family/c-common.c:9679 - #, gcc-internal-format - msgid "decrement of read-only parameter %qD" - msgstr "Verringerung des schreibgeschützten Parameters %qD" - --#: c-family/c-common.c:9660 -+#: c-family/c-common.c:9680 - #, gcc-internal-format - msgid "read-only parameter %qD use as % output" - msgstr "schreibgeschützter Parameter %qD als %-Ausgabe verwendet" - --#: c-family/c-common.c:9665 -+#: c-family/c-common.c:9685 - #, gcc-internal-format - msgid "assignment of read-only named return value %qD" - msgstr "Zuweisung des schreibgeschützten benannten Rückgabewertes %qD" - --#: c-family/c-common.c:9667 -+#: c-family/c-common.c:9687 - #, gcc-internal-format - msgid "increment of read-only named return value %qD" - msgstr "Erhöhung des schreibgeschützten benannten Rückgabewertes %qD" - --#: c-family/c-common.c:9669 -+#: c-family/c-common.c:9689 - #, gcc-internal-format - msgid "decrement of read-only named return value %qD" - msgstr "Verringerung des schreibgeschützten benannten Rückgabewertes %qD" - --#: c-family/c-common.c:9671 -+#: c-family/c-common.c:9691 - #, gcc-internal-format - msgid "read-only named return value %qD used as %output" - msgstr "schreibgeschützter benannter Rückgabewert %qD als %-Ausgabe verwendet" - --#: c-family/c-common.c:9676 -+#: c-family/c-common.c:9696 - #, gcc-internal-format - msgid "assignment of function %qD" - msgstr "Zuweisung der Funktion %qD" - --#: c-family/c-common.c:9677 -+#: c-family/c-common.c:9697 - #, gcc-internal-format - msgid "increment of function %qD" - msgstr "Erhöhung der Funktion %qD" - --#: c-family/c-common.c:9678 -+#: c-family/c-common.c:9698 - #, gcc-internal-format - msgid "decrement of function %qD" - msgstr "Verringerung der Funktion %qD" - --#: c-family/c-common.c:9679 -+#: c-family/c-common.c:9699 - #, gcc-internal-format - msgid "function %qD used as % output" - msgstr "Funktion %qD als %-Ausgabe verwendet" - --#: c-family/c-common.c:9682 c/c-typeck.c:3902 -+#: c-family/c-common.c:9702 c/c-typeck.c:3902 - #, gcc-internal-format - msgid "assignment of read-only location %qE" - msgstr "Zuweisung der schreibgeschützten Speicherstelle %qE" - --#: c-family/c-common.c:9683 c/c-typeck.c:3905 -+#: c-family/c-common.c:9703 c/c-typeck.c:3905 - #, gcc-internal-format - msgid "increment of read-only location %qE" - msgstr "Erhöhung der schreibgeschützten Speicherstelle %qE" - --#: c-family/c-common.c:9684 c/c-typeck.c:3908 -+#: c-family/c-common.c:9704 c/c-typeck.c:3908 - #, gcc-internal-format - msgid "decrement of read-only location %qE" - msgstr "Verringerung der schreibgeschützten Speicherstelle %qE" - --#: c-family/c-common.c:9685 -+#: c-family/c-common.c:9705 - #, gcc-internal-format - msgid "read-only location %qE used as % output" - msgstr "schreibgeschützte Stelle %qE als %-Ausgabe verwendet" - --#: c-family/c-common.c:9699 -+#: c-family/c-common.c:9719 - #, gcc-internal-format - msgid "lvalue required as left operand of assignment" - msgstr "Als linker Operand einer Zuweisung wird L-Wert erfordert" - --#: c-family/c-common.c:9702 -+#: c-family/c-common.c:9722 - #, gcc-internal-format - msgid "lvalue required as increment operand" - msgstr "Als Erhöhungsoperand wird L-Wert erfordert" - --#: c-family/c-common.c:9705 -+#: c-family/c-common.c:9725 - #, gcc-internal-format - msgid "lvalue required as decrement operand" - msgstr "Als Verringerungsoperand wird L-Wert erfordert" - --#: c-family/c-common.c:9708 -+#: c-family/c-common.c:9728 - #, gcc-internal-format - msgid "lvalue required as unary %<&%> operand" - msgstr "Als Operand für unäres %<&%> wird L-Wert erfordert" - --#: c-family/c-common.c:9711 -+#: c-family/c-common.c:9731 - #, gcc-internal-format - msgid "lvalue required in asm statement" - msgstr "In asm-Anweisung wird L-Wert erfordert" - --#: c-family/c-common.c:9728 -+#: c-family/c-common.c:9748 - #, gcc-internal-format - msgid "invalid type argument (have %qT)" - msgstr "ungültiger Argumenttyp (haben %qT)" - --#: c-family/c-common.c:9732 -+#: c-family/c-common.c:9752 - #, gcc-internal-format - msgid "invalid type argument of array indexing (have %qT)" - msgstr "ungültiger Argumenttyp des Feldindex (haben %qT)" - --#: c-family/c-common.c:9737 -+#: c-family/c-common.c:9757 - #, gcc-internal-format - msgid "invalid type argument of unary %<*%> (have %qT)" - msgstr "ungültiger Argumenttyp in unärem %<*%> (haben %qT)" - --#: c-family/c-common.c:9742 -+#: c-family/c-common.c:9762 - #, gcc-internal-format - msgid "invalid type argument of %<->%> (have %qT)" - msgstr "ungültiger Argumenttyp in %<->%> (haben %qT)" - --#: c-family/c-common.c:9747 -+#: c-family/c-common.c:9767 - #, gcc-internal-format - msgid "invalid type argument of implicit conversion (have %qT)" - msgstr "ungültiger Argumenttyp in impliziter Umwandlung (haben %qT)" - --#: c-family/c-common.c:9877 cp/init.c:2373 -+#: c-family/c-common.c:9897 cp/init.c:2373 - #, gcc-internal-format - msgid "size of array is too large" - msgstr "Feldgröße ist zu groß" - --#: c-family/c-common.c:9925 c-family/c-common.c:9981 c/c-typeck.c:3185 -+#: c-family/c-common.c:9945 c-family/c-common.c:10001 c/c-typeck.c:3185 - #, gcc-internal-format - msgid "too few arguments to function %qE" - msgstr "Zu wenige Argumente für Funktion %qE" - --#: c-family/c-common.c:9942 config/mep/mep.c:6175 c/c-typeck.c:5687 -+#: c-family/c-common.c:9962 config/mep/mep.c:6175 c/c-typeck.c:5687 - #, gcc-internal-format - msgid "incompatible type for argument %d of %qE" - msgstr "Inkompatibler Typ für Argument %d von %qE" - --#: c-family/c-common.c:10074 -+#: c-family/c-common.c:10094 - #, gcc-internal-format - msgid "incorrect number of arguments to function %qE" - msgstr "Falsche Anzahl der Argumente für Funktion %qE" - --#: c-family/c-common.c:10082 -+#: c-family/c-common.c:10102 - #, gcc-internal-format - msgid "argument 1 of %qE must be a non-void pointer type" - msgstr "Argument 1 von %qE muss ein Nicht-Void-Zeigertyp sein" - --#: c-family/c-common.c:10091 -+#: c-family/c-common.c:10111 - #, gcc-internal-format - msgid "argument 1 of %qE must be a pointer to a constant size type" - msgstr "Argument 1 von %qE muss ein Zeiger auf Typen konstanter Größe sein" - --#: c-family/c-common.c:10102 -+#: c-family/c-common.c:10122 - #, gcc-internal-format - msgid "argument 1 of %qE must be a pointer to a nonzero size object" - msgstr "Argument 1 von %qE muss ein Zeiger auf Objekt breiter als Null sein" - --#: c-family/c-common.c:10117 -+#: c-family/c-common.c:10137 - #, gcc-internal-format - msgid "argument %d of %qE must be a pointer type" - msgstr "Argument %d von %qE muss eine Zeigertyp sein" - --#: c-family/c-common.c:10124 -+#: c-family/c-common.c:10144 - #, gcc-internal-format - msgid "size mismatch in argument %d of %qE" - msgstr "Unpassende Größe in Argument %d von %qE" - --#: c-family/c-common.c:10140 -+#: c-family/c-common.c:10160 - #, gcc-internal-format - msgid "invalid memory model argument %d of %qE" - msgstr "ungültiges Argument %d für Speichermodell von %qE" - --#: c-family/c-common.c:10147 -+#: c-family/c-common.c:10167 - #, gcc-internal-format - msgid "non-integer memory model argument %d of %qE" - msgstr "Nicht-Ganzzahlargument %d für Speichermodell von %qE" - --#: c-family/c-common.c:10674 -+#: c-family/c-common.c:10694 - #, gcc-internal-format - msgid "array subscript has type %" - msgstr "Feldindex hat Typ %" - --#: c-family/c-common.c:10709 c-family/c-common.c:10712 -+#: c-family/c-common.c:10729 c-family/c-common.c:10732 - #, gcc-internal-format - msgid "suggest parentheses around %<+%> inside %<<<%>" - msgstr "Klammern um %<+%> innerhalb von %<<<%> empfohlen" - --#: c-family/c-common.c:10715 c-family/c-common.c:10718 -+#: c-family/c-common.c:10735 c-family/c-common.c:10738 - #, gcc-internal-format - msgid "suggest parentheses around %<-%> inside %<<<%>" - msgstr "Klammern um %<-%> innerhalb von %<<<%>" - --#: c-family/c-common.c:10724 c-family/c-common.c:10727 -+#: c-family/c-common.c:10744 c-family/c-common.c:10747 - #, gcc-internal-format - msgid "suggest parentheses around %<+%> inside %<>>%>" - msgstr "Klammern um %<+%> innerhalb von %<>>%> empfohlen" - --#: c-family/c-common.c:10730 c-family/c-common.c:10733 -+#: c-family/c-common.c:10750 c-family/c-common.c:10753 - #, gcc-internal-format - msgid "suggest parentheses around %<-%> inside %<>>%>" - msgstr "Klammern um %<-%> innerhalb von %<>>%> empfohlen" - --#: c-family/c-common.c:10739 c-family/c-common.c:10742 -+#: c-family/c-common.c:10759 c-family/c-common.c:10762 - #, gcc-internal-format - msgid "suggest parentheses around %<&&%> within %<||%>" - msgstr "Klammern um %<&&%> innerhalb von %<||%> empfohlen" - --#: c-family/c-common.c:10749 c-family/c-common.c:10753 -+#: c-family/c-common.c:10769 c-family/c-common.c:10773 - #, gcc-internal-format - msgid "suggest parentheses around arithmetic in operand of %<|%>" - msgstr "Klammern um Arithmetik in Operand von %<|%> empfohlen" - --#: c-family/c-common.c:10757 c-family/c-common.c:10760 -+#: c-family/c-common.c:10777 c-family/c-common.c:10780 - #, gcc-internal-format - msgid "suggest parentheses around comparison in operand of %<|%>" - msgstr "Klammern um Vergleich in Operand von %<|%> empfohlen" - --#: c-family/c-common.c:10765 -+#: c-family/c-common.c:10785 - #, gcc-internal-format - msgid "suggest parentheses around operand of % or change %<|%> to %<||%> or % to %<~%>" - msgstr "Klammern um Operand von % empfohlen, oder Änderung von %<|%> in %<||%> oder % in %<~%>" - --#: c-family/c-common.c:10773 c-family/c-common.c:10777 -+#: c-family/c-common.c:10793 c-family/c-common.c:10797 - #, gcc-internal-format - msgid "suggest parentheses around arithmetic in operand of %<^%>" - msgstr "Klammern um Arithmetik in Operand von %<^%> empfohlen" - --#: c-family/c-common.c:10781 c-family/c-common.c:10784 -+#: c-family/c-common.c:10801 c-family/c-common.c:10804 - #, gcc-internal-format - msgid "suggest parentheses around comparison in operand of %<^%>" - msgstr "Klammern um Vergleich in Operand von %<^%> empfohlen" - --#: c-family/c-common.c:10790 c-family/c-common.c:10793 -+#: c-family/c-common.c:10810 c-family/c-common.c:10813 - #, gcc-internal-format - msgid "suggest parentheses around %<+%> in operand of %<&%>" - msgstr "Klammern um %<+%> in Operand von %<&%> empfohlen" - --#: c-family/c-common.c:10796 c-family/c-common.c:10799 -+#: c-family/c-common.c:10816 c-family/c-common.c:10819 - #, gcc-internal-format - msgid "suggest parentheses around %<-%> in operand of %<&%>" - msgstr "Klammern um %<-%> in Operand von %<&%> empfohlen" - --#: c-family/c-common.c:10803 c-family/c-common.c:10806 -+#: c-family/c-common.c:10823 c-family/c-common.c:10826 - #, gcc-internal-format - msgid "suggest parentheses around comparison in operand of %<&%>" - msgstr "Klammern um Vergleich in Operand von %<&%> empfohlen" - --#: c-family/c-common.c:10811 -+#: c-family/c-common.c:10831 - #, gcc-internal-format - msgid "suggest parentheses around operand of % or change %<&%> to %<&&%> or % to %<~%>" - msgstr "Klammern um Operand von % empfohlen, oder Änderung von %<&%> in %<&&%> oder % in %<~%>" - --#: c-family/c-common.c:10818 c-family/c-common.c:10821 -+#: c-family/c-common.c:10838 c-family/c-common.c:10841 - #, gcc-internal-format - msgid "suggest parentheses around comparison in operand of %<==%>" - msgstr "Klammern um Vergleich in Operand von %<==%> empfohlen" - --#: c-family/c-common.c:10826 c-family/c-common.c:10829 -+#: c-family/c-common.c:10846 c-family/c-common.c:10849 - #, gcc-internal-format - msgid "suggest parentheses around comparison in operand of %" - msgstr "Klammern um Vergleich in Operand von % empfohlen" - --#: c-family/c-common.c:10839 c-family/c-common.c:10845 -+#: c-family/c-common.c:10859 c-family/c-common.c:10865 - #, gcc-internal-format - msgid "comparisons like % do not have their mathematical meaning" - msgstr "Vergleiche wie % haben nicht ihre mathematische Bedeutung" - --#: c-family/c-common.c:10861 -+#: c-family/c-common.c:10881 - #, gcc-internal-format - msgid "label %q+D defined but not used" - msgstr "Marke %q+D definiert, aber nicht verwendet" - --#: c-family/c-common.c:10863 -+#: c-family/c-common.c:10883 - #, gcc-internal-format - msgid "label %q+D declared but not defined" - msgstr "Marke %q+D deklariert, aber nicht definiert" - --#: c-family/c-common.c:10879 -+#: c-family/c-common.c:10899 - #, gcc-internal-format - msgid "division by zero" - msgstr "Division durch Null" - --#: c-family/c-common.c:10911 -+#: c-family/c-common.c:10931 - #, gcc-internal-format - msgid "comparison between types %qT and %qT" - msgstr "Vergleich zwischen den Typen %qT und %qT" - --#: c-family/c-common.c:10962 -+#: c-family/c-common.c:10982 - #, gcc-internal-format - msgid "comparison between signed and unsigned integer expressions" - msgstr "Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken" - --#: c-family/c-common.c:11013 -+#: c-family/c-common.c:11033 - #, gcc-internal-format - msgid "promoted ~unsigned is always non-zero" - msgstr "weitergegebenes ~vorzeichenlos ist immer Nicht-Null" - --#: c-family/c-common.c:11016 -+#: c-family/c-common.c:11036 - #, gcc-internal-format - msgid "comparison of promoted ~unsigned with constant" - msgstr "Vergleich von weitergegebenem ~unsigned mit Konstante" - --#: c-family/c-common.c:11026 -+#: c-family/c-common.c:11046 - #, gcc-internal-format - msgid "comparison of promoted ~unsigned with unsigned" - msgstr "Vergleich von weitergegebenem ~unsigned mit unsigned" - --#: c-family/c-common.c:11204 -+#: c-family/c-common.c:11224 - #, gcc-internal-format - msgid "typedef %qD locally defined but not used" - msgstr "typedef %qD lokal definiert, aber nicht verwendet" - --#: c-family/c-common.c:11443 -+#: c-family/c-common.c:11463 - #, gcc-internal-format - msgid "index value is out of bound" - msgstr "Indexwert ist außerhalb der Grenzen" - --#: c-family/c-common.c:11481 c-family/c-common.c:11531 --#: c-family/c-common.c:11546 --#, fuzzy, gcc-internal-format -+#: c-family/c-common.c:11501 c-family/c-common.c:11551 -+#: c-family/c-common.c:11566 -+#, gcc-internal-format - msgid "conversion of scalar %qT to vector %qT involves truncation" --msgstr "Umwandlung von Skalar in Vektor führt zum Abschneiden" -+msgstr "Umwandlung von Skalar %qT in Vektor %qT führt zum Abschneiden" - - #: c-family/c-format.c:103 c-family/c-format.c:290 - #, gcc-internal-format -@@ -19449,9 +19434,9 @@ - msgstr "-Wformat-security wird ohne -Wformat ignoriert" - - #: c-family/c-opts.c:910 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "external TLS initialization functions not supported on this target" --msgstr "geschachtelte Funktionen werden auf diesem Ziel nicht unterstützt" -+msgstr "externe Funktionen zur TLS-Initialisierung werden auf diesem Ziel nicht unterstützt" - - #: c-family/c-opts.c:930 - #, gcc-internal-format -@@ -19466,7 +19451,7 @@ - #: c-family/c-opts.c:954 - #, gcc-internal-format, gfc-internal-format - msgid "the \"%s\" debug format cannot be used with pre-compiled headers" --msgstr "" -+msgstr "Das Debug-Format »%s« kann nicht mit vorkompilierten Headers verwendet werden" - - #: c-family/c-opts.c:1081 - #, gcc-internal-format -@@ -19518,37 +19503,37 @@ - msgid "can%'t write to %s: %m" - msgstr "in %s kann nicht geschrieben werden: %m" - --#: c-family/c-pch.c:191 -+#: c-family/c-pch.c:193 - #, gcc-internal-format - msgid "can%'t write %s: %m" - msgstr "%s kann nicht geschrieben werden: %m" - --#: c-family/c-pch.c:219 c-family/c-pch.c:260 c-family/c-pch.c:311 -+#: c-family/c-pch.c:221 c-family/c-pch.c:262 c-family/c-pch.c:313 - #, gcc-internal-format - msgid "can%'t read %s: %m" - msgstr "%s kann nicht gelesen werden: %m" - --#: c-family/c-pch.c:417 -+#: c-family/c-pch.c:419 - #, gcc-internal-format - msgid "pch_preprocess pragma should only be used with -fpreprocessed" - msgstr "pch_preprocess-Pragma sollte nur mit -fpreprocessed verwendet werden" - --#: c-family/c-pch.c:418 -+#: c-family/c-pch.c:420 - #, gcc-internal-format - msgid "use #include instead" - msgstr "stattdessen #include verwenden" - --#: c-family/c-pch.c:424 -+#: c-family/c-pch.c:426 - #, gcc-internal-format - msgid "%s: couldn%'t open PCH file: %m" - msgstr "%s: PCH-Datei konnte nicht geöffnet werden: %m" - --#: c-family/c-pch.c:429 -+#: c-family/c-pch.c:431 - #, gcc-internal-format - msgid "use -Winvalid-pch for more information" - msgstr "-Winvalid-pch für weitere Informationen verwenden" - --#: c-family/c-pch.c:430 -+#: c-family/c-pch.c:432 - #, gcc-internal-format, gfc-internal-format - msgid "%s: PCH file was invalid" - msgstr "%s: PCH-Datei war ungültig" -@@ -20030,9 +20015,9 @@ - msgstr "%qE 2.95 vtable-Kompatibilitätsattribut trifft nur für C++-Klassen zu" - - #: config/darwin.c:2689 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "protected visibility attribute not supported in this configuration; ignored" --msgstr "Sichtbarkeitsattribute werden in dieser Konfiguration nicht unterstützt; ignoriert" -+msgstr "geschützte Sichtbarkeitsattribute werden in dieser Konfiguration nicht unterstützt; ignoriert" - - #: config/darwin.c:2847 - #, gcc-internal-format, gfc-internal-format -@@ -20166,74 +20151,74 @@ - msgstr "Profilerunterstützung für VxWorks" - - #: config/aarch64/aarch64-builtins.c:1032 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "incompatible type for argument %d, expected %" --msgstr "Inkompatibler Typ für Argument %d von %qE" -+msgstr "unverträglicher Typ für Argument %d, % erwartet" - - #: config/aarch64/aarch64.c:3643 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "function profiling" --msgstr "Funktionsprofilierung einschalten" -+msgstr "Funktionsprofilierung" - - #: config/aarch64/aarch64.c:4623 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "missing feature modifier after %qs" --msgstr "fehlender Dateiname hinter %qs" -+msgstr "fehlender Eigenschaftsmodifizierer hinter %qs" - - #. Extension not found in list. - #: config/aarch64/aarch64.c:4644 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "unknown feature modifier %qs" --msgstr "unbekanntes TLS-Modell %qs" -+msgstr "unbekannter Eigenschaftsmodifizierer %qs" - - #: config/aarch64/aarch64.c:4675 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "missing arch name in -march=%qs" --msgstr "fehlender Pfad hinter %qs" -+msgstr "fehlender Architekturname in -march=%qs" - - #. ARCH name not found in list. - #: config/aarch64/aarch64.c:4699 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "unknown value %qs for -march" --msgstr "unbekannter Wert %s für -mfpu" -+msgstr "unbekannter Wert %qs für -march" - - #: config/aarch64/aarch64.c:4724 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "missing cpu name in -mcpu=%qs" --msgstr "fehlender Pfad hinter %qs" -+msgstr "fehlender CPU-Name in -mcpu=%qs" - - #. CPU name not found in list. - #: config/aarch64/aarch64.c:4747 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "unknown value %qs for -mcpu" --msgstr "unbekannter Wert %s für -mfpu" -+msgstr "unbekannter Wert %qs für -mcpu" - - #. CPU name not found in list. - #: config/aarch64/aarch64.c:4771 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "unknown value %qs for -mtune" --msgstr "unbekannter Wert %s für -mfpu" -+msgstr "unbekannter Wert %qs für -mtune" - - #: config/aarch64/aarch64.c:4879 - #, gcc-internal-format - msgid "code model %qs with -f%s" --msgstr "" -+msgstr "Codemodell %qs mit -f%s" - - #: config/aarch64/aarch64.c:5198 config/aarch64/aarch64.c:5306 - #: config/aarch64/aarch64.c:5545 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qs and floating point or vector arguments" --msgstr "Hardware-Gleitkommabefehle verwenden" -+msgstr "%qs und Gleitkomma- oder Vektorbefehle" - - #: config/aarch64/aarch64.c:6421 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "lane out of range" --msgstr "Zeilennummer ist außerhalb des Wertebereiches" -+msgstr "Spur ist außerhalb des Wertebereiches" - - #: config/aarch64/aarch64.c:6431 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "constant out of range" --msgstr "Konstantes Argument außerhalb des Wertebereiches für %qs" -+msgstr "Konstante ist außerhalb des Wertebereiches" - - #: config/alpha/alpha.c:295 - #, gcc-internal-format -@@ -20377,14 +20362,14 @@ - msgstr "AAPCS unterstützt nicht -mcallee-super-interworking" - - #: config/arm/arm.c:1923 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "iWMMXt and NEON are incompatible" --msgstr "-fPIC und -G sind unverträglich" -+msgstr "iWMMXt und NEON sind unverträglich" - - #: config/arm/arm.c:1927 - #, gcc-internal-format - msgid "iWMMXt unsupported under Thumb mode" --msgstr "" -+msgstr "iWMMXt wird im Thumb-Modus nicht unterstützt" - - #: config/arm/arm.c:1931 - #, gcc-internal-format -@@ -20467,220 +20452,220 @@ - #: config/i386/i386.c:34639 config/i386/i386.c:34690 config/i386/i386.c:34762 - #: config/m68k/m68k.c:729 config/mcore/mcore.c:3046 config/mep/mep.c:3887 - #: config/mep/mep.c:3901 config/mep/mep.c:3975 config/rl78/rl78.c:480 --#: config/rs6000/rs6000.c:24833 config/rx/rx.c:2571 config/sh/sh.c:9515 --#: config/sh/sh.c:9533 config/sh/sh.c:9562 config/sh/sh.c:9644 --#: config/sh/sh.c:9667 config/spu/spu.c:3685 config/stormy16/stormy16.c:2207 -+#: config/rs6000/rs6000.c:24833 config/rx/rx.c:2571 config/sh/sh.c:9512 -+#: config/sh/sh.c:9530 config/sh/sh.c:9559 config/sh/sh.c:9641 -+#: config/sh/sh.c:9664 config/spu/spu.c:3685 config/stormy16/stormy16.c:2207 - #: config/v850/v850.c:2082 - #, gcc-internal-format - msgid "%qE attribute only applies to functions" - msgstr "Attribut %qE bezieht sich nur auf Funktionen" - --#: config/arm/arm.c:19315 -+#: config/arm/arm.c:19325 - #, gcc-internal-format - msgid "unable to compute real location of stacked parameter" - msgstr "Wirkliche Stelle des gestapelten Parameters kann nicht berechnet werden" - --#: config/arm/arm.c:21257 -+#: config/arm/arm.c:21267 - #, gcc-internal-format - msgid "argument must be a constant" - msgstr "Argument muss eine Konstante sein" - - #. @@@ better error message --#: config/arm/arm.c:21632 config/arm/arm.c:21736 -+#: config/arm/arm.c:21642 config/arm/arm.c:21746 - #, gcc-internal-format - msgid "selector must be an immediate" - msgstr "Wähler muss »immediate« sein" - --#: config/arm/arm.c:21640 config/arm/arm.c:21685 config/arm/arm.c:21743 --#: config/arm/arm.c:21752 -+#: config/arm/arm.c:21650 config/arm/arm.c:21695 config/arm/arm.c:21753 -+#: config/arm/arm.c:21762 - #, gcc-internal-format - msgid "the range of selector should be in 0 to 7" - msgstr "" - --#: config/arm/arm.c:21645 config/arm/arm.c:21754 -+#: config/arm/arm.c:21655 config/arm/arm.c:21764 - #, gcc-internal-format - msgid "the range of selector should be in 0 to 3" - msgstr "" - --#: config/arm/arm.c:21650 config/arm/arm.c:21756 -+#: config/arm/arm.c:21660 config/arm/arm.c:21766 - #, gcc-internal-format - msgid "the range of selector should be in 0 to 1" - msgstr "" - --#: config/arm/arm.c:21822 -+#: config/arm/arm.c:21832 - #, gcc-internal-format - msgid "mask must be an immediate" - msgstr "Maske muss »immediate« sein" - --#: config/arm/arm.c:21827 --#, fuzzy, gcc-internal-format -+#: config/arm/arm.c:21837 -+#, gcc-internal-format - msgid "the range of mask should be in 0 to 255" --msgstr "Argument des Attributs %qE sollte zwischen 0 und 255 sein" -+msgstr "der Wertebereich der Maske ist 0 bis 255" - --#: config/arm/arm.c:22015 -+#: config/arm/arm.c:22025 - #, gcc-internal-format - msgid "the range of count should be in 0 to 32. please check the intrinsic _mm_rori_pi16 in code." --msgstr "" -+msgstr "der Wertebereich des Zählers ist 0 bis 32. Bitte eingebautes _mm_rori_pi16 im Code prüfen." - --#: config/arm/arm.c:22017 -+#: config/arm/arm.c:22027 - #, gcc-internal-format - msgid "the range of count should be in 0 to 32. please check the intrinsic _mm_rori_pi32 in code." --msgstr "" -+msgstr "der Wertebereich des Zählers ist 0 bis 32. Bitte eingebautes _mm_rori_pi32 im Code prüfen." - --#: config/arm/arm.c:22019 -+#: config/arm/arm.c:22029 - #, gcc-internal-format - msgid "the range of count should be in 0 to 32. please check the intrinsic _mm_ror_pi16 in code." --msgstr "" -+msgstr "der Wertebereich des Zählers ist 0 bis 32. Bitte eingebautes _mm_ror_pi16 im Code prüfen." - --#: config/arm/arm.c:22021 -+#: config/arm/arm.c:22031 - #, gcc-internal-format - msgid "the range of count should be in 0 to 32. please check the intrinsic _mm_ror_pi32 in code." --msgstr "" -+msgstr "der Wertebereich des Zählers ist 0 bis 32. Bitte eingebautes _mm_ror_pi32 im Code prüfen." - --#: config/arm/arm.c:22027 -+#: config/arm/arm.c:22037 - #, gcc-internal-format - msgid "the range of count should be in 0 to 64. please check the intrinsic _mm_rori_si64 in code." --msgstr "" -+msgstr "der Wertebereich des Zählers ist 0 bis 64. Bitte eingebautes _mm_rori_si64 im Code prüfen." - --#: config/arm/arm.c:22029 -+#: config/arm/arm.c:22039 - #, gcc-internal-format - msgid "the range of count should be in 0 to 64. please check the intrinsic _mm_ror_si64 in code." --msgstr "" -+msgstr "der Wertebereich des Zählers ist 0 bis 64. Bitte eingebautes _mm_ror_si64 im Code prüfen." - --#: config/arm/arm.c:22034 -+#: config/arm/arm.c:22044 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_srli_pi16 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_srli_pi16 im Code prüfen." - --#: config/arm/arm.c:22036 -+#: config/arm/arm.c:22046 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_srli_pi32 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_srli_pi32 im Code prüfen." - --#: config/arm/arm.c:22038 -+#: config/arm/arm.c:22048 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_srli_si64 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_srli_si64 im Code prüfen." - --#: config/arm/arm.c:22040 -+#: config/arm/arm.c:22050 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_slli_pi16 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_slli_pi16 im Code prüfen." - --#: config/arm/arm.c:22042 -+#: config/arm/arm.c:22052 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_slli_pi32 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_slli_pi32 im Code prüfen." - --#: config/arm/arm.c:22044 -+#: config/arm/arm.c:22054 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_slli_si64 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_slli_si64 im Code prüfen." - --#: config/arm/arm.c:22046 -+#: config/arm/arm.c:22056 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_srai_pi16 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_srai_pi16 im Code prüfen." - --#: config/arm/arm.c:22048 -+#: config/arm/arm.c:22058 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_srai_pi32 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_srai_pi32 im Code prüfen." - --#: config/arm/arm.c:22050 -+#: config/arm/arm.c:22060 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_srai_si64 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_srai_si64 im Code prüfen." - --#: config/arm/arm.c:22052 -+#: config/arm/arm.c:22062 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_srl_pi16 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_srl_pi16 im Code prüfen." - --#: config/arm/arm.c:22054 -+#: config/arm/arm.c:22064 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_srl_pi32 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_srl_pi32 im Code prüfen." - --#: config/arm/arm.c:22056 -+#: config/arm/arm.c:22066 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_srl_si64 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_srl_si64 im Code prüfen." - --#: config/arm/arm.c:22058 -+#: config/arm/arm.c:22068 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_sll_pi16 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_sll_pi16 im Code prüfen." - --#: config/arm/arm.c:22060 -+#: config/arm/arm.c:22070 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_sll_pi32 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_sll_pi32 im Code prüfen." - --#: config/arm/arm.c:22062 -+#: config/arm/arm.c:22072 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_sll_si64 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_sll_si64 im Code prüfen." - --#: config/arm/arm.c:22064 -+#: config/arm/arm.c:22074 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_sra_pi16 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_sra_pi16 im Code prüfen." - --#: config/arm/arm.c:22066 -+#: config/arm/arm.c:22076 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_sra_pi32 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_sra_pi32 im Code prüfen." - --#: config/arm/arm.c:22068 -+#: config/arm/arm.c:22078 - #, gcc-internal-format - msgid "the count should be no less than 0. please check the intrinsic _mm_sra_si64 in code." --msgstr "" -+msgstr "der Zähler sollte nicht kleiner als 0 sein. Bitte das eingebaute _mm_sra_si64 im Code prüfen." - --#: config/arm/arm.c:22787 -+#: config/arm/arm.c:22797 - #, gcc-internal-format - msgid "no low registers available for popping high registers" - msgstr "keine unteren Register für das Hervorholen der hohen Register verfügbar" - --#: config/arm/arm.c:23012 -+#: config/arm/arm.c:23022 - #, gcc-internal-format - msgid "interrupt Service Routines cannot be coded in Thumb mode" - msgstr "Interrupt-Dienst-Routinen können nicht im »Thumb«-Modus codiert werden" - - #: config/avr/avr-c.c:65 config/avr/avr-c.c:190 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qs expects 1 argument but %d given" --msgstr "Makro »%s« erfordert %u Argumente, aber nur %u wurden angegeben" -+msgstr "%qs erfordert 1 Argument, aber %d wurden angegeben" - - #: config/avr/avr-c.c:76 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qs expects a fixed-point value as argument" --msgstr "%qs erwartet ein konstantes Argument" -+msgstr "%qs erwartet einen Festkommawert als Argument" - - #: config/avr/avr-c.c:102 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "using %qs with unsigned type has no effect" --msgstr "Attribut %qE hat keinen Effekt" -+msgstr "Verwendung von %qs mit vorzeichenunbehaftetem Typ hat keinen Effekt" - - #: config/avr/avr-c.c:107 config/avr/avr-c.c:173 config/avr/avr-c.c:230 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "no matching fixed-point overload found for %qs" --msgstr "kein passendes Template für %qD gefunden" -+msgstr "keine passende Festkomma-Überladung für %qs gefunden" - - #: config/avr/avr-c.c:124 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qs expects 2 arguments but %d given" --msgstr "Makro »%s« erfordert %u Argumente, aber nur %u wurden angegeben" -+msgstr "%qs erwartet 2 Argumente, aber %d wurden angegeben" - - #: config/avr/avr-c.c:136 config/avr/avr-c.c:201 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qs expects a fixed-point value as first argument" --msgstr "%qs erwartet ein konstantes Argument" -+msgstr "%qs erwartet einen Festkommawert als erstes Argument" - - #: config/avr/avr-c.c:144 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qs expects an integer value as second argument" --msgstr "%qs erwartet ein konstantes Argument" -+msgstr "%qs erwartet einen Ganzzahlwert als zweites Argument" - - #: config/avr/avr.c:573 - #, gcc-internal-format -@@ -20708,9 +20693,9 @@ - msgstr "%qs scheint ein falsch geschriebener Handler für %s zu sein" - - #: config/avr/avr.c:838 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "% contains only 2 bytes of address" --msgstr "»builtin_return_address« enthält nur 2 Adressbytes" -+msgstr "% enthält nur 2 Adressbytes" - - #: config/avr/avr.c:2047 - #, gcc-internal-format -@@ -20782,25 +20767,30 @@ - msgid "MCU %qs supported for assembler only" - msgstr "MCU %qs nur für Assemblierung unterstützt" - --#: config/avr/avr.c:11718 -+#: config/avr/avr.c:10816 -+#, gcc-internal-format -+msgid "conversion from address space %qs to address space %qs" -+msgstr "Umwandlung von Adressraum %qs in Adressraum %qs" -+ -+#: config/avr/avr.c:11778 - #, gcc-internal-format, gfc-internal-format - msgid "%s expects a compile time integer constant" - msgstr "%s erwartet eine Ganzzahlkonstante zur Compile-Zeit" - --#: config/avr/avr.c:11732 -+#: config/avr/avr.c:11792 - #, gcc-internal-format, gfc-internal-format - msgid "%s expects a compile time long integer constant as first argument" - msgstr "%s erwartet eine Long-Ganzzahlkonstante als erstes Argument zur Compile-Zeit" - --#: config/avr/avr.c:11760 -+#: config/avr/avr.c:11820 - #, gcc-internal-format, gfc-internal-format - msgid "rounding to %d bits has no effect for fixed-point value with %d fractional bits" --msgstr "" -+msgstr "Rundung auf %d Bits hat keinen Effekt für Festkommawert mit %d Bit Nachkommaanteil" - --#: config/avr/avr.c:11769 -+#: config/avr/avr.c:11829 - #, gcc-internal-format - msgid "rounding result will always be 0" --msgstr "" -+msgstr "Rundungsergebnis wird immer 0 sein" - - #: config/bfin/bfin.c:2351 - #, gcc-internal-format -@@ -21112,9 +21102,9 @@ - msgstr "diese eingebaute Funktion ist nur auf dem fr450 verfügbar" - - #: config/h8300/h8300.c:320 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "-msx is not supported in coff" --msgstr "-f%s nicht unterstützt: ignoriert" -+msgstr "-msx wird in COFF nicht unterstützt" - - #: config/h8300/h8300.c:342 - #, gcc-internal-format -@@ -21122,29 +21112,29 @@ - msgstr "-ms2600 ohne -ms verwendet" - - #: config/h8300/h8300.c:348 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "-mn is used without -mh or -ms or -msx" --msgstr "-mn ohne -mh oder -ms verwendet" -+msgstr "-mn ohne -mh, -ms oder -msx verwendet" - - #: config/h8300/h8300.c:354 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "-mexr is used without -ms" --msgstr "-ms2600 ohne -ms verwendet" -+msgstr "-mexr ohne -ms verwendet" - - #: config/h8300/h8300.c:360 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "-mint32 is not supported for H8300 and H8300L targets" --msgstr "<__int128%> wird für dieses Ziel nicht unterstützt" -+msgstr "-mint32 wird für Ziele H8300 und H8300L nicht unterstützt" - - #: config/h8300/h8300.c:366 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "-mexr is used without -ms or -msx" --msgstr "-mn ohne -mh oder -ms verwendet" -+msgstr "-mexr ohne -ms oder -msx verwendet" - - #: config/h8300/h8300.c:372 - #, gcc-internal-format - msgid "-mno-exr valid only with -ms or -msx - Option ignored!" --msgstr "" -+msgstr "-mno-exr nur mit -ms oder -msx gültig - Option ignoriert!" - - #: config/i386/host-cygwin.c:62 - #, gcc-internal-format -@@ -21173,9 +21163,9 @@ - msgstr "-mstringop-strategy=rep_8byte wird für 32-Bit-Code nicht unterstützt" - - #: config/i386/i386.c:3160 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "address mode %qs not supported in the %s bit mode" --msgstr "Codemodell %qs wird im %s-Bit-Modus nicht unterstützt" -+msgstr "Adressmodus %qs wird im %s-Bit-Modus nicht unterstützt" - - #: config/i386/i386.c:3179 config/i386/i386.c:3188 config/i386/i386.c:3200 - #: config/i386/i386.c:3211 config/i386/i386.c:3222 -@@ -21289,9 +21279,9 @@ - msgstr "unbekannte Option für -mrecip=%s" - - #: config/i386/i386.c:4229 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "attribute % argument not a string" --msgstr "Attributargument von %qE ist keine Zeichenkette" -+msgstr "Argument für Attribut % ist keine Zeichenkette" - - #: config/i386/i386.c:4295 config/i386/i386.c:4342 - #, gcc-internal-format, gfc-internal-format -@@ -21476,59 +21466,59 @@ - msgstr "nicht unterstützte Operandengröße für erweitertes Register" - - #: config/i386/i386.c:14206 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "non-integer operand used with operand code 'z'" --msgstr "Nicht-Ganzzahl-Operand mit Operandencode »%c« verwendet" -+msgstr "Nicht-Ganzzahl-Operand mit Operandencode »z« verwendet" - - #: config/i386/i386.c:28755 - #, gcc-internal-format - msgid "No dispatcher found for the versioning attributes" --msgstr "" -+msgstr "Kein Dispatcher für versionierte Attribute gefunden" - - #: config/i386/i386.c:28805 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#, gcc-internal-format, gfc-internal-format - msgid "No dispatcher found for %s" --msgstr "Keine Markendefinition für %qs gefunden" -+msgstr "Kein Dispatcher für %s gefunden" - - #: config/i386/i386.c:28815 - #, gcc-internal-format, gfc-internal-format - msgid "No dispatcher found for the versioning attributes : %s" --msgstr "" -+msgstr "Kein Dispatcher für versionierte Attribute gefunden: %s" - - #: config/i386/i386.c:29062 - #, gcc-internal-format - msgid "Function versions cannot be marked as gnu_inline, bodies have to be generated" --msgstr "" -+msgstr "Funktionsversionen können nicht als gnu_inline markiert werden, Körper müssen generiert werden" - - #: config/i386/i386.c:29067 config/i386/i386.c:29512 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "Virtual function multiversioning not supported" --msgstr "Statische Bindung wird nicht unterstützt" -+msgstr "Multiversionierung virtueller Funktionen wird nicht unterstützt" - - #: config/i386/i386.c:29132 - #, gcc-internal-format - msgid "missing % attribute for multi-versioned %D" --msgstr "" -+msgstr "Attribut % fehlt für multiversioniertes %D" - - #: config/i386/i386.c:29135 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "previous declaration of %D" --msgstr "vorherige Deklaration von %q+D" -+msgstr "vorherige Deklaration von %D" - - #: config/i386/i386.c:29351 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "multiversioning needs ifunc which is not supported in this configuration" --msgstr "ifunc wird in dieser Konfiguration nicht unterstützt" -+msgstr "Multiversionierung erfordert ifunc, was in dieser Konfiguration nicht unterstützt wird" - - #: config/i386/i386.c:29695 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "Parameter to builtin must be a string constant or literal" --msgstr "Argument für %qs muss ein vorzeichenloses 2-Bit-Symbol sein" -+msgstr "Parameter für eingebaute Funktion muss Zeichenkettenkonstante oder Literal sein" - - #: config/i386/i386.c:29720 config/i386/i386.c:29770 --#, fuzzy, gcc-internal-format, gfc-internal-format -+#, gcc-internal-format, gfc-internal-format - msgid "Parameter to builtin not valid: %s" --msgstr "Argument für -ffpe-trap ist ungültig: %s" -+msgstr "Parameter für eingebaute Funktion ist ungültig: %s" - - #: config/i386/i386.c:30171 config/i386/i386.c:31114 - #, gcc-internal-format -@@ -21606,9 +21596,9 @@ - msgstr "letztes Argument muss Skalierung 1, 2, 4, 8 sein" - - #: config/i386/i386.c:32311 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "the xabort's argument must be an 8-bit immediate" --msgstr "Das letzte Argument muss ein 8-Bit-Immediate sein" -+msgstr "Das Argument für xabort muss ein 8-Bit-Immediate sein" - - #: config/i386/i386.c:34646 - #, gcc-internal-format -@@ -21631,9 +21621,9 @@ - msgstr "%qE-inkompatibles Attribut wird ignoriert" - - #: config/i386/i386.c:42160 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "Unknown architecture specific memory model" --msgstr "Unbekannte Architektur »%s«" -+msgstr "Unbekanntes architekturspezifisches Speichermodell«" - - #: config/i386/i386.c:42167 - #, gcc-internal-format -@@ -21710,13 +21700,13 @@ - msgid "%qE attribute requires a string constant argument" - msgstr "Attribut %qE erfordert eine Zeichenkettenkonstante als Argument" - --#: config/ia64/ia64.c:5885 config/pa/pa.c:416 config/sh/sh.c:9351 -+#: config/ia64/ia64.c:5885 config/pa/pa.c:416 config/sh/sh.c:9348 - #: config/spu/spu.c:4897 - #, gcc-internal-format - msgid "value of -mfixed-range must have form REG1-REG2" - msgstr "Wert von -mfixed-range muss die Form REG1-REG2 haben" - --#: config/ia64/ia64.c:5912 config/pa/pa.c:443 config/sh/sh.c:9377 -+#: config/ia64/ia64.c:5912 config/pa/pa.c:443 config/sh/sh.c:9374 - #: config/spu/spu.c:4923 - #, gcc-internal-format, gfc-internal-format - msgid "%s-%s is an empty range" -@@ -21788,7 +21778,7 @@ - msgstr "Attribut %qE wird für Ziel R8C nicht unterstützt" - - #. The argument must be a constant integer. --#: config/m32c/m32c.c:2934 config/sh/sh.c:9570 config/sh/sh.c:9676 -+#: config/m32c/m32c.c:2934 config/sh/sh.c:9567 config/sh/sh.c:9673 - #, gcc-internal-format - msgid "%qE attribute argument not an integer constant" - msgstr "Attributargument %qE ist keine Ganzzahlkonstante" -@@ -21834,9 +21824,9 @@ - msgstr "-falign-loops=%d wird nicht unterstützt" - - #: config/m68k/m68k.c:621 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "-fstack-limit- options are not supported on this cpu" --msgstr "Kellergrenzen nicht für dieses Ziel unterstützt" -+msgstr "Optionen für -fstack-limit- werden auf dieser CPU nicht unterstützt" - - #: config/m68k/m68k.c:736 - #, gcc-internal-format -@@ -22131,23 +22121,33 @@ - msgid "unexpected %d byte cop instruction" - msgstr "unerwartete %d-Byte-Cop-Anweisung" - --#: config/microblaze/microblaze.c:1311 --#, fuzzy, gcc-internal-format -+#: config/microblaze/microblaze.c:1676 -+#, gcc-internal-format - msgid "-fPIC/-fpic not supported for this target" --msgstr "-fstack-protector wird für dieses Ziel nicht unterstützt" -+msgstr "-fPIC/-fpic werden für dieses Ziel nicht unterstützt" - --#: config/microblaze/microblaze.c:1323 -+#: config/microblaze/microblaze.c:1688 - #, gcc-internal-format - msgid "%qs is an invalid argument to -mcpu=" - msgstr "%qs ist ein ungültiges Argument für -mcpu=" - --#: config/microblaze/microblaze.c:1372 -+#: config/microblaze/microblaze.c:1737 - #, gcc-internal-format - msgid "-mxl-multiply-high can be used only with -mcpu=v6.00.a or greater" - msgstr "-mxl-multiply-high kann nur mit -mcpu=v6.00.a oder höher verwendet werden" - --#: config/microblaze/microblaze.c:1384 -+#: config/microblaze/microblaze.c:1753 - #, gcc-internal-format -+msgid "-mxl-reorder can be used only with -mcpu=v8.30.a or greater" -+msgstr "-mxl-reorder kann nur mit -mcpu=v8.30.a oder höher verwendet werden" -+ -+#: config/microblaze/microblaze.c:1759 -+#, gcc-internal-format -+msgid "-mxl-reorder requires -mxl-pattern-compare for -mcpu=v8.30.a" -+msgstr "-mxl-reorder erfordert -mxl-pattern-compare für -mcpu=v8.30.a" -+ -+#: config/microblaze/microblaze.c:1764 -+#, gcc-internal-format - msgid "-mxl-multiply-high requires -mno-xl-soft-mul" - msgstr "-mxl-multiply-high erfordert -mno-xl-soft-mul" - -@@ -22189,7 +22189,7 @@ - #: config/mips/mips.c:10596 - #, gcc-internal-format - msgid "-fstack-check=specific not implemented for MIPS16" --msgstr "" -+msgstr "-fstack-check=specific nicht für MIPS16 implementiert" - - #: config/mips/mips.c:13989 - #, gcc-internal-format -@@ -22282,14 +22282,14 @@ - msgstr "die Architektur %qs unterstützt keine Befehle mit Sprungwahrscheinlichkeit" - - #: config/mips/mips.c:16621 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "cannot generate position-independent code for %qs" --msgstr "Wenn möglich, lageunabhängigen Code erzeugen (large mode)" -+msgstr "für %qs kann kein lageunabhängiger Code erzeugt werden" - - #: config/mips/mips.c:16624 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "position-independent code requires %qs" --msgstr "Lageunabhängigen Code (PIC) für Verwendung in BS-Kernelcode ausschalten" -+msgstr "lageunabhängiger Code erfordert %qs" - - #: config/mips/mips.c:16657 - #, gcc-internal-format -@@ -22643,9 +22643,9 @@ - msgstr "nicht für SPE-ABI konfiguriert" - - #: config/rs6000/rs6000.c:2547 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "not configured for SPE instruction set" --msgstr "PowerPC-Befehlssatz nicht verwenden" -+msgstr "Nicht für SPE-Befehlssatz konfiguriert" - - #: config/rs6000/rs6000.c:2553 - #, gcc-internal-format -@@ -23057,19 +23057,19 @@ - msgstr "-mcmodel unverträglich mit anderen TOC-Optionen" - - #: config/rs6000/e500.h:37 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "AltiVec and SPE instructions cannot coexist" --msgstr "AltiVec- und E500-Befehle können nicht koexistieren" -+msgstr "AltiVec- und SPE-Befehle können nicht koexistieren" - - #: config/rs6000/e500.h:39 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "VSX and SPE instructions cannot coexist" --msgstr "VSX- und E500-Befehle können nicht koexistieren" -+msgstr "VSX- und SPE-Befehle können nicht koexistieren" - - #: config/rs6000/e500.h:41 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "64-bit SPE not supported" --msgstr "64-Bit-E500 wird nicht unterstützt" -+msgstr "64-Bit-SPE wird nicht unterstützt" - - #: config/rs6000/e500.h:43 - #, gcc-internal-format -@@ -23161,9 +23161,9 @@ - msgstr "unbekannte Steuerregisterzahl: %d - 'psw' wird verwendet" - - #: config/rx/rx.c:1350 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "multiple fast interrupt routines seen: %qE and %qE" --msgstr "mehrere Interruptattribute sind nicht erlaubt" -+msgstr "mehrere schnelle Interruptroutinen gefunden: %qE und %qE" - - #: config/rx/rx.c:2452 - #, gcc-internal-format, gfc-internal-format -@@ -23255,63 +23255,63 @@ - msgid "%qs uses dynamic stack allocation" - msgstr "%qs verwendet dynamische Stackanforderung" - --#: config/sh/sh.c:906 -+#: config/sh/sh.c:903 - #, gcc-internal-format - msgid "ignoring -fschedule-insns because of exception handling bug" - msgstr "-fschedule-insns wird wegen Ausnahmebehandlungsfehler ignoriert" - --#: config/sh/sh.c:923 -+#: config/sh/sh.c:920 - #, gcc-internal-format - msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness" - msgstr "Abwicklungstabellen erfordern derzeit entweder einen Rahmenzeiger oder -maccumulate-outgoing-args für Korrektheit" - --#: config/sh/sh.c:8284 -+#: config/sh/sh.c:8281 - #, gcc-internal-format - msgid "__builtin_saveregs not supported by this subtarget" - msgstr "__builtin_saveregs wird für dieses Teilziel nicht unterstützt" - --#: config/sh/sh.c:9439 -+#: config/sh/sh.c:9436 - #, gcc-internal-format - msgid "%qE attribute only applies to interrupt functions" - msgstr "Attribut %qE bezieht sich nur auf Interruptfunktionen" - --#: config/sh/sh.c:9509 -+#: config/sh/sh.c:9506 - #, gcc-internal-format - msgid "%qE attribute is supported only for SH2A" - msgstr "Attribut %qE wird nur auf SH2A unterstützt" - --#: config/sh/sh.c:9539 -+#: config/sh/sh.c:9536 - #, gcc-internal-format - msgid "attribute interrupt_handler is not compatible with -m5-compact" - msgstr "Attribut interrupt_handler ist mit -m5-compact unverträglich" - --#: config/sh/sh.c:9556 -+#: config/sh/sh.c:9553 - #, gcc-internal-format - msgid "%qE attribute only applies to SH2A" - msgstr "Attribut %qE gilt nur für SH2A" - --#: config/sh/sh.c:9578 -+#: config/sh/sh.c:9575 - #, gcc-internal-format - msgid "%qE attribute argument should be between 0 to 255" - msgstr "Argument des Attributs %qE sollte zwischen 0 und 255 sein" - - #. The argument must be a constant string. --#: config/sh/sh.c:9651 -+#: config/sh/sh.c:9648 - #, gcc-internal-format - msgid "%qE attribute argument not a string constant" - msgstr "Argument des Attributs %qE ist keine Zeichenkettenkonstante" - --#: config/sh/sh.c:12341 -+#: config/sh/sh.c:12338 - #, gcc-internal-format - msgid "r0 needs to be available as a call-clobbered register" - msgstr "r0 muss als aufrufzerstörtes Register verfügbar sein" - --#: config/sh/sh.c:12362 -+#: config/sh/sh.c:12359 - #, gcc-internal-format - msgid "need a second call-clobbered general purpose register" - msgstr "ein zweites aufrufzerstörtes Mehrzweckregister wird benötigt" - --#: config/sh/sh.c:12370 -+#: config/sh/sh.c:12367 - #, gcc-internal-format - msgid "need a call-clobbered target register" - msgstr "aufrufzerstörtes Zielregister erforderlich" -@@ -23624,14 +23624,14 @@ - msgstr "falsch geformtes »#pragma __extern_prefix«, ignoriert" - - #: config/vms/vms-c.c:312 config/vms/vms-c.c:332 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "malformed %<#pragma %s%>, ignoring" - msgstr "falsch geformtes %<#pragma %s%>, ignoriert" - - #: config/vms/vms-c.c:328 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "invalid constant in %<#pragma %s%>" --msgstr "ungültige Konstante in %<#pragma pack%> - ignoriert" -+msgstr "ungültige Konstante in %<#pragma %s%>" - - #: config/xtensa/xtensa.c:2178 - #, gcc-internal-format -@@ -24046,7 +24046,7 @@ - msgstr "Marke %qD hier definiert" - - #: c/c-decl.c:3111 c/c-decl.c:3383 c/c-typeck.c:6979 cp/class.c:1339 --#: cp/class.c:2928 -+#: cp/class.c:2932 - #, gcc-internal-format - msgid "%qD declared here" - msgstr "%qD hier deklariert" -@@ -24214,7 +24214,7 @@ - msgid "variable %qD has initializer but incomplete type" - msgstr "Variable %qD hat Initialisierung, aber unvollständigen Typ" - --#: c/c-decl.c:4150 cp/decl.c:4529 cp/decl.c:12970 -+#: c/c-decl.c:4150 cp/decl.c:4529 cp/decl.c:12961 - #, gcc-internal-format - msgid "inline function %q+D given attribute noinline" - msgstr "inline-Funktion %q+D wurde das Attribut »noinline« gegeben" -@@ -24349,7 +24349,7 @@ - msgid "variable length array %qE is used" - msgstr "Feld %qE variabler Größe wird verwendet" - --#: c/c-decl.c:4857 cp/decl.c:8274 -+#: c/c-decl.c:4857 cp/decl.c:8277 - #, gcc-internal-format - msgid "variable length array is used" - msgstr "Feld variabler Größe wird verwendet" -@@ -24434,7 +24434,7 @@ - msgid "storage class specified for unnamed parameter" - msgstr "Speicherklasse für unbenannten Parameter angegeben" - --#: c/c-decl.c:5143 cp/decl.c:9283 -+#: c/c-decl.c:5143 cp/decl.c:9279 - #, gcc-internal-format - msgid "storage class specified for typename" - msgstr "Speicherklasse für Typnamen angegeben" -@@ -24583,7 +24583,7 @@ - msgid "function definition has qualified void return type" - msgstr "Funktionsdefinition hat qualifizierten void-Rückgabetypen" - --#: c/c-decl.c:5635 cp/decl.c:9411 -+#: c/c-decl.c:5635 cp/decl.c:9407 - #, gcc-internal-format - msgid "type qualifiers ignored on function return type" - msgstr "Typkennzeichner an Funktions-Rückgabewert ignoriert" -@@ -24694,7 +24694,7 @@ - msgid "a member of a structure or union cannot have a variably modified type" - msgstr "Ein Element einer Struktur oder Union kann nicht variabel modifizierten Typ haben" - --#: c/c-decl.c:5915 cp/decl.c:8516 -+#: c/c-decl.c:5915 cp/decl.c:8519 - #, gcc-internal-format - msgid "variable or field %qE declared void" - msgstr "Variable oder Feld %qE als »void« deklariert" -@@ -25117,7 +25117,7 @@ - msgid "argument %qD doesn%'t match prototype" - msgstr "Argument %qD passt nicht zum Prototypen" - --#: c/c-decl.c:8396 cp/decl.c:13848 -+#: c/c-decl.c:8396 cp/decl.c:13839 - #, gcc-internal-format - msgid "no return statement in function returning non-void" - msgstr "keine return-Anweisung in nicht void zurückgebender Funktion" -@@ -25185,7 +25185,7 @@ - msgid "two or more data types in declaration specifiers" - msgstr "zwei oder mehr Datentypen in Deklaration" - --#: c/c-decl.c:8924 cp/parser.c:22803 -+#: c/c-decl.c:8924 cp/parser.c:22807 - #, gcc-internal-format - msgid "% is too long for GCC" - msgstr "% ist für GCC zu lang" -@@ -25315,7 +25315,7 @@ - msgid "unknown type name %qE" - msgstr "unbekannter Typname: %qE" - --#: c/c-parser.c:1484 c/c-parser.c:8618 cp/parser.c:28127 -+#: c/c-parser.c:1484 c/c-parser.c:8618 cp/parser.c:28131 - #, gcc-internal-format - msgid "expected declaration specifiers" - msgstr "Deklarationsspezifizierer erwartet" -@@ -25325,7 +25325,7 @@ - msgid "expected %<;%>, identifier or %<(%>" - msgstr "%<;%>, Bezeichner oder %<(%> erwartet" - --#: c/c-parser.c:1527 cp/parser.c:24553 cp/parser.c:24627 -+#: c/c-parser.c:1527 cp/parser.c:24557 cp/parser.c:24631 - #, gcc-internal-format - msgid "prefix attributes are ignored for methods" - msgstr "Präfixattribute werden für Methoden ignoriert" -@@ -25373,7 +25373,7 @@ - msgid "ISO C90 does not support %<_Static_assert%>" - msgstr "ISO-C90 unterstützt nicht %<_Static_assert%>" - --#: c/c-parser.c:1860 c/c-parser.c:3388 c/c-parser.c:8673 cp/parser.c:27998 -+#: c/c-parser.c:1860 c/c-parser.c:3388 c/c-parser.c:8673 cp/parser.c:28002 - #, gcc-internal-format - msgid "expected string literal" - msgstr "Zeichenkettenliteral erwartet" -@@ -25405,13 +25405,13 @@ - #: c/c-parser.c:7409 c/c-parser.c:7417 c/c-parser.c:7446 c/c-parser.c:7459 - #: c/c-parser.c:7764 c/c-parser.c:7888 c/c-parser.c:8316 c/c-parser.c:8351 - #: c/c-parser.c:8404 c/c-parser.c:8457 c/c-parser.c:8473 c/c-parser.c:8519 --#: c/c-parser.c:8798 c/c-parser.c:9873 c/c-parser.c:10676 cp/parser.c:23013 --#: cp/parser.c:25397 cp/parser.c:25427 cp/parser.c:25497 cp/parser.c:27718 -+#: c/c-parser.c:8798 c/c-parser.c:9873 c/c-parser.c:10676 cp/parser.c:23017 -+#: cp/parser.c:25401 cp/parser.c:25431 cp/parser.c:25501 cp/parser.c:27722 - #, gcc-internal-format - msgid "expected identifier" - msgstr "Bezeichner erwartet" - --#: c/c-parser.c:2295 cp/parser.c:14837 -+#: c/c-parser.c:2295 cp/parser.c:14839 - #, gcc-internal-format - msgid "comma at end of enumerator list" - msgstr "Komma am Ende der Aufzählungsliste" -@@ -25740,77 +25740,77 @@ - msgid "no type or storage class may be specified here," - msgstr "hier darf kein Typ oder Speicherklasse angegeben werden," - --#: c/c-parser.c:8320 c/c-parser.c:8377 cp/parser.c:25457 -+#: c/c-parser.c:8320 c/c-parser.c:8377 cp/parser.c:25461 - #, gcc-internal-format - msgid "unknown property attribute" - msgstr "unbekanntes Eigenschaftsattribut" - --#: c/c-parser.c:8341 cp/parser.c:25417 -+#: c/c-parser.c:8341 cp/parser.c:25421 - #, gcc-internal-format - msgid "missing %<=%> (after % attribute)" - msgstr "fehlendes %<=%> (hinter Attribut %)" - --#: c/c-parser.c:8344 cp/parser.c:25420 -+#: c/c-parser.c:8344 cp/parser.c:25424 - #, gcc-internal-format - msgid "missing %<=%> (after % attribute)" - msgstr "fehlendes %<=%> (hinter Attribut %)" - --#: c/c-parser.c:8358 cp/parser.c:25435 -+#: c/c-parser.c:8358 cp/parser.c:25439 - #, gcc-internal-format - msgid "the % attribute may only be specified once" - msgstr "das %-Attribut darf nur einmal angegeben werden" - --#: c/c-parser.c:8363 cp/parser.c:25441 -+#: c/c-parser.c:8363 cp/parser.c:25445 - #, gcc-internal-format - msgid "setter name must terminate with %<:%>" - msgstr "Setter-Name muss mit %<:%> beendet werden" - --#: c/c-parser.c:8370 cp/parser.c:25449 -+#: c/c-parser.c:8370 cp/parser.c:25453 - #, gcc-internal-format - msgid "the % attribute may only be specified once" - msgstr "das %-Attribut darf nur einmal angegeben werden" - --#: c/c-parser.c:8556 cp/parser.c:28042 -+#: c/c-parser.c:8556 cp/parser.c:28046 - #, gcc-internal-format - msgid "%<#pragma omp barrier%> may only be used in compound statements" - msgstr "%<#pragma omp barrier%> darf nur in Verbundanweisungen verwendet werden" - --#: c/c-parser.c:8567 cp/parser.c:28057 -+#: c/c-parser.c:8567 cp/parser.c:28061 - #, gcc-internal-format - msgid "%<#pragma omp flush%> may only be used in compound statements" - msgstr "%<#pragma omp flush%> darf nur in Verbundanweisungen verwendet werden" - --#: c/c-parser.c:8578 cp/parser.c:28073 -+#: c/c-parser.c:8578 cp/parser.c:28077 - #, gcc-internal-format - msgid "%<#pragma omp taskwait%> may only be used in compound statements" - msgstr "%<#pragma omp taskwait%> darf nur in Verbundanweisungen verwendet werden" - --#: c/c-parser.c:8589 cp/parser.c:28089 -+#: c/c-parser.c:8589 cp/parser.c:28093 - #, gcc-internal-format - msgid "%<#pragma omp taskyield%> may only be used in compound statements" - msgstr "%<#pragma omp taskyield%> darf nur in Verbundanweisungen verwendet werden" - --#: c/c-parser.c:8602 cp/parser.c:28117 -+#: c/c-parser.c:8602 cp/parser.c:28121 - #, gcc-internal-format - msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct" - msgstr "%<#pragma omp section%> darf nur in %<#pragma omp sections%>-Konstrukt verwendet werden" - --#: c/c-parser.c:8608 cp/parser.c:28032 -+#: c/c-parser.c:8608 cp/parser.c:28036 - #, gcc-internal-format - msgid "%<#pragma GCC pch_preprocess%> must be first" - msgstr "%<#pragma GCC pch_preprocess%> muss zuerst kommen" - --#: c/c-parser.c:8773 cp/parser.c:25705 -+#: c/c-parser.c:8773 cp/parser.c:25709 - #, gcc-internal-format - msgid "too many %qs clauses" - msgstr "zu viele %qs-Klauseln" - --#: c/c-parser.c:8875 cp/parser.c:25820 -+#: c/c-parser.c:8875 cp/parser.c:25824 - #, gcc-internal-format - msgid "collapse argument needs positive constant integer expression" - msgstr "Collapse-Argument erfordert positiven konstanten Ganzzahlausdruck" - --#: c/c-parser.c:8941 cp/parser.c:25871 -+#: c/c-parser.c:8941 cp/parser.c:25875 - #, gcc-internal-format - msgid "expected % or %" - msgstr "% oder % erwartet" -@@ -25825,42 +25825,42 @@ - msgid "% value must be positive" - msgstr "Wert von % muss positiv sein" - --#: c/c-parser.c:9192 cp/parser.c:26090 -+#: c/c-parser.c:9192 cp/parser.c:26094 - #, gcc-internal-format - msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, % or %" - msgstr "%<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, % oder % erwartet" - --#: c/c-parser.c:9281 cp/parser.c:26175 -+#: c/c-parser.c:9281 cp/parser.c:26179 - #, gcc-internal-format - msgid "schedule % does not take a % parameter" - msgstr "Ablauf % akzeptiert keinen Parameter %" - --#: c/c-parser.c:9285 cp/parser.c:26178 -+#: c/c-parser.c:9285 cp/parser.c:26182 - #, gcc-internal-format - msgid "schedule % does not take a % parameter" - msgstr "Ablauf % akzeptiert keinen Parameter %" - --#: c/c-parser.c:9303 cp/parser.c:26194 -+#: c/c-parser.c:9303 cp/parser.c:26198 - #, gcc-internal-format - msgid "invalid schedule kind" - msgstr "ungültige Ablaufart" - --#: c/c-parser.c:9431 cp/parser.c:26326 -+#: c/c-parser.c:9431 cp/parser.c:26330 - #, gcc-internal-format - msgid "expected %<#pragma omp%> clause" - msgstr "Klausel %<#pragma omp%> erwartet" - --#: c/c-parser.c:9440 cp/parser.c:26335 -+#: c/c-parser.c:9440 cp/parser.c:26339 - #, gcc-internal-format - msgid "%qs is not valid for %qs" - msgstr "%qs ist für %qs ungültig" - --#: c/c-parser.c:9732 cp/parser.c:26619 -+#: c/c-parser.c:9732 cp/parser.c:26623 - #, gcc-internal-format - msgid "invalid form of %<#pragma omp atomic%>" - msgstr "ungültige Form von %<#pragma omp atomic%>" - --#: c/c-parser.c:9772 c/c-parser.c:9790 cp/parser.c:26650 cp/parser.c:26667 -+#: c/c-parser.c:9772 c/c-parser.c:9790 cp/parser.c:26654 cp/parser.c:26671 - #, gcc-internal-format - msgid "invalid operator for %<#pragma omp atomic%>" - msgstr "ungültiger Operator für %<#pragma omp atomic%>" -@@ -25870,7 +25870,7 @@ - msgid "expected %<(%> or end of line" - msgstr "%<(%> oder Zeilenende erwartet" - --#: c/c-parser.c:9932 cp/parser.c:26939 -+#: c/c-parser.c:9932 cp/parser.c:26943 - #, gcc-internal-format - msgid "for statement expected" - msgstr "für Anweisung erwartet" -@@ -25885,12 +25885,12 @@ - msgid "not enough perfectly nested loops" - msgstr "nicht genügend perfekt geschachtelte Schleifen" - --#: c/c-parser.c:10119 cp/parser.c:27284 -+#: c/c-parser.c:10119 cp/parser.c:27288 - #, gcc-internal-format - msgid "collapsed loops not perfectly nested" - msgstr "zusammengelegte Schleifen sind nicht perfekt geschachtelt" - --#: c/c-parser.c:10157 cp/parser.c:27125 cp/parser.c:27163 cp/pt.c:12692 -+#: c/c-parser.c:10157 cp/parser.c:27129 cp/parser.c:27167 cp/pt.c:12687 - #, gcc-internal-format - msgid "iteration variable %qD should not be firstprivate" - msgstr "Schleifenvariable %qD sollte nicht »firstprivate« sein" -@@ -25915,27 +25915,27 @@ - msgid "% %qE has incomplete type" - msgstr "% %qE hat unvollständigen Typen" - --#: c/c-parser.c:10823 cp/parser.c:27928 -+#: c/c-parser.c:10823 cp/parser.c:27932 - #, gcc-internal-format - msgid "%<__transaction_cancel%> without transactional memory support enabled" - msgstr "%<__transaction_cancel%> ohne eingeschaltete Unterstützung für transaktionsbasierten Speicher" - --#: c/c-parser.c:10829 cp/parser.c:27934 -+#: c/c-parser.c:10829 cp/parser.c:27938 - #, gcc-internal-format - msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>" - msgstr "%<__transaction_cancel%> innerhalb eines %<__transaction_relaxed%>" - --#: c/c-parser.c:10838 cp/parser.c:27943 -+#: c/c-parser.c:10838 cp/parser.c:27947 - #, gcc-internal-format - msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>" - msgstr "äußeres %<__transaction_cancel%> nicht innerhalb des äußeren %<__transaction_atomic%>" - --#: c/c-parser.c:10840 cp/parser.c:27946 -+#: c/c-parser.c:10840 cp/parser.c:27950 - #, gcc-internal-format - msgid " or a % function" - msgstr " oder einer %-Funktion" - --#: c/c-parser.c:10846 cp/parser.c:27952 -+#: c/c-parser.c:10846 cp/parser.c:27956 - #, gcc-internal-format - msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>" - msgstr "%<__transaction_cancel%> nicht innerhalb von %<__transaction_atomic%>" -@@ -26077,19 +26077,19 @@ - msgstr "hier deklariert" - - #: c/c-typeck.c:2746 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "called object %qE is not a function or function pointer" --msgstr "gerufenes Objekt %qE ist keine Funktion" -+msgstr "gerufenes Objekt %qE ist keine Funktion oder Funktionszeiger" - - #: c/c-typeck.c:2751 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "called object %qD is not a function or function pointer" --msgstr "gerufenes Objekt %qE ist keine Funktion" -+msgstr "gerufenes Objekt %qD ist keine Funktion oder Funktionszeiger" - - #: c/c-typeck.c:2757 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "called object is not a function or function pointer" --msgstr "gerufenes Objekt %qE ist keine Funktion" -+msgstr "gerufenes Objekt ist keine Funktion oder Funktionszeiger" - - #. This situation leads to run-time undefined behavior. We can't, - #. therefore, simply error unless we can prove that all possible -@@ -26730,9 +26730,9 @@ - msgstr "Initialisierung eines flexiblen Feld-Elements in geschachteltem Kontext" - - #: c/c-typeck.c:6975 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "missing initializer for field %qD of %qT" --msgstr "Initialisierung für Element %qD fehlt" -+msgstr "fehlende Initialisierung für Feld %qD von %qT fehlt" - - #: c/c-typeck.c:7000 - #, gcc-internal-format -@@ -27177,79 +27177,79 @@ - msgstr "Aufruf von %<(%T) (%A)%> ist nicht eindeutig" - - #: cp/call.c:4177 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "ambiguous overload for " --msgstr "mehrdeutiges Überladen für %qs in %<%s %E%>" -+msgstr "mehrdeutiges Überladen für " - - #: cp/call.c:4178 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "no match for " --msgstr "keine Übereinstimmung für %qs in %<%s %E%>" -+msgstr "keine Übereinstimmung für " - - #: cp/call.c:4181 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid " (operand types are %qT, %qT, and %qT)" --msgstr "Ungültige Operanden für binäres %s (haben %qT und %qT)" -+msgstr " (Operandentypen sind %qT, %qT und %qT)" - - #: cp/call.c:4183 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid " (operand types are %qT and %qT)" --msgstr "Ungültige Operanden für binäres %s (haben %qT und %qT)" -+msgstr " (Operandentypen sind %qT und %qT)" - - #: cp/call.c:4185 - #, gcc-internal-format - msgid " (operand type is %qT)" --msgstr "" -+msgstr " (Operandentyp ist %qT)" - - #: cp/call.c:4205 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "ternary %" --msgstr "% erwartet" -+msgstr "ternärer %" - - #: cp/call.c:4209 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "ternary % in %<%E ? %E : %E%>" --msgstr "keine Übereinstimmung für ternären % in %<%E ? %E : %E%>" -+msgstr "ternärer % in %<%E ? %E : %E%>" - - #: cp/call.c:4218 cp/call.c:4249 cp/call.c:4258 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%" --msgstr "% erwartet" -+msgstr "%" - - #: cp/call.c:4221 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "% in %<%E%s%>" --msgstr "keine Übereinstimmung für % in %<%E%s%>" -+msgstr "% in %<%E%s%>" - - #: cp/call.c:4228 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%" --msgstr "% erwartet" -+msgstr "%" - - #: cp/call.c:4231 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "% in %<%E[%E]%>" --msgstr "keine Übereinstimmung für % in %<%E[%E]%>" -+msgstr "% in %<%E[%E]%>" - - #: cp/call.c:4239 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qs" --msgstr "%s" -+msgstr "%qs" - - #: cp/call.c:4242 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qs in %<%s %E%>" --msgstr "keine Übereinstimmung für %qs in %<%s %E%>" -+msgstr "%qs in %<%s %E%>" - - #: cp/call.c:4252 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "% in %<%E %s %E%>" --msgstr "keine Übereinstimmung für % in %<%E %s %E%>" -+msgstr "% in %<%E %s %E%>" - - #: cp/call.c:4261 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "% in %<%s%E%>" --msgstr "keine Übereinstimmung für % in %<%s%E%>" -+msgstr "% in %<%s%E%>" - - #: cp/call.c:4359 - #, gcc-internal-format -@@ -27259,12 +27259,12 @@ - #: cp/call.c:4392 - #, gcc-internal-format - msgid "at least one operand of a vector conditional operator must be a vector" --msgstr "" -+msgstr "mindestens ein Operand eines Vektor-Bedingungsoperators muss ein Vektor sein" - - #: cp/call.c:4433 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "incompatible vector types in conditional expression: %qT, %qT and %qT" --msgstr "Aufzählungsfehler in bedingtem Ausdruck: %qT vs. %qT" -+msgstr "unverträgliche Vektortypen in bedingtem Ausdruck: %qT, %qT und %qT" - - #: cp/call.c:4520 - #, gcc-internal-format -@@ -27448,9 +27448,9 @@ - msgstr "Argument des Funktionsaufrufs könnte Kandidat für Formatattribut sein" - - #: cp/call.c:6526 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "use of multiversioned function without a default" --msgstr "vorgegebene Funktion %q+D mit Standardargument" -+msgstr "Verwendung einer multiversionierten Funktion ohne Standardargument" - - #: cp/call.c:6745 - #, gcc-internal-format -@@ -27477,107 +27477,107 @@ - msgid " (you can disable this with -fno-deduce-init-list)" - msgstr " (dies kann mit -fno-deduce-init-list abgeschaltet werden)" - --#: cp/call.c:7153 -+#: cp/call.c:7156 - #, gcc-internal-format - msgid "could not find class$ field in java interface type %qT" - msgstr "class$-Feld konnte nicht im Java-Schnittstellentyp %qT gefunden werden" - --#: cp/call.c:7414 -+#: cp/call.c:7417 - #, gcc-internal-format - msgid "call to non-function %qD" - msgstr "Aufruf der Nicht-Funktion %qD" - --#: cp/call.c:7459 cp/typeck.c:2680 -+#: cp/call.c:7462 cp/typeck.c:2680 - #, gcc-internal-format - msgid "cannot call constructor %<%T::%D%> directly" - msgstr "Konstruktor %<%T::%D%> kann nicht direkt aufgerufen werden" - --#: cp/call.c:7461 -+#: cp/call.c:7464 - #, gcc-internal-format - msgid " for a function-style cast, remove the redundant %<::%D%>" - msgstr " für Umwandlung im Funktions-Stil muss das überflüssige %<::%D%> entfernt werden" - --#: cp/call.c:7578 -+#: cp/call.c:7581 - #, gcc-internal-format - msgid "no matching function for call to %<%T::operator %T(%A)%#V%>" - msgstr "keine passende Funktion für Aufruf von %<%T::operator %T(%A)%#V%>" - --#: cp/call.c:7591 -+#: cp/call.c:7594 - #, gcc-internal-format - msgid "no matching function for call to %<%T::%s(%A)%#V%>" - msgstr "keine passende Funktion für Aufruf von %<%T::%s(%A)%#V%>" - --#: cp/call.c:7616 -+#: cp/call.c:7619 - #, gcc-internal-format - msgid "call of overloaded %<%s(%A)%> is ambiguous" - msgstr "Aufruf des überladenen %<%s(%A)%> ist mehrdeutig" - --#: cp/call.c:7645 -+#: cp/call.c:7661 - #, gcc-internal-format - msgid "cannot call member function %qD without object" - msgstr "Elementfunktion %qD kann nicht ohne Objekt aufgerufen werden" - --#: cp/call.c:8410 -+#: cp/call.c:8428 - #, gcc-internal-format - msgid "passing %qT chooses %qT over %qT" - msgstr "Übergabe von %qT wählt %qT statt %qT" - --#: cp/call.c:8412 cp/name-lookup.c:5552 -+#: cp/call.c:8430 cp/name-lookup.c:5547 - #, gcc-internal-format - msgid " in call to %qD" - msgstr " in Aufruf von %qD" - --#: cp/call.c:8470 -+#: cp/call.c:8488 - #, gcc-internal-format - msgid "choosing %qD over %qD" - msgstr "Wahl von %qD statt %qD" - --#: cp/call.c:8471 -+#: cp/call.c:8489 - #, gcc-internal-format - msgid " for conversion from %qT to %qT" - msgstr " für Umwandlung von %qT in %qT" - --#: cp/call.c:8474 -+#: cp/call.c:8492 - #, gcc-internal-format - msgid " because conversion sequence for the argument is better" - msgstr " denn die Umwandlungsfolge für das Argument ist besser" - --#: cp/call.c:8628 -+#: cp/call.c:8646 - #, gcc-internal-format - msgid "default argument mismatch in overload resolution" - msgstr "Zuordnungsfehler der Standardargumente in Überladungsauflösung" - --#: cp/call.c:8631 -+#: cp/call.c:8649 - #, gcc-internal-format - msgid " candidate 1: %q+#F" - msgstr " Kandidat 1: %q+#F" - --#: cp/call.c:8633 -+#: cp/call.c:8651 - #, gcc-internal-format - msgid " candidate 2: %q+#F" - msgstr " Kandidat 2: %q+#F" - --#: cp/call.c:8677 -+#: cp/call.c:8695 - #, gcc-internal-format - msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:" - msgstr "ISO C++ besagt, dass diese mehrdeutig sind, auch wenn die schlechteste Umwandlung für das erste besser ist als die schlechteste Umwandlung für das zweite:" - --#: cp/call.c:8841 -+#: cp/call.c:8859 - #, gcc-internal-format - msgid "could not convert %qE from %qT to %qT" - msgstr "%qE konnte nicht von %qT nach %qT umgewandelt werden" - --#: cp/call.c:9034 -+#: cp/call.c:9052 - #, gcc-internal-format - msgid "a temporary bound to %qD only persists until the constructor exits" - msgstr "eine vorübergehende Bindung an %qD besteht nur, bis der Konstruktor beendet ist" - --#: cp/call.c:9150 -+#: cp/call.c:9168 - #, gcc-internal-format - msgid "invalid initialization of non-const reference of type %qT from an rvalue of type %qT" - msgstr "ungültige Initialisierung einer nicht-konstanten Referenz des Typs %qT von R-Wert des Typs %qT" - --#: cp/call.c:9154 -+#: cp/call.c:9172 - #, gcc-internal-format - msgid "invalid initialization of reference of type %qT from expression of type %qT" - msgstr "ungültige Initialisierung einer Referenz des Typs %qT von Ausdruck des Typs %qT" -@@ -27598,14 +27598,14 @@ - msgstr "Java-Klasse %qT kann keinen impliziten nicht-trivialen Destruktor haben" - - #: cp/class.c:1120 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%q#D inherited from %qT" --msgstr " %qT ist nicht vom Typ %qT abgeleitet" -+msgstr "%q#D von %qT geerbt" - - #: cp/class.c:1123 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "conflicts with version inherited from %qT" --msgstr "in Konflikt mit vorheriger Deklaration hier" -+msgstr "in Konflikt mit von %qT geerbter Version" - - #: cp/class.c:1137 - #, gcc-internal-format -@@ -27648,14 +27648,14 @@ - msgstr "" - - #: cp/class.c:1331 cp/class.c:1341 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qT declared here" --msgstr "%qD hier deklariert" -+msgstr "%qT hier deklariert" - - #: cp/class.c:1336 - #, gcc-internal-format - msgid "%qT does not have the %E abi tag that %qT (used in the type of %qD) has" --msgstr "" -+msgstr "%qT hat nicht das ABI-Tag %E, das %qT (im Typ on %qD verwendet) hat" - - #: cp/class.c:1413 - #, gcc-internal-format -@@ -27687,350 +27687,350 @@ - msgid "no unique final overrider for %qD in %qT" - msgstr "%qD wurde nicht eindeutig und endgültig in %qT überschrieben" - --#: cp/class.c:2648 -+#: cp/class.c:2652 - #, gcc-internal-format - msgid "%q+#D marked final, but is not virtual" - msgstr "%q+#D als »final« markiert, ist aber nicht »virtual«" - --#: cp/class.c:2650 -+#: cp/class.c:2654 - #, gcc-internal-format - msgid "%q+#D marked override, but does not override" - msgstr "%q+#D als override markiert, überschreibt aber nicht" - - #. Here we know it is a hider, and no overrider exists. --#: cp/class.c:2719 -+#: cp/class.c:2723 - #, gcc-internal-format - msgid "%q+D was hidden" - msgstr "%q+D war versteckt" - --#: cp/class.c:2720 -+#: cp/class.c:2724 - #, gcc-internal-format - msgid " by %q+D" - msgstr " von %q+D" - --#: cp/class.c:2763 cp/decl2.c:1365 -+#: cp/class.c:2767 cp/decl2.c:1365 - #, gcc-internal-format - msgid "%q+#D invalid; an anonymous union can only have non-static data members" - msgstr "%q+#D ungültig; eine anonyme Union kann nur nicht-statische Datenelemente haben" - --#: cp/class.c:2766 -+#: cp/class.c:2770 - #, gcc-internal-format - msgid "%q+#D invalid; an anonymous struct can only have non-static data members" - msgstr "%q+#D ungültig; eine anonyme struct kann nur nicht-statische Datenelemente haben" - --#: cp/class.c:2774 cp/decl2.c:1371 -+#: cp/class.c:2778 cp/decl2.c:1371 - #, gcc-internal-format - msgid "private member %q+#D in anonymous union" - msgstr "privates Element %q+#D in anonymer Union" - --#: cp/class.c:2776 -+#: cp/class.c:2780 - #, gcc-internal-format - msgid "private member %q+#D in anonymous struct" - msgstr "privates Element %q+#D in anonymer struct" - --#: cp/class.c:2781 cp/decl2.c:1373 -+#: cp/class.c:2785 cp/decl2.c:1373 - #, gcc-internal-format - msgid "protected member %q+#D in anonymous union" - msgstr "geschütztes Element %q+#D in anonymer Union" - --#: cp/class.c:2783 -+#: cp/class.c:2787 - #, gcc-internal-format - msgid "protected member %q+#D in anonymous struct" - msgstr "geschütztes Element %q+#D in anonymer struct" - --#: cp/class.c:2927 -+#: cp/class.c:2931 - #, gcc-internal-format - msgid "the ellipsis in %qD is not inherited" - msgstr "" - --#: cp/class.c:3103 -+#: cp/class.c:3106 - #, gcc-internal-format - msgid "bit-field %q+#D with non-integral type" - msgstr "Bit-Feld %q+#D mit Nicht-Ganzzahl-Typ" - --#: cp/class.c:3119 -+#: cp/class.c:3122 - #, gcc-internal-format - msgid "bit-field %q+D width not an integer constant" - msgstr "Breite des Bitfeldes %q+D ist keine Ganzzahlkonstante" - --#: cp/class.c:3124 -+#: cp/class.c:3127 - #, gcc-internal-format - msgid "negative width in bit-field %q+D" - msgstr "negative Breite in Bitfeld %q+D" - --#: cp/class.c:3129 -+#: cp/class.c:3132 - #, gcc-internal-format - msgid "zero width for bit-field %q+D" - msgstr "Breite Null für Bitfeld %q+D" - --#: cp/class.c:3135 -+#: cp/class.c:3138 - #, gcc-internal-format - msgid "width of %q+D exceeds its type" - msgstr "Breite von %q+D übersteigt seinen Typen" - --#: cp/class.c:3139 -+#: cp/class.c:3142 - #, gcc-internal-format - msgid "%q+D is too small to hold all values of %q#T" - msgstr "%q+D ist zu klein um alle Werte von %q#T aufzunehmen" - --#: cp/class.c:3198 -+#: cp/class.c:3201 - #, gcc-internal-format - msgid "member %q+#D with constructor not allowed in union" - msgstr "Element %q+#D mit Konstruktor nicht erlaubt in Union" - --#: cp/class.c:3201 -+#: cp/class.c:3204 - #, gcc-internal-format - msgid "member %q+#D with destructor not allowed in union" - msgstr "Element %q+#D mit Destruktor nicht erlaubt in Union" - --#: cp/class.c:3203 -+#: cp/class.c:3206 - #, gcc-internal-format - msgid "member %q+#D with copy assignment operator not allowed in union" - msgstr "Element %q+#D mit Copy-Zuweisungsoperator ist nicht erlaubt in Union" - --#: cp/class.c:3207 -+#: cp/class.c:3210 - #, gcc-internal-format - msgid "unrestricted unions only available with -std=c++11 or -std=gnu++11" - msgstr "uneingeschränkte »Unions« nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/class.c:3244 -+#: cp/class.c:3247 - #, gcc-internal-format - msgid "multiple fields in union %qT initialized" - msgstr "in Union %qT werden mehrere Felder initialisiert" - --#: cp/class.c:3329 -+#: cp/class.c:3332 - #, gcc-internal-format - msgid "%q+D may not be static because it is a member of a union" - msgstr "%q+D kann nicht static sein, da es ein Union-Element ist" - --#: cp/class.c:3334 -+#: cp/class.c:3337 - #, gcc-internal-format - msgid "%q+D may not have reference type %qT because it is a member of a union" - msgstr "%q+D darf keinen Referenztyp %qT haben, da es ein Element einer Union ist" - --#: cp/class.c:3345 -+#: cp/class.c:3348 - #, gcc-internal-format - msgid "field %q+D invalidly declared function type" - msgstr "Feld %q+D deklarierte ungültigerweise einen Funktionstypen" - --#: cp/class.c:3351 -+#: cp/class.c:3354 - #, gcc-internal-format - msgid "field %q+D invalidly declared method type" - msgstr "Feld %q+D deklarierte ungültigerweise einen Methodentypen" - --#: cp/class.c:3407 -+#: cp/class.c:3410 - #, gcc-internal-format - msgid "ignoring packed attribute because of unpacked non-POD field %q+#D" - msgstr "»gepackt«-Attribut für ungepacktes nicht-POD-Feld %q+#D wird ignoriert" - --#: cp/class.c:3504 -+#: cp/class.c:3507 - #, gcc-internal-format - msgid "field %q+#D with same name as class" - msgstr "Feld %q+#D mit gleichem Namen wie Klasse" - --#: cp/class.c:3527 -+#: cp/class.c:3530 - #, gcc-internal-format - msgid "%q#T has pointer data members" - msgstr "%q#T hat Zeigertypen als Elemente" - --#: cp/class.c:3532 -+#: cp/class.c:3535 - #, gcc-internal-format - msgid " but does not override %<%T(const %T&)%>" - msgstr " aber überschreibt nicht %<%T(const %T&)%>" - --#: cp/class.c:3534 -+#: cp/class.c:3537 - #, gcc-internal-format - msgid " or %" - msgstr " oder %" - --#: cp/class.c:3538 -+#: cp/class.c:3541 - #, gcc-internal-format - msgid " but does not override %" - msgstr " aber überschreibt nicht %" - --#: cp/class.c:4009 -+#: cp/class.c:4012 - #, gcc-internal-format - msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC" - msgstr "Versatz der leeren Basis %qT könnte ABI-unverträglich sein und sich in zukünftigen GCC-Versionen ändern" - --#: cp/class.c:4136 -+#: cp/class.c:4139 - #, gcc-internal-format - msgid "class %qT will be considered nearly empty in a future version of GCC" - msgstr "Klasse %qT wird in zukünftigen GCC-Versionen als annähernd leer betrachtet werden" - --#: cp/class.c:4218 -+#: cp/class.c:4221 - #, gcc-internal-format - msgid "initializer specified for non-virtual method %q+D" - msgstr "Initialisierung für nicht-virtuelle Methode %q+D angegeben" - --#: cp/class.c:4645 -+#: cp/class.c:4648 - #, gcc-internal-format - msgid "method overrides both % and %qE methods" - msgstr "Methode überschreibt Methoden % und %qE" - --#: cp/class.c:4666 -+#: cp/class.c:4669 - #, gcc-internal-format - msgid "method declared %qE overriding %qE method" - msgstr "als %qE deklarierte Methode überschreibt Methode %qE" - --#: cp/class.c:5132 cp/semantics.c:5826 -+#: cp/class.c:5135 cp/semantics.c:5828 - #, gcc-internal-format - msgid "enclosing class of constexpr non-static member function %q+#D is not a literal type" - msgstr "umschließende Klasse der nicht-statischen Elementfunktion %q+#D als konstanter Ausdruck ist kein Literaltyp" - --#: cp/class.c:5157 -+#: cp/class.c:5160 - #, gcc-internal-format - msgid "%q+T is not literal because:" - msgstr "%q+T ist kein Literal, denn: " - --#: cp/class.c:5159 -+#: cp/class.c:5162 - #, gcc-internal-format - msgid " %q+T has a non-trivial destructor" - msgstr " %q+T hat einen nicht-trivialen Destruktor" - --#: cp/class.c:5164 -+#: cp/class.c:5167 - #, gcc-internal-format - msgid " %q+T is not an aggregate, does not have a trivial default constructor, and has no constexpr constructor that is not a copy or move constructor" - msgstr " %q+T ist kein Aggregat, hat keinen trivialen Standardkonstruktor und hat keinen Konstruktor mit konstantem Ausdruck, der kein Kopier- oder Bewegungskonstruktor ist" - --#: cp/class.c:5200 -+#: cp/class.c:5203 - #, gcc-internal-format - msgid " base class %qT of %q+T is non-literal" - msgstr " Basisklasse %qT von %q+T ist kein Literal" - --#: cp/class.c:5214 -+#: cp/class.c:5217 - #, gcc-internal-format - msgid " non-static data member %q+D has non-literal type" - msgstr " nicht-statisches Datenelement %q+D hat nicht-literalen Typ" - --#: cp/class.c:5332 -+#: cp/class.c:5335 - #, gcc-internal-format - msgid "non-static reference %q+#D in class without a constructor" - msgstr "nicht-statische Referenz %q+#D in Klasse ohne Konstruktor" - --#: cp/class.c:5337 -+#: cp/class.c:5340 - #, gcc-internal-format - msgid "non-static const member %q+#D in class without a constructor" - msgstr "nicht-statisches const-Element %q+#D in Klasse ohne einen Konstruktor" - - #. If the function is defaulted outside the class, we just - #. give the synthesis error. --#: cp/class.c:5363 -+#: cp/class.c:5366 - #, gcc-internal-format - msgid "%q+D declared to take const reference, but implicit declaration would take non-const" - msgstr "%q+D mit Eingabe einer konstanten Referenz deklariert, aber implizite Deklaration würde nicht-Konstante annehmen" - --#: cp/class.c:5587 -+#: cp/class.c:5590 - #, gcc-internal-format - msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC" - msgstr "Versatz der virtuellen Basis %qT ist ABI-unverträglich und kann sich in zukünftigen GCC-Versionen ändern" - --#: cp/class.c:5688 -+#: cp/class.c:5691 - #, gcc-internal-format - msgid "direct base %qT inaccessible in %qT due to ambiguity" - msgstr "direkte Basis %qT ist in %qT durch Mehrdeutigkeit unzugänglich" - --#: cp/class.c:5700 -+#: cp/class.c:5703 - #, gcc-internal-format - msgid "virtual base %qT inaccessible in %qT due to ambiguity" - msgstr "virtuelle Basis %qT ist in %qT durch Mehrdeutigkeit unzugänglich" - --#: cp/class.c:5886 -+#: cp/class.c:5889 - #, gcc-internal-format - msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC" - msgstr "%qT zugewiesene Größe könnte ABI-unverträglich sein und sich in zukünftigen GCC-Versionen ändern" - --#: cp/class.c:5926 -+#: cp/class.c:5929 - #, gcc-internal-format - msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC" - msgstr "der Versatz von %qD könnte ABI-unverträglich sein und sich in einer zukünftigen GCC-Version ändern" - --#: cp/class.c:5954 -+#: cp/class.c:5957 - #, gcc-internal-format - msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC" - msgstr "Versatz von %q+D ist ABI-unverträglich und kann sich in zukünftigen GCC-Versionen ändern" - --#: cp/class.c:5964 -+#: cp/class.c:5967 - #, gcc-internal-format - msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC" - msgstr "%q+D enthält leere Klassen, die in zukünftigen GCC-Versionen die Basisklassen an andere Orte verschieben können" - --#: cp/class.c:6052 -+#: cp/class.c:6055 - #, gcc-internal-format - msgid "layout of classes derived from empty class %qT may change in a future version of GCC" - msgstr "die Anordnung der von der leeren Klasse %qT abgeleiteten Klassen könnte sich in zukünftigen GCC-Versionen ändern" - --#: cp/class.c:6220 cp/decl.c:12134 cp/parser.c:18856 -+#: cp/class.c:6223 cp/decl.c:12125 cp/parser.c:18860 - #, gcc-internal-format - msgid "redefinition of %q#T" - msgstr "Redefinition von %q#T" - --#: cp/class.c:6369 -+#: cp/class.c:6372 - #, gcc-internal-format - msgid "%q#T has virtual functions and accessible non-virtual destructor" - msgstr "%q#T hat virtuelle Funktionen und erreichbaren nicht-virtuellen Destruktor" - --#: cp/class.c:6395 --#, fuzzy, gcc-internal-format -+#: cp/class.c:6398 -+#, gcc-internal-format - msgid "type transparent %q#T does not have any fields" --msgstr "typtransparente Klasse %qT hat keine Felder" -+msgstr "typtransparentes %q#T hat keine Felder" - --#: cp/class.c:6401 -+#: cp/class.c:6404 - #, gcc-internal-format - msgid "type transparent class %qT has base classes" - msgstr "typtransparente Klasse %qT hat Basisklassen" - --#: cp/class.c:6405 -+#: cp/class.c:6408 - #, gcc-internal-format - msgid "type transparent class %qT has virtual functions" - msgstr "typtransparente Klasse %qT hat virtuelle Funktionen" - --#: cp/class.c:6411 -+#: cp/class.c:6414 - #, gcc-internal-format - msgid "type transparent %q#T cannot be made transparent because the type of the first field has a different ABI from the class overall" --msgstr "" -+msgstr "typtransparentes %q#T kann nicht transparent gemacht werden, weil der Typ des ersten Feldes anderes ABI als gesamte Klasse hat" - --#: cp/class.c:6562 -+#: cp/class.c:6565 - #, gcc-internal-format - msgid "trying to finish struct, but kicked out due to previous parse errors" - msgstr "Lesen der struct konnte wegen Syntaxfehlern nicht beendet werden" - --#: cp/class.c:7071 -+#: cp/class.c:7074 - #, gcc-internal-format - msgid "language string %<\"%E\"%> not recognized" - msgstr "Sprachen-Zeichenkette %<\"%E\"%> nicht erkannt" - --#: cp/class.c:7160 -+#: cp/class.c:7163 - #, gcc-internal-format - msgid "cannot resolve overloaded function %qD based on conversion to type %qT" - msgstr "überladene Funktion %qD konnte nicht durch Umwandlung in Typ %qT aufgelöst werden" - --#: cp/class.c:7280 -+#: cp/class.c:7283 - #, gcc-internal-format - msgid "no matches converting function %qD to type %q#T" - msgstr "bei der Umwandlung der Funktion %qD in den Typ %q#T gab es keine Übereinstimmungen" - --#: cp/class.c:7308 -+#: cp/class.c:7311 - #, gcc-internal-format - msgid "converting overloaded function %qD to type %q#T is ambiguous" - msgstr "Umwandung der überladenen Funktion %qD in den Typ %q#T ist mehrdeutig" - --#: cp/class.c:7335 -+#: cp/class.c:7338 - #, gcc-internal-format - msgid "assuming pointer to member %qD" - msgstr "Zeiger auf Element %qD wird angenommen" - --#: cp/class.c:7338 -+#: cp/class.c:7341 - #, gcc-internal-format - msgid "(a pointer to member can only be formed with %<&%E%>)" - msgstr "(ein Zeiger auf ein Element kann nur mit %<»&%E%> erzeugt werden)" - --#: cp/class.c:7413 cp/class.c:7447 -+#: cp/class.c:7416 cp/class.c:7450 - #, gcc-internal-format - msgid "not enough type information" - msgstr "zu wenig Typinformationen" - --#: cp/class.c:7430 cp/cvt.c:173 cp/cvt.c:199 cp/cvt.c:248 -+#: cp/class.c:7433 cp/cvt.c:173 cp/cvt.c:199 cp/cvt.c:248 - #, gcc-internal-format - msgid "cannot convert %qE from type %qT to type %qT" - msgstr "%qE kann nicht vom Typ %qT in den Typ %qT umgewandelt werden" -@@ -28040,12 +28040,12 @@ - #. A name N used in a class S shall refer to the same declaration - #. in its context and when re-evaluated in the completed scope of - #. S. --#: cp/class.c:7742 cp/decl.c:1325 -+#: cp/class.c:7745 cp/decl.c:1325 - #, gcc-internal-format - msgid "declaration of %q#D" - msgstr "Deklaration von %q#D" - --#: cp/class.c:7743 -+#: cp/class.c:7746 - #, gcc-internal-format - msgid "changes meaning of %qD from %q+#D" - msgstr "verändert die Bedeutung von %qD von %q+#D" -@@ -28116,9 +28116,9 @@ - msgstr "%q#T verwendet, wo %qT erwartet wurde" - - #: cp/cvt.c:765 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "could not convert %qE from % to %" --msgstr "%qE konnte nicht von %qT nach %qT umgewandelt werden" -+msgstr "%qE konnte nicht von % nach % umgewandelt werden" - - #: cp/cvt.c:816 - #, gcc-internal-format -@@ -28522,9 +28522,9 @@ - msgstr "vorherige Deklaration %q+#D hier" - - #: cp/decl.c:1533 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "ambiguates old declaration with deduced return type" --msgstr "macht alte Deklaration %q+#D mehrdeutig" -+msgstr "macht alte Deklaration mit hergeleitetem Rückgabetyp mehrdeutig" - - #: cp/decl.c:1544 - #, gcc-internal-format -@@ -28888,14 +28888,14 @@ - msgstr "% kann nicht für Typdeklarationen verwendet werden" - - #: cp/decl.c:4321 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "attribute ignored in explicit instantiation %q#T" --msgstr "Attribute an Templateinstanziierung ignoriert" -+msgstr "Attribut in expliter Instanziierung %q#T ignoriert" - - #: cp/decl.c:4324 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "no attribute can be applied to an explicit instantiation" --msgstr "Attribut %qE kann nur auf Klassendefinitionen angewendet werden" -+msgstr "auf explizite Instanziierung kann kein Attribut angewendet werden" - - #: cp/decl.c:4396 - #, gcc-internal-format -@@ -29067,9 +29067,9 @@ - msgstr "%qT hat kein nicht-statisches Datenelement namens %qD" - - #: cp/decl.c:5226 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "invalid initializer for %q#D" --msgstr "ungültige Initialisierung für Feldelement %q#D" -+msgstr "ungültige Initialisierung für %q#D" - - #: cp/decl.c:5256 - #, gcc-internal-format -@@ -29172,233 +29172,233 @@ - msgid "function %q#D is initialized like a variable" - msgstr "Funktion %q#D ist wie eine Variable initialisiert" - --#: cp/decl.c:6883 -+#: cp/decl.c:6886 - #, gcc-internal-format - msgid "non-local variable %qD declared %<__thread%> needs dynamic initialization" --msgstr "" -+msgstr "nicht-lokale %<__thread%>-Variable %qD erfordert dynamische Initialisierung" - --#: cp/decl.c:6886 --#, fuzzy, gcc-internal-format -+#: cp/decl.c:6889 -+#, gcc-internal-format - msgid "non-local variable %qD declared %<__thread%> has a non-trivial destructor" --msgstr " %q+T hat einen nicht-trivialen Destruktor" -+msgstr "nicht-lokale %<__thread%>-Variable %qD hat einen nicht-trivialen Destruktor" - --#: cp/decl.c:6892 -+#: cp/decl.c:6895 - #, gcc-internal-format - msgid "C++11 % allows dynamic initialization and destruction" --msgstr "" -+msgstr "% in C++11 erlaubt dynamische Initialisierung und Zerstörung" - --#: cp/decl.c:7119 -+#: cp/decl.c:7122 - #, gcc-internal-format - msgid "initializer fails to determine size of %qT" - msgstr "Initialisierung gibt nicht die Größe von %qT an" - --#: cp/decl.c:7123 -+#: cp/decl.c:7126 - #, gcc-internal-format - msgid "array size missing in %qT" - msgstr "Feldgröße fehlt in %qT" - --#: cp/decl.c:7126 -+#: cp/decl.c:7129 - #, gcc-internal-format - msgid "zero-size array %qT" - msgstr "Feld %qT der Größe null" - --#: cp/decl.c:7142 -+#: cp/decl.c:7145 - #, gcc-internal-format - msgid "destructor for alien class %qT cannot be a member" - msgstr "Destruktor für fremde Klasse %qT kann kein Element sein" - --#: cp/decl.c:7144 -+#: cp/decl.c:7147 - #, gcc-internal-format - msgid "constructor for alien class %qT cannot be a member" - msgstr "Konstruktor für fremde Klasse %qT kann kein Element sein" - --#: cp/decl.c:7168 -+#: cp/decl.c:7171 - #, gcc-internal-format - msgid "%qD declared as a % variable" - msgstr "%qD als eine % Variable deklariert" - --#: cp/decl.c:7170 -+#: cp/decl.c:7173 - #, gcc-internal-format - msgid "%qD declared as an % variable" - msgstr "%qD als eine % Variable deklariert" - --#: cp/decl.c:7172 -+#: cp/decl.c:7175 - #, gcc-internal-format - msgid "% and % function specifiers on %qD invalid in variable declaration" - msgstr "Funktionsspezifizierer % und % an %qD ungültig in Variablendeklaration" - --#: cp/decl.c:7177 -+#: cp/decl.c:7180 - #, gcc-internal-format - msgid "%qD declared as a % parameter" - msgstr "%qD als ein % Parameter deklariert" - --#: cp/decl.c:7179 -+#: cp/decl.c:7182 - #, gcc-internal-format - msgid "%qD declared as an % parameter" - msgstr "%qD als ein % Parameter deklariert" - --#: cp/decl.c:7181 -+#: cp/decl.c:7184 - #, gcc-internal-format - msgid "% and % function specifiers on %qD invalid in parameter declaration" - msgstr "Funktionsspezifizierer % und % an %qD ungültig in Parameterdeklaration" - --#: cp/decl.c:7186 -+#: cp/decl.c:7189 - #, gcc-internal-format - msgid "%qD declared as a % type" - msgstr "%qD als ein % Typ deklariert" - --#: cp/decl.c:7188 -+#: cp/decl.c:7191 - #, gcc-internal-format - msgid "%qD declared as an % type" - msgstr "%qD als ein % Typ deklariert" - --#: cp/decl.c:7190 -+#: cp/decl.c:7193 - #, gcc-internal-format - msgid "% and % function specifiers on %qD invalid in type declaration" - msgstr "Funktionsspezifizierer % und % an %qD ungültig in Typdeklaration" - --#: cp/decl.c:7195 -+#: cp/decl.c:7198 - #, gcc-internal-format - msgid "%qD declared as a % field" - msgstr "%qD als ein % Feld deklariert" - --#: cp/decl.c:7197 -+#: cp/decl.c:7200 - #, gcc-internal-format - msgid "%qD declared as an % field" - msgstr "%qD als ein % Feld deklariert" - --#: cp/decl.c:7199 -+#: cp/decl.c:7202 - #, gcc-internal-format - msgid "% and % function specifiers on %qD invalid in field declaration" - msgstr "Funktionsspezifizierer % und % an %qD ungültig in Felddeklaration" - --#: cp/decl.c:7206 -+#: cp/decl.c:7209 - #, gcc-internal-format - msgid "%q+D declared as a friend" - msgstr "%q+D als »friend« deklariert" - --#: cp/decl.c:7212 -+#: cp/decl.c:7215 - #, gcc-internal-format - msgid "%q+D declared with an exception specification" - msgstr "%q+D mit einer Ausnahmespezifikation deklariert" - --#: cp/decl.c:7246 -+#: cp/decl.c:7249 - #, gcc-internal-format - msgid "definition of %qD is not in namespace enclosing %qT" - msgstr "Deklaration von %qD ist nicht in einem Namensbereich um %qT" - --#: cp/decl.c:7286 -+#: cp/decl.c:7289 - #, gcc-internal-format - msgid "static member function %q#D declared with type qualifiers" - msgstr "statische Elementfunktion %q#D mit Typqualifizierern deklariert" - --#: cp/decl.c:7385 -+#: cp/decl.c:7388 - #, gcc-internal-format - msgid "defining explicit specialization %qD in friend declaration" - msgstr "Definition der expliziten Spezialisierung %qD in friend-Deklaration" - - #. Something like `template friend void f()'. --#: cp/decl.c:7395 -+#: cp/decl.c:7398 - #, gcc-internal-format - msgid "invalid use of template-id %qD in declaration of primary template" - msgstr "ungültige Verwendung der Template-ID %qD in Deklaration des ursprünglichen Templates" - --#: cp/decl.c:7425 -+#: cp/decl.c:7428 - #, gcc-internal-format - msgid "default arguments are not allowed in declaration of friend template specialization %qD" - msgstr "Standardargumente sind nicht in Deklaration der friend-Template-Spezialisierung %qD erlaubt" - --#: cp/decl.c:7433 -+#: cp/decl.c:7436 - #, gcc-internal-format - msgid "% is not allowed in declaration of friend template specialization %qD" - msgstr "% ist nicht in Deklaration der friend-Template-Spezialisierung %qD erlaubt" - --#: cp/decl.c:7475 -+#: cp/decl.c:7478 - #, gcc-internal-format - msgid "cannot declare %<::main%> to be a template" - msgstr "%<::main%> kann nicht als Template deklariert werden" - --#: cp/decl.c:7477 -+#: cp/decl.c:7480 - #, gcc-internal-format - msgid "cannot declare %<::main%> to be inline" - msgstr "%<::main%> kann nicht inline deklariert werden" - --#: cp/decl.c:7479 -+#: cp/decl.c:7482 - #, gcc-internal-format - msgid "cannot declare %<::main%> to be static" - msgstr "%<::main%> kann nicht statisch deklariert werden" - --#: cp/decl.c:7507 -+#: cp/decl.c:7510 - #, gcc-internal-format - msgid "anonymous type with no linkage used to declare function %q#D with linkage" - msgstr "anonymer Typ ohne Bindung verwendet, um Funktion %q#D mit Bindung zu deklarieren" - --#: cp/decl.c:7511 cp/decl.c:7879 cp/decl2.c:3864 -+#: cp/decl.c:7514 cp/decl.c:7882 cp/decl2.c:3864 - #, gcc-internal-format - msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage" - msgstr "%q+#D verweist nicht auf den unqualifizierten Typen, also wird es nicht zum Binden verwendet" - --#: cp/decl.c:7517 -+#: cp/decl.c:7520 - #, gcc-internal-format - msgid "type %qT with no linkage used to declare function %q#D with linkage" - msgstr "Typ %qT ohne Bindung für Funktionsdeklaration %q#D mit Bindung deklariert" - --#: cp/decl.c:7539 -+#: cp/decl.c:7542 - #, gcc-internal-format - msgid "static member function %qD cannot have cv-qualifier" - msgstr "statische Elementfunktion %qD kann nicht CV-Qualifizierer haben" - --#: cp/decl.c:7540 -+#: cp/decl.c:7543 - #, gcc-internal-format - msgid "non-member function %qD cannot have cv-qualifier" - msgstr "Nicht-Elementfunktion %qD kann nicht CV-Qualifizierer haben" - --#: cp/decl.c:7556 -+#: cp/decl.c:7559 - #, gcc-internal-format - msgid "literal operator with C linkage" - msgstr "literaler Operator mit C-Bindung" - --#: cp/decl.c:7565 -+#: cp/decl.c:7568 - #, gcc-internal-format - msgid "%qD has invalid argument list" - msgstr "%qD hat ungültige Argumentliste" - --#: cp/decl.c:7573 -+#: cp/decl.c:7576 - #, gcc-internal-format - msgid "integer suffix %<%s%> shadowed by implementation" - msgstr "Ganzzahl-Suffix %<%s%> durch Implementierung überdeckt" - --#: cp/decl.c:7579 -+#: cp/decl.c:7582 - #, gcc-internal-format - msgid "floating point suffix %<%s%> shadowed by implementation" - msgstr "Gleitkomma-Suffix %<%s%> durch Implementierung überdeckt" - --#: cp/decl.c:7585 -+#: cp/decl.c:7588 - #, gcc-internal-format - msgid "%qD must be a non-member function" - msgstr "%qD muss eine Nicht-Elementfunktion sein" - --#: cp/decl.c:7636 -+#: cp/decl.c:7639 - #, gcc-internal-format - msgid "%<::main%> must return %" - msgstr "%<::main%> muss % zurückgeben" - --#: cp/decl.c:7678 -+#: cp/decl.c:7681 - #, gcc-internal-format - msgid "definition of implicitly-declared %qD" - msgstr "Definition des implizit deklarierten %qD" - --#: cp/decl.c:7683 -+#: cp/decl.c:7686 - #, gcc-internal-format - msgid "definition of explicitly-defaulted %q+D" - msgstr "Definition des explizit standardisierten %q+D" - --#: cp/decl.c:7684 -+#: cp/decl.c:7687 - #, gcc-internal-format - msgid "%q+#D explicitly defaulted here" - msgstr "%q+#D wurde ausdrücklich hier standardisiert" - --#: cp/decl.c:7701 cp/decl2.c:738 -+#: cp/decl.c:7704 cp/decl2.c:738 - #, gcc-internal-format - msgid "no %q#D member function declared in class %qT" - msgstr "keine Elementfunktion %q#D in Klasse %qT deklariert" -@@ -29407,884 +29407,879 @@ - #. no linkage can only be used to declare extern "C" - #. entities. Since it's not always an error in the - #. ISO C++ 90 Standard, we only issue a warning. --#: cp/decl.c:7876 -+#: cp/decl.c:7879 - #, gcc-internal-format - msgid "anonymous type with no linkage used to declare variable %q#D with linkage" - msgstr "anonymer Typ ohne Bindung verwendet, um Variable %q#D mit Bindung zu deklarieren" - --#: cp/decl.c:7885 -+#: cp/decl.c:7888 - #, gcc-internal-format - msgid "type %qT with no linkage used to declare variable %q#D with linkage" - msgstr "Typ %qT ohne Bindung verwendet, um Variable %q#D mit Bindung zu deklarieren" - --#: cp/decl.c:8008 -+#: cp/decl.c:8011 - #, gcc-internal-format - msgid "in-class initialization of static data member %q#D of incomplete type" - msgstr "Initialisierung innerhalb der Klasse des statischen Datenelements %q#D mit unvollständigem Typ" - --#: cp/decl.c:8012 -+#: cp/decl.c:8015 - #, gcc-internal-format - msgid "% needed for in-class initialization of static data member %q#D of non-integral type" - msgstr "% erforderlich für Initialisierung innerhalb der Klasse des statischen Datenelements %q#D mit nicht eingebautem Typ" - --#: cp/decl.c:8015 -+#: cp/decl.c:8018 - #, gcc-internal-format - msgid "in-class initialization of static data member %q#D of non-literal type" - msgstr "Initialisierung innerhalb der Klasse des statischen Datenelements %q#D mit nicht eingebautem Typ" - --#: cp/decl.c:8028 -+#: cp/decl.c:8031 - #, gcc-internal-format - msgid "invalid in-class initialization of static data member of non-integral type %qT" - msgstr "ungültige Initialisierung innerhalb der Klasse des statischen Datenelements vom nicht eingebauten Typen %qT" - --#: cp/decl.c:8034 -+#: cp/decl.c:8037 - #, gcc-internal-format - msgid "ISO C++ forbids in-class initialization of non-const static member %qD" - msgstr "ISO-C++ verbietet Initialisierung des nicht konstanten statischen Elements %qD in der Klasse" - --#: cp/decl.c:8038 -+#: cp/decl.c:8041 - #, gcc-internal-format - msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT" - msgstr "ISO-C++ verbietet Initialisierung der Elementkonstante %qD vom nicht eingebauten Typen %qT" - --#: cp/decl.c:8144 cp/decl.c:8172 -+#: cp/decl.c:8147 cp/decl.c:8175 - #, gcc-internal-format - msgid "size of array %qD has non-integral type %qT" - msgstr "Feldgröße von %qD hat nicht-ganzzahligen Typen %qT" - --#: cp/decl.c:8147 cp/decl.c:8174 -+#: cp/decl.c:8150 cp/decl.c:8177 - #, gcc-internal-format - msgid "size of array has non-integral type %qT" - msgstr "Feldgröße hat nicht-ganzzahligen Typen %qT" - --#: cp/decl.c:8224 -+#: cp/decl.c:8227 - #, gcc-internal-format - msgid "size of array %qD is negative" - msgstr "Größe des Feldes %qD ist negativ" - --#: cp/decl.c:8226 -+#: cp/decl.c:8229 - #, gcc-internal-format - msgid "size of array is negative" - msgstr "Größe des Feldes ist negativ" - --#: cp/decl.c:8240 -+#: cp/decl.c:8243 - #, gcc-internal-format - msgid "ISO C++ forbids zero-size array %qD" - msgstr "ISO-C++ verbietet Feld %qD der Größe null" - --#: cp/decl.c:8242 -+#: cp/decl.c:8245 - #, gcc-internal-format - msgid "ISO C++ forbids zero-size array" - msgstr "ISO-C++ verbietet Feld der Größe null" - --#: cp/decl.c:8254 -+#: cp/decl.c:8257 - #, gcc-internal-format - msgid "size of array %qD is not an integral constant-expression" - msgstr "Größe des Feldes %qD ist kein konstanter Ganzzahlausdruck" - --#: cp/decl.c:8257 -+#: cp/decl.c:8260 - #, gcc-internal-format - msgid "size of array is not an integral constant-expression" - msgstr "Größe des Feldes ist kein konstanter Ganzzahlausdruck" - --#: cp/decl.c:8263 -+#: cp/decl.c:8266 - #, gcc-internal-format - msgid "ISO C++ forbids variable length array %qD" - msgstr "ISO-C++ verbietet Feld %qD variabler Länge" - --#: cp/decl.c:8265 -+#: cp/decl.c:8268 - #, gcc-internal-format - msgid "ISO C++ forbids variable length array" - msgstr "ISO-C++ verbietet Feld variabler Länge" - --#: cp/decl.c:8271 -+#: cp/decl.c:8274 - #, gcc-internal-format - msgid "variable length array %qD is used" - msgstr "Feld %qD variabler Länge wird verwendet" - --#: cp/decl.c:8323 -+#: cp/decl.c:8326 - #, gcc-internal-format - msgid "overflow in array dimension" - msgstr "Überlauf in Feldgröße" - --#: cp/decl.c:8383 -+#: cp/decl.c:8386 - #, gcc-internal-format - msgid "declaration of %qD as array of %" - msgstr "Deklaration von %qD als Feld von %" - --#: cp/decl.c:8391 -+#: cp/decl.c:8394 - #, gcc-internal-format - msgid "declaration of %qD as array of void" - msgstr "Deklaration von %qD als Feld von voids" - --#: cp/decl.c:8393 -+#: cp/decl.c:8396 - #, gcc-internal-format - msgid "creating array of void" - msgstr "Feld von void wird erzeugt" - --#: cp/decl.c:8398 -+#: cp/decl.c:8401 - #, gcc-internal-format - msgid "declaration of %qD as array of functions" - msgstr "Deklaration von %qD als Feld von Funktionen" - --#: cp/decl.c:8400 -+#: cp/decl.c:8403 - #, gcc-internal-format - msgid "creating array of functions" - msgstr "Feld von Funktionen wird erzeugt" - --#: cp/decl.c:8405 -+#: cp/decl.c:8408 - #, gcc-internal-format - msgid "declaration of %qD as array of references" - msgstr "Deklaration von %qD als Feld von Referenzen" - --#: cp/decl.c:8407 -+#: cp/decl.c:8410 - #, gcc-internal-format - msgid "creating array of references" - msgstr "Feld von Referenzen wird erzeugt" - --#: cp/decl.c:8412 -+#: cp/decl.c:8415 - #, gcc-internal-format - msgid "declaration of %qD as array of function members" - msgstr "Deklaration von %qD als Feld von Funktionselementen" - --#: cp/decl.c:8414 -+#: cp/decl.c:8417 - #, gcc-internal-format - msgid "creating array of function members" - msgstr "Feld von Funktionselementen wird erzeugt" - --#: cp/decl.c:8428 -+#: cp/decl.c:8431 - #, gcc-internal-format - msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first" - msgstr "Deklaration von %qD als multidimensionales Feld muss für alle Dimensionen außer der ersten Grenzen haben" - --#: cp/decl.c:8432 -+#: cp/decl.c:8435 - #, gcc-internal-format - msgid "multidimensional array must have bounds for all dimensions except the first" - msgstr "multidimensionales Feld muss für alle Dimensionen außer der ersten Grenzen haben" - --#: cp/decl.c:8467 -+#: cp/decl.c:8470 - #, gcc-internal-format - msgid "return type specification for constructor invalid" - msgstr "Angabe des Rückgabetyps für Konstruktor ist ungültig" - --#: cp/decl.c:8477 -+#: cp/decl.c:8480 - #, gcc-internal-format - msgid "return type specification for destructor invalid" - msgstr "Angabe des Rückgabetyps für Destruktor ist ungültig" - --#: cp/decl.c:8490 -+#: cp/decl.c:8493 - #, gcc-internal-format - msgid "return type specified for %" - msgstr "Rückgabetyp für % angegeben" - --#: cp/decl.c:8512 -+#: cp/decl.c:8515 - #, gcc-internal-format - msgid "unnamed variable or field declared void" - msgstr "unbenannte Variable oder Feld als »void« deklariert" - --#: cp/decl.c:8519 -+#: cp/decl.c:8522 - #, gcc-internal-format - msgid "variable or field declared void" - msgstr "Variable oder Feld als »void« deklariert" - --#: cp/decl.c:8720 -+#: cp/decl.c:8722 - #, gcc-internal-format - msgid "invalid use of qualified-name %<::%D%>" - msgstr "ungültige Verwendung des qualifizierten Namens %<::%D%>" - --#: cp/decl.c:8723 -+#: cp/decl.c:8725 - #, gcc-internal-format - msgid "invalid use of qualified-name %<%T::%D%>" - msgstr "ungültige Verwendung des qualifizierten Namens %<%T::%D%>" - --#: cp/decl.c:8726 -+#: cp/decl.c:8728 - #, gcc-internal-format - msgid "invalid use of qualified-name %<%D::%D%>" - msgstr "ungültige Verwendung des qualifizierten Namens %<%D::%D%>" - --#: cp/decl.c:8735 -+#: cp/decl.c:8737 - #, gcc-internal-format - msgid "%q#T is not a class or a namespace" - msgstr "%q#T ist keine Klasse oder Namensbereich" - --#: cp/decl.c:8743 -+#: cp/decl.c:8745 - #, gcc-internal-format - msgid "type %qT is not derived from type %qT" - msgstr "Typ %qT ist nicht vom Typ %qT abgeleitet" - --#: cp/decl.c:8759 cp/decl.c:8851 cp/decl.c:8860 cp/decl.c:10242 -+#: cp/decl.c:8761 cp/decl.c:8853 cp/decl.c:8862 cp/decl.c:10238 - #, gcc-internal-format - msgid "declaration of %qD as non-function" - msgstr "Deklaration von %qD als Nicht-Funktion" - --#: cp/decl.c:8765 -+#: cp/decl.c:8767 - #, gcc-internal-format - msgid "declaration of %qD as non-member" - msgstr "Deklaration von %qD als Nicht-Element" - --#: cp/decl.c:8796 -+#: cp/decl.c:8798 - #, gcc-internal-format - msgid "declarator-id missing; using reserved word %qD" - msgstr "Deklarator-ID fehlt: reserviertes Wort %qD wird verwendet" - --#: cp/decl.c:8843 -+#: cp/decl.c:8845 - #, gcc-internal-format - msgid "function definition does not declare parameters" - msgstr "Funktionsdefinition deklariert keine Parameter" - --#: cp/decl.c:8868 -+#: cp/decl.c:8870 - #, gcc-internal-format - msgid "declaration of %qD as %" - msgstr "Deklaration von %qD als %" - --#: cp/decl.c:8873 -+#: cp/decl.c:8875 - #, gcc-internal-format - msgid "declaration of %qD as parameter" - msgstr "Deklaration von %qD als Parameter" - --#: cp/decl.c:8906 -+#: cp/decl.c:8908 - #, gcc-internal-format - msgid "% cannot appear in a typedef declaration" - msgstr "% kann nicht in typedef-Deklaration auftreten" - --#: cp/decl.c:8914 -+#: cp/decl.c:8916 - #, gcc-internal-format - msgid "two or more data types in declaration of %qs" - msgstr "zwei oder mehr Datentypen in Deklaration von %qs" - --#: cp/decl.c:8920 -+#: cp/decl.c:8922 - #, gcc-internal-format - msgid "conflicting specifiers in declaration of %qs" - msgstr "in Konflikt stehende Spezifikationen für Deklaration von %qs" - --#: cp/decl.c:8992 cp/decl.c:8995 cp/decl.c:8998 -+#: cp/decl.c:8994 cp/decl.c:8997 cp/decl.c:9000 - #, gcc-internal-format - msgid "ISO C++ forbids declaration of %qs with no type" - msgstr "ISO-C++ verbietet Deklaration von %qs ohne Typ" - --#: cp/decl.c:9009 -+#: cp/decl.c:9011 - #, gcc-internal-format - msgid "%<__int128%> is not supported by this target" - msgstr "%<__int128%> wird von diesem Ziel nicht unterstützt" - --#: cp/decl.c:9014 -+#: cp/decl.c:9016 - #, gcc-internal-format - msgid "ISO C++ does not support %<__int128%> for %qs" - msgstr "ISO-C++ unterstützt nicht %<__int128%> for %qs" - --#: cp/decl.c:9035 cp/decl.c:9055 -+#: cp/decl.c:9037 cp/decl.c:9057 - #, gcc-internal-format - msgid "% or % invalid for %qs" - msgstr "% oder % ungültig für %qs" - --#: cp/decl.c:9037 -+#: cp/decl.c:9039 - #, gcc-internal-format - msgid "% and % specified together for %qs" - msgstr "% und % für %qs gleichzeitig angegeben" - --#: cp/decl.c:9039 -+#: cp/decl.c:9041 - #, gcc-internal-format - msgid "% invalid for %qs" - msgstr "% ungültig für %qs" - --#: cp/decl.c:9041 -+#: cp/decl.c:9043 - #, gcc-internal-format - msgid "% invalid for %qs" - msgstr "% ungültig für %qs" - --#: cp/decl.c:9043 -+#: cp/decl.c:9045 - #, gcc-internal-format - msgid "% invalid for %qs" - msgstr "% ungültig für %qs" - --#: cp/decl.c:9045 -+#: cp/decl.c:9047 - #, gcc-internal-format - msgid "% or % invalid for %qs" - msgstr "% oder % ungültig für %qs" - --#: cp/decl.c:9047 -+#: cp/decl.c:9049 - #, gcc-internal-format - msgid "%, %, %, or % invalid for %qs" - msgstr "%, %, % oder % ungültig für %qs" - --#: cp/decl.c:9049 -+#: cp/decl.c:9051 - #, gcc-internal-format - msgid "% or % specified with char for %qs" - msgstr "% oder % mit »char« für %qs angegeben" - --#: cp/decl.c:9051 -+#: cp/decl.c:9053 - #, gcc-internal-format - msgid "% and % specified together for %qs" - msgstr "% und % für %qs gleichzeitig angegeben" - --#: cp/decl.c:9057 -+#: cp/decl.c:9059 - #, gcc-internal-format - msgid "% or % invalid for %qs" - msgstr "% oder % ungültig für %qs" - --#: cp/decl.c:9065 -+#: cp/decl.c:9067 - #, gcc-internal-format - msgid "long, short, signed or unsigned used invalidly for %qs" - msgstr "long, short, signed oder unsigned ungültig verwendet für %qs" - --#: cp/decl.c:9133 -+#: cp/decl.c:9135 - #, gcc-internal-format - msgid "complex invalid for %qs" - msgstr "complex ungültig für %qs" - --#: cp/decl.c:9161 -+#: cp/decl.c:9163 - #, gcc-internal-format - msgid "qualifiers are not allowed on declaration of %" - msgstr "Qualifizierer sind bei Deklaration von % nicht erlaubt" - --#: cp/decl.c:9193 -+#: cp/decl.c:9195 - #, gcc-internal-format - msgid "member %qD cannot be declared both virtual and static" - msgstr "Element %qD kann nicht gleichzeitig virtuell und statisch deklariert werden" - --#: cp/decl.c:9201 -+#: cp/decl.c:9206 - #, gcc-internal-format --msgid "%<%T::%D%> is not a valid declarator" --msgstr "%<%T::%D%> ist kein gültiger Deklarator" -- --#: cp/decl.c:9210 --#, gcc-internal-format - msgid "typedef declaration invalid in parameter declaration" - msgstr "»typedef«-Deklaration in Parameterdeklaration ungültig" - --#: cp/decl.c:9215 -+#: cp/decl.c:9211 - #, gcc-internal-format - msgid "storage class specified for template parameter %qs" - msgstr "Speicherklasse für Template-Parameter %qs angegeben" - --#: cp/decl.c:9221 -+#: cp/decl.c:9217 - #, gcc-internal-format - msgid "storage class specifiers invalid in parameter declarations" - msgstr "Speicherklassenangaben sind in Parameterdeklarationen ungültig" - --#: cp/decl.c:9227 -+#: cp/decl.c:9223 - #, gcc-internal-format - msgid "a parameter cannot be declared %" - msgstr "ein Parameter kann nicht als % deklariert sein" - --#: cp/decl.c:9236 -+#: cp/decl.c:9232 - #, gcc-internal-format - msgid "% outside class declaration" - msgstr "% außerhalb einer Klassendeklaration" - --#: cp/decl.c:9254 -+#: cp/decl.c:9250 - #, gcc-internal-format - msgid "multiple storage classes in declaration of %qs" - msgstr "mehrere Speicherklassen in Deklaration von %qs" - --#: cp/decl.c:9277 -+#: cp/decl.c:9273 - #, gcc-internal-format - msgid "storage class specified for %qs" - msgstr "Speicherklasse %qs angegeben" - --#: cp/decl.c:9281 -+#: cp/decl.c:9277 - #, gcc-internal-format - msgid "storage class specified for parameter %qs" - msgstr "Speicherklasse für Parameter %qs angegeben" - --#: cp/decl.c:9294 -+#: cp/decl.c:9290 - #, gcc-internal-format - msgid "nested function %qs declared %" - msgstr "geschachtelte Funktion %qs als % deklariert" - --#: cp/decl.c:9298 -+#: cp/decl.c:9294 - #, gcc-internal-format - msgid "top-level declaration of %qs specifies %" - msgstr "Deklaration höchster Ebene von %qs gibt % an" - --#: cp/decl.c:9305 -+#: cp/decl.c:9301 - #, gcc-internal-format - msgid "function-scope %qs implicitly auto and declared %<__thread%>" - msgstr "Funktions-Gültigkeitsbereich %qs ist implizit auto und deklarierte %<__thread%>" - --#: cp/decl.c:9317 -+#: cp/decl.c:9313 - #, gcc-internal-format - msgid "storage class specifiers invalid in friend function declarations" - msgstr "Speicherklassenangaben sind in friend-Funktionsdeklarationen ungültig" - --#: cp/decl.c:9427 -+#: cp/decl.c:9423 - #, gcc-internal-format - msgid "%qs declared as function returning a function" - msgstr "%qs als Funktion, die eine Funktion zurückgibt, deklariert" - --#: cp/decl.c:9432 -+#: cp/decl.c:9428 - #, gcc-internal-format - msgid "%qs declared as function returning an array" - msgstr "%qs als Funktion, die ein Feld zurückgibt, deklariert" - --#: cp/decl.c:9438 --#, fuzzy, gcc-internal-format -+#: cp/decl.c:9434 -+#, gcc-internal-format - msgid "%qs declared as function returning an abstract class type" --msgstr "%qs als Funktion, die ein Feld zurückgibt, deklariert" -+msgstr "Funktion %qs gibt abstrakten Klassentyp zurück" - --#: cp/decl.c:9467 -+#: cp/decl.c:9463 - #, gcc-internal-format - msgid "%qs function uses % type specifier without trailing return type" - msgstr "Funktion %qs verwendet Typspezifikation % ohne folgenden Rückgabetypen" - --#: cp/decl.c:9473 -+#: cp/decl.c:9469 - #, gcc-internal-format - msgid "%qs function with trailing return type has %qT as its type rather than plain %" - msgstr "Funktion %qs mit folgendem Rückgabetypen hat %qT als seinen Typ statt einfaches %" - - #. Not using maybe_warn_cpp0x because this should - #. always be an error. --#: cp/decl.c:9484 -+#: cp/decl.c:9480 - #, gcc-internal-format - msgid "trailing return type only available with -std=c++11 or -std=gnu++11" - msgstr "folgender Rückgabetyp nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/decl.c:9487 -+#: cp/decl.c:9483 - #, gcc-internal-format - msgid "%qs function with trailing return type not declared with % type specifier" - msgstr "Funktion %qs mit folgendem Rückgabetypen nicht mit Typspezifikation % deklariert" - --#: cp/decl.c:9520 -+#: cp/decl.c:9516 - #, gcc-internal-format - msgid "destructor cannot be static member function" - msgstr "Destruktor kann keine statische Elementfunktion sein" - --#: cp/decl.c:9521 -+#: cp/decl.c:9517 - #, gcc-internal-format - msgid "constructor cannot be static member function" - msgstr "Konstruktor kann keine statische Elementfunktion sein" - --#: cp/decl.c:9525 -+#: cp/decl.c:9521 - #, gcc-internal-format - msgid "destructors may not be cv-qualified" - msgstr "Destruktoren dürfen nicht CV-qualifiziert sein" - --#: cp/decl.c:9526 -+#: cp/decl.c:9522 - #, gcc-internal-format - msgid "constructors may not be cv-qualified" - msgstr "Konstruktoren dürfen nicht CV-qualifiziert sein" - --#: cp/decl.c:9543 -+#: cp/decl.c:9539 - #, gcc-internal-format - msgid "constructors cannot be declared virtual" - msgstr "Konstruktoren können nicht als virtuell deklariert werden" - --#: cp/decl.c:9556 -+#: cp/decl.c:9552 - #, gcc-internal-format - msgid "can%'t initialize friend function %qs" - msgstr "friend-Funktion %qs kann nicht initialisiert werden" - - #. Cannot be both friend and virtual. --#: cp/decl.c:9560 -+#: cp/decl.c:9556 - #, gcc-internal-format - msgid "virtual functions cannot be friends" - msgstr "virtuelle Funktionen können keine friends sein" - --#: cp/decl.c:9564 -+#: cp/decl.c:9560 - #, gcc-internal-format - msgid "friend declaration not in class definition" - msgstr "friend-Deklaration nicht in Klassendefinition" - --#: cp/decl.c:9566 -+#: cp/decl.c:9562 - #, gcc-internal-format - msgid "can%'t define friend function %qs in a local class definition" - msgstr "friend-Funktion %qs kann nicht in einer lokalen Klassendefinition definiert werden" - --#: cp/decl.c:9587 -+#: cp/decl.c:9583 - #, gcc-internal-format - msgid "destructors may not have parameters" - msgstr "Destruktoren dürfen keine Parameter haben" - --#: cp/decl.c:9613 -+#: cp/decl.c:9609 - #, gcc-internal-format - msgid "cannot declare pointer to %q#T" - msgstr "Zeiger auf %q#T kann nicht deklariert werden" - --#: cp/decl.c:9626 cp/decl.c:9633 -+#: cp/decl.c:9622 cp/decl.c:9629 - #, gcc-internal-format - msgid "cannot declare reference to %q#T" - msgstr "Referenz auf %q#T kann nicht deklariert werden" - --#: cp/decl.c:9635 -+#: cp/decl.c:9631 - #, gcc-internal-format - msgid "cannot declare pointer to %q#T member" - msgstr "Zeiger auf Element %q#T kann nicht deklariert werden" - --#: cp/decl.c:9658 -+#: cp/decl.c:9654 - #, gcc-internal-format - msgid "cannot declare reference to qualified function type %qT" - msgstr "Referenz auf qualifizierten Funktionstypen %qT kann nicht deklariert werden" - --#: cp/decl.c:9659 -+#: cp/decl.c:9655 - #, gcc-internal-format - msgid "cannot declare pointer to qualified function type %qT" - msgstr "Zeiger auf qualifizierten Funktionstypen %qT kann nicht deklariert werden" - --#: cp/decl.c:9733 -+#: cp/decl.c:9729 - #, gcc-internal-format - msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument" - msgstr "Referenz auf %q#T kann nicht deklariert werden, da letzteres weder Typedef noch Templatetyp-Argument ist" - --#: cp/decl.c:9797 -+#: cp/decl.c:9793 - #, gcc-internal-format - msgid "both % and % cannot be used here" - msgstr " % und % können hier nicht zusammen verwendet werden" - --#: cp/decl.c:9809 -+#: cp/decl.c:9805 - #, gcc-internal-format - msgid "template-id %qD used as a declarator" - msgstr "Template-ID %qD als Deklarator verwendet" - --#: cp/decl.c:9833 -+#: cp/decl.c:9829 - #, gcc-internal-format - msgid "member functions are implicitly friends of their class" - msgstr "Elementfunktionen sind implizite »friends« ihrer Klasse" - --#: cp/decl.c:9838 -+#: cp/decl.c:9834 - #, gcc-internal-format - msgid "extra qualification %<%T::%> on member %qs" - msgstr "zusätzliche Qualifizierung %<%T::%> an Element %qs" - --#: cp/decl.c:9868 -+#: cp/decl.c:9864 - #, gcc-internal-format - msgid "cannot define member function %<%T::%s%> within %<%T%>" - msgstr "Elementfunktion %<%T::%s%> innerhalb von %<%T%> kann nicht definiert werden" - --#: cp/decl.c:9870 -+#: cp/decl.c:9866 - #, gcc-internal-format - msgid "cannot declare member function %<%T::%s%> within %<%T%>" - msgstr "Elementfunktion %<%T::%s%> kann nicht in %<%T%> deklariert werden" - --#: cp/decl.c:9879 -+#: cp/decl.c:9875 - #, gcc-internal-format - msgid "cannot declare member %<%T::%s%> within %qT" - msgstr "Element %<%T::%s%> kann nicht in %qT deklariert werden" - --#: cp/decl.c:9912 -+#: cp/decl.c:9908 - #, gcc-internal-format - msgid "non-parameter %qs cannot be a parameter pack" - msgstr "Nicht-Parameter %qs kann kein Parameterpack sein" - --#: cp/decl.c:9922 -+#: cp/decl.c:9918 - #, gcc-internal-format - msgid "size of array %qs is too large" - msgstr "Feldgröße von %qs ist zu groß" - --#: cp/decl.c:9933 -+#: cp/decl.c:9929 - #, gcc-internal-format - msgid "data member may not have variably modified type %qT" - msgstr "Datenelement darf nicht variabel modifizierten Typ %qT haben" - --#: cp/decl.c:9935 -+#: cp/decl.c:9931 - #, gcc-internal-format - msgid "parameter may not have variably modified type %qT" - msgstr "Parameter darf nicht variabel modifizierten Typ %qT haben" - - #. [dcl.fct.spec] The explicit specifier shall only be used in - #. declarations of constructors within a class definition. --#: cp/decl.c:9943 -+#: cp/decl.c:9939 - #, gcc-internal-format - msgid "only declarations of constructors can be %" - msgstr "nur Deklarationen von Konstruktoren können % sein" - --#: cp/decl.c:9951 -+#: cp/decl.c:9947 - #, gcc-internal-format - msgid "non-member %qs cannot be declared %" - msgstr "Nicht-Element %qs kann nicht als % deklariert sein" - --#: cp/decl.c:9957 -+#: cp/decl.c:9953 - #, gcc-internal-format - msgid "non-object member %qs cannot be declared %" - msgstr "Nicht-Objekt-Element %qs kann nicht als % deklariert sein" - --#: cp/decl.c:9963 -+#: cp/decl.c:9959 - #, gcc-internal-format - msgid "function %qs cannot be declared %" - msgstr "Funktion %qs kann nicht als % deklariert sein" - --#: cp/decl.c:9968 -+#: cp/decl.c:9964 - #, gcc-internal-format - msgid "static %qs cannot be declared %" - msgstr "statisches %qs kann nicht als % deklariert sein" - --#: cp/decl.c:9973 -+#: cp/decl.c:9969 - #, gcc-internal-format - msgid "const %qs cannot be declared %" - msgstr "Konstante %qs kann nicht als % deklariert sein" - --#: cp/decl.c:9978 -+#: cp/decl.c:9974 - #, gcc-internal-format - msgid "reference %qs cannot be declared %" - msgstr "Referenz %qs kann nicht als % deklariert sein" - --#: cp/decl.c:10013 -+#: cp/decl.c:10009 - #, gcc-internal-format - msgid "typedef declared %" - msgstr "»typedef« als % deklariert" - --#: cp/decl.c:10023 -+#: cp/decl.c:10019 - #, gcc-internal-format - msgid "typedef name may not be a nested-name-specifier" - msgstr "typedef-Name darf kein Spezifizierer mit geschachteltem Namen sein" - --#: cp/decl.c:10042 -+#: cp/decl.c:10038 - #, gcc-internal-format - msgid "ISO C++ forbids nested type %qD with same name as enclosing class" - msgstr "ISO-C++ verbietet geschachtelten Typen %qD mit gleichem Namen wie umschließende Klasse" - --#: cp/decl.c:10143 -+#: cp/decl.c:10139 - #, gcc-internal-format - msgid "qualified function types cannot be used to declare static member functions" - msgstr "qualifizierte Funktionstypen können nicht verwendet werden, um statische Elementfunktionen zu deklarieren" - --#: cp/decl.c:10145 -+#: cp/decl.c:10141 - #, gcc-internal-format - msgid "qualified function types cannot be used to declare free functions" - msgstr "qualifizierte Funktionstypen können nicht verwendet werden, um free-Funktionen zu deklarieren" - --#: cp/decl.c:10172 -+#: cp/decl.c:10168 - #, gcc-internal-format - msgid "type qualifiers specified for friend class declaration" - msgstr "Typkennzeichner für friend-Klassen-Deklaration angegeben" - --#: cp/decl.c:10177 -+#: cp/decl.c:10173 - #, gcc-internal-format - msgid "% specified for friend class declaration" - msgstr "% für friend-Klassen-Deklaration angegeben" - --#: cp/decl.c:10185 -+#: cp/decl.c:10181 - #, gcc-internal-format - msgid "template parameters cannot be friends" - msgstr "Template-Parameter können keine »friends« sein" - --#: cp/decl.c:10187 -+#: cp/decl.c:10183 - #, gcc-internal-format - msgid "friend declaration requires class-key, i.e. %" - msgstr "friend-Deklaration erfordert Klassenschlüssel, d.h. %" - --#: cp/decl.c:10191 -+#: cp/decl.c:10187 - #, gcc-internal-format - msgid "friend declaration requires class-key, i.e. %" - msgstr "friend-Deklaration erfordert Klassenschlüssel, d.h. %" - --#: cp/decl.c:10204 -+#: cp/decl.c:10200 - #, gcc-internal-format - msgid "trying to make class %qT a friend of global scope" - msgstr "Versuch, die Klasse %qT zu einem »friend« des globalen Gültigkeitsbereiches zu machen" - --#: cp/decl.c:10222 -+#: cp/decl.c:10218 - #, gcc-internal-format - msgid "invalid qualifiers on non-member function type" - msgstr "ungültige Qualifizierer an Nicht-Element-Funktionstyp" - --#: cp/decl.c:10232 -+#: cp/decl.c:10228 - #, gcc-internal-format - msgid "abstract declarator %qT used as declaration" - msgstr "abstrakter Deklarator %qT als Deklaration verwendet" - --#: cp/decl.c:10261 -+#: cp/decl.c:10257 - #, gcc-internal-format - msgid "cannot use %<::%> in parameter declaration" - msgstr "%<::%> kann nicht in Parameterdeklaration verwendet werden" - --#: cp/decl.c:10265 -+#: cp/decl.c:10261 - #, gcc-internal-format - msgid "parameter declared %" - msgstr "Parameter als % deklariert" - --#: cp/decl.c:10308 -+#: cp/decl.c:10304 - #, gcc-internal-format - msgid "non-static data member declared %" - msgstr "nicht-statisches Datenelement als % deklariert" - - #. Something like struct S { int N::j; }; --#: cp/decl.c:10330 -+#: cp/decl.c:10326 - #, gcc-internal-format - msgid "invalid use of %<::%>" - msgstr "ungültige Verwendung von %<::%>" - --#: cp/decl.c:10352 -+#: cp/decl.c:10348 - #, gcc-internal-format - msgid "declaration of function %qD in invalid context" - msgstr "Deklaration der Funktion %qD in ungültigem Kontext" - --#: cp/decl.c:10361 -+#: cp/decl.c:10357 - #, gcc-internal-format - msgid "function %qD declared virtual inside a union" - msgstr "Funktion %qD als virtuell innerhalb einer Union deklariert" - --#: cp/decl.c:10370 -+#: cp/decl.c:10366 - #, gcc-internal-format - msgid "%qD cannot be declared virtual, since it is always static" - msgstr "%qD kann nicht als virtuell deklariert werden, da es immer statisch ist" - --#: cp/decl.c:10386 -+#: cp/decl.c:10382 - #, gcc-internal-format - msgid "expected qualified name in friend declaration for destructor %qD" - msgstr "Qualifizierten Namen in Friend-Deklaration für Destruktor %qD erwartet" - --#: cp/decl.c:10393 -+#: cp/decl.c:10389 - #, gcc-internal-format - msgid "declaration of %qD as member of %qT" - msgstr "Deklaration von %qD als Element %qT" - --#: cp/decl.c:10399 -+#: cp/decl.c:10395 - #, gcc-internal-format - msgid "a destructor cannot be %" - msgstr "Destruktor kann nicht % sein" - --#: cp/decl.c:10405 -+#: cp/decl.c:10401 - #, gcc-internal-format - msgid "expected qualified name in friend declaration for constructor %qD" - msgstr "Qualifizierten Namen in Friend-Deklaration für Konstruktor %qD erwartet" - --#: cp/decl.c:10451 -+#: cp/decl.c:10447 - #, gcc-internal-format - msgid "field %qD has incomplete type" - msgstr "Feld %qD hat unvollständigen Typen" - --#: cp/decl.c:10453 -+#: cp/decl.c:10449 - #, gcc-internal-format - msgid "name %qT has incomplete type" - msgstr "Name %qT hat unvollständigen Typen" - --#: cp/decl.c:10462 -+#: cp/decl.c:10458 - #, gcc-internal-format - msgid " in instantiation of template %qT" - msgstr " in Instanziierung des Templates %qT" - --#: cp/decl.c:10471 -+#: cp/decl.c:10467 - #, gcc-internal-format - msgid "%qE is neither function nor member function; cannot be declared friend" - msgstr "%qE ist weder eine Funktion noch Elementfunktion; kann nicht als »friend« deklariert werden" - --#: cp/decl.c:10528 -+#: cp/decl.c:10524 - #, gcc-internal-format - msgid "constexpr static data member %qD must have an initializer" - msgstr "statisches Datenelement %qD (constexpr) muss Initialisierung haben" - --#: cp/decl.c:10537 -+#: cp/decl.c:10533 - #, gcc-internal-format - msgid "non-static data member %qE declared %" - msgstr "nicht-statisches Datenelement %qE als % deklariert" - --#: cp/decl.c:10587 -+#: cp/decl.c:10583 - #, gcc-internal-format - msgid "storage class % invalid for function %qs" - msgstr "Speicherklasse % ungültig für Funktion %qs" - --#: cp/decl.c:10589 -+#: cp/decl.c:10585 - #, gcc-internal-format - msgid "storage class % invalid for function %qs" - msgstr "Speicherklasse % ungültig für Funktion %qs" - --#: cp/decl.c:10593 -+#: cp/decl.c:10589 - #, gcc-internal-format - msgid "storage class %<__thread%> invalid for function %qs" - msgstr "Speicherklasse %<__thread%> ungültig für Funktion %qs" - --#: cp/decl.c:10596 --#, fuzzy, gcc-internal-format -+#: cp/decl.c:10592 -+#, gcc-internal-format - msgid "storage class % invalid for function %qs" --msgstr "Speicherklasse %<__thread%> ungültig für Funktion %qs" -+msgstr "Speicherklasse % ungültig für Funktion %qs" - --#: cp/decl.c:10601 -+#: cp/decl.c:10597 - #, gcc-internal-format - msgid "virt-specifiers in %qs not allowed outside a class definition" - msgstr "virt-Spezifikation in %qs ist außerhalb einer Klassendefinition nicht erlaubt" - --#: cp/decl.c:10612 -+#: cp/decl.c:10608 - #, gcc-internal-format - msgid "% specified invalid for function %qs declared out of global scope" - msgstr "% ungültig für außerhalb des globalen Gültigkeitsbereiches deklarierte Funktion %qs" - --#: cp/decl.c:10616 -+#: cp/decl.c:10612 - #, gcc-internal-format - msgid "% specifier invalid for function %qs declared out of global scope" - msgstr "% ungültig für außerhalb des globalen Gültigkeitsbereiches deklarierte Funktion %qs" - --#: cp/decl.c:10624 -+#: cp/decl.c:10620 - #, gcc-internal-format - msgid "virtual non-class function %qs" - msgstr "virtuelle Nicht-Klassen-Funktion %qs" - --#: cp/decl.c:10631 -+#: cp/decl.c:10627 - #, gcc-internal-format - msgid "%qs defined in a non-class scope" - msgstr "%qs nicht in Klassen-Gültigkeitsbereich definiert" - --#: cp/decl.c:10632 -+#: cp/decl.c:10628 - #, gcc-internal-format - msgid "%qs declared in a non-class scope" - msgstr "%qs in einem Nicht-Klassen-Gültigkeitsbereich definiert" - --#: cp/decl.c:10660 -+#: cp/decl.c:10655 - #, gcc-internal-format - msgid "cannot declare member function %qD to have static linkage" - msgstr "Elementfunktion %qD kann nicht deklariert werden, statische Bindung zu haben" - - #. FIXME need arm citation --#: cp/decl.c:10667 -+#: cp/decl.c:10662 - #, gcc-internal-format - msgid "cannot declare static function inside another function" - msgstr "statische Funktion innerhalb anderer Funktion kann nicht deklariert werden" - --#: cp/decl.c:10697 -+#: cp/decl.c:10692 - #, gcc-internal-format - msgid "% may not be used when defining (as opposed to declaring) a static data member" - msgstr "% darf nicht bei der Definition (im Gegensatz zu Deklaration) eines statischen Datenelementes verwendet werden" - --#: cp/decl.c:10704 -+#: cp/decl.c:10699 - #, gcc-internal-format - msgid "static member %qD declared %" - msgstr "statisches Element %qD als % deklariert" - --#: cp/decl.c:10710 -+#: cp/decl.c:10705 - #, gcc-internal-format - msgid "cannot explicitly declare member %q#D to have extern linkage" - msgstr "Element %q#D kann nicht explizit deklariert werden, externe Bindung zu haben" - --#: cp/decl.c:10717 -+#: cp/decl.c:10712 - #, gcc-internal-format - msgid "declaration of constexpr variable %qD is not a definition" - msgstr "Deklaration der constexpr-Variable %qD ist keine Definition" - --#: cp/decl.c:10730 -+#: cp/decl.c:10725 - #, gcc-internal-format - msgid "%qs initialized and declared %" - msgstr "%qs initialisiert und als % deklariert" - --#: cp/decl.c:10734 -+#: cp/decl.c:10729 - #, gcc-internal-format - msgid "%qs has both % and initializer" - msgstr "%qs hat sowohl % als auch Initialisierung" - --#: cp/decl.c:10880 -+#: cp/decl.c:10874 - #, gcc-internal-format - msgid "default argument %qE uses %qD" - msgstr "Standardargument %qE verwendet %qD" - --#: cp/decl.c:10882 -+#: cp/decl.c:10876 - #, gcc-internal-format - msgid "default argument %qE uses local variable %qD" - msgstr "Standardargument %qE verwendet lokale Variable %qD" - --#: cp/decl.c:10970 -+#: cp/decl.c:10964 - #, gcc-internal-format - msgid "parameter %qD has Java class type" - msgstr "Parameter %qD hat Java-Klassentyp" - --#: cp/decl.c:10998 -+#: cp/decl.c:10992 - #, gcc-internal-format - msgid "parameter %qD invalidly declared method type" - msgstr "Parameter %qD deklariert ungültigerweise Methodentyp" - --#: cp/decl.c:11023 -+#: cp/decl.c:11017 - #, gcc-internal-format - msgid "parameter %qD includes pointer to array of unknown bound %qT" - msgstr "Parameter %qD bezieht Zeiger auf Feld mit unbekannter Grenze %qT ein" - --#: cp/decl.c:11025 -+#: cp/decl.c:11019 - #, gcc-internal-format - msgid "parameter %qD includes reference to array of unknown bound %qT" - msgstr "Parameter %qD bezieht Referenz auf Feld mit unbekannter Grenze %qT ein" -@@ -30304,168 +30299,168 @@ - #. or implicitly defined), there's no need to worry about their - #. existence. Theoretically, they should never even be - #. instantiated, but that's hard to forestall. --#: cp/decl.c:11279 -+#: cp/decl.c:11273 - #, gcc-internal-format - msgid "invalid constructor; you probably meant %<%T (const %T&)%>" - msgstr "ungültiger Konstruktor; wahrscheinlich war %<%T (const %T&)%> gemeint" - --#: cp/decl.c:11401 -+#: cp/decl.c:11395 - #, gcc-internal-format - msgid "%qD may not be declared within a namespace" - msgstr "%qD darf nicht innerhalb eines Namensbereiches definiert werden" - --#: cp/decl.c:11406 -+#: cp/decl.c:11400 - #, gcc-internal-format - msgid "%qD may not be declared as static" - msgstr "%qD darf nicht als »static« deklariert werden" - --#: cp/decl.c:11432 -+#: cp/decl.c:11426 - #, gcc-internal-format - msgid "%qD must be a nonstatic member function" - msgstr "%qD muss eine nichtstatische Elementfunktion sein" - --#: cp/decl.c:11441 -+#: cp/decl.c:11435 - #, gcc-internal-format - msgid "%qD must be either a non-static member function or a non-member function" - msgstr "%qD muss entweder eine nichtstatische Elementfunktion oder eine Nicht-Element-Funktion sein" - --#: cp/decl.c:11463 -+#: cp/decl.c:11457 - #, gcc-internal-format - msgid "%qD must have an argument of class or enumerated type" - msgstr "%qD muss ein Argument von einem Klassen- oder Aufzählungstyp haben" - --#: cp/decl.c:11492 -+#: cp/decl.c:11486 - #, gcc-internal-format - msgid "conversion to a reference to void will never use a type conversion operator" - msgstr "Umwandlung in Referenz auf void wird nie einen Typumwandlungsoperator verwenden" - --#: cp/decl.c:11494 -+#: cp/decl.c:11488 - #, gcc-internal-format - msgid "conversion to void will never use a type conversion operator" - msgstr "Umwandlung in void wird nie einen Typumwandlungsoperator verwenden" - --#: cp/decl.c:11501 -+#: cp/decl.c:11495 - #, gcc-internal-format - msgid "conversion to a reference to the same type will never use a type conversion operator" - msgstr "Umwandlung in Referenz auf gleichen Typ wird nie einen Typumwandlungsoperator verwenden" - --#: cp/decl.c:11503 -+#: cp/decl.c:11497 - #, gcc-internal-format - msgid "conversion to the same type will never use a type conversion operator" - msgstr "Umwandlung in gleichen Typ wird nie einen Typumwandlungsoperator verwenden" - --#: cp/decl.c:11511 -+#: cp/decl.c:11505 - #, gcc-internal-format - msgid "conversion to a reference to a base class will never use a type conversion operator" - msgstr "Umwandlung in Referenz auf Basisklasse wird nie einen Typumwandlungsoperator verwenden" - --#: cp/decl.c:11513 -+#: cp/decl.c:11507 - #, gcc-internal-format - msgid "conversion to a base class will never use a type conversion operator" - msgstr "Umwandlung in Basisklasse wird nie einen Typumwandlungsoperator verwenden" - - #. 13.4.0.3 --#: cp/decl.c:11522 -+#: cp/decl.c:11516 - #, gcc-internal-format - msgid "ISO C++ prohibits overloading operator ?:" - msgstr "ISO-C++ verbietet Überladen des Operators ?:" - --#: cp/decl.c:11527 -+#: cp/decl.c:11521 - #, gcc-internal-format - msgid "%qD must not have variable number of arguments" - msgstr "»%qD« darf keine variable Argumentanzahl haben" - --#: cp/decl.c:11578 -+#: cp/decl.c:11572 - #, gcc-internal-format - msgid "postfix %qD must take % as its argument" - msgstr "Suffix-%qD muss % als sein Argument nehmen" - --#: cp/decl.c:11581 -+#: cp/decl.c:11575 - #, gcc-internal-format - msgid "postfix %qD must take % as its second argument" - msgstr "Suffix-%qD muss % als sein zweites Argument nehmen" - --#: cp/decl.c:11589 -+#: cp/decl.c:11583 - #, gcc-internal-format - msgid "%qD must take either zero or one argument" - msgstr "%qD muss entweder null oder ein Argument nehmen" - --#: cp/decl.c:11591 -+#: cp/decl.c:11585 - #, gcc-internal-format - msgid "%qD must take either one or two arguments" - msgstr "»%D« muss entweder ein oder zwei Argumente nehmen" - --#: cp/decl.c:11613 -+#: cp/decl.c:11607 - #, gcc-internal-format - msgid "prefix %qD should return %qT" - msgstr "Präfix-%qD sollte %qT zurückgeben" - --#: cp/decl.c:11619 -+#: cp/decl.c:11613 - #, gcc-internal-format - msgid "postfix %qD should return %qT" - msgstr "Suffix-%qD sollte %qT zurückgeben" - --#: cp/decl.c:11628 -+#: cp/decl.c:11622 - #, gcc-internal-format - msgid "%qD must take %" - msgstr "%qD muss % nehmen" - --#: cp/decl.c:11630 cp/decl.c:11639 -+#: cp/decl.c:11624 cp/decl.c:11633 - #, gcc-internal-format - msgid "%qD must take exactly one argument" - msgstr "%qD muss genau ein Argument nehmen" - --#: cp/decl.c:11641 -+#: cp/decl.c:11635 - #, gcc-internal-format - msgid "%qD must take exactly two arguments" - msgstr "%qD muss genau zwei Argumente nehmen" - --#: cp/decl.c:11650 -+#: cp/decl.c:11644 - #, gcc-internal-format - msgid "user-defined %qD always evaluates both arguments" - msgstr "benutzerdefiniertes %qD wertet immer beide Argumente aus" - --#: cp/decl.c:11664 -+#: cp/decl.c:11658 - #, gcc-internal-format - msgid "%qD should return by value" - msgstr "%qD sollte Wert zurückgeben" - --#: cp/decl.c:11675 cp/decl.c:11680 -+#: cp/decl.c:11669 cp/decl.c:11674 - #, gcc-internal-format - msgid "%qD cannot have default arguments" - msgstr "%qD kann keine Standardargumente haben" - --#: cp/decl.c:11741 -+#: cp/decl.c:11732 - #, gcc-internal-format - msgid "using template type parameter %qT after %qs" - msgstr "Templatetyp-Parameter %qT wird nach %qs verwendet" - --#: cp/decl.c:11764 -+#: cp/decl.c:11755 - #, gcc-internal-format - msgid "using alias template specialization %qT after %qs" - msgstr "Templatespezialisierung alias %qT hinter %qs wird verwendet" - --#: cp/decl.c:11767 -+#: cp/decl.c:11758 - #, gcc-internal-format - msgid "using typedef-name %qD after %qs" - msgstr "typedef-Name %qD wird nach %qs verwendet" - --#: cp/decl.c:11769 -+#: cp/decl.c:11760 - #, gcc-internal-format - msgid "%qD has a previous declaration here" - msgstr "%qD hat eine vorherige Deklaration hier" - --#: cp/decl.c:11777 -+#: cp/decl.c:11768 - #, gcc-internal-format - msgid "%qT referred to as %qs" - msgstr "%qT als %qs verwendet" - --#: cp/decl.c:11778 cp/decl.c:11785 -+#: cp/decl.c:11769 cp/decl.c:11776 - #, gcc-internal-format - msgid "%q+T has a previous declaration here" - msgstr "%q+T hat eine vorherige Deklaration hier" - --#: cp/decl.c:11784 -+#: cp/decl.c:11775 - #, gcc-internal-format - msgid "%qT referred to as enum" - msgstr "%qT als enum verwendet" -@@ -30477,88 +30472,88 @@ - #. void f(class C); // No template header here - #. - #. then the required template argument is missing. --#: cp/decl.c:11799 -+#: cp/decl.c:11790 - #, gcc-internal-format - msgid "template argument required for %<%s %T%>" - msgstr "Template-Argument für %<%s %T%> benötigt" - --#: cp/decl.c:11849 cp/name-lookup.c:3069 -+#: cp/decl.c:11840 cp/name-lookup.c:3062 - #, gcc-internal-format - msgid "%qD has the same name as the class in which it is declared" - msgstr "%qD hat den gleichen Namen wie die Klasse, in der es deklariert wurde" - --#: cp/decl.c:11879 cp/name-lookup.c:2561 cp/name-lookup.c:3395 --#: cp/name-lookup.c:3440 cp/parser.c:5076 cp/parser.c:21175 -+#: cp/decl.c:11870 cp/name-lookup.c:2561 cp/name-lookup.c:3390 -+#: cp/name-lookup.c:3435 cp/parser.c:5076 cp/parser.c:21179 - #, gcc-internal-format - msgid "reference to %qD is ambiguous" - msgstr "Referenz auf %qD ist mehrdeutig" - --#: cp/decl.c:11994 -+#: cp/decl.c:11985 - #, gcc-internal-format - msgid "use of enum %q#D without previous declaration" - msgstr "Verwendung des enum %q#D ohne vorherige Deklaration" - --#: cp/decl.c:12015 -+#: cp/decl.c:12006 - #, gcc-internal-format - msgid "redeclaration of %qT as a non-template" - msgstr "Redeklaration von %qT als Nicht-Template" - --#: cp/decl.c:12016 -+#: cp/decl.c:12007 - #, gcc-internal-format - msgid "previous declaration %q+D" - msgstr "vorherige Deklaration %q+D" - --#: cp/decl.c:12157 -+#: cp/decl.c:12148 - #, gcc-internal-format - msgid "derived union %qT invalid" - msgstr "abgeleitete Union %qT ist ungültig" - --#: cp/decl.c:12166 -+#: cp/decl.c:12157 - #, gcc-internal-format - msgid "Java class %qT cannot have multiple bases" - msgstr "Java-Klasse %qT kann nicht mehrere Basen haben" - --#: cp/decl.c:12177 -+#: cp/decl.c:12168 - #, gcc-internal-format - msgid "Java class %qT cannot have virtual bases" - msgstr "Java-Klasse %qT kann keine virtuellen Basen haben" - --#: cp/decl.c:12197 -+#: cp/decl.c:12188 - #, gcc-internal-format - msgid "base type %qT fails to be a struct or class type" - msgstr "Basistyp %qT ist kein struct- oder Klassentyp" - --#: cp/decl.c:12230 -+#: cp/decl.c:12221 - #, gcc-internal-format - msgid "recursive type %qT undefined" - msgstr "rekursiver Typ %qT nicht definiert" - --#: cp/decl.c:12232 -+#: cp/decl.c:12223 - #, gcc-internal-format - msgid "duplicate base type %qT invalid" - msgstr "doppelter Basistyp %qT ungültig" - --#: cp/decl.c:12356 -+#: cp/decl.c:12347 - #, gcc-internal-format - msgid "scoped/unscoped mismatch in enum %q#T" - msgstr "falsche Zuordnung zwischen innerhalb und außerhalb eines Gültigkeitsbereiches in enum %q#T" - --#: cp/decl.c:12359 cp/decl.c:12367 cp/decl.c:12379 cp/parser.c:14742 -+#: cp/decl.c:12350 cp/decl.c:12358 cp/decl.c:12370 cp/parser.c:14744 - #, gcc-internal-format - msgid "previous definition here" - msgstr "vorherige Definition hier" - --#: cp/decl.c:12364 -+#: cp/decl.c:12355 - #, gcc-internal-format - msgid "underlying type mismatch in enum %q#T" - msgstr "falsche Zuordnung des zugrunde liegenden Typs in enum %q#T" - --#: cp/decl.c:12376 -+#: cp/decl.c:12367 - #, gcc-internal-format - msgid "different underlying type in enum %q#T" - msgstr "anderer zugrunde liegender Typ in enum %q#T" - --#: cp/decl.c:12443 -+#: cp/decl.c:12434 - #, gcc-internal-format - msgid "underlying type %<%T%> of %<%T%> must be an integral type" - msgstr "zugrunde liegender Typ %<%T%> von %<%T%> muss ein eingebauter Typ sein" -@@ -30567,82 +30562,82 @@ - #. - #. IF no integral type can represent all the enumerator values, the - #. enumeration is ill-formed. --#: cp/decl.c:12577 -+#: cp/decl.c:12568 - #, gcc-internal-format - msgid "no integral type can represent all of the enumerator values for %qT" - msgstr "kein Ganzzahltyp kann alle Aufzählungswerte für %qT darstellen" - --#: cp/decl.c:12718 -+#: cp/decl.c:12709 - #, gcc-internal-format - msgid "enumerator value for %qD is not an integer constant" - msgstr "Aufzählungswert für %qD ist keine Ganzzahlkonstante" - --#: cp/decl.c:12764 -+#: cp/decl.c:12755 - #, gcc-internal-format - msgid "incremented enumerator value is too large for %" - msgstr "erhöhter Aufzählungswert ist zu groß für %" - --#: cp/decl.c:12776 -+#: cp/decl.c:12767 - #, gcc-internal-format - msgid "overflow in enumeration values at %qD" - msgstr "Überlauf in Aufzählungswerten bei %qD" - --#: cp/decl.c:12796 -+#: cp/decl.c:12787 - #, gcc-internal-format - msgid "enumerator value %E is too large for underlying type %<%T%>" - msgstr "Aufzählungswert %E ist zu groß für zugrunde liegenden Typ %<%T%>" - --#: cp/decl.c:12886 -+#: cp/decl.c:12877 - #, gcc-internal-format - msgid "return type %q#T is incomplete" - msgstr "Rückgabetyp %q#T ist unvollständig" - --#: cp/decl.c:12888 -+#: cp/decl.c:12879 - #, gcc-internal-format - msgid "return type has Java class type %q#T" - msgstr "Rückgabetyp hat Java-Klassentyp %q#T" - --#: cp/decl.c:13012 cp/typeck.c:8247 -+#: cp/decl.c:13003 cp/typeck.c:8252 - #, gcc-internal-format - msgid "% should return a reference to %<*this%>" - msgstr "% sollte eine Referenz auf %<*this%> zurück geben" - --#: cp/decl.c:13108 -+#: cp/decl.c:13099 - #, gcc-internal-format - msgid "no previous declaration for %q+D" - msgstr "keine vorherige Deklaration für %q+D" - --#: cp/decl.c:13329 -+#: cp/decl.c:13320 - #, gcc-internal-format - msgid "invalid function declaration" - msgstr "ungültige Funktionsdeklaration" - --#: cp/decl.c:13413 -+#: cp/decl.c:13404 - #, gcc-internal-format - msgid "parameter %qD declared void" - msgstr "Parameter %qD leer definiert" - --#: cp/decl.c:13781 --#, fuzzy, gcc-internal-format -+#: cp/decl.c:13772 -+#, gcc-internal-format - msgid "no return statements in function returning %qT" --msgstr "keine return-Anweisung in nicht void zurückgebender Funktion" -+msgstr "keine return-Anweisungen in %qT zurückgebender Funktion" - --#: cp/decl.c:13783 cp/typeck.c:8135 --#, fuzzy, gcc-internal-format -+#: cp/decl.c:13774 cp/typeck.c:8135 -+#, gcc-internal-format - msgid "only plain % return type can be deduced to %" --msgstr "Funktionsrückgabetypen nicht kompatibel wegen %" -+msgstr "nur einfacher Rückgabetyp % kann zu % hergeleitet werden" - --#: cp/decl.c:13879 -+#: cp/decl.c:13870 - #, gcc-internal-format - msgid "parameter %q+D set but not used" - msgstr "Parameter %q+D gesetzt, aber nicht verwendet" - --#: cp/decl.c:13974 -+#: cp/decl.c:13965 - #, gcc-internal-format - msgid "invalid member function declaration" - msgstr "ungültige Elementfunktionsdeklaration" - --#: cp/decl.c:13988 -+#: cp/decl.c:13979 - #, gcc-internal-format - msgid "%qD is already defined in class %qT" - msgstr "%qD ist bereits in Klasse %qT definiert" -@@ -30663,9 +30658,9 @@ - msgstr "ungültige Typen %<%T[%T]%> für Feldindex" - - #: cp/decl2.c:439 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "deleting array %q#E" --msgstr "Feld %q#D wird gelöscht" -+msgstr "Feld %q#E wird gelöscht" - - #: cp/decl2.c:445 - #, gcc-internal-format -@@ -30874,101 +30869,101 @@ - msgstr "gelöschte Funktion %qD wird verwendet" - - #: cp/decl2.c:4537 cp/decl2.c:4594 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "use of %qD before deduction of %" --msgstr "Typ von %qD ist auf % voreingestellt" -+msgstr "Verwendung von %qD vor Herleitung von %" - --#: cp/error.c:3327 -+#: cp/error.c:3331 - #, gcc-internal-format - msgid "extended initializer lists only available with -std=c++11 or -std=gnu++11" - msgstr "erweiterte Initialisierungsliste nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/error.c:3332 -+#: cp/error.c:3336 - #, gcc-internal-format - msgid "explicit conversion operators only available with -std=c++11 or -std=gnu++11" - msgstr "explizite Umwandlungsoperatoren nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/error.c:3337 -+#: cp/error.c:3341 - #, gcc-internal-format - msgid "variadic templates only available with -std=c++11 or -std=gnu++11" - msgstr "variadische Templates nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/error.c:3342 -+#: cp/error.c:3346 - #, gcc-internal-format - msgid "lambda expressions only available with -std=c++11 or -std=gnu++11" - msgstr "Lambda-Ausdrücke nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/error.c:3347 -+#: cp/error.c:3351 - #, gcc-internal-format - msgid "C++0x auto only available with -std=c++11 or -std=gnu++11" - msgstr "C++0x »auto« nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/error.c:3351 -+#: cp/error.c:3355 - #, gcc-internal-format - msgid "scoped enums only available with -std=c++11 or -std=gnu++11" - msgstr "enums mit Gültigkeitsbereich nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/error.c:3355 -+#: cp/error.c:3359 - #, gcc-internal-format - msgid "defaulted and deleted functions only available with -std=c++11 or -std=gnu++11" - msgstr "Standard- und gelöschte Funktionen nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/error.c:3360 -+#: cp/error.c:3364 - #, gcc-internal-format - msgid "inline namespaces only available with -std=c++11 or -std=gnu++11" - msgstr "»inline« Namensräume nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/error.c:3365 -+#: cp/error.c:3369 - #, gcc-internal-format - msgid "override controls (override/final) only available with -std=c++11 or -std=gnu++11" - msgstr "Überschreibsteuerung (override/final) nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/error.c:3370 -+#: cp/error.c:3374 - #, gcc-internal-format - msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11" - msgstr "nicht-statische Initialisierungen für Datenelemente nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/error.c:3375 -+#: cp/error.c:3379 - #, gcc-internal-format - msgid "user-defined literals only available with -std=c++11 or -std=gnu++11" - msgstr "benutzerdefinierte Literale nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/error.c:3380 -+#: cp/error.c:3384 - #, gcc-internal-format - msgid "delegating constructors only available with -std=c++11 or -std=gnu++11" - msgstr "delegierende Konstruktoren nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/error.c:3385 --#, fuzzy, gcc-internal-format -+#: cp/error.c:3389 -+#, gcc-internal-format - msgid "inheriting constructors only available with -std=c++11 or -std=gnu++11" --msgstr "delegierende Konstruktoren nur mit -std=c++11 oder -std=gnu++11 verfügbar" -+msgstr "erbende Konstruktoren nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/error.c:3390 --#, fuzzy, gcc-internal-format -+#: cp/error.c:3394 -+#, gcc-internal-format - msgid "c++11 attributes only available with -std=c++11 or -std=gnu++11" --msgstr "C++0x »auto« nur mit -std=c++11 oder -std=gnu++11 verfügbar" -+msgstr "C++11-Attribute nur mit -std=c++11 oder -std=gnu++11 verfügbar" - --#: cp/error.c:3439 -+#: cp/error.c:3443 - #, gcc-internal-format - msgid "incomplete type %qT used in nested name specifier" - msgstr "unvollständiger Typ %qT in geschachtelter Namensangabe verwendet" - --#: cp/error.c:3443 -+#: cp/error.c:3447 - #, gcc-internal-format - msgid "reference to %<%T::%D%> is ambiguous" - msgstr "Referenz auf %<%T::%D%> ist mehrdeutig" - --#: cp/error.c:3448 cp/typeck.c:2260 -+#: cp/error.c:3452 cp/typeck.c:2260 - #, gcc-internal-format - msgid "%qD is not a member of %qT" - msgstr "%qD ist kein Element von %qT" - --#: cp/error.c:3452 -+#: cp/error.c:3456 - #, gcc-internal-format - msgid "%qD is not a member of %qD" - msgstr "%qD ist kein Element von %qD" - --#: cp/error.c:3457 -+#: cp/error.c:3461 - #, gcc-internal-format - msgid "%<::%D%> has not been declared" - msgstr "%<::%D%> wurde nicht deklariert" -@@ -31021,14 +31016,14 @@ - msgstr "Ausdruck %qE von abstraktem Klassentyp %qT kann nicht in throw-Ausdruck verwendet werden" - - #: cp/except.c:981 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "cannot declare catch parameter to be of abstract class type %qT" --msgstr "Parameter %q+D kann nicht als vom abstrakten Typ %qT deklariert werden" -+msgstr "Catch-Parameter kann nicht mit abstraktem Klassentyp %qT deklariert werden" - - #: cp/except.c:989 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "cannot declare catch parameter to be of rvalue reference type %qT" --msgstr "Parameter %q+D kann nicht als vom abstrakten Typ %qT deklariert werden" -+msgstr "Catch-Parameter kann nicht mit R-Wert-Referenztyp %qT deklariert werden" - - #: cp/except.c:1075 - #, gcc-internal-format -@@ -31325,24 +31320,24 @@ - msgstr "nicht initialisiertes konstantes Element in %q#T" - - #: cp/init.c:2254 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "integer overflow in array size" --msgstr "Ganzzahlüberlauf in Ausdruck" -+msgstr "Ganzzahlüberlauf in Feldgröße" - - #: cp/init.c:2264 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "array size in operator new must be constant" --msgstr "Variable »%s« bei %L muss in diesem Kontext eine Konstante sein" -+msgstr "Feldgröße im Operator »new« muss konstant sein" - - #: cp/init.c:2278 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "variably modified type not allowed in operator new" --msgstr "variabel modifiziertes Feld im Dateibereich" -+msgstr "im Operator »new« ist kein variabel modifizierter Typ erlaubt" - - #: cp/init.c:2292 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "ISO C++ does not support variable-length array types" --msgstr "ISO-C unterstützt keine sättigenden Typen" -+msgstr "ISO-C++ unterstützt keine Feldtypen variabler Länge" - - #: cp/init.c:2300 - #, gcc-internal-format -@@ -31848,99 +31843,99 @@ - msgid "%qD not declared" - msgstr "%qD nicht deklariert" - --#: cp/name-lookup.c:3218 -+#: cp/name-lookup.c:3211 - #, gcc-internal-format - msgid "using-declaration for non-member at class scope" - msgstr "»using«-Deklaration für Nicht-Element im Gültigkeitsbereich der Klasse" - --#: cp/name-lookup.c:3225 -+#: cp/name-lookup.c:3218 - #, gcc-internal-format - msgid "%<%T::%D%> names destructor" - msgstr "%<%T::%D%> benennt Destruktor" - --#: cp/name-lookup.c:3236 -+#: cp/name-lookup.c:3231 - #, gcc-internal-format - msgid "%<%T::%D%> names constructor in %qT" - msgstr "%<%T::%D%> benennt Konstruktor in %qT" - --#: cp/name-lookup.c:3287 -+#: cp/name-lookup.c:3282 - #, gcc-internal-format - msgid "no members matching %<%T::%D%> in %q#T" - msgstr "kein Element passt zu %<%T::%D%> in %q#T" - --#: cp/name-lookup.c:3374 -+#: cp/name-lookup.c:3369 - #, gcc-internal-format - msgid "declaration of %qD not in a namespace surrounding %qD" - msgstr "Deklaration von %qD nicht in einem Namensbereich um %qD" - --#: cp/name-lookup.c:3382 -+#: cp/name-lookup.c:3377 - #, gcc-internal-format - msgid "explicit qualification in declaration of %qD" - msgstr "explizite Qualifizierung in Deklaration von %qD" - --#: cp/name-lookup.c:3465 -+#: cp/name-lookup.c:3460 - #, gcc-internal-format - msgid "%qD should have been declared inside %qD" - msgstr "%qD sollte innerhalb von %qD deklariert werden" - --#: cp/name-lookup.c:3509 -+#: cp/name-lookup.c:3504 - #, gcc-internal-format - msgid "%qD attribute requires a single NTBS argument" - msgstr "Attribut %qD erfordert ein einzelnes NTBS-Argument" - --#: cp/name-lookup.c:3516 -+#: cp/name-lookup.c:3511 - #, gcc-internal-format - msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols" - msgstr "Attribut %qD ist bedeutungslos, da die Elemente des anonymen Namensraums lokale Symbole erhalten" - --#: cp/name-lookup.c:3524 cp/name-lookup.c:3936 -+#: cp/name-lookup.c:3519 cp/name-lookup.c:3931 - #, gcc-internal-format - msgid "%qD attribute directive ignored" - msgstr "Attribut-Anweisung %qD wird ignoriert" - --#: cp/name-lookup.c:3588 -+#: cp/name-lookup.c:3583 - #, gcc-internal-format - msgid "namespace alias %qD not allowed here, assuming %qD" - msgstr "Namensbereich-Alias %qD ist hier nicht erlaubt, %qD angenommen" - --#: cp/name-lookup.c:3924 -+#: cp/name-lookup.c:3919 - #, gcc-internal-format - msgid "strong using only meaningful at namespace scope" - msgstr "starkes »using« ist nur im Gültigkeitsbereich des Namensbereiches sinnvoll" - --#: cp/name-lookup.c:3928 -+#: cp/name-lookup.c:3923 - #, gcc-internal-format - msgid "current namespace %qD does not enclose strongly used namespace %qD" - msgstr "aktueller Namensbereich %qD schließt nicht stark verwendeten Namensbereich %qD ein" - --#: cp/name-lookup.c:4267 -+#: cp/name-lookup.c:4262 - #, gcc-internal-format - msgid "maximum limit of %d namespaces searched for %qE" - msgstr "obere Grenze von %d Namensräumen für %qE durchsucht" - --#: cp/name-lookup.c:4277 -+#: cp/name-lookup.c:4272 - #, gcc-internal-format - msgid "suggested alternative:" - msgid_plural "suggested alternatives:" - msgstr[0] "empfohlene Alternative:" - msgstr[1] "empfohlene Alternativen:" - --#: cp/name-lookup.c:4281 -+#: cp/name-lookup.c:4276 - #, gcc-internal-format - msgid " %qE" - msgstr " %qE" - --#: cp/name-lookup.c:5551 -+#: cp/name-lookup.c:5546 - #, gcc-internal-format - msgid "argument dependent lookup finds %q+D" - msgstr "Argumentabhängiges Nachschlagen findet %q+D" - --#: cp/name-lookup.c:6088 -+#: cp/name-lookup.c:6083 - #, gcc-internal-format - msgid "XXX entering pop_everything ()\n" - msgstr "XXX Eintritt in pop_everything ()\n" - --#: cp/name-lookup.c:6097 -+#: cp/name-lookup.c:6092 - #, gcc-internal-format - msgid "XXX leaving pop_everything ()\n" - msgstr "XXX pop_everything () wird verlassen\n" -@@ -32046,9 +32041,9 @@ - msgstr "%qT ist kein Template" - - #: cp/parser.c:2591 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "%qE is not a class template" --msgstr "%qE ist kein Template" -+msgstr "%qE ist kein Klassentemplate" - - #: cp/parser.c:2593 - #, gcc-internal-format -@@ -32065,7 +32060,7 @@ - msgid "floating-point literal cannot appear in a constant-expression" - msgstr "Gleitkommaliteral kann nicht in einem Konstanten-Ausdruck auftreten" - --#: cp/parser.c:2633 cp/pt.c:13527 -+#: cp/parser.c:2633 cp/pt.c:13522 - #, gcc-internal-format - msgid "a cast to a type other than an integral or enumeration type cannot appear in a constant-expression" - msgstr "Eine Typumwandlung, die weder zu ganzzahligen noch Aufzählungstypen führt, kann nicht in einem Konstantenausdruck auftreten" -@@ -32214,19 +32209,19 @@ - msgstr "Operator %qD für Zeichenliterale mit Argument %qT kann nicht gefunden werden" - - #: cp/parser.c:3682 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "integer literal exceeds range of %qT type" --msgstr "Gleitkommakonstante überschreitet Wertebereich von %qT" -+msgstr "Ganzzahlliteral überschreitet Wertebereich des Typs %qT" - - #: cp/parser.c:3688 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "floating literal exceeds range of %qT type" --msgstr "Gleitkommakonstante überschreitet Wertebereich von %qT" -+msgstr "Gleitkommaliteral überschreitet Wertebereich des Typs %qT" - - #: cp/parser.c:3692 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "floating literal truncated to zero" --msgstr "Gleitkommakonstante auf Null abgeschnitten" -+msgstr "Gleitkommaliteral auf Null abgeschnitten" - - #: cp/parser.c:3735 - #, gcc-internal-format -@@ -32308,7 +32303,7 @@ - msgid "literal operator suffixes not preceded by %<_%> are reserved for future standardization" - msgstr "Literale Operator-Suffixe ohne vorangehendes %<_%> sind für zukünftige Standardisierungen reserviert" - --#: cp/parser.c:4857 cp/parser.c:16496 -+#: cp/parser.c:4857 cp/parser.c:16498 - #, gcc-internal-format - msgid "expected unqualified-id" - msgstr "unqualifiziertes ID erwartet" -@@ -32481,9 +32476,9 @@ - msgstr "Standardargument für Lambda-Parameter angegeben" - - #: cp/parser.c:8885 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "attributes at the beginning of statement are ignored" --msgstr "Attribute hinter geklammerter Initialisierung werden ignoriert" -+msgstr "Attribute am Anfang der Anweisung werden ignoriert" - - #: cp/parser.c:8913 - #, gcc-internal-format -@@ -32510,7 +32505,7 @@ - msgid "compound-statement in constexpr function" - msgstr "zusammengesetzte Anweisung in Funktion als konstantem Audruck" - --#: cp/parser.c:9298 cp/parser.c:23016 -+#: cp/parser.c:9298 cp/parser.c:23020 - #, gcc-internal-format - msgid "expected selection-statement" - msgstr "Auswahl-Anweisung erwartet" -@@ -32540,7 +32535,7 @@ - msgid "inconsistent begin/end types in range-based % statement: %qT and %qT" - msgstr "unvereinbare Anfang-/Ende-Typen in bereichsbasierter %-Anweisung: %qT und %qT" - --#: cp/parser.c:9889 cp/parser.c:23019 -+#: cp/parser.c:9889 cp/parser.c:23023 - #, gcc-internal-format - msgid "expected iteration-statement" - msgstr "Iterationsanweisung erwartet" -@@ -32556,12 +32551,12 @@ - msgid "ISO C++ forbids computed gotos" - msgstr "ISO-C++ verbietet berechnete Gotos" - --#: cp/parser.c:10071 cp/parser.c:23022 -+#: cp/parser.c:10071 cp/parser.c:23026 - #, gcc-internal-format - msgid "expected jump-statement" - msgstr "Sprunganweisung erwartet" - --#: cp/parser.c:10203 cp/parser.c:19157 -+#: cp/parser.c:10203 cp/parser.c:19161 - #, gcc-internal-format - msgid "extra %<;%>" - msgstr "zusätzliches %<;%>" -@@ -32598,7 +32593,7 @@ - msgid "class definition may not be declared a friend" - msgstr "Klassendefinition darf nicht als »friend« deklariert sein" - --#: cp/parser.c:11034 cp/parser.c:19551 -+#: cp/parser.c:11034 cp/parser.c:19555 - #, gcc-internal-format - msgid "templates may not be %" - msgstr "Templates dürfen nicht % sein" -@@ -32619,9 +32614,9 @@ - msgstr "ungültige Verwendung von % in Umwandlungsoperator" - - #: cp/parser.c:11471 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "use of % in member template conversion operator can never be deduced" --msgstr "ungültige Verwendung von % in Umwandlungsoperator" -+msgstr "Verwendung von % in Umwandlungsoperator von Elementtemplate kann niemals hergeleitet werden" - - #: cp/parser.c:11560 - #, gcc-internal-format -@@ -32679,12 +32674,12 @@ - msgid "keyword % not implemented, and will be ignored" - msgstr "Schlüsselwort % nicht implementiert, und wird ignoriert" - --#: cp/parser.c:12317 cp/parser.c:12415 cp/parser.c:12522 cp/parser.c:17611 -+#: cp/parser.c:12317 cp/parser.c:12415 cp/parser.c:12522 cp/parser.c:17613 - #, gcc-internal-format - msgid "template parameter pack %qD cannot have a default argument" - msgstr "Templateparameterpack %qD kann kein Standardargument haben" - --#: cp/parser.c:12321 cp/parser.c:17619 -+#: cp/parser.c:12321 cp/parser.c:17621 - #, gcc-internal-format - msgid "template parameter pack cannot have a default argument" - msgstr "Templateparameterpack kann kein Standardargument haben" -@@ -32699,7 +32694,7 @@ - msgid "expected template-id" - msgstr "Template-ID erwartet" - --#: cp/parser.c:12658 cp/parser.c:22980 -+#: cp/parser.c:12658 cp/parser.c:22984 - #, gcc-internal-format - msgid "expected %<<%>" - msgstr "%<%> erwartet" -@@ -32715,9 +32710,9 @@ - msgstr "%<<:%> ist eine andere Schreibweise für %<[%>. Leerraum zwischen %<<%> und %<::%> einfügen" - - #: cp/parser.c:12673 --#, fuzzy, gcc-internal-format -+#, gcc-internal-format - msgid "(if you use %<-fpermissive%> or %<-std=c++11%>, or %<-std=gnu++11%> G++ will accept your code)" --msgstr "(G++ wird den Code mit »-fpermissive« akzeptieren)" -+msgstr "(bei Verwendung von %<-fpermissive%>, %<-std=c++11%> oder %<-std=gnu++11%> wird G++ den Code akzeptieren)" - - #: cp/parser.c:12750 - #, gcc-internal-format -@@ -32791,163 +32786,163 @@ - msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword" - msgstr "ausführliche Typ-Spezifikation für einen enum mit Gültigkeitsbereich darf nicht das Schlüsselwort %<%D%> verwenden" - --#: cp/parser.c:14355 -+#: cp/parser.c:14357 - #, gcc-internal-format - msgid "declaration %qD does not declare anything" - msgstr "Deklaration %qD deklariert nichts" - --#: cp/parser.c:14441 -+#: cp/parser.c:14443 - #, gcc-internal-format - msgid "attributes ignored on uninstantiated type" - msgstr "Attribute an instanziiertem Typen ignoriert" - --#: cp/parser.c:14445 -+#: cp/parser.c:14447 - #, gcc-internal-format - msgid "attributes ignored on template instantiation" - msgstr "Attribute an Templateinstanziierung ignoriert" - --#: cp/parser.c:14450 -+#: cp/parser.c:14452 - #, gcc-internal-format - msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration" - msgstr "Attribute an Spezifizierer ausführlichen Typs ignoriert, der keine Vorwärtsdeklaration ist" - --#: cp/parser.c:14584 -+#: cp/parser.c:14586 - #, gcc-internal-format - msgid "%qD is an enumeration template" - msgstr "%qD ist ein Aufzählungstemplate" - --#: cp/parser.c:14592 -+#: cp/parser.c:14594 - #, gcc-internal-format - msgid "%qD is not an enumerator-name" - msgstr "%qD ist kein Aufzählungsname" - --#: cp/parser.c:14655 -+#: cp/parser.c:14657 - #, gcc-internal-format - msgid "expected %<;%> or %<{%>" - msgstr "%<;%> oder %<{%> erwartet" - --#: cp/parser.c:14703 -+#: cp/parser.c:14705 - #, gcc-internal-format - msgid "cannot add an enumerator list to a template instantiation" - msgstr "Aufzählungsliste kann nicht zu Template-Instantiierung hinzugefügt werden" - --#: cp/parser.c:14712 cp/parser.c:18714 -+#: cp/parser.c:14714 cp/parser.c:18718 - #, gcc-internal-format - msgid "declaration of %qD in namespace %qD which does not enclose %qD" - msgstr "Deklaration von %qD in Namensraum %qD, der nicht %qD einschließt" - --#: cp/parser.c:14717 cp/parser.c:18719 -+#: cp/parser.c:14719 cp/parser.c:18723 - #, gcc-internal-format - msgid "declaration of %qD in %qD which does not enclose %qD" - msgstr "Deklaration von %qD in %qD, das nicht %qD einschließt" - --#: cp/parser.c:14740 -+#: cp/parser.c:14742 - #, gcc-internal-format - msgid "multiple definition of %q#T" - msgstr "mehrfache Definition von %q#T" - --#: cp/parser.c:14767 -+#: cp/parser.c:14769 - #, gcc-internal-format - msgid "opaque-enum-specifier without name" - msgstr "intransparente Enum-Spezifikation ohne Namen" - --#: cp/parser.c:14770 -+#: cp/parser.c:14772 - #, gcc-internal-format - msgid "opaque-enum-specifier must use a simple identifier" - msgstr "intransparente Enum-Spezifikation muss einfachen Bezeichner verwenden" - --#: cp/parser.c:14946 -+#: cp/parser.c:14948 - #, gcc-internal-format - msgid "%qD is not a namespace-name" - msgstr "%qD ist kein Namensbereichs-Name" - --#: cp/parser.c:14947 -+#: cp/parser.c:14949 - #, gcc-internal-format - msgid "expected namespace-name" - msgstr "Namensraumname erwartet" - --#: cp/parser.c:15072 -+#: cp/parser.c:15074 - #, gcc-internal-format - msgid "% definition is not allowed here" - msgstr "%-Definition ist hier nicht erlaubt" - --#: cp/parser.c:15218 -+#: cp/parser.c:15220 - #, gcc-internal-format - msgid "a template-id may not appear in a using-declaration" - msgstr "eine Template-ID darf nicht in »using«-Deklaration auftreten" - --#: cp/parser.c:15258 -+#: cp/parser.c:15260 - #, gcc-internal-format - msgid "access declarations are deprecated in favour of using-declarations; suggestion: add the % keyword" - msgstr "Zugriffsdeklarationen sind zugunsten von %-Deklarationen veraltet; Vorschlag: % hinzufügen" - --#: cp/parser.c:15323 -+#: cp/parser.c:15325 - #, gcc-internal-format - msgid "types may not be defined in alias template declarations" - msgstr "Typen dürfen nicht in Alias-Templatedeklarationen definiert werden" - --#: cp/parser.c:15787 -+#: cp/parser.c:15789 - #, gcc-internal-format - msgid "a function-definition is not allowed here" - msgstr "eine Funktionsdefinition ist hier nicht erlaubt" - --#: cp/parser.c:15799 -+#: cp/parser.c:15801 - #, gcc-internal-format - msgid "an asm-specification is not allowed on a function-definition" - msgstr "asm-Spezifikation ist bei Funktionsdefinition nicht erlaubt" - --#: cp/parser.c:15803 -+#: cp/parser.c:15805 - #, gcc-internal-format - msgid "attributes are not allowed on a function-definition" - msgstr "bei einer Funktionsdefinition sind keine Attribute erlaubt" - --#: cp/parser.c:15840 -+#: cp/parser.c:15842 - #, gcc-internal-format - msgid "expected constructor, destructor, or type conversion" - msgstr "Konstruktor, Destruktor oder Typumwandlung erwartet" - - #. Anything else is an error. --#: cp/parser.c:15875 cp/parser.c:17782 -+#: cp/parser.c:15877 cp/parser.c:17784 - #, gcc-internal-format - msgid "expected initializer" - msgstr "Initialisierung erwartet" - --#: cp/parser.c:15895 -+#: cp/parser.c:15897 - #, gcc-internal-format - msgid "invalid type in declaration" - msgstr "ungültiger Typ in Deklaration" - --#: cp/parser.c:15971 -+#: cp/parser.c:15973 - #, gcc-internal-format - msgid "initializer provided for function" - msgstr "Initialisierung für Funktion bereitgestellt" - --#: cp/parser.c:16005 -+#: cp/parser.c:16007 - #, gcc-internal-format - msgid "attributes after parenthesized initializer ignored" - msgstr "Attribute hinter geklammerter Initialisierung werden ignoriert" - --#: cp/parser.c:16416 -+#: cp/parser.c:16418 - #, gcc-internal-format - msgid "array bound is not an integer constant" - msgstr "Feldgrenze ist keine Ganzzahlkonstante" - --#: cp/parser.c:16542 -+#: cp/parser.c:16544 - #, gcc-internal-format - msgid "cannot define member of dependent typedef %qT" - msgstr "Element des abhängigen Typedef %qT kann nicht definiert werden" - --#: cp/parser.c:16546 -+#: cp/parser.c:16548 - #, gcc-internal-format - msgid "%<%T::%E%> is not a type" - msgstr "%<%T::%E%> ist kein Typ" - --#: cp/parser.c:16574 -+#: cp/parser.c:16576 - #, gcc-internal-format - msgid "invalid use of constructor as a template" - msgstr "ungültige Benutzung des Konstruktors als Template" - --#: cp/parser.c:16576 -+#: cp/parser.c:16578 - #, gcc-internal-format - msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name" - msgstr "%<%T::%D%> statt %<%T::%D%> verwenden, um den Konstruktor mit qualifiziertem Namen zu benennen" -@@ -32956,262 +32951,262 @@ - #. here because we do not have enough - #. information about its original syntactic - #. form. --#: cp/parser.c:16593 -+#: cp/parser.c:16595 - #, gcc-internal-format - msgid "invalid declarator" - msgstr "ungültiger Deklarator" - --#: cp/parser.c:16660 -+#: cp/parser.c:16662 - #, gcc-internal-format - msgid "expected declarator" - msgstr "Deklarator erwartet" - --#: cp/parser.c:16763 -+#: cp/parser.c:16765 - #, gcc-internal-format - msgid "%qD is a namespace" - msgstr "%qD ist ein Namensbereich" - --#: cp/parser.c:16765 -+#: cp/parser.c:16767 - #, gcc-internal-format - msgid "cannot form pointer to member of non-class %q#T" - msgstr "Zeiger auf Element der Nicht-Klasse %q#T kann nicht erzeugt werden" - --#: cp/parser.c:16786 -+#: cp/parser.c:16788 - #, gcc-internal-format - msgid "expected ptr-operator" - msgstr "Ptr-Operator erwartet" - --#: cp/parser.c:16845 -+#: cp/parser.c:16847 - #, gcc-internal-format - msgid "duplicate cv-qualifier" - msgstr "doppelter CV-Qualifizierer" - --#: cp/parser.c:16903 -+#: cp/parser.c:16905 - #, gcc-internal-format - msgid "duplicate virt-specifier" - msgstr "doppelter Virt-Spezifizierer" - --#: cp/parser.c:17065 cp/typeck2.c:448 cp/typeck2.c:1685 -+#: cp/parser.c:17067 cp/typeck2.c:448 cp/typeck2.c:1685 - #, gcc-internal-format - msgid "invalid use of %" - msgstr "ungültige Verwendung von %" - --#: cp/parser.c:17084 -+#: cp/parser.c:17086 - #, gcc-internal-format - msgid "types may not be defined in template arguments" - msgstr "in Template-Argumenten dürfen keine Typen definiert werden" - --#: cp/parser.c:17165 -+#: cp/parser.c:17167 - #, gcc-internal-format - msgid "expected type-specifier" - msgstr "Typspezifikation erwartet" - --#: cp/parser.c:17407 -+#: cp/parser.c:17409 - #, gcc-internal-format - msgid "expected %<,%> or %<...%>" - msgstr "%<,%> oder %<...%> erwartet" - --#: cp/parser.c:17464 -+#: cp/parser.c:17466 - #, gcc-internal-format - msgid "types may not be defined in parameter types" - msgstr "Typen dürfen nicht in Parametertypen definiert werden" - --#: cp/parser.c:17590 -+#: cp/parser.c:17592 - #, gcc-internal-format - msgid "deprecated use of default argument for parameter of non-function" - msgstr "veraltete Verwendung des Standardarguments für Parameter einer Nicht-Funktion" - --#: cp/parser.c:17594 -+#: cp/parser.c:17596 - #, gcc-internal-format - msgid "default arguments are only permitted for function parameters" - msgstr "Standardargumente sind nur für Funktionsparameter zugelassen" - --#: cp/parser.c:17613 -+#: cp/parser.c:17615 - #, gcc-internal-format - msgid "parameter pack %qD cannot have a default argument" - msgstr "Parameterpack %qD kann kein Standardargument haben" - --#: cp/parser.c:17621 -+#: cp/parser.c:17623 - #, gcc-internal-format - msgid "parameter pack cannot have a default argument" - msgstr "Parameterpack kann kein Standardargument haben" - --#: cp/parser.c:17910 -+#: cp/parser.c:17914 - #, gcc-internal-format - msgid "ISO C++ does not allow designated initializers" - msgstr "ISO-C++ erlaubt keine benannten Initialisierungen" - --#: cp/parser.c:17924 -+#: cp/parser.c:17928 - #, gcc-internal-format - msgid "ISO C++ does not allow C99 designated initializers" - msgstr "ISO-C++ erlaubt keine benannten Initialisierungen von C99" - --#: cp/parser.c:18032 cp/parser.c:18157 -+#: cp/parser.c:18036 cp/parser.c:18161 - #, gcc-internal-format - msgid "expected class-name" - msgstr "Klassenname erwartet" - --#: cp/parser.c:18337 -+#: cp/parser.c:18341 - #, gcc-internal-format - msgid "expected %<;%> after class definition" - msgstr "%<;%> hinter Klassendefinition erwartet" - --#: cp/parser.c:18339 -+#: cp/parser.c:18343 - #, gcc-internal-format - msgid "expected %<;%> after struct definition" - msgstr "%<;%> hinter Strukturdefinition erwartet" - --#: cp/parser.c:18341 -+#: cp/parser.c:18345 - #, gcc-internal-format - msgid "expected %<;%> after union definition" - msgstr "%<;%> hinter Uniondefinition erwartet" - --#: cp/parser.c:18662 -+#: cp/parser.c:18666 - #, gcc-internal-format - msgid "expected %<{%> or %<:%>" - msgstr "%<{%> oder %<:%> erwartet" - --#: cp/parser.c:18673 -+#: cp/parser.c:18677 - #, gcc-internal-format - msgid "cannot specify % for a class" - msgstr "für eine Klasse kann kein % angegeben werden" - --#: cp/parser.c:18681 -+#: cp/parser.c:18685 - #, gcc-internal-format - msgid "global qualification of class name is invalid" - msgstr "globale Qualifizierung von Klassenname ist ungültig" - --#: cp/parser.c:18688 -+#: cp/parser.c:18692 - #, gcc-internal-format - msgid "qualified name does not name a class" - msgstr "qualifizierter Name benennt keine Klasse" - --#: cp/parser.c:18700 -+#: cp/parser.c:18704 - #, gcc-internal-format - msgid "invalid class name in declaration of %qD" - msgstr "ungültiger Klassenname in Deklaration von %qD" - --#: cp/parser.c:18733 -+#: cp/parser.c:18737 - #, gcc-internal-format - msgid "extra qualification not allowed" - msgstr "zusätzliche Qualifizierung nicht erlaubt" - --#: cp/parser.c:18745 -+#: cp/parser.c:18749 - #, gcc-internal-format - msgid "an explicit specialization must be preceded by %